Lines Matching defs:efx
106 struct efx_nic *efx = netdev_priv(net_dev);
109 efx_mcdi_print_fwver(efx, info->fw_version,
111 strlcpy(info->bus_info, pci_name(efx->pci_dev), sizeof(info->bus_info));
116 struct efx_nic *efx = netdev_priv(net_dev);
118 return efx->msg_enable;
123 struct efx_nic *efx = netdev_priv(net_dev);
125 efx->msg_enable = msg_enable;
131 struct efx_nic *efx = netdev_priv(net_dev);
140 if (!efx_net_active(efx->state)) {
145 netif_info(efx, drv, efx->net_dev, "starting %sline testing\n",
149 already_up = (efx->net_dev->flags & IFF_UP);
151 rc = dev_open(efx->net_dev, NULL);
153 netif_err(efx, drv, efx->net_dev,
159 rc = efx_selftest(efx, efx_tests, test->flags);
162 dev_close(efx->net_dev);
164 netif_info(efx, drv, efx->net_dev, "%s %sline self-tests\n",
169 efx_ethtool_fill_self_tests(efx, efx_tests, NULL, data);
179 struct efx_nic *efx = netdev_priv(net_dev);
181 pause->rx_pause = !!(efx->wanted_fc & EFX_FC_RX);
182 pause->tx_pause = !!(efx->wanted_fc & EFX_FC_TX);
183 pause->autoneg = !!(efx->wanted_fc & EFX_FC_AUTO);
189 struct efx_nic *efx = netdev_priv(net_dev);
194 mutex_lock(&efx->mac_lock);
201 netif_dbg(efx, drv, efx->net_dev,
207 if ((wanted_fc & EFX_FC_AUTO) && !efx->link_advertising[0]) {
208 netif_dbg(efx, drv, efx->net_dev,
215 if (efx->type->prepare_enable_fc_tx &&
216 (wanted_fc & EFX_FC_TX) && !(efx->wanted_fc & EFX_FC_TX))
217 efx->type->prepare_enable_fc_tx(efx);
219 old_adv = efx->link_advertising[0];
220 old_fc = efx->wanted_fc;
221 efx_link_set_wanted_fc(efx, wanted_fc);
222 if (efx->link_advertising[0] != old_adv ||
223 (efx->wanted_fc ^ old_fc) & EFX_FC_AUTO) {
224 rc = efx_mcdi_port_reconfigure(efx);
226 netif_err(efx, drv, efx->net_dev,
236 efx_mac_reconfigure(efx, false);
239 mutex_unlock(&efx->mac_lock);
288 * @efx: Efx NIC
298 static int efx_fill_loopback_test(struct efx_nic *efx,
305 efx_get_channel(efx, efx->tx_channel_offset);
332 * @efx: Efx NIC
343 int efx_ethtool_fill_self_tests(struct efx_nic *efx,
359 efx_for_each_channel(channel, efx) {
379 name = efx_mcdi_phy_test_name(efx, i);
388 if (!(efx->loopback_modes & (1 << mode)))
390 n = efx_fill_loopback_test(efx,
398 static size_t efx_describe_per_queue_stats(struct efx_nic *efx, u8 *strings)
403 efx_for_each_channel(channel, efx) {
416 efx_for_each_channel(channel, efx) {
426 if (efx->xdp_tx_queue_count && efx->xdp_tx_queues) {
429 for (xdp = 0; xdp < efx->xdp_tx_queue_count; xdp++) {
444 struct efx_nic *efx = netdev_priv(net_dev);
448 return efx->type->describe_stats(efx, NULL) +
450 efx_describe_per_queue_stats(efx, NULL) +
451 efx_ptp_describe_stats(efx, NULL);
453 return efx_ethtool_fill_self_tests(efx, NULL, NULL, NULL);
462 struct efx_nic *efx = netdev_priv(net_dev);
467 strings += (efx->type->describe_stats(efx, strings) *
473 strings += (efx_describe_per_queue_stats(efx, strings) *
475 efx_ptp_describe_stats(efx, strings);
478 efx_ethtool_fill_self_tests(efx, NULL, strings, NULL);
490 struct efx_nic *efx = netdev_priv(net_dev);
497 spin_lock_bh(&efx->stats_lock);
500 data += efx->type->update_stats(efx, data, NULL);
507 data[i] = stat->get_stat((void *)efx + stat->offset);
511 efx_for_each_channel(channel, efx)
517 efx_for_each_channel(channel, efx) {
528 spin_unlock_bh(&efx->stats_lock);
530 efx_for_each_channel(channel, efx) {
539 efx_for_each_channel(channel, efx) {
548 if (efx->xdp_tx_queue_count && efx->xdp_tx_queues) {
551 for (xdp = 0; xdp < efx->xdp_tx_queue_count; xdp++) {
552 data[0] = efx->xdp_tx_queues[xdp]->tx_packets;
557 efx_ptp_update_stats(efx, data);
564 struct efx_nic *efx = netdev_priv(net_dev);
565 struct efx_link_state *link_state = &efx->link_state;
567 mutex_lock(&efx->mac_lock);
568 efx_mcdi_phy_get_link_ksettings(efx, cmd);
569 mutex_unlock(&efx->mac_lock);
575 if (LOOPBACK_INTERNAL(efx)) {
587 struct efx_nic *efx = netdev_priv(net_dev);
593 netif_dbg(efx, drv, efx->net_dev,
598 mutex_lock(&efx->mac_lock);
599 rc = efx_mcdi_phy_set_link_ksettings(efx, cmd);
600 mutex_unlock(&efx->mac_lock);
607 struct efx_nic *efx = netdev_priv(net_dev);
610 mutex_lock(&efx->mac_lock);
611 rc = efx_mcdi_phy_get_fecparam(efx, fecparam);
612 mutex_unlock(&efx->mac_lock);
620 struct efx_nic *efx = netdev_priv(net_dev);
623 mutex_lock(&efx->mac_lock);
624 rc = efx_mcdi_phy_set_fecparam(efx, fecparam);
625 mutex_unlock(&efx->mac_lock);
643 static int efx_ethtool_get_class_rule(struct efx_nic *efx,
660 rc = efx_filter_get_filter_safe(efx, EFX_FILTER_PRI_MANUAL,
812 struct efx_nic *efx = netdev_priv(net_dev);
818 info->data = efx->n_rx_channels;
822 struct efx_rss_context *ctx = &efx->rss_context;
825 mutex_lock(&efx->rss_lock);
827 ctx = efx_find_rss_context_entry(efx, info->rss_context);
866 mutex_unlock(&efx->rss_lock);
871 info->data = efx_filter_get_rx_id_limit(efx);
876 efx_filter_count_rx_used(efx, EFX_FILTER_PRI_MANUAL);
880 if (efx_filter_get_rx_id_limit(efx) == 0)
882 rc = efx_ethtool_get_class_rule(efx, &info->fs, &rss_context);
890 info->data = efx_filter_get_rx_id_limit(efx);
893 rc = efx_filter_get_rx_ids(efx, EFX_FILTER_PRI_MANUAL,
915 static int efx_ethtool_set_class_rule(struct efx_nic *efx,
939 if (rule->ring_cookie >= efx->n_rx_channels &&
949 if (efx->rx_scatter)
1119 rc = efx_filter_insert_filter(efx, &spec, true);
1130 struct efx_nic *efx = netdev_priv(net_dev);
1132 if (efx_filter_get_rx_id_limit(efx) == 0)
1137 return efx_ethtool_set_class_rule(efx, &info->fs,
1141 return efx_filter_remove_id_safe(efx, EFX_FILTER_PRI_MANUAL,
1151 struct efx_nic *efx = netdev_priv(net_dev);
1153 if (efx->n_rx_channels == 1)
1155 return ARRAY_SIZE(efx->rss_context.rx_indir_table);
1160 struct efx_nic *efx = netdev_priv(net_dev);
1162 return efx->type->rx_hash_key_size;
1168 struct efx_nic *efx = netdev_priv(net_dev);
1171 rc = efx->type->rx_pull_rss_config(efx);
1178 memcpy(indir, efx->rss_context.rx_indir_table,
1179 sizeof(efx->rss_context.rx_indir_table));
1181 memcpy(key, efx->rss_context.rx_hash_key,
1182 efx->type->rx_hash_key_size);
1189 struct efx_nic *efx = netdev_priv(net_dev);
1198 key = efx->rss_context.rx_hash_key;
1200 indir = efx->rss_context.rx_indir_table;
1202 return efx->type->rx_push_rss_config(efx, true, indir, key);
1208 struct efx_nic *efx = netdev_priv(net_dev);
1212 if (!efx->type->rx_pull_rss_context_config)
1215 mutex_lock(&efx->rss_lock);
1216 ctx = efx_find_rss_context_entry(efx, rss_context);
1221 rc = efx->type->rx_pull_rss_context_config(efx, ctx);
1230 memcpy(key, ctx->rx_hash_key, efx->type->rx_hash_key_size);
1232 mutex_unlock(&efx->rss_lock);
1241 struct efx_nic *efx = netdev_priv(net_dev);
1246 if (!efx->type->rx_push_rss_context_config)
1252 mutex_lock(&efx->rss_lock);
1260 ctx = efx_alloc_rss_context_entry(efx);
1267 efx_set_default_rx_indir_table(efx, ctx);
1271 ctx = efx_find_rss_context_entry(efx, *rss_context);
1280 rc = efx->type->rx_push_rss_context_config(efx, ctx, NULL, NULL);
1291 rc = efx->type->rx_push_rss_context_config(efx, ctx, indir, key);
1297 mutex_unlock(&efx->rss_lock);
1303 struct efx_nic *efx = netdev_priv(net_dev);
1306 rc = efx->type->map_reset_flags(flags);
1310 return efx_reset(efx, rc);
1317 struct efx_nic *efx = netdev_priv(net_dev);
1320 mutex_lock(&efx->mac_lock);
1321 ret = efx_mcdi_phy_get_module_eeprom(efx, ee, data);
1322 mutex_unlock(&efx->mac_lock);
1330 struct efx_nic *efx = netdev_priv(net_dev);
1333 mutex_lock(&efx->mac_lock);
1334 ret = efx_mcdi_phy_get_module_info(efx, modinfo);
1335 mutex_unlock(&efx->mac_lock);