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 = netdev_priv(netdev); in ionic_get_stats() local
35 if (test_bit(IONIC_LIF_F_FW_RESET, lif->state)) in ionic_get_stats()
40 ionic_stats_groups[i].get_values(lif, &buf); in ionic_get_stats()
43 static int ionic_get_stats_count(struct ionic_lif *lif) in ionic_get_stats_count() argument
48 num_stats += ionic_stats_groups[i].get_count(lif); in ionic_get_stats_count()
55 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_sset_count() local
60 count = ionic_get_stats_count(lif); in ionic_get_sset_count()
72 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_strings() local
76 ionic_get_stats_strings(lif, buf); in ionic_get_strings()
88 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_drvinfo() local
89 struct ionic *ionic = lif->ionic; in ionic_get_drvinfo()
106 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_regs() local
114 memcpy_fromio(p + offset, lif->ionic->idev.dev_info_regs->words, size); in ionic_get_regs()
118 memcpy_fromio(p + offset, lif->ionic->idev.dev_cmd_regs->words, size); in ionic_get_regs()
124 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_link_ksettings() local
125 struct ionic_dev *idev = &lif->ionic->idev; in ionic_get_link_ksettings()
225 dev_info(lif->ionic->dev, "unknown xcvr type pid=%d / 0x%x\n", in ionic_get_link_ksettings()
253 ks->base.speed = le32_to_cpu(lif->info->status.link_speed); in ionic_get_link_ksettings()
255 if (le16_to_cpu(lif->info->status.link_status)) in ionic_get_link_ksettings()
275 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_link_ksettings() local
276 struct ionic_dev *idev = &lif->ionic->idev; in ionic_set_link_ksettings()
277 struct ionic *ionic = lif->ionic; in ionic_set_link_ksettings()
280 if (test_bit(IONIC_LIF_F_FW_RESET, lif->state)) in ionic_set_link_ksettings()
309 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_pauseparam() local
314 pause_type = lif->ionic->idev.port_info->config.pause_type; in ionic_get_pauseparam()
324 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_pauseparam() local
325 struct ionic *ionic = lif->ionic; in ionic_set_pauseparam()
329 if (test_bit(IONIC_LIF_F_FW_RESET, lif->state)) in ionic_set_pauseparam()
342 if (requested_pause == lif->ionic->idev.port_info->config.pause_type) in ionic_set_pauseparam()
346 ionic_dev_cmd_port_pause(&lif->ionic->idev, requested_pause); in ionic_set_pauseparam()
358 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_fecparam() local
360 switch (lif->ionic->idev.port_info->config.fec_type) { in ionic_get_fecparam()
380 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_fecparam() local
384 if (test_bit(IONIC_LIF_F_FW_RESET, lif->state)) in ionic_set_fecparam()
387 if (lif->ionic->idev.port_info->config.an_enable) { in ionic_set_fecparam()
412 if (fec_type != lif->ionic->idev.port_info->config.fec_type) { in ionic_set_fecparam()
413 mutex_lock(&lif->ionic->dev_cmd_lock); in ionic_set_fecparam()
414 ionic_dev_cmd_port_fec(&lif->ionic->idev, fec_type); in ionic_set_fecparam()
415 ret = ionic_dev_cmd_wait(lif->ionic, DEVCMD_TIMEOUT); in ionic_set_fecparam()
416 mutex_unlock(&lif->ionic->dev_cmd_lock); in ionic_set_fecparam()
427 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_coalesce() local
429 coalesce->tx_coalesce_usecs = lif->tx_coalesce_usecs; in ionic_get_coalesce()
430 coalesce->rx_coalesce_usecs = lif->rx_coalesce_usecs; in ionic_get_coalesce()
432 if (test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state)) in ionic_get_coalesce()
433 coalesce->use_adaptive_tx_coalesce = test_bit(IONIC_LIF_F_TX_DIM_INTR, lif->state); in ionic_get_coalesce()
437 coalesce->use_adaptive_rx_coalesce = test_bit(IONIC_LIF_F_RX_DIM_INTR, lif->state); in ionic_get_coalesce()
447 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_coalesce() local
453 ident = &lif->ionic->ident; in ionic_set_coalesce()
461 if (!test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state) && in ionic_set_coalesce()
462 (coalesce->tx_coalesce_usecs != lif->rx_coalesce_usecs || in ionic_set_coalesce()
471 rx_coal = ionic_coal_usec_to_hw(lif->ionic, coalesce->rx_coalesce_usecs); in ionic_set_coalesce()
474 tx_coal = ionic_coal_usec_to_hw(lif->ionic, coalesce->tx_coalesce_usecs); in ionic_set_coalesce()
483 lif->rx_coalesce_usecs = coalesce->rx_coalesce_usecs; in ionic_set_coalesce()
484 lif->rx_coalesce_hw = rx_coal; in ionic_set_coalesce()
486 if (test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state)) in ionic_set_coalesce()
487 lif->tx_coalesce_usecs = coalesce->tx_coalesce_usecs; in ionic_set_coalesce()
489 lif->tx_coalesce_usecs = coalesce->rx_coalesce_usecs; in ionic_set_coalesce()
490 lif->tx_coalesce_hw = tx_coal; in ionic_set_coalesce()
493 set_bit(IONIC_LIF_F_RX_DIM_INTR, lif->state); in ionic_set_coalesce()
496 clear_bit(IONIC_LIF_F_RX_DIM_INTR, lif->state); in ionic_set_coalesce()
501 set_bit(IONIC_LIF_F_TX_DIM_INTR, lif->state); in ionic_set_coalesce()
504 clear_bit(IONIC_LIF_F_TX_DIM_INTR, lif->state); in ionic_set_coalesce()
508 if (test_bit(IONIC_LIF_F_UP, lif->state)) { in ionic_set_coalesce()
509 for (i = 0; i < lif->nxqs; i++) { in ionic_set_coalesce()
510 if (lif->rxqcqs[i]->flags & IONIC_QCQ_F_INTR) { in ionic_set_coalesce()
511 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_set_coalesce()
512 lif->rxqcqs[i]->intr.index, in ionic_set_coalesce()
513 lif->rx_coalesce_hw); in ionic_set_coalesce()
514 lif->rxqcqs[i]->intr.dim_coal_hw = rx_dim; in ionic_set_coalesce()
517 if (lif->txqcqs[i]->flags & IONIC_QCQ_F_INTR) { in ionic_set_coalesce()
518 ionic_intr_coal_init(lif->ionic->idev.intr_ctrl, in ionic_set_coalesce()
519 lif->txqcqs[i]->intr.index, in ionic_set_coalesce()
520 lif->tx_coalesce_hw); in ionic_set_coalesce()
521 lif->txqcqs[i]->intr.dim_coal_hw = tx_dim; in ionic_set_coalesce()
532 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_ringparam() local
535 ring->tx_pending = lif->ntxq_descs; in ionic_get_ringparam()
537 ring->rx_pending = lif->nrxq_descs; in ionic_get_ringparam()
543 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_ringparam() local
547 if (test_bit(IONIC_LIF_F_FW_RESET, lif->state)) in ionic_set_ringparam()
550 ionic_init_queue_params(lif, &qparam); in ionic_set_ringparam()
564 if (ring->tx_pending == lif->ntxq_descs && in ionic_set_ringparam()
565 ring->rx_pending == lif->nrxq_descs) in ionic_set_ringparam()
568 if (ring->tx_pending != lif->ntxq_descs) in ionic_set_ringparam()
570 lif->ntxq_descs, ring->tx_pending); in ionic_set_ringparam()
572 if (ring->rx_pending != lif->nrxq_descs) in ionic_set_ringparam()
574 lif->nrxq_descs, ring->rx_pending); in ionic_set_ringparam()
577 if (!netif_running(lif->netdev)) { in ionic_set_ringparam()
578 lif->ntxq_descs = ring->tx_pending; in ionic_set_ringparam()
579 lif->nrxq_descs = ring->rx_pending; in ionic_set_ringparam()
586 mutex_lock(&lif->queue_lock); in ionic_set_ringparam()
587 err = ionic_reconfigure_queues(lif, &qparam); in ionic_set_ringparam()
588 mutex_unlock(&lif->queue_lock); in ionic_set_ringparam()
598 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_channels() local
601 ch->max_combined = lif->ionic->ntxqs_per_lif; in ionic_get_channels()
602 ch->max_rx = lif->ionic->ntxqs_per_lif / 2; in ionic_get_channels()
603 ch->max_tx = lif->ionic->ntxqs_per_lif / 2; in ionic_get_channels()
606 if (test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state)) { in ionic_get_channels()
607 ch->rx_count = lif->nxqs; in ionic_get_channels()
608 ch->tx_count = lif->nxqs; in ionic_get_channels()
610 ch->combined_count = lif->nxqs; in ionic_get_channels()
617 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_channels() local
622 if (test_bit(IONIC_LIF_F_FW_RESET, lif->state)) in ionic_set_channels()
625 ionic_init_queue_params(lif, &qparam); in ionic_set_channels()
637 max_cnt = lif->ionic->ntxqs_per_lif; in ionic_set_channels()
642 if (test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state)) in ionic_set_channels()
643 netdev_info(lif->netdev, "Sharing queue interrupts\n"); in ionic_set_channels()
644 else if (ch->combined_count == lif->nxqs) in ionic_set_channels()
647 if (lif->nxqs != ch->combined_count) in ionic_set_channels()
649 lif->nxqs, ch->combined_count); in ionic_set_channels()
658 if (!test_bit(IONIC_LIF_F_SPLIT_INTR, lif->state)) in ionic_set_channels()
659 netdev_info(lif->netdev, "Splitting queue interrupts\n"); in ionic_set_channels()
660 else if (ch->rx_count == lif->nxqs) in ionic_set_channels()
663 if (lif->nxqs != ch->rx_count) in ionic_set_channels()
665 lif->nxqs, ch->rx_count); in ionic_set_channels()
672 if (!netif_running(lif->netdev)) { in ionic_set_channels()
673 lif->nxqs = qparam.nxqs; in ionic_set_channels()
676 set_bit(IONIC_LIF_F_SPLIT_INTR, lif->state); in ionic_set_channels()
678 clear_bit(IONIC_LIF_F_SPLIT_INTR, lif->state); in ionic_set_channels()
679 lif->tx_coalesce_usecs = lif->rx_coalesce_usecs; in ionic_set_channels()
680 lif->tx_coalesce_hw = lif->rx_coalesce_hw; in ionic_set_channels()
685 mutex_lock(&lif->queue_lock); in ionic_set_channels()
686 err = ionic_reconfigure_queues(lif, &qparam); in ionic_set_channels()
687 mutex_unlock(&lif->queue_lock); in ionic_set_channels()
696 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_priv_flags() local
699 if (test_bit(IONIC_LIF_F_SW_DEBUG_STATS, lif->state)) in ionic_get_priv_flags()
707 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_priv_flags() local
709 clear_bit(IONIC_LIF_F_SW_DEBUG_STATS, lif->state); in ionic_set_priv_flags()
711 set_bit(IONIC_LIF_F_SW_DEBUG_STATS, lif->state); in ionic_set_priv_flags()
719 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_rxnfc() local
724 info->data = lif->nxqs; in ionic_get_rxnfc()
737 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_rxfh_indir_size() local
739 return le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_get_rxfh_indir_size()
750 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_rxfh() local
754 tbl_sz = le16_to_cpu(lif->ionic->ident.lif.eth.rss_ind_tbl_sz); in ionic_get_rxfh()
756 indir[i] = lif->rss_ind_tbl[i]; in ionic_get_rxfh()
760 memcpy(key, lif->rss_hash_key, IONIC_RSS_HASH_KEY_SIZE); in ionic_get_rxfh()
771 struct ionic_lif *lif = netdev_priv(netdev); in ionic_set_rxfh() local
776 return ionic_lif_rss_config(lif, lif->rss_types, key, indir); in ionic_set_rxfh()
783 struct ionic_lif *lif = netdev_priv(dev); in ionic_set_tunable() local
787 lif->rx_copybreak = *(u32 *)data; in ionic_set_tunable()
799 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_tunable() local
803 *(u32 *)data = lif->rx_copybreak; in ionic_get_tunable()
816 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_module_info() local
817 struct ionic_dev *idev = &lif->ionic->idev; in ionic_get_module_info()
850 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_module_eeprom() local
851 struct ionic_dev *idev = &lif->ionic->idev; in ionic_get_module_eeprom()
882 struct ionic_lif *lif = netdev_priv(netdev); in ionic_get_ts_info() local
883 struct ionic *ionic = lif->ionic; in ionic_get_ts_info()
886 if (!lif->phc || !lif->phc->ptp) in ionic_get_ts_info()
889 info->phc_index = ptp_clock_index(lif->phc->ptp); in ionic_get_ts_info()
904 if (ionic->ident.lif.eth.hwstamp_tx_modes & mask) in ionic_get_ts_info()
908 if (ionic->ident.lif.eth.hwstamp_tx_modes & mask) in ionic_get_ts_info()
917 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
921 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
925 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
929 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
933 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
937 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
941 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
945 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
949 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
953 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
957 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
961 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
965 if ((ionic->ident.lif.eth.hwstamp_rx_filters & mask) == mask) in ionic_get_ts_info()
973 struct ionic_lif *lif = netdev_priv(netdev); in ionic_nway_reset() local
974 struct ionic *ionic = lif->ionic; in ionic_nway_reset()
977 if (test_bit(IONIC_LIF_F_FW_RESET, lif->state)) in ionic_nway_reset()