Lines Matching refs:lif
14 static void ionic_get_stats_strings(struct ionic_lif *lif, u8 *buf) in ionic_get_stats_strings() argument
19 ionic_stats_groups[i].get_strings(lif, &buf); in ionic_get_stats_strings()
25 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_stats() local
28 if (test_bit(IONIC_LIF_F_FW_RESET, lif->state)) in ionic_get_stats()
33 ionic_stats_groups[i].get_values(lif, &buf); in ionic_get_stats()
36 static int ionic_get_stats_count(struct ionic_lif *lif) in ionic_get_stats_count() argument
41 num_stats += ionic_stats_groups[i].get_count(lif); in ionic_get_stats_count()
48 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_sset_count() local
53 count = ionic_get_stats_count(lif); in ionic_get_sset_count()
62 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_strings() local
66 ionic_get_stats_strings(lif, buf); in ionic_get_strings()
74 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_drvinfo() local
75 struct ionic *ionic = lif->ionic; in ionic_get_drvinfo()
92 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_regs() local
100 memcpy_fromio(p + offset, lif->ionic->idev.dev_info_regs->words, size); in ionic_get_regs()
104 memcpy_fromio(p + offset, lif->ionic->idev.dev_cmd_regs->words, size); in ionic_get_regs()
110 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_link_ksettings() local
111 struct ionic_dev *idev = &lif->ionic->idev; in ionic_get_link_ksettings()
211 dev_info(lif->ionic->dev, "unknown xcvr type pid=%d / 0x%x\n", in ionic_get_link_ksettings()
238 ks->base.speed = le32_to_cpu(lif->info->status.link_speed); in ionic_get_link_ksettings()
240 if (le16_to_cpu(lif->info->status.link_status)) in ionic_get_link_ksettings()
260 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_link_ksettings() local
261 struct ionic_dev *idev = &lif->ionic->idev; in ionic_set_link_ksettings()
262 struct ionic *ionic = lif->ionic; in ionic_set_link_ksettings()
265 if (test_bit(IONIC_LIF_F_FW_RESET, lif->state)) in ionic_set_link_ksettings()
294 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_pauseparam() local
299 pause_type = lif->ionic->idev.port_info->config.pause_type; in ionic_get_pauseparam()
309 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_pauseparam() local
310 struct ionic *ionic = lif->ionic; in ionic_set_pauseparam()
314 if (test_bit(IONIC_LIF_F_FW_RESET, lif->state)) in ionic_set_pauseparam()
327 if (requested_pause == lif->ionic->idev.port_info->config.pause_type) in ionic_set_pauseparam()
331 ionic_dev_cmd_port_pause(&lif->ionic->idev, requested_pause); in ionic_set_pauseparam()
343 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_fecparam() local
345 switch (lif->ionic->idev.port_info->config.fec_type) { in ionic_get_fecparam()
365 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_fecparam() local
369 if (test_bit(IONIC_LIF_F_FW_RESET, lif->state)) in ionic_set_fecparam()
372 if (lif->ionic->idev.port_info->config.an_enable) { in ionic_set_fecparam()
397 if (fec_type != lif->ionic->idev.port_info->config.fec_type) { in ionic_set_fecparam()
398 mutex_lock(&lif->ionic->dev_cmd_lock); in ionic_set_fecparam()
399 ionic_dev_cmd_port_fec(&lif->ionic->idev, fec_type); in ionic_set_fecparam()
400 ret = ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); in ionic_set_fecparam()
401 mutex_unlock(&lif->ionic->dev_cmd_lock); in ionic_set_fecparam()
412 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_coalesce() local
414 coalesce->tx_coalesce_usecs = lif->tx_coalesce_usecs; in ionic_get_coalesce()
415 coalesce->rx_coalesce_usecs = lif->rx_coalesce_usecs; in ionic_get_coalesce()
417 if (test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state)) in ionic_get_coalesce()
418 coalesce->use_adaptive_tx_coalesce = test_bit(IONIC_LIF_F_TX_DIM_INTR, lif->state); in ionic_get_coalesce()
422 coalesce->use_adaptive_rx_coalesce = test_bit(IONIC_LIF_F_RX_DIM_INTR, lif->state); in ionic_get_coalesce()
432 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_coalesce() local
438 ident = &lif->ionic->ident; in ionic_set_coalesce()
446 if (!test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state) && in ionic_set_coalesce()
447 (coalesce->tx_coalesce_usecs != lif->rx_coalesce_usecs || in ionic_set_coalesce()
456 rx_coal = ionic_coal_usec_to_hw(lif->ionic, coalesce->rx_coalesce_usecs); in ionic_set_coalesce()
459 tx_coal = ionic_coal_usec_to_hw(lif->ionic, coalesce->tx_coalesce_usecs); in ionic_set_coalesce()
468 lif->rx_coalesce_usecs = coalesce->rx_coalesce_usecs; in ionic_set_coalesce()
469 lif->rx_coalesce_hw = rx_coal; in ionic_set_coalesce()
471 if (test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state)) in ionic_set_coalesce()
472 lif->tx_coalesce_usecs = coalesce->tx_coalesce_usecs; in ionic_set_coalesce()
474 lif->tx_coalesce_usecs = coalesce->rx_coalesce_usecs; in ionic_set_coalesce()
475 lif->tx_coalesce_hw = tx_coal; in ionic_set_coalesce()
478 set_bit(IONIC_LIF_F_RX_DIM_INTR, lif->state); in ionic_set_coalesce()
481 clear_bit(IONIC_LIF_F_RX_DIM_INTR, lif->state); in ionic_set_coalesce()
486 set_bit(IONIC_LIF_F_TX_DIM_INTR, lif->state); in ionic_set_coalesce()
489 clear_bit(IONIC_LIF_F_TX_DIM_INTR, lif->state); in ionic_set_coalesce()
493 if (test_bit(IONIC_LIF_F_UP, lif->state)) { in ionic_set_coalesce()
494 for (i = 0; i < lif->nxqs; i++) { in ionic_set_coalesce()
495 if (lif->rxqcqs[i]->flags & IONIC_QCQ_F_INTR) { in ionic_set_coalesce()
496 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_set_coalesce()
497 lif->rxqcqs[i]->intr.index, in ionic_set_coalesce()
498 lif->rx_coalesce_hw); in ionic_set_coalesce()
499 lif->rxqcqs[i]->intr.dim_coal_hw = rx_dim; in ionic_set_coalesce()
502 if (lif->txqcqs[i]->flags & IONIC_QCQ_F_INTR) { in ionic_set_coalesce()
503 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_set_coalesce()
504 lif->txqcqs[i]->intr.index, in ionic_set_coalesce()
505 lif->tx_coalesce_hw); in ionic_set_coalesce()
506 lif->txqcqs[i]->intr.dim_coal_hw = tx_dim; in ionic_set_coalesce()
519 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_ringparam() local
522 ring->tx_pending = lif->ntxq_descs; in ionic_get_ringparam()
524 ring->rx_pending = lif->nrxq_descs; in ionic_get_ringparam()
532 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_ringparam() local
536 if (test_bit(IONIC_LIF_F_FW_RESET, lif->state)) in ionic_set_ringparam()
539 ionic_init_queue_params(lif, &qparam); in ionic_set_ringparam()
553 if (ring->tx_pending == lif->ntxq_descs && in ionic_set_ringparam()
554 ring->rx_pending == lif->nrxq_descs) in ionic_set_ringparam()
557 if (ring->tx_pending != lif->ntxq_descs) in ionic_set_ringparam()
559 lif->ntxq_descs, ring->tx_pending); in ionic_set_ringparam()
561 if (ring->rx_pending != lif->nrxq_descs) in ionic_set_ringparam()
563 lif->nrxq_descs, ring->rx_pending); in ionic_set_ringparam()
566 if (!netif_running(lif->netdev)) { in ionic_set_ringparam()
567 lif->ntxq_descs = ring->tx_pending; in ionic_set_ringparam()
568 lif->nrxq_descs = ring->rx_pending; in ionic_set_ringparam()
575 mutex_lock(&lif->queue_lock); in ionic_set_ringparam()
576 err = ionic_reconfigure_queues(lif, &qparam); in ionic_set_ringparam()
577 mutex_unlock(&lif->queue_lock); in ionic_set_ringparam()
587 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_channels() local
590 ch->max_combined = lif->ionic->ntxqs_per_lif; in ionic_get_channels()
591 ch->max_rx = lif->ionic->ntxqs_per_lif / 2; in ionic_get_channels()
592 ch->max_tx = lif->ionic->ntxqs_per_lif / 2; in ionic_get_channels()
595 if (test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state)) { in ionic_get_channels()
596 ch->rx_count = lif->nxqs; in ionic_get_channels()
597 ch->tx_count = lif->nxqs; in ionic_get_channels()
599 ch->combined_count = lif->nxqs; in ionic_get_channels()
606 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_channels() local
611 if (test_bit(IONIC_LIF_F_FW_RESET, lif->state)) in ionic_set_channels()
614 ionic_init_queue_params(lif, &qparam); in ionic_set_channels()
626 max_cnt = lif->ionic->ntxqs_per_lif; in ionic_set_channels()
631 if (test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state)) in ionic_set_channels()
632 netdev_info(lif->netdev, "Sharing queue interrupts\n"); in ionic_set_channels()
633 else if (ch->combined_count == lif->nxqs) in ionic_set_channels()
636 if (lif->nxqs != ch->combined_count) in ionic_set_channels()
638 lif->nxqs, ch->combined_count); in ionic_set_channels()
647 if (!test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state)) in ionic_set_channels()
648 netdev_info(lif->netdev, "Splitting queue interrupts\n"); in ionic_set_channels()
649 else if (ch->rx_count == lif->nxqs) in ionic_set_channels()
652 if (lif->nxqs != ch->rx_count) in ionic_set_channels()
654 lif->nxqs, ch->rx_count); in ionic_set_channels()
661 if (!netif_running(lif->netdev)) { in ionic_set_channels()
662 lif->nxqs = qparam.nxqs; in ionic_set_channels()
665 set_bit(IONIC_LIF_F_SPLIT_INTR, lif->state); in ionic_set_channels()
667 clear_bit(IONIC_LIF_F_SPLIT_INTR, lif->state); in ionic_set_channels()
668 lif->tx_coalesce_usecs = lif->rx_coalesce_usecs; in ionic_set_channels()
669 lif->tx_coalesce_hw = lif->rx_coalesce_hw; in ionic_set_channels()
674 mutex_lock(&lif->queue_lock); in ionic_set_channels()
675 err = ionic_reconfigure_queues(lif, &qparam); in ionic_set_channels()
676 mutex_unlock(&lif->queue_lock); in ionic_set_channels()
686 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_rxnfc() local
691 info->data = lif->nxqs; in ionic_get_rxnfc()
704 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_rxfh_indir_size() local
706 return le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_get_rxfh_indir_size()
717 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_rxfh() local
721 tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_get_rxfh()
723 indir[i] = lif->rss_ind_tbl[i]; in ionic_get_rxfh()
727 memcpy(key, lif->rss_hash_key, IONIC_RSS_HASH_KEY_SIZE); in ionic_get_rxfh()
738 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_rxfh() local
743 return ionic_lif_rss_config(lif, lif->rss_types, key, indir); in ionic_set_rxfh()
750 struct ionic_lif *lif = netdev_priv(dev); in ionic_set_tunable() local
754 lif->rx_copybreak = *(u32 *)data; in ionic_set_tunable()
766 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_tunable() local
770 *(u32 *)data = lif->rx_copybreak; in ionic_get_tunable()
783 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_module_info() local
784 struct ionic_dev *idev = &lif->ionic->idev; in ionic_get_module_info()
817 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_module_eeprom() local
818 struct ionic_dev *idev = &lif->ionic->idev; in ionic_get_module_eeprom()
849 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_ts_info() local
850 struct ionic *ionic = lif->ionic; in ionic_get_ts_info()
853 if (!lif->phc || !lif->phc->ptp) in ionic_get_ts_info()
856 info->phc_index = ptp_clock_index(lif->phc->ptp); in ionic_get_ts_info()
871 if (ionic->ident.lif.eth.hwstamp_tx_modes & mask) in ionic_get_ts_info()
875 if (ionic->ident.lif.eth.hwstamp_tx_modes & mask) in ionic_get_ts_info()
884 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
888 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
892 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
896 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
900 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
904 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
908 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
912 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
916 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
920 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
924 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
928 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
932 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
940 struct ionic_lif *lif = netdev_priv(netdev); in ionic_nway_reset() local
941 struct ionic *ionic = lif->ionic; in ionic_nway_reset()
944 if (test_bit(IONIC_LIF_F_FW_RESET, lif->state)) in ionic_nway_reset()