Lines Matching refs:lif
21 static void ionic_get_stats_strings(struct ionic_lif *lif, u8 *buf) in ionic_get_stats_strings() argument
26 ionic_stats_groups[i].get_strings(lif, &buf); in ionic_get_stats_strings()
32 struct ionic_lif *lif; in ionic_get_stats() local
35 lif = netdev_priv(netdev); in ionic_get_stats()
39 ionic_stats_groups[i].get_values(lif, &buf); in ionic_get_stats()
42 static int ionic_get_stats_count(struct ionic_lif *lif) in ionic_get_stats_count() argument
47 num_stats += ionic_stats_groups[i].get_count(lif); in ionic_get_stats_count()
54 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_sset_count() local
59 count = ionic_get_stats_count(lif); in ionic_get_sset_count()
71 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_strings() local
75 ionic_get_stats_strings(lif, buf); in ionic_get_strings()
87 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_drvinfo() local
88 struct ionic *ionic = lif->ionic; in ionic_get_drvinfo()
105 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_regs() local
113 memcpy_fromio(p + offset, lif->ionic->idev.dev_info_regs->words, size); in ionic_get_regs()
117 memcpy_fromio(p + offset, lif->ionic->idev.dev_cmd_regs->words, size); in ionic_get_regs()
123 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_link_ksettings() local
124 struct ionic_dev *idev = &lif->ionic->idev; in ionic_get_link_ksettings()
216 dev_info(lif->ionic->dev, "unknown xcvr type pid=%d / 0x%x\n", in ionic_get_link_ksettings()
244 ks->base.speed = le32_to_cpu(lif->info->status.link_speed); in ionic_get_link_ksettings()
246 if (le16_to_cpu(lif->info->status.link_status)) in ionic_get_link_ksettings()
266 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_link_ksettings() local
267 struct ionic *ionic = lif->ionic; in ionic_set_link_ksettings()
271 idev = &lif->ionic->idev; in ionic_set_link_ksettings()
299 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_pauseparam() local
304 pause_type = lif->ionic->idev.port_info->config.pause_type; in ionic_get_pauseparam()
314 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_pauseparam() local
315 struct ionic *ionic = lif->ionic; in ionic_set_pauseparam()
329 if (requested_pause == lif->ionic->idev.port_info->config.pause_type) in ionic_set_pauseparam()
333 ionic_dev_cmd_port_pause(&lif->ionic->idev, requested_pause); in ionic_set_pauseparam()
345 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_fecparam() local
347 switch (lif->ionic->idev.port_info->config.fec_type) { in ionic_get_fecparam()
367 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_fecparam() local
371 if (lif->ionic->idev.port_info->config.an_enable) { in ionic_set_fecparam()
396 if (fec_type != lif->ionic->idev.port_info->config.fec_type) { in ionic_set_fecparam()
397 mutex_lock(&lif->ionic->dev_cmd_lock); in ionic_set_fecparam()
398 ionic_dev_cmd_port_fec(&lif->ionic->idev, fec_type); in ionic_set_fecparam()
399 ret = ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); in ionic_set_fecparam()
400 mutex_unlock(&lif->ionic->dev_cmd_lock); in ionic_set_fecparam()
409 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_coalesce() local
411 coalesce->tx_coalesce_usecs = lif->tx_coalesce_usecs; in ionic_get_coalesce()
412 coalesce->rx_coalesce_usecs = lif->rx_coalesce_usecs; in ionic_get_coalesce()
414 if (test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state)) in ionic_get_coalesce()
415 coalesce->use_adaptive_tx_coalesce = test_bit(IONIC_LIF_F_TX_DIM_INTR, lif->state); in ionic_get_coalesce()
419 coalesce->use_adaptive_rx_coalesce = test_bit(IONIC_LIF_F_RX_DIM_INTR, lif->state); in ionic_get_coalesce()
427 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_coalesce() local
433 ident = &lif->ionic->ident; in ionic_set_coalesce()
441 if (!test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state) && in ionic_set_coalesce()
442 (coalesce->tx_coalesce_usecs != lif->rx_coalesce_usecs || in ionic_set_coalesce()
451 rx_coal = ionic_coal_usec_to_hw(lif->ionic, coalesce->rx_coalesce_usecs); in ionic_set_coalesce()
454 tx_coal = ionic_coal_usec_to_hw(lif->ionic, coalesce->tx_coalesce_usecs); in ionic_set_coalesce()
463 lif->rx_coalesce_usecs = coalesce->rx_coalesce_usecs; in ionic_set_coalesce()
464 lif->rx_coalesce_hw = rx_coal; in ionic_set_coalesce()
466 if (test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state)) in ionic_set_coalesce()
467 lif->tx_coalesce_usecs = coalesce->tx_coalesce_usecs; in ionic_set_coalesce()
469 lif->tx_coalesce_usecs = coalesce->rx_coalesce_usecs; in ionic_set_coalesce()
470 lif->tx_coalesce_hw = tx_coal; in ionic_set_coalesce()
473 set_bit(IONIC_LIF_F_RX_DIM_INTR, lif->state); in ionic_set_coalesce()
476 clear_bit(IONIC_LIF_F_RX_DIM_INTR, lif->state); in ionic_set_coalesce()
481 set_bit(IONIC_LIF_F_TX_DIM_INTR, lif->state); in ionic_set_coalesce()
484 clear_bit(IONIC_LIF_F_TX_DIM_INTR, lif->state); in ionic_set_coalesce()
488 if (test_bit(IONIC_LIF_F_UP, lif->state)) { in ionic_set_coalesce()
489 for (i = 0; i < lif->nxqs; i++) { in ionic_set_coalesce()
490 if (lif->rxqcqs[i]->flags & IONIC_QCQ_F_INTR) { in ionic_set_coalesce()
491 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_set_coalesce()
492 lif->rxqcqs[i]->intr.index, in ionic_set_coalesce()
493 lif->rx_coalesce_hw); in ionic_set_coalesce()
494 lif->rxqcqs[i]->intr.dim_coal_hw = rx_dim; in ionic_set_coalesce()
497 if (lif->txqcqs[i]->flags & IONIC_QCQ_F_INTR) { in ionic_set_coalesce()
498 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_set_coalesce()
499 lif->txqcqs[i]->intr.index, in ionic_set_coalesce()
500 lif->tx_coalesce_hw); in ionic_set_coalesce()
501 lif->txqcqs[i]->intr.dim_coal_hw = tx_dim; in ionic_set_coalesce()
512 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_ringparam() local
515 ring->tx_pending = lif->ntxq_descs; in ionic_get_ringparam()
517 ring->rx_pending = lif->nrxq_descs; in ionic_get_ringparam()
523 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_ringparam() local
527 ionic_init_queue_params(lif, &qparam); in ionic_set_ringparam()
541 if (ring->tx_pending == lif->ntxq_descs && in ionic_set_ringparam()
542 ring->rx_pending == lif->nrxq_descs) in ionic_set_ringparam()
545 if (ring->tx_pending != lif->ntxq_descs) in ionic_set_ringparam()
547 lif->ntxq_descs, ring->tx_pending); in ionic_set_ringparam()
549 if (ring->rx_pending != lif->nrxq_descs) in ionic_set_ringparam()
551 lif->nrxq_descs, ring->rx_pending); in ionic_set_ringparam()
554 if (!netif_running(lif->netdev)) { in ionic_set_ringparam()
555 lif->ntxq_descs = ring->tx_pending; in ionic_set_ringparam()
556 lif->nrxq_descs = ring->rx_pending; in ionic_set_ringparam()
562 err = ionic_reconfigure_queues(lif, &qparam); in ionic_set_ringparam()
572 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_channels() local
575 ch->max_combined = lif->ionic->ntxqs_per_lif; in ionic_get_channels()
576 ch->max_rx = lif->ionic->ntxqs_per_lif / 2; in ionic_get_channels()
577 ch->max_tx = lif->ionic->ntxqs_per_lif / 2; in ionic_get_channels()
580 if (test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state)) { in ionic_get_channels()
581 ch->rx_count = lif->nxqs; in ionic_get_channels()
582 ch->tx_count = lif->nxqs; in ionic_get_channels()
584 ch->combined_count = lif->nxqs; in ionic_get_channels()
591 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_channels() local
596 ionic_init_queue_params(lif, &qparam); in ionic_set_channels()
608 max_cnt = lif->ionic->ntxqs_per_lif; in ionic_set_channels()
613 if (test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state)) in ionic_set_channels()
614 netdev_info(lif->netdev, "Sharing queue interrupts\n"); in ionic_set_channels()
615 else if (ch->combined_count == lif->nxqs) in ionic_set_channels()
618 if (lif->nxqs != ch->combined_count) in ionic_set_channels()
620 lif->nxqs, ch->combined_count); in ionic_set_channels()
629 if (!test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state)) in ionic_set_channels()
630 netdev_info(lif->netdev, "Splitting queue interrupts\n"); in ionic_set_channels()
631 else if (ch->rx_count == lif->nxqs) in ionic_set_channels()
634 if (lif->nxqs != ch->rx_count) in ionic_set_channels()
636 lif->nxqs, ch->rx_count); in ionic_set_channels()
643 if (!netif_running(lif->netdev)) { in ionic_set_channels()
644 lif->nxqs = qparam.nxqs; in ionic_set_channels()
647 set_bit(IONIC_LIF_F_SPLIT_INTR, lif->state); in ionic_set_channels()
649 clear_bit(IONIC_LIF_F_SPLIT_INTR, lif->state); in ionic_set_channels()
650 lif->tx_coalesce_usecs = lif->rx_coalesce_usecs; in ionic_set_channels()
651 lif->tx_coalesce_hw = lif->rx_coalesce_hw; in ionic_set_channels()
656 err = ionic_reconfigure_queues(lif, &qparam); in ionic_set_channels()
665 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_priv_flags() local
668 if (test_bit(IONIC_LIF_F_SW_DEBUG_STATS, lif->state)) in ionic_get_priv_flags()
676 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_priv_flags() local
678 clear_bit(IONIC_LIF_F_SW_DEBUG_STATS, lif->state); in ionic_set_priv_flags()
680 set_bit(IONIC_LIF_F_SW_DEBUG_STATS, lif->state); in ionic_set_priv_flags()
688 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_rxnfc() local
693 info->data = lif->nxqs; in ionic_get_rxnfc()
706 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_rxfh_indir_size() local
708 return le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_get_rxfh_indir_size()
719 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_rxfh() local
723 tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_get_rxfh()
725 indir[i] = lif->rss_ind_tbl[i]; in ionic_get_rxfh()
729 memcpy(key, lif->rss_hash_key, IONIC_RSS_HASH_KEY_SIZE); in ionic_get_rxfh()
740 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_rxfh() local
746 err = ionic_lif_rss_config(lif, lif->rss_types, key, indir); in ionic_set_rxfh()
757 struct ionic_lif *lif = netdev_priv(dev); in ionic_set_tunable() local
761 lif->rx_copybreak = *(u32 *)data; in ionic_set_tunable()
773 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_tunable() local
777 *(u32 *)data = lif->rx_copybreak; in ionic_get_tunable()
790 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_module_info() local
791 struct ionic_dev *idev = &lif->ionic->idev; in ionic_get_module_info()
824 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_module_eeprom() local
825 struct ionic_dev *idev = &lif->ionic->idev; in ionic_get_module_eeprom()
855 struct ionic_lif *lif = netdev_priv(netdev); in ionic_nway_reset() local
856 struct ionic *ionic = lif->ionic; in ionic_nway_reset()