Lines Matching refs:edev
220 static void qede_get_strings_stats_txq(struct qede_dev *edev, in qede_get_strings_stats_txq() argument
228 QEDE_TXQ_XDP_TO_IDX(edev, txq), in qede_get_strings_stats_txq()
237 static void qede_get_strings_stats_rxq(struct qede_dev *edev, in qede_get_strings_stats_rxq() argument
249 static bool qede_is_irrelevant_stat(struct qede_dev *edev, int stat_index) in qede_is_irrelevant_stat() argument
251 return (IS_VF(edev) && QEDE_STAT_IS_PF_ONLY(stat_index)) || in qede_is_irrelevant_stat()
252 (QEDE_IS_BB(edev) && QEDE_STAT_IS_AH_ONLY(stat_index)) || in qede_is_irrelevant_stat()
253 (QEDE_IS_AH(edev) && QEDE_STAT_IS_BB_ONLY(stat_index)); in qede_is_irrelevant_stat()
256 static void qede_get_strings_stats(struct qede_dev *edev, u8 *buf) in qede_get_strings_stats() argument
262 for (i = 0; i < QEDE_QUEUE_CNT(edev); i++) { in qede_get_strings_stats()
263 fp = &edev->fp_array[i]; in qede_get_strings_stats()
266 qede_get_strings_stats_rxq(edev, fp->rxq, &buf); in qede_get_strings_stats()
269 qede_get_strings_stats_txq(edev, fp->xdp_tx, &buf); in qede_get_strings_stats()
274 for_each_cos_in_txq(edev, cos) in qede_get_strings_stats()
275 qede_get_strings_stats_txq(edev, in qede_get_strings_stats()
282 if (qede_is_irrelevant_stat(edev, i)) in qede_get_strings_stats()
291 struct qede_dev *edev = netdev_priv(dev); in qede_get_strings() local
295 qede_get_strings_stats(edev, buf); in qede_get_strings()
306 DP_VERBOSE(edev, QED_MSG_DEBUG, in qede_get_strings()
334 struct qede_dev *edev = netdev_priv(dev); in qede_get_ethtool_stats() local
338 qede_fill_by_demand_stats(edev); in qede_get_ethtool_stats()
341 __qede_lock(edev); in qede_get_ethtool_stats()
343 for (i = 0; i < QEDE_QUEUE_CNT(edev); i++) { in qede_get_ethtool_stats()
344 fp = &edev->fp_array[i]; in qede_get_ethtool_stats()
355 for_each_cos_in_txq(edev, cos) in qede_get_ethtool_stats()
361 if (qede_is_irrelevant_stat(edev, i)) in qede_get_ethtool_stats()
363 *buf = *((u64 *)(((void *)&edev->stats) + in qede_get_ethtool_stats()
369 __qede_unlock(edev); in qede_get_ethtool_stats()
374 struct qede_dev *edev = netdev_priv(dev); in qede_get_sset_count() local
380 if (qede_is_irrelevant_stat(edev, i)) in qede_get_sset_count()
384 num_stats += QEDE_TSS_COUNT(edev) * QEDE_NUM_TQSTATS * in qede_get_sset_count()
385 edev->dev_info.num_tc; in qede_get_sset_count()
388 num_stats += QEDE_RSS_COUNT(edev) * QEDE_NUM_RQSTATS; in qede_get_sset_count()
391 if (edev->xdp_prog) in qede_get_sset_count()
392 num_stats += QEDE_RSS_COUNT(edev) * QEDE_NUM_TQSTATS; in qede_get_sset_count()
398 if (!IS_VF(edev)) in qede_get_sset_count()
403 DP_VERBOSE(edev, QED_MSG_DEBUG, in qede_get_sset_count()
411 struct qede_dev *edev = netdev_priv(dev); in qede_get_priv_flags() local
414 if (edev->dev_info.common.num_hwfns > 1) in qede_get_priv_flags()
417 if (edev->dev_info.common.smart_an) in qede_get_priv_flags()
494 struct qede_dev *edev = netdev_priv(dev); in qede_get_link_ksettings() local
497 __qede_lock(edev); in qede_get_link_ksettings()
500 edev->ops->common->get_link(edev->cdev, ¤t_link); in qede_get_link_ksettings()
511 if ((edev->state == QEDE_STATE_OPEN) && (current_link.link_up)) { in qede_get_link_ksettings()
519 __qede_unlock(edev); in qede_get_link_ksettings()
532 struct qede_dev *edev = netdev_priv(dev); in qede_set_link_ksettings() local
537 if (!edev->ops || !edev->ops->common->can_link_change(edev->cdev)) { in qede_set_link_ksettings()
538 DP_INFO(edev, "Link settings are not allowed to be changed\n"); in qede_set_link_ksettings()
543 edev->ops->common->get_link(edev->cdev, ¤t_link); in qede_set_link_ksettings()
549 DP_INFO(edev, "Auto negotiation is not supported\n"); in qede_set_link_ksettings()
566 DP_INFO(edev, "1G speed not supported\n"); in qede_set_link_ksettings()
582 DP_INFO(edev, "10G speed not supported\n"); in qede_set_link_ksettings()
591 DP_INFO(edev, "20G speed not supported\n"); in qede_set_link_ksettings()
601 DP_INFO(edev, "25G speed not supported\n"); in qede_set_link_ksettings()
613 DP_INFO(edev, "40G speed not supported\n"); in qede_set_link_ksettings()
624 DP_INFO(edev, "50G speed not supported\n"); in qede_set_link_ksettings()
636 DP_INFO(edev, "100G speed not supported\n"); in qede_set_link_ksettings()
643 DP_INFO(edev, "Unsupported speed %u\n", base->speed); in qede_set_link_ksettings()
649 edev->ops->common->set_link(edev->cdev, ¶ms); in qede_set_link_ksettings()
658 struct qede_dev *edev = netdev_priv(ndev); in qede_get_drvinfo() local
664 edev->dev_info.common.fw_major, in qede_get_drvinfo()
665 edev->dev_info.common.fw_minor, in qede_get_drvinfo()
666 edev->dev_info.common.fw_rev, in qede_get_drvinfo()
667 edev->dev_info.common.fw_eng); in qede_get_drvinfo()
670 (edev->dev_info.common.mfw_rev >> 24) & 0xFF, in qede_get_drvinfo()
671 (edev->dev_info.common.mfw_rev >> 16) & 0xFF, in qede_get_drvinfo()
672 (edev->dev_info.common.mfw_rev >> 8) & 0xFF, in qede_get_drvinfo()
673 edev->dev_info.common.mfw_rev & 0xFF); in qede_get_drvinfo()
683 if (edev->dev_info.common.mbi_version) { in qede_get_drvinfo()
685 (edev->dev_info.common.mbi_version & in qede_get_drvinfo()
687 (edev->dev_info.common.mbi_version & in qede_get_drvinfo()
689 (edev->dev_info.common.mbi_version & in qede_get_drvinfo()
698 strlcpy(info->bus_info, pci_name(edev->pdev), sizeof(info->bus_info)); in qede_get_drvinfo()
703 struct qede_dev *edev = netdev_priv(ndev); in qede_get_wol() local
705 if (edev->dev_info.common.wol_support) { in qede_get_wol()
707 wol->wolopts = edev->wol_enabled ? WAKE_MAGIC : 0; in qede_get_wol()
713 struct qede_dev *edev = netdev_priv(ndev); in qede_set_wol() local
718 DP_INFO(edev, in qede_set_wol()
724 if (wol_requested == edev->wol_enabled) in qede_set_wol()
728 if (!edev->dev_info.common.wol_support) { in qede_set_wol()
729 DP_INFO(edev, "Device doesn't support WoL\n"); in qede_set_wol()
733 rc = edev->ops->common->update_wol(edev->cdev, wol_requested); in qede_set_wol()
735 edev->wol_enabled = wol_requested; in qede_set_wol()
742 struct qede_dev *edev = netdev_priv(ndev); in qede_get_msglevel() local
744 return ((u32)edev->dp_level << QED_LOG_LEVEL_SHIFT) | edev->dp_module; in qede_get_msglevel()
749 struct qede_dev *edev = netdev_priv(ndev); in qede_set_msglevel() local
755 edev->dp_level = dp_level; in qede_set_msglevel()
756 edev->dp_module = dp_module; in qede_set_msglevel()
757 edev->ops->common->update_msglvl(edev->cdev, in qede_set_msglevel()
763 struct qede_dev *edev = netdev_priv(dev); in qede_nway_reset() local
767 if (!edev->ops || !edev->ops->common->can_link_change(edev->cdev)) { in qede_nway_reset()
768 DP_INFO(edev, "Link settings are not allowed to be changed\n"); in qede_nway_reset()
776 edev->ops->common->get_link(edev->cdev, ¤t_link); in qede_nway_reset()
783 edev->ops->common->set_link(edev->cdev, &link_params); in qede_nway_reset()
785 edev->ops->common->set_link(edev->cdev, &link_params); in qede_nway_reset()
792 struct qede_dev *edev = netdev_priv(dev); in qede_get_link() local
796 edev->ops->common->get_link(edev->cdev, ¤t_link); in qede_get_link()
804 struct qede_dev *edev = netdev_priv(dev); in qede_flash_device() local
806 return edev->ops->common->nvm_flash(edev->cdev, flash->data); in qede_flash_device()
813 struct qede_dev *edev = netdev_priv(dev); in qede_get_coalesce() local
822 __qede_lock(edev); in qede_get_coalesce()
823 if (edev->state == QEDE_STATE_OPEN) { in qede_get_coalesce()
825 fp = &edev->fp_array[i]; in qede_get_coalesce()
833 rc = edev->ops->get_coalesce(edev->cdev, &rx_coal, rx_handle); in qede_get_coalesce()
835 DP_INFO(edev, "Read Rx coalesce error\n"); in qede_get_coalesce()
842 fp = &edev->fp_array[i]; in qede_get_coalesce()
855 rc = edev->ops->get_coalesce(edev->cdev, &tx_coal, tx_handle); in qede_get_coalesce()
857 DP_INFO(edev, "Read Tx coalesce error\n"); in qede_get_coalesce()
861 __qede_unlock(edev); in qede_get_coalesce()
872 struct qede_dev *edev = netdev_priv(dev); in qede_set_coalesce() local
878 DP_INFO(edev, "Interface is down\n"); in qede_set_coalesce()
884 DP_INFO(edev, in qede_set_coalesce()
894 fp = &edev->fp_array[i]; in qede_set_coalesce()
896 if (edev->fp_array[i].type & QEDE_FASTPATH_RX) { in qede_set_coalesce()
897 rc = edev->ops->common->set_coalesce(edev->cdev, in qede_set_coalesce()
901 DP_INFO(edev, in qede_set_coalesce()
907 if (edev->fp_array[i].type & QEDE_FASTPATH_TX) { in qede_set_coalesce()
916 rc = edev->ops->common->set_coalesce(edev->cdev, in qede_set_coalesce()
920 DP_INFO(edev, in qede_set_coalesce()
933 struct qede_dev *edev = netdev_priv(dev); in qede_get_ringparam() local
936 ering->rx_pending = edev->q_num_rx_buffers; in qede_get_ringparam()
938 ering->tx_pending = edev->q_num_tx_buffers; in qede_get_ringparam()
944 struct qede_dev *edev = netdev_priv(dev); in qede_set_ringparam() local
946 DP_VERBOSE(edev, (NETIF_MSG_IFUP | NETIF_MSG_IFDOWN), in qede_set_ringparam()
955 DP_VERBOSE(edev, (NETIF_MSG_IFUP | NETIF_MSG_IFDOWN), in qede_set_ringparam()
963 edev->q_num_rx_buffers = ering->rx_pending; in qede_set_ringparam()
964 edev->q_num_tx_buffers = ering->tx_pending; in qede_set_ringparam()
966 qede_reload(edev, NULL, false); in qede_set_ringparam()
974 struct qede_dev *edev = netdev_priv(dev); in qede_get_pauseparam() local
978 edev->ops->common->get_link(edev->cdev, ¤t_link); in qede_get_pauseparam()
987 DP_VERBOSE(edev, QED_MSG_DEBUG, in qede_get_pauseparam()
996 struct qede_dev *edev = netdev_priv(dev); in qede_set_pauseparam() local
1000 if (!edev->ops || !edev->ops->common->can_link_change(edev->cdev)) { in qede_set_pauseparam()
1001 DP_INFO(edev, in qede_set_pauseparam()
1007 edev->ops->common->get_link(edev->cdev, ¤t_link); in qede_set_pauseparam()
1013 DP_INFO(edev, "autoneg not supported\n"); in qede_set_pauseparam()
1024 edev->ops->common->set_link(edev->cdev, ¶ms); in qede_set_pauseparam()
1032 struct qede_dev *edev = netdev_priv(ndev); in qede_get_regs() local
1037 if (edev->ops && edev->ops->common) in qede_get_regs()
1038 edev->ops->common->dbg_all_data(edev->cdev, buffer); in qede_get_regs()
1043 struct qede_dev *edev = netdev_priv(ndev); in qede_get_regs_len() local
1045 if (edev->ops && edev->ops->common) in qede_get_regs_len()
1046 return edev->ops->common->dbg_all_data_size(edev->cdev); in qede_get_regs_len()
1051 static void qede_update_mtu(struct qede_dev *edev, in qede_update_mtu() argument
1054 edev->ndev->mtu = args->u.mtu; in qede_update_mtu()
1060 struct qede_dev *edev = netdev_priv(ndev); in qede_change_mtu() local
1063 DP_VERBOSE(edev, (NETIF_MSG_IFUP | NETIF_MSG_IFDOWN), in qede_change_mtu()
1072 qede_reload(edev, &args, false); in qede_change_mtu()
1074 edev->ops->common->update_mtu(edev->cdev, new_mtu); in qede_change_mtu()
1082 struct qede_dev *edev = netdev_priv(dev); in qede_get_channels() local
1084 channels->max_combined = QEDE_MAX_RSS_CNT(edev); in qede_get_channels()
1085 channels->max_rx = QEDE_MAX_RSS_CNT(edev); in qede_get_channels()
1086 channels->max_tx = QEDE_MAX_RSS_CNT(edev); in qede_get_channels()
1087 channels->combined_count = QEDE_QUEUE_CNT(edev) - edev->fp_num_tx - in qede_get_channels()
1088 edev->fp_num_rx; in qede_get_channels()
1089 channels->tx_count = edev->fp_num_tx; in qede_get_channels()
1090 channels->rx_count = edev->fp_num_rx; in qede_get_channels()
1096 struct qede_dev *edev = netdev_priv(dev); in qede_set_channels() local
1099 DP_VERBOSE(edev, (NETIF_MSG_IFUP | NETIF_MSG_IFDOWN), in qede_set_channels()
1109 DP_VERBOSE(edev, (NETIF_MSG_IFUP | NETIF_MSG_IFDOWN), in qede_set_channels()
1116 DP_VERBOSE(edev, (NETIF_MSG_IFUP | NETIF_MSG_IFDOWN), in qede_set_channels()
1121 if (count > QEDE_MAX_RSS_CNT(edev)) { in qede_set_channels()
1122 DP_VERBOSE(edev, (NETIF_MSG_IFUP | NETIF_MSG_IFDOWN), in qede_set_channels()
1124 count, QEDE_MAX_RSS_CNT(edev)); in qede_set_channels()
1129 if ((count == QEDE_QUEUE_CNT(edev)) && in qede_set_channels()
1130 (channels->tx_count == edev->fp_num_tx) && in qede_set_channels()
1131 (channels->rx_count == edev->fp_num_rx)) { in qede_set_channels()
1132 DP_VERBOSE(edev, (NETIF_MSG_IFUP | NETIF_MSG_IFDOWN), in qede_set_channels()
1138 if ((count % edev->dev_info.common.num_hwfns) || in qede_set_channels()
1139 (channels->tx_count % edev->dev_info.common.num_hwfns) || in qede_set_channels()
1140 (channels->rx_count % edev->dev_info.common.num_hwfns)) { in qede_set_channels()
1141 DP_VERBOSE(edev, (NETIF_MSG_IFUP | NETIF_MSG_IFDOWN), in qede_set_channels()
1143 edev->dev_info.common.num_hwfns); in qede_set_channels()
1148 edev->req_queues = count; in qede_set_channels()
1149 edev->req_num_tx = channels->tx_count; in qede_set_channels()
1150 edev->req_num_rx = channels->rx_count; in qede_set_channels()
1152 if ((edev->req_queues - edev->req_num_tx) != QEDE_RSS_COUNT(edev)) { in qede_set_channels()
1153 edev->rss_params_inited &= ~QEDE_RSS_INDIR_INITED; in qede_set_channels()
1154 memset(edev->rss_ind_table, 0, sizeof(edev->rss_ind_table)); in qede_set_channels()
1157 qede_reload(edev, NULL, false); in qede_set_channels()
1165 struct qede_dev *edev = netdev_priv(dev); in qede_get_ts_info() local
1167 return qede_ptp_get_ts_info(edev, info); in qede_get_ts_info()
1173 struct qede_dev *edev = netdev_priv(dev); in qede_set_phys_id() local
1193 edev->ops->common->set_led(edev->cdev, led_state); in qede_set_phys_id()
1198 static int qede_get_rss_flags(struct qede_dev *edev, struct ethtool_rxnfc *info) in qede_get_rss_flags() argument
1208 if (edev->rss_caps & QED_RSS_IPV4_UDP) in qede_get_rss_flags()
1212 if (edev->rss_caps & QED_RSS_IPV6_UDP) in qede_get_rss_flags()
1229 struct qede_dev *edev = netdev_priv(dev); in qede_get_rxnfc() local
1234 info->data = QEDE_RSS_COUNT(edev); in qede_get_rxnfc()
1237 rc = qede_get_rss_flags(edev, info); in qede_get_rxnfc()
1240 info->rule_cnt = qede_get_arfs_filter_count(edev); in qede_get_rxnfc()
1244 rc = qede_get_cls_rule_entry(edev, info); in qede_get_rxnfc()
1247 rc = qede_get_cls_rule_all(edev, info, rule_locs); in qede_get_rxnfc()
1250 DP_ERR(edev, "Command parameters not supported\n"); in qede_get_rxnfc()
1257 static int qede_set_rss_flags(struct qede_dev *edev, struct ethtool_rxnfc *info) in qede_set_rss_flags() argument
1263 DP_VERBOSE(edev, QED_MSG_DEBUG, in qede_set_rss_flags()
1273 DP_INFO(edev, "Command parameters not supported\n"); in qede_set_rss_flags()
1282 DP_VERBOSE(edev, QED_MSG_DEBUG, in qede_set_rss_flags()
1286 DP_VERBOSE(edev, QED_MSG_DEBUG, in qede_set_rss_flags()
1297 DP_VERBOSE(edev, QED_MSG_DEBUG, in qede_set_rss_flags()
1301 DP_VERBOSE(edev, QED_MSG_DEBUG, in qede_set_rss_flags()
1311 DP_INFO(edev, "Command parameters not supported\n"); in qede_set_rss_flags()
1327 DP_INFO(edev, "Command parameters not supported\n"); in qede_set_rss_flags()
1336 if (edev->rss_caps == ((edev->rss_caps & ~clr_caps) | set_caps)) in qede_set_rss_flags()
1340 edev->rss_caps = ((edev->rss_caps & ~clr_caps) | set_caps); in qede_set_rss_flags()
1341 edev->rss_params_inited |= QEDE_RSS_CAPS_INITED; in qede_set_rss_flags()
1344 __qede_lock(edev); in qede_set_rss_flags()
1345 if (edev->state == QEDE_STATE_OPEN) { in qede_set_rss_flags()
1348 __qede_unlock(edev); in qede_set_rss_flags()
1351 qede_fill_rss_params(edev, &vport_update_params->rss_params, in qede_set_rss_flags()
1353 rc = edev->ops->vport_update(edev->cdev, vport_update_params); in qede_set_rss_flags()
1356 __qede_unlock(edev); in qede_set_rss_flags()
1363 struct qede_dev *edev = netdev_priv(dev); in qede_set_rxnfc() local
1368 rc = qede_set_rss_flags(edev, info); in qede_set_rxnfc()
1371 rc = qede_add_cls_rule(edev, info); in qede_set_rxnfc()
1374 rc = qede_delete_flow_filter(edev, info->fs.location); in qede_set_rxnfc()
1377 DP_INFO(edev, "Command parameters not supported\n"); in qede_set_rxnfc()
1391 struct qede_dev *edev = netdev_priv(dev); in qede_get_rxfh_key_size() local
1393 return sizeof(edev->rss_key); in qede_get_rxfh_key_size()
1398 struct qede_dev *edev = netdev_priv(dev); in qede_get_rxfh() local
1408 indir[i] = edev->rss_ind_table[i]; in qede_get_rxfh()
1411 memcpy(key, edev->rss_key, qede_get_rxfh_key_size(dev)); in qede_get_rxfh()
1420 struct qede_dev *edev = netdev_priv(dev); in qede_set_rxfh() local
1423 if (edev->dev_info.common.num_hwfns > 1) { in qede_set_rxfh()
1424 DP_INFO(edev, in qede_set_rxfh()
1437 edev->rss_ind_table[i] = indir[i]; in qede_set_rxfh()
1438 edev->rss_params_inited |= QEDE_RSS_INDIR_INITED; in qede_set_rxfh()
1442 memcpy(&edev->rss_key, key, qede_get_rxfh_key_size(dev)); in qede_set_rxfh()
1443 edev->rss_params_inited |= QEDE_RSS_KEY_INITED; in qede_set_rxfh()
1446 __qede_lock(edev); in qede_set_rxfh()
1447 if (edev->state == QEDE_STATE_OPEN) { in qede_set_rxfh()
1450 __qede_unlock(edev); in qede_set_rxfh()
1453 qede_fill_rss_params(edev, &vport_update_params->rss_params, in qede_set_rxfh()
1455 rc = edev->ops->vport_update(edev->cdev, vport_update_params); in qede_set_rxfh()
1458 __qede_unlock(edev); in qede_set_rxfh()
1464 static void qede_netif_start(struct qede_dev *edev) in qede_netif_start() argument
1468 if (!netif_running(edev->ndev)) in qede_netif_start()
1473 qed_sb_ack(edev->fp_array[i].sb_info, IGU_INT_ENABLE, 1); in qede_netif_start()
1474 napi_enable(&edev->fp_array[i].napi); in qede_netif_start()
1479 static void qede_netif_stop(struct qede_dev *edev) in qede_netif_stop() argument
1484 napi_disable(&edev->fp_array[i].napi); in qede_netif_stop()
1486 qed_sb_ack(edev->fp_array[i].sb_info, IGU_INT_DISABLE, 0); in qede_netif_stop()
1490 static int qede_selftest_transmit_traffic(struct qede_dev *edev, in qede_selftest_transmit_traffic() argument
1500 struct qede_fastpath *fp = &edev->fp_array[i]; in qede_selftest_transmit_traffic()
1509 DP_NOTICE(edev, "Tx path is not available\n"); in qede_selftest_transmit_traffic()
1525 mapping = dma_map_single(&edev->pdev->dev, skb->data, in qede_selftest_transmit_traffic()
1527 if (unlikely(dma_mapping_error(&edev->pdev->dev, mapping))) { in qede_selftest_transmit_traffic()
1528 DP_NOTICE(edev, "SKB mapping failed\n"); in qede_selftest_transmit_traffic()
1554 DP_NOTICE(edev, "Tx completion didn't happen\n"); in qede_selftest_transmit_traffic()
1559 dma_unmap_single(&edev->pdev->dev, BD_UNMAP_ADDR(first_bd), in qede_selftest_transmit_traffic()
1567 static int qede_selftest_receive_traffic(struct qede_dev *edev) in qede_selftest_receive_traffic() argument
1578 if (edev->fp_array[i].type & QEDE_FASTPATH_RX) { in qede_selftest_receive_traffic()
1579 rxq = edev->fp_array[i].rxq; in qede_selftest_receive_traffic()
1585 DP_NOTICE(edev, "Rx path is not available\n"); in qede_selftest_receive_traffic()
1622 if (ether_addr_equal(data_ptr, edev->ndev->dev_addr) && in qede_selftest_receive_traffic()
1624 edev->ndev->dev_addr)) { in qede_selftest_receive_traffic()
1636 DP_INFO(edev, "Not the transmitted packet\n"); in qede_selftest_receive_traffic()
1642 DP_NOTICE(edev, "Failed to receive the traffic\n"); in qede_selftest_receive_traffic()
1646 qede_update_rx_prod(edev, rxq); in qede_selftest_receive_traffic()
1651 static int qede_selftest_run_loopback(struct qede_dev *edev, u32 loopback_mode) in qede_selftest_run_loopback() argument
1659 if (!netif_running(edev->ndev)) { in qede_selftest_run_loopback()
1660 DP_NOTICE(edev, "Interface is down\n"); in qede_selftest_run_loopback()
1664 qede_netif_stop(edev); in qede_selftest_run_loopback()
1671 edev->ops->common->set_link(edev->cdev, &link_params); in qede_selftest_run_loopback()
1679 pkt_size = (((edev->ndev->mtu < ETH_DATA_LEN) ? in qede_selftest_run_loopback()
1680 edev->ndev->mtu : ETH_DATA_LEN) + ETH_HLEN); in qede_selftest_run_loopback()
1682 skb = netdev_alloc_skb(edev->ndev, pkt_size); in qede_selftest_run_loopback()
1684 DP_INFO(edev, "Can't allocate skb\n"); in qede_selftest_run_loopback()
1689 ether_addr_copy(packet, edev->ndev->dev_addr); in qede_selftest_run_loopback()
1690 ether_addr_copy(packet + ETH_ALEN, edev->ndev->dev_addr); in qede_selftest_run_loopback()
1695 rc = qede_selftest_transmit_traffic(edev, skb); in qede_selftest_run_loopback()
1699 rc = qede_selftest_receive_traffic(edev); in qede_selftest_run_loopback()
1703 DP_VERBOSE(edev, NETIF_MSG_RX_STATUS, "Loopback test successful\n"); in qede_selftest_run_loopback()
1713 edev->ops->common->set_link(edev->cdev, &link_params); in qede_selftest_run_loopback()
1718 qede_netif_start(edev); in qede_selftest_run_loopback()
1726 struct qede_dev *edev = netdev_priv(dev); in qede_self_test() local
1728 DP_VERBOSE(edev, QED_MSG_DEBUG, in qede_self_test()
1736 if (qede_selftest_run_loopback(edev, in qede_self_test()
1743 if (edev->ops->common->selftest->selftest_interrupt(edev->cdev)) { in qede_self_test()
1748 if (edev->ops->common->selftest->selftest_memory(edev->cdev)) { in qede_self_test()
1753 if (edev->ops->common->selftest->selftest_register(edev->cdev)) { in qede_self_test()
1758 if (edev->ops->common->selftest->selftest_clock(edev->cdev)) { in qede_self_test()
1763 if (edev->ops->common->selftest->selftest_nvram(edev->cdev)) { in qede_self_test()
1773 struct qede_dev *edev = netdev_priv(dev); in qede_set_tunable() local
1780 DP_VERBOSE(edev, QED_MSG_DEBUG, in qede_set_tunable()
1786 edev->rx_copybreak = *(u32 *)data; in qede_set_tunable()
1798 struct qede_dev *edev = netdev_priv(dev); in qede_get_tunable() local
1802 *(u32 *)data = edev->rx_copybreak; in qede_get_tunable()
1813 struct qede_dev *edev = netdev_priv(dev); in qede_get_eee() local
1817 edev->ops->common->get_link(edev->cdev, ¤t_link); in qede_get_eee()
1820 DP_INFO(edev, "EEE is not supported\n"); in qede_get_eee()
1847 struct qede_dev *edev = netdev_priv(dev); in qede_set_eee() local
1851 if (!edev->ops->common->can_link_change(edev->cdev)) { in qede_set_eee()
1852 DP_INFO(edev, "Link settings are not allowed to be changed\n"); in qede_set_eee()
1857 edev->ops->common->get_link(edev->cdev, ¤t_link); in qede_set_eee()
1860 DP_INFO(edev, "EEE is not supported\n"); in qede_set_eee()
1872 DP_VERBOSE(edev, QED_MSG_DEBUG, in qede_set_eee()
1887 edev->ops->common->set_link(edev->cdev, ¶ms); in qede_set_eee()
1895 struct qede_dev *edev = netdev_priv(dev); in qede_get_module_info() local
1900 rc = edev->ops->common->read_module_eeprom(edev->cdev, buf, in qede_get_module_info()
1903 DP_ERR(edev, "Failed reading EEPROM data %d\n", rc); in qede_get_module_info()
1922 DP_ERR(edev, "Unknown transceiver type 0x%x\n", buf[0]); in qede_get_module_info()
1932 struct qede_dev *edev = netdev_priv(dev); in qede_get_module_eeprom() local
1945 rc = edev->ops->common->read_module_eeprom(edev->cdev, buf, in qede_get_module_eeprom()
1949 DP_ERR(edev, "Failed reading A0 section %d\n", rc); in qede_get_module_eeprom()
1965 rc = edev->ops->common->read_module_eeprom(edev->cdev, buf, in qede_get_module_eeprom()
1969 DP_VERBOSE(edev, QED_MSG_DEBUG, in qede_get_module_eeprom()
1980 struct qede_dev *edev = netdev_priv(dev); in qede_set_dump() local
1983 if (edev->dump_info.cmd == QEDE_DUMP_CMD_NONE) { in qede_set_dump()
1985 DP_ERR(edev, "Invalid command %d\n", val->flag); in qede_set_dump()
1988 edev->dump_info.cmd = val->flag; in qede_set_dump()
1989 edev->dump_info.num_args = 0; in qede_set_dump()
1993 if (edev->dump_info.num_args == QEDE_DUMP_MAX_ARGS) { in qede_set_dump()
1994 DP_ERR(edev, "Arg count = %d\n", edev->dump_info.num_args); in qede_set_dump()
1998 switch (edev->dump_info.cmd) { in qede_set_dump()
2000 edev->dump_info.args[edev->dump_info.num_args] = val->flag; in qede_set_dump()
2001 edev->dump_info.num_args++; in qede_set_dump()
2004 rc = edev->ops->common->set_grc_config(edev->cdev, in qede_set_dump()
2017 struct qede_dev *edev = netdev_priv(dev); in qede_get_dump_flag() local
2019 if (!edev->ops || !edev->ops->common) { in qede_get_dump_flag()
2020 DP_ERR(edev, "Edev ops not populated\n"); in qede_get_dump_flag()
2025 switch (edev->dump_info.cmd) { in qede_get_dump_flag()
2028 dump->len = edev->ops->common->read_nvm_cfg_len(edev->cdev, in qede_get_dump_flag()
2029 edev->dump_info.args[0]); in qede_get_dump_flag()
2033 dump->len = edev->ops->common->dbg_all_data_size(edev->cdev); in qede_get_dump_flag()
2036 DP_ERR(edev, "Invalid cmd = %d\n", edev->dump_info.cmd); in qede_get_dump_flag()
2040 DP_VERBOSE(edev, QED_MSG_DEBUG, in qede_get_dump_flag()
2049 struct qede_dev *edev = netdev_priv(dev); in qede_get_dump_data() local
2052 if (!edev->ops || !edev->ops->common) { in qede_get_dump_data()
2053 DP_ERR(edev, "Edev ops not populated\n"); in qede_get_dump_data()
2058 switch (edev->dump_info.cmd) { in qede_get_dump_data()
2060 if (edev->dump_info.num_args != QEDE_DUMP_NVM_ARG_COUNT) { in qede_get_dump_data()
2061 DP_ERR(edev, "Arg count = %d required = %d\n", in qede_get_dump_data()
2062 edev->dump_info.num_args, in qede_get_dump_data()
2067 rc = edev->ops->common->read_nvm_cfg(edev->cdev, (u8 **)&buf, in qede_get_dump_data()
2068 edev->dump_info.args[0], in qede_get_dump_data()
2069 edev->dump_info.args[1]); in qede_get_dump_data()
2073 rc = edev->ops->common->dbg_all_data(edev->cdev, buf); in qede_get_dump_data()
2076 DP_ERR(edev, "Invalid cmd = %d\n", edev->dump_info.cmd); in qede_get_dump_data()
2082 edev->dump_info.cmd = QEDE_DUMP_CMD_NONE; in qede_get_dump_data()
2083 edev->dump_info.num_args = 0; in qede_get_dump_data()
2084 memset(edev->dump_info.args, 0, sizeof(edev->dump_info.args)); in qede_get_dump_data()
2163 struct qede_dev *edev = netdev_priv(dev); in qede_set_ethtool_ops() local
2165 if (IS_VF(edev)) in qede_set_ethtool_ops()