Symbol: wx
arch/arm64/include/asm/assembler.h
34
wx\n .req w\n
drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20.c
319
unsigned int pixelsPerClock, lstall, D, initalXmitDelay, w, s, ix, wx, p, l0, a, ax, l,
drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20.c
350
wx = (w + 2) / 3;
drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20.c
351
p = 3 * wx - w;
drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20.c
355
l = (ax + wx - 1) / wx;
drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20.c
360
Delay = l * wx * (numSlices - 1) + ax + s + lstall + 22;
drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20v2.c
343
unsigned int pixelsPerClock, lstall, D, initalXmitDelay, w, s, ix, wx, p, l0, a, ax, l,
drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20v2.c
374
wx = (w + 2) / 3;
drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20v2.c
375
p = 3 * wx - w;
drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20v2.c
379
l = (ax + wx - 1) / wx;
drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20v2.c
384
Delay = l * wx * (numSlices - 1) + ax + s + lstall + 22;
drivers/gpu/drm/amd/display/dc/dml/dcn21/display_mode_vba_21.c
514
unsigned int pixelsPerClock, lstall, D, initalXmitDelay, w, S, ix, wx, p, l0, a, ax, l,
drivers/gpu/drm/amd/display/dc/dml/dcn21/display_mode_vba_21.c
545
wx = (w + 2) / 3;
drivers/gpu/drm/amd/display/dc/dml/dcn21/display_mode_vba_21.c
546
p = 3 * wx - w;
drivers/gpu/drm/amd/display/dc/dml/dcn21/display_mode_vba_21.c
550
l = (ax + wx - 1) / wx;
drivers/gpu/drm/amd/display/dc/dml/dcn21/display_mode_vba_21.c
555
Delay = l * wx * (numSlices - 1) + ax + S + lstall + 22;
drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c
619
unsigned int pixelsPerClock, lstall, D, initalXmitDelay, w, s, ix, wx, P, l0, a, ax, L,
drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c
654
wx = (w + 2) / 3;
drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c
655
P = 3 * wx - w;
drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c
659
L = (ax + wx - 1) / wx;
drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c
664
Delay = L * wx * (numSlices - 1) + ax + s + lstall + 22;
drivers/gpu/drm/amd/display/dc/dml/dcn31/display_mode_vba_31.c
690
unsigned int pixelsPerClock = 0, lstall, D, initalXmitDelay, w, s, ix, wx, P, l0, a, ax, L, Delay, pixels;
drivers/gpu/drm/amd/display/dc/dml/dcn31/display_mode_vba_31.c
724
wx = (w + 2) / 3;
drivers/gpu/drm/amd/display/dc/dml/dcn31/display_mode_vba_31.c
725
P = 3 * wx - w;
drivers/gpu/drm/amd/display/dc/dml/dcn31/display_mode_vba_31.c
729
L = (ax + wx - 1) / wx;
drivers/gpu/drm/amd/display/dc/dml/dcn31/display_mode_vba_31.c
734
Delay = L * wx * (numSlices - 1) + ax + s + lstall + 22;
drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c
708
unsigned int pixelsPerClock = 0, lstall, D, initalXmitDelay, w, s, ix, wx, P, l0, a, ax, L, Delay, pixels;
drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c
742
wx = (w + 2) / 3;
drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c
743
P = 3 * wx - w;
drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c
747
L = (ax + wx - 1) / wx;
drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c
752
Delay = L * wx * (numSlices - 1) + ax + s + lstall + 22;
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
53
unsigned int pixelsPerClock, lstall, D, initalXmitDelay, w, s, ix, wx, p, l0, a, ax, L,
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
86
wx = (w + 2) / 3;
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
87
p = 3 * wx - w;
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
91
L = (ax + wx - 1) / wx;
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
96
Delay = L * wx * (numSlices - 1) + ax + s + lstall + 22;
drivers/gpu/drm/amd/display/dc/dml2_0/display_mode_core.c
859
dml_uint_t pixelsPerClock, lstall, D, initalXmitDelay, w, s, ix, wx, p, l0, a, ax, L,
drivers/gpu/drm/amd/display/dc/dml2_0/display_mode_core.c
894
wx = (w + 2) / 3;
drivers/gpu/drm/amd/display/dc/dml2_0/display_mode_core.c
895
p = 3 * wx - w;
drivers/gpu/drm/amd/display/dc/dml2_0/display_mode_core.c
899
L = (ax + wx - 1) / wx;
drivers/gpu/drm/amd/display/dc/dml2_0/display_mode_core.c
904
Delay = L * wx * (numSlices - 1) + ax + s + lstall + 22;
drivers/input/rmi4/rmi_2d_sensor.c
109
obj->wx, obj->wy);
drivers/input/rmi4/rmi_2d_sensor.c
88
swap(obj->wx, obj->wy);
drivers/input/rmi4/rmi_2d_sensor.c
90
wide = (obj->wx > obj->wy);
drivers/input/rmi4/rmi_2d_sensor.c
91
major = max(obj->wx, obj->wy);
drivers/input/rmi4/rmi_2d_sensor.c
92
minor = min(obj->wx, obj->wy);
drivers/input/rmi4/rmi_2d_sensor.h
27
u8 wx;
drivers/input/rmi4/rmi_f11.c
582
obj->wx = pos_data[3] & 0x0f;
drivers/input/rmi4/rmi_f12.c
202
obj->wx = data1[6];
drivers/input/touchscreen/raydium_i2c_ts.c
874
u8 wx, wy;
drivers/input/touchscreen/raydium_i2c_ts.c
889
wx = contact[RM_CONTACT_WIDTH_X_POS];
drivers/input/touchscreen/raydium_i2c_ts.c
892
input_report_abs(ts->input, ABS_MT_TOUCH_MAJOR, max(wx, wy));
drivers/input/touchscreen/raydium_i2c_ts.c
893
input_report_abs(ts->input, ABS_MT_TOUCH_MINOR, min(wx, wy));
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
103
if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
107
if (test_bit(WX_FLAG_RSC_CAPABLE, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
127
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
133
wx_update_stats(wx);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
136
p = (char *)wx + wx_gstrings_stats[i].stat_offset;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
141
if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
143
p = (char *)wx + wx_gstrings_fdir_stats[k].stat_offset;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
148
if (test_bit(WX_FLAG_RSC_CAPABLE, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
150
p = (char *)wx + wx_gstrings_rsc_stats[k].stat_offset;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
156
ring = wx->tx_ring[j];
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
171
ring = wx->rx_ring[j];
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
191
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
194
wx_update_stats(wx);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
196
hwstats = &wx->stats;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
207
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
21
.sizeof_stat = sizeof(((struct wx *)0)->m), \
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
210
wx_update_stats(wx);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
212
hwstats = &wx->stats;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
22
.stat_offset = offsetof(struct wx, m) }
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
221
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
223
if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
226
strscpy(info->driver, wx->driver_name, sizeof(info->driver));
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
227
strscpy(info->fw_version, wx->eeprom_id, sizeof(info->fw_version));
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
228
strscpy(info->bus_info, pci_name(wx->pdev), sizeof(info->bus_info));
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
229
if (wx->num_tx_queues <= WX_NUM_TX_QUEUES) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
231
(WX_NUM_TX_QUEUES - wx->num_tx_queues) *
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
241
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
243
return phylink_ethtool_nway_reset(wx->phylink);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
250
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
252
return phylink_ethtool_ksettings_get(wx->phylink, cmd);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
259
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
261
return phylink_ethtool_ksettings_set(wx->phylink, cmd);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
268
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
270
phylink_ethtool_get_pauseparam(wx->phylink, pause);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
277
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
279
return phylink_ethtool_set_pauseparam(wx->phylink, pause);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
288
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
294
ring->rx_pending = wx->rx_ring_count;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
295
ring->tx_pending = wx->tx_ring_count;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
306
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
308
ec->tx_max_coalesced_frames_irq = wx->tx_work_limit;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
310
if (wx->rx_itr_setting <= 1)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
311
ec->rx_coalesce_usecs = wx->rx_itr_setting;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
313
ec->rx_coalesce_usecs = wx->rx_itr_setting >> 2;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
315
if (wx->adaptive_itr) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
321
if (wx->q_vector[0]->tx.count && wx->q_vector[0]->rx.count)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
325
if (wx->tx_itr_setting <= 1)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
326
ec->tx_coalesce_usecs = wx->tx_itr_setting;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
328
ec->tx_coalesce_usecs = wx->tx_itr_setting >> 2;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
334
static void wx_update_rsc(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
336
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
340
if (!test_bit(WX_FLAG_RSC_CAPABLE, wx->flags) ||
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
345
if (wx->rx_itr_setting == 1 ||
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
346
wx->rx_itr_setting > WX_MIN_RSC_ITR) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
347
if (!test_bit(WX_FLAG_RSC_ENABLED, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
348
set_bit(WX_FLAG_RSC_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
349
dev_info(&wx->pdev->dev,
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
355
} else if (test_bit(WX_FLAG_RSC_ENABLED, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
356
clear_bit(WX_FLAG_RSC_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
357
dev_info(&wx->pdev->dev,
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
364
if (need_reset && wx->do_reset)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
365
wx->do_reset(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
373
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
379
if (wx->q_vector[0]->tx.count && wx->q_vector[0]->rx.count) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
389
wx->tx_work_limit = ec->tx_max_coalesced_frames_irq;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
391
switch (wx->mac.type) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
415
wx->adaptive_itr = true;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
416
wx->rx_itr_setting = 1;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
417
wx->tx_itr_setting = 1;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
422
wx->rx_itr_setting = ec->rx_coalesce_usecs << 2;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
424
wx->rx_itr_setting = ec->rx_coalesce_usecs;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
427
wx->tx_itr_setting = ec->tx_coalesce_usecs << 2;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
429
wx->tx_itr_setting = ec->tx_coalesce_usecs;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
431
if (wx->adaptive_itr) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
432
wx->adaptive_itr = false;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
433
wx->rx_itr_setting = rx_itr_param;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
434
wx->tx_itr_setting = tx_itr_param;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
435
} else if (wx->rx_itr_setting == 1 || wx->tx_itr_setting == 1) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
436
wx->adaptive_itr = true;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
439
if (wx->rx_itr_setting != 1)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
440
rx_itr_param = wx->rx_itr_setting;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
442
if (wx->tx_itr_setting != 1)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
443
tx_itr_param = wx->tx_itr_setting;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
446
if (wx->q_vector[0]->tx.count && wx->q_vector[0]->rx.count)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
447
wx->tx_itr_setting = wx->rx_itr_setting;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
449
for (i = 0; i < wx->num_q_vectors; i++) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
450
q_vector = wx->q_vector[i];
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
460
wx_update_rsc(wx);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
466
static unsigned int wx_max_channels(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
470
if (!wx->msix_q_entries) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
475
if (test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
487
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
490
ch->max_combined = wx_max_channels(wx);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
493
if (wx->msix_q_entries) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
499
ch->combined_count = wx->ring_feature[RING_F_RSS].indices;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
501
if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
502
ch->combined_count = wx->ring_feature[RING_F_FDIR].indices;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
510
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
517
if (count > wx_max_channels(wx))
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
520
if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
521
wx->ring_feature[RING_F_FDIR].limit = count;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
523
wx->ring_feature[RING_F_RSS].limit = count;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
531
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
533
return wx_rss_indir_tbl_entries(wx);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
543
static void wx_get_reta(struct wx *wx, u32 *indir)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
545
u32 reta_size = wx_rss_indir_tbl_entries(wx);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
546
u16 rss_m = wx->ring_feature[RING_F_RSS].mask;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
548
if (test_bit(WX_FLAG_SRIOV_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
549
rss_m = wx->ring_feature[RING_F_RSS].indices - 1;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
552
indir[i] = wx->rss_indir_tbl[i] & rss_m;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
558
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
563
wx_get_reta(wx, rxfh->indir);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
566
memcpy(rxfh->key, wx->rss_key, WX_RSS_KEY_SIZE);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
576
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
583
reta_entries = wx_rss_indir_tbl_entries(wx);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
587
wx->rss_indir_tbl[i] = rxfh->indir[i];
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
589
wx_store_reta(wx);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
594
memcpy(wx->rss_key, rxfh->key, WX_RSS_KEY_SIZE);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
595
wx_store_rsskey(wx);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
614
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
622
if (wx->rss_flags & entry->flag)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
636
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
637
u8 flags = wx->rss_flags;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
652
if (flags != wx->rss_flags) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
653
wx->rss_flags = flags;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
654
wx_config_rss_field(wx);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
667
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
669
return wx->msg_enable;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
675
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
677
wx->msg_enable = data;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
684
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
704
if (wx->ptp_clock)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
705
info->phc_index = ptp_clock_index(wx->ptp_clock);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
719
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
721
if (wx->ptp_clock) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
722
ts_stats->pkts = wx->tx_hwtstamp_pkts;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
723
ts_stats->lost = wx->tx_hwtstamp_timeouts +
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
724
wx->tx_hwtstamp_skipped +
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
725
wx->rx_hwtstamp_cleared;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
726
ts_stats->err = wx->tx_hwtstamp_errors;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
734
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
740
cmd->base.speed = wx->speed;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
77
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
82
if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
84
if (test_bit(WX_FLAG_RSC_CAPABLE, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
95
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1000
wx->mac_table[i].pools = 0;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1002
wx_sync_mac_table(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1006
int wx_add_mac_filter(struct wx *wx, u8 *addr, u16 pool)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1013
for (i = 0; i < wx->mac.num_rar_entries; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1014
if (wx->mac_table[i].state & WX_MAC_STATE_IN_USE) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1015
if (ether_addr_equal(addr, wx->mac_table[i].addr)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1016
if (wx->mac_table[i].pools != (1ULL << pool)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1017
memcpy(wx->mac_table[i].addr, addr, ETH_ALEN);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1018
wx->mac_table[i].pools |= (1ULL << pool);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1019
wx_sync_mac_table(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
102
struct wx *wx = bus->priv;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1025
if (wx->mac_table[i].state & WX_MAC_STATE_IN_USE)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1027
wx->mac_table[i].state |= (WX_MAC_STATE_MODIFIED |
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1029
memcpy(wx->mac_table[i].addr, addr, ETH_ALEN);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1030
wx->mac_table[i].pools |= (1ULL << pool);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1031
wx_sync_mac_table(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1037
int wx_del_mac_filter(struct wx *wx, u8 *addr, u16 pool)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
104
wr32(wx, WX_MDIO_CLAUSE_SELECT, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1045
for (i = 0; i < wx->mac.num_rar_entries; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1046
if (!ether_addr_equal(addr, wx->mac_table[i].addr))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1049
wx->mac_table[i].state |= WX_MAC_STATE_MODIFIED;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1050
wx->mac_table[i].pools &= ~(1ULL << pool);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1051
if (!wx->mac_table[i].pools) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1052
wx->mac_table[i].state &= ~WX_MAC_STATE_IN_USE;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1053
memset(wx->mac_table[i].addr, 0, ETH_ALEN);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1055
wx_sync_mac_table(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1061
static int wx_available_rars(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1065
for (i = 0; i < wx->mac.num_rar_entries; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1066
if (wx->mac_table[i].state == 0)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1085
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1089
if (netdev_uc_count(netdev) > wx_available_rars(wx))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
109
static void wx_intr_disable(struct wx *wx, u64 qmask)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1096
wx_del_mac_filter(wx, ha->addr, pool);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1097
wx_add_mac_filter(wx, ha->addr, pool);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1116
u32 wx_mta_vector(struct wx *wx, u8 *mc_addr)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1120
switch (wx->mac.mc_filter_type) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1134
wx_err(wx, "MC filter type param set incorrectly\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
115
wr32(wx, WX_PX_IMS(0), mask);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1150
static void wx_set_mta(struct wx *wx, u8 *mc_addr)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1154
wx->addr_ctrl.mta_in_use++;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1156
vector = wx_mta_vector(wx, mc_addr);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1157
wx_dbg(wx, " bit-vector = 0x%03X\n", vector);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1169
wx->mac.mta_shadow[vector_reg] |= (1 << vector_bit);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
117
if (test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1182
static void wx_update_mc_addr_list(struct wx *wx, struct net_device *netdev)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1190
wx->addr_ctrl.num_mc_addrs = netdev_mc_count(netdev);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1191
wx->addr_ctrl.mta_in_use = 0;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1194
wx_dbg(wx, " Clearing MTA\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1195
memset(&wx->mac.mta_shadow, 0, sizeof(wx->mac.mta_shadow));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1199
wx_dbg(wx, " Adding the multicast addresses:\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
120
wr32(wx, WX_PX_IMS(1), mask);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1200
wx_set_mta(wx, ha->addr);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1204
for (i = 0; i < wx->mac.mcft_size; i++)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1205
wr32a(wx, WX_PSR_MC_TBL(0), i,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1206
wx->mac.mta_shadow[i]);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1208
if (wx->addr_ctrl.mta_in_use > 0) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1209
psrctl = rd32(wx, WX_PSR_CTL);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1212
(wx->mac.mc_filter_type << WX_PSR_CTL_MO_SHIFT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1213
wr32(wx, WX_PSR_CTL, psrctl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1216
wx_dbg(wx, "Update mc addr list Complete\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1219
static void wx_restore_vf_multicasts(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1224
for (i = 0; i < wx->num_vfs; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1225
u32 vmolr = rd32(wx, WX_PSR_VM_L2CTL(i));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1227
vfinfo = &wx->vfinfo[i];
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1229
wx->addr_ctrl.mta_in_use++;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1232
wr32m(wx, WX_PSR_MC_TBL(vector_reg),
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1235
wx->mac.mta_shadow[vector_reg] |= BIT(vector_bit);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
124
void wx_intr_enable(struct wx *wx, u64 qmask)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1241
wr32(wx, WX_PSR_VM_L2CTL(i), vmolr);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1245
wx_full_sync_mac_table(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1258
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1263
wx_update_mc_addr_list(wx, netdev);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1265
if (test_bit(WX_FLAG_SRIOV_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1266
wx_restore_vf_multicasts(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
128
if (wx->pdev->is_virtfn) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1280
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1288
wx_del_mac_filter(wx, wx->mac.addr, VMDQ_P(0));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
129
wr32(wx, WX_VXIMC, qmask);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1290
memcpy(wx->mac.addr, addr->sa_data, netdev->addr_len);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1292
wx_mac_set_default_filter(wx, wx->mac.addr);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1298
void wx_disable_rx(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1303
rxctrl = rd32(wx, WX_RDB_PB_CTL);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1305
pfdtxgswc = rd32(wx, WX_PSR_CTL);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1308
wr32(wx, WX_PSR_CTL, pfdtxgswc);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1309
wx->mac.set_lben = true;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1311
wx->mac.set_lben = false;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1314
wr32(wx, WX_RDB_PB_CTL, rxctrl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1316
if (!(((wx->subsystem_device_id & WX_NCSI_MASK) == WX_NCSI_SUP) ||
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1317
((wx->subsystem_device_id & WX_WOL_MASK) == WX_WOL_SUP))) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1319
wr32m(wx, WX_MAC_RX_CFG,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1326
static void wx_enable_rx(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1331
wr32m(wx, WX_MAC_RX_CFG,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1334
wr32m(wx, WX_RDB_PB_CTL,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1337
if (wx->mac.set_lben) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1338
psrctl = rd32(wx, WX_PSR_CTL);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1340
wr32(wx, WX_PSR_CTL, psrctl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1341
wx->mac.set_lben = false;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1349
static void wx_set_rxpba(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
135
wr32(wx, WX_PX_IMC(0), mask);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1352
u32 pbsize = wx->mac.rx_pb_size;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1354
if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1355
if (test_bit(WX_FLAG_FDIR_HASH, wx->flags) ||
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1356
test_bit(WX_FLAG_FDIR_PERFECT, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1361
wr32(wx, WX_RDB_PB_SZ(0), rxpktsize);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1364
txpktsize = wx->mac.tx_pb_size;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1366
wr32(wx, WX_TDB_PB_SZ(0), txpktsize);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1367
wr32(wx, WX_TDM_PB_THRE(0), txpbthresh);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
137
if (test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1377
static int wx_hpbthresh(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1379
struct net_device *dev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1391
if (test_bit(WX_FLAG_SRIOV_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1396
rx_pba = rd32(wx, WX_RDB_PB_SZ(0)) >> WX_RDB_PB_SZ_SHIFT;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
140
wr32(wx, WX_PX_IMC(1), mask);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1405
dev_warn(&wx->pdev->dev,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1418
static int wx_lpbthresh(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1420
struct net_device *dev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1439
static void wx_pbthresh_setup(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1441
wx->fc.high_water = wx_hpbthresh(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1442
wx->fc.low_water = wx_lpbthresh(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1445
if (wx->fc.low_water > wx->fc.high_water)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1446
wx->fc.low_water = 0;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1449
static void wx_set_ethertype_anti_spoofing(struct wx *wx, bool enable, int vf)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1456
pfvfspoof = rd32(wx, WX_TDM_ETYPE_AS(reg_offset));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1461
wr32(wx, WX_TDM_ETYPE_AS(reg_offset), pfvfspoof);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1467
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1470
if (vf >= wx->num_vfs)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1473
wx->vfinfo[vf].spoofchk_enabled = setting;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1476
wr32m(wx, WX_TDM_MAC_AS(index), regval | BIT(vf_bit), regval);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1478
if (wx->vfinfo[vf].vlan_count)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1479
wr32m(wx, WX_TDM_VLAN_AS(index), regval | BIT(vf_bit), regval);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1484
static void wx_configure_virtualization(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1486
u16 pool = wx->num_rx_pools;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
149
void wx_irq_disable(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1490
if (!test_bit(WX_FLAG_SRIOV_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1493
wr32m(wx, WX_PSR_VM_CTL,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1498
wr32m(wx, WX_PSR_VM_L2CTL(pool),
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1501
if (!test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1504
wr32(wx, WX_RDM_VF_RE(0), vf_shift);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1505
wr32(wx, WX_TDM_VF_TE(0), vf_shift);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
151
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1511
wr32(wx, WX_RDM_VF_RE(reg_offset), GENMASK(31, vf_shift));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1512
wr32(wx, WX_RDM_VF_RE(reg_offset ^ 1), reg_offset - 1);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1513
wr32(wx, WX_TDM_VF_TE(reg_offset), GENMASK(31, vf_shift));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1514
wr32(wx, WX_TDM_VF_TE(reg_offset ^ 1), reg_offset - 1);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1518
clear_bit(WX_FLAG_VLAN_PROMISC, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1520
for (i = 0; i < wx->num_vfs; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1521
if (!wx->vfinfo[i].spoofchk_enabled)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1522
wx_set_vf_spoofchk(wx->netdev, i, false);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1524
wx_set_ethertype_anti_spoofing(wx, true, i);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1528
static void wx_configure_port(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
153
wr32(wx, WX_PX_MISC_IEN, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1532
if (!test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1533
value = (wx->num_vfs == 0) ?
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1537
if (test_bit(WX_FLAG_VMDQ_ENABLED, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1538
if (wx->ring_feature[RING_F_RSS].indices == 4)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
154
wx_intr_disable(wx, WX_INTR_ALL);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1548
wr32m(wx, WX_CFG_PORT_CTL,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1554
wr32(wx, WX_CFG_TAG_TPID(0),
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1556
wx->tpid[0] = ETH_P_8021Q;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1557
wx->tpid[1] = ETH_P_8021AD;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1559
wr32(wx, WX_CFG_TAG_TPID(i),
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1562
wx->tpid[i] = ETH_P_8021Q;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1572
int wx_disable_sec_rx_path(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1576
wr32m(wx, WX_RSC_CTL,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1580
1000, 40000, false, wx, WX_RSC_ST);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
159
for (vector = 0; vector < wx->num_q_vectors; vector++)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1590
void wx_enable_sec_rx_path(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1592
wr32m(wx, WX_RSC_CTL, WX_RSC_CTL_RX_DIS, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1593
WX_WRITE_FLUSH(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1597
static void wx_vlan_strip_control(struct wx *wx, bool enable)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
160
synchronize_irq(wx->msix_q_entries[vector].vector);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1601
for (i = 0; i < wx->num_rx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1602
struct wx_ring *ring = wx->rx_ring[i];
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1605
wr32m(wx, WX_PX_RR_CFG(j), WX_PX_RR_CFG_VLAN,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1610
static void wx_vlan_promisc_enable(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1614
vlnctrl = rd32(wx, WX_PSR_VLAN_CTL);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1615
if (test_bit(WX_FLAG_VMDQ_ENABLED, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1618
wr32(wx, WX_PSR_VLAN_CTL, vlnctrl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
162
synchronize_irq(wx->msix_entry->vector);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1621
wr32(wx, WX_PSR_VLAN_CTL, vlnctrl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1625
if (test_bit(WX_FLAG_VLAN_PROMISC, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1628
set_bit(WX_FLAG_VLAN_PROMISC, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1631
wr32(wx, WX_PSR_VLAN_SWC_IDX, i);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1634
bits = rd32(wx, WX_PSR_VLAN_SWC_VM(reg_idx));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1636
wr32(wx, WX_PSR_VLAN_SWC_VM(reg_idx), bits);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1639
for (i = 0; i < wx->mac.vft_size; i++)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1640
wr32(wx, WX_PSR_VLAN_TBL(i), U32_MAX);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1643
static void wx_scrub_vfta(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1648
wr32(wx, WX_PSR_VLAN_SWC_IDX, i);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1649
vlvf = rd32(wx, WX_PSR_VLAN_SWC_IDX);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1654
if (test_bit(vid, wx->active_vlans))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1660
bits = rd32(wx, WX_PSR_VLAN_SWC_VM(reg_idx));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1662
wr32(wx, WX_PSR_VLAN_SWC_VM(reg_idx), bits);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1665
for (i = 0; i < wx->mac.vft_size; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1666
vfta = wx->mac.vft_shadow[i];
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1667
wr32(wx, WX_PSR_VLAN_TBL(i), vfta);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1671
static void wx_vlan_promisc_disable(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1676
vlnctrl = rd32(wx, WX_PSR_VLAN_CTL);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1678
wr32(wx, WX_PSR_VLAN_CTL, vlnctrl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1680
if (!test_bit(WX_FLAG_VLAN_PROMISC, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1683
clear_bit(WX_FLAG_VLAN_PROMISC, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1684
wx_scrub_vfta(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1689
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1697
fctrl = rd32(wx, WX_PSR_CTL);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1699
vmolr = rd32(wx, WX_PSR_VM_L2CTL(VMDQ_P(0)));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1704
vlnctrl = rd32(wx, WX_PSR_VLAN_CTL);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1714
wx->addr_ctrl.user_set_promisc = false;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1716
wx->addr_ctrl.user_set_promisc = true;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1720
if (test_bit(WX_FLAG_VMDQ_ENABLED, wx->flags) &&
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1721
test_bit(WX_FLAG_SRIOV_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
173
static int wx_fmgr_cmd_op(struct wx *wx, u32 cmd, u32 cmd_addr)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1735
wr32m(wx, WX_RSC_CTL,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1762
wr32(wx, WX_PSR_VLAN_CTL, vlnctrl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1763
wr32(wx, WX_PSR_CTL, fctrl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1764
wr32(wx, WX_PSR_VM_L2CTL(VMDQ_P(0)), vmolr);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1768
wx_vlan_strip_control(wx, true);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1770
wx_vlan_strip_control(wx, false);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1773
wx_vlan_promisc_disable(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1775
wx_vlan_promisc_enable(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1779
static void wx_set_rx_buffer_len(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1781
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1791
mhadd = rd32(wx, WX_PSR_MAX_SZ);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1793
wr32(wx, WX_PSR_MAX_SZ, max_frame);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1799
for (i = 0; i < wx->num_rx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
180
wr32(wx, WX_SPI_CMD, cmd_val);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1800
rx_ring = wx->rx_ring[i];
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1803
if (test_bit(WX_FLAG_RSC_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1818
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1821
wx_set_rx_buffer_len(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1828
void wx_disable_rx_queue(struct wx *wx, struct wx_ring *ring)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
183
false, wx, WX_SPI_STATUS);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1835
wr32m(wx, WX_PX_RR_CFG(reg_idx),
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1840
10, 100, true, wx, WX_PX_RR_CFG(reg_idx));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1844
wx_err(wx,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1851
void wx_enable_rx_queue(struct wx *wx, struct wx_ring *ring)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1858
1000, 10000, true, wx, WX_PX_RR_CFG(reg_idx));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
186
static int wx_flash_read_dword(struct wx *wx, u32 addr, u32 *data)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1862
wx_err(wx,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1869
static void wx_configure_srrctl(struct wx *wx,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1875
srrctl = rd32(wx, WX_PX_RR_CFG(reg_idx));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1885
wr32(wx, WX_PX_RR_CFG(reg_idx), srrctl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1888
static void wx_configure_rscctl(struct wx *wx,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1894
if (!test_bit(WX_FLAG_RSC_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1897
rscctrl = rd32(wx, WX_PX_RR_CFG(reg_idx));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
19
struct wx *wx = bus->priv;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
190
ret = wx_fmgr_cmd_op(wx, WX_SPI_CMD_READ_DWORD, addr);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1901
wr32(wx, WX_PX_RR_CFG(reg_idx), rscctrl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1904
static void wx_configure_tx_ring(struct wx *wx,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1913
wr32(wx, WX_PX_TR_CFG(reg_idx), WX_PX_TR_CFG_SWFLSH);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1914
WX_WRITE_FLUSH(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1916
wr32(wx, WX_PX_TR_BAL(reg_idx), tdba & DMA_BIT_MASK(32));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1917
wr32(wx, WX_PX_TR_BAH(reg_idx), upper_32_bits(tdba));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1920
wr32(wx, WX_PX_TR_RP(reg_idx), 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1921
wr32(wx, WX_PX_TR_WP(reg_idx), 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1922
ring->tail = wx->hw_addr + WX_PX_TR_WP(reg_idx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1929
if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags) &&
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1930
test_bit(WX_FLAG_FDIR_HASH, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1931
ring->atr_sample_rate = wx->atr_sample_rate;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
194
*data = rd32(wx, WX_SPI_DATA);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1940
wr32(wx, WX_PX_TR_HEAD_ADDRL(reg_idx),
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1942
wr32(wx, WX_PX_TR_HEAD_ADDRH(reg_idx),
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1949
wr32(wx, WX_PX_TR_CFG(reg_idx), txdctl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1953
1000, 10000, true, wx, WX_PX_TR_CFG(reg_idx));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1955
wx_err(wx, "Could not enable Tx Queue %d\n", reg_idx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1958
static void wx_configure_rx_ring(struct wx *wx,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1966
rxdctl = rd32(wx, WX_PX_RR_CFG(reg_idx));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1967
wx_disable_rx_queue(wx, ring);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1969
wr32(wx, WX_PX_RR_BAL(reg_idx), rdba & DMA_BIT_MASK(32));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1970
wr32(wx, WX_PX_RR_BAH(reg_idx), upper_32_bits(rdba));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1979
if (test_bit(WX_FLAG_RX_MERGE_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1982
wr32(wx, WX_PX_RR_CFG(reg_idx), rxdctl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1985
wr32(wx, WX_PX_RR_RP(reg_idx), 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1986
wr32(wx, WX_PX_RR_WP(reg_idx), 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1987
ring->tail = wx->hw_addr + WX_PX_RR_WP(reg_idx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1989
wx_configure_srrctl(wx, ring);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
199
int wx_check_flash_load(struct wx *hw, u32 check_bit)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
1990
wx_configure_rscctl(wx, ring);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2001
wr32m(wx, WX_PX_RR_CFG(reg_idx),
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2004
wx_enable_rx_queue(wx, ring);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2014
static void wx_configure_tx(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2019
wr32m(wx, WX_TDM_CTL,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2023
for (i = 0; i < wx->num_tx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2024
wx_configure_tx_ring(wx, wx->tx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2026
wr32m(wx, WX_TSC_BUF_AE, WX_TSC_BUF_AE_THR, 0x10);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2028
if (wx->mac.type == wx_mac_em)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2029
wr32m(wx, WX_TSC_CTL, WX_TSC_CTL_TX_DIS | WX_TSC_CTL_TSEC_DIS, 0x1);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2032
wr32m(wx, WX_MAC_TX_CFG,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2036
static void wx_restore_vlan(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2040
wx_vlan_rx_add_vid(wx->netdev, htons(ETH_P_8021Q), 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2042
for_each_set_bit_from(vid, wx->active_vlans, VLAN_N_VID)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2043
wx_vlan_rx_add_vid(wx->netdev, htons(ETH_P_8021Q), vid);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2046
u32 wx_rss_indir_tbl_entries(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2048
if (test_bit(WX_FLAG_SRIOV_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2054
void wx_store_reta(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2056
u32 reta_entries = wx_rss_indir_tbl_entries(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2057
u8 *indir_tbl = wx->rss_indir_tbl;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2067
if (test_bit(WX_FLAG_SRIOV_ENABLED, wx->flags) &&
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2068
test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2069
wr32(wx, WX_RDB_VMRSSTBL(i >> 2, wx->num_vfs), reta);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2071
wr32(wx, WX_RDB_RSSTBL(i >> 2), reta);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2077
void wx_store_rsskey(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2082
if (test_bit(WX_FLAG_SRIOV_ENABLED, wx->flags) &&
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2083
test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2085
wr32(wx, WX_RDB_VMRSSRK(i, wx->num_vfs),
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2086
wx->rss_key[i]);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2089
wr32(wx, WX_RDB_RSSRK(i), wx->rss_key[i]);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2093
static void wx_setup_reta(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2096
wx_store_rsskey(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2099
if (!netif_is_rxfh_configured(wx->netdev)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2100
u16 rss_i = wx->ring_feature[RING_F_RSS].indices;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2101
u32 reta_entries = wx_rss_indir_tbl_entries(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2104
memset(wx->rss_indir_tbl, 0, sizeof(wx->rss_indir_tbl));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2106
if (test_bit(WX_FLAG_SRIOV_ENABLED, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2107
if (test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2117
wx->rss_indir_tbl[i] = j;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2121
wx_store_reta(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2124
void wx_config_rss_field(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2128
if (test_bit(WX_FLAG_SRIOV_ENABLED, wx->flags) &&
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2129
test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2130
rss_field = rd32(wx, WX_RDB_PL_CFG(wx->num_vfs));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2132
rss_field |= FIELD_PREP(WX_RDB_PL_CFG_RSS_MASK, wx->rss_flags);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2133
wr32(wx, WX_RDB_PL_CFG(wx->num_vfs), rss_field);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2138
wr32m(wx, WX_RDB_RA_CTL,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2142
rss_field = rd32(wx, WX_RDB_RA_CTL);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2144
rss_field |= FIELD_PREP(WX_RDB_RA_CTL_RSS_MASK, wx->rss_flags);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2145
wr32(wx, WX_RDB_RA_CTL, rss_field);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2149
void wx_enable_rss(struct wx *wx, bool enable)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2151
if (test_bit(WX_FLAG_SRIOV_ENABLED, wx->flags) &&
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2152
test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2154
wr32m(wx, WX_RDB_PL_CFG(wx->num_vfs),
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2157
wr32m(wx, WX_RDB_PL_CFG(wx->num_vfs),
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2161
wr32m(wx, WX_RDB_RA_CTL, WX_RDB_RA_CTL_RSS_EN,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2164
wr32m(wx, WX_RDB_RA_CTL, WX_RDB_RA_CTL_RSS_EN, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2170
static void wx_setup_psrtype(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2172
int rss_i = wx->ring_feature[RING_F_RSS].indices;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
218
void wx_control_hw(struct wx *wx, bool drv)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2182
if (!test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2183
for_each_set_bit(pool, &wx->fwd_bitmask, 8)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2184
wr32(wx, WX_RDB_PL_CFG(VMDQ_P(pool)), psrtype);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2191
for_each_set_bit(pool, &wx->fwd_bitmask, 32)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2192
wr32(wx, WX_RDB_PL_CFG(VMDQ_P(pool)), psrtype);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2196
static void wx_setup_mrqc(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2199
wr32m(wx, WX_PSR_CTL, WX_PSR_CTL_PCSD, WX_PSR_CTL_PCSD);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2201
wx_config_rss_field(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2202
wx_enable_rss(wx, wx->rss_enabled);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2203
wx_setup_reta(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2212
void wx_configure_rx(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2217
wx_disable_rx(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2218
wx_setup_psrtype(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2221
wr32m(wx, WX_RSC_CTL, WX_RSC_CTL_CRC_STRIP, WX_RSC_CTL_CRC_STRIP);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2223
if (test_bit(WX_FLAG_RSC_CAPABLE, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2227
psrctl = rd32(wx, WX_PSR_CTL);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
223
wr32m(wx, WX_CFG_PORT_CTL, WX_CFG_PORT_CTL_DRV_LOAD,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2230
if (!test_bit(WX_FLAG_RSC_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2232
wr32(wx, WX_PSR_CTL, psrctl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2235
wx_setup_mrqc(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2238
wx_set_rx_buffer_len(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2240
if (test_bit(WX_FLAG_RX_MERGE_ENABLED, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2241
wr32(wx, WX_RDM_DCACHE_CTL, WX_RDM_DCACHE_CTL_EN);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2242
wr32m(wx, WX_RDM_RSC_CTL,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2249
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2250
wx_configure_rx_ring(wx, wx->rx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2253
ret = wx_disable_sec_rx_path(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2255
wx_err(wx, "The register status is abnormal, please check device.");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2257
wx_enable_rx(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2258
wx_enable_sec_rx_path(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2262
static void wx_configure_isb(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2265
wr32(wx, WX_PX_ISB_ADDR_L, wx->isb_dma & DMA_BIT_MASK(32));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2267
wr32(wx, WX_PX_ISB_ADDR_H, upper_32_bits(wx->isb_dma));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2270
void wx_configure(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2272
wx_set_rxpba(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2273
wx_pbthresh_setup(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2274
wx_configure_virtualization(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2275
wx_configure_port(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2277
wx_set_rx_mode(wx->netdev);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2278
wx_restore_vlan(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2280
if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2281
wx->configure_fdir(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2283
wx_configure_tx(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2284
wx_configure_rx(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2285
wx_configure_isb(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2296
int wx_disable_pcie_master(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2302
pci_clear_master(wx->pdev);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2305
if (!(rd32(wx, WX_PX_TRANSACTION_PENDING)))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2310
false, wx, WX_PX_TRANSACTION_PENDING);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2312
wx_err(wx, "PCIe transaction pending bit did not clear.\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
232
int wx_mng_present(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2327
int wx_stop_adapter(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2334
wx->adapter_stopped = true;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2337
wx_disable_rx(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2340
wx_intr_disable(wx, WX_INTR_ALL);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2343
wr32(wx, WX_PX_MISC_IC, 0xffffffff);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2344
wr32(wx, WX_BME_CTL, 0x3);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2347
for (i = 0; i < wx->mac.max_tx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2348
wr32m(wx, WX_PX_TR_CFG(i),
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2354
for (i = 0; i < wx->mac.max_rx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2355
wr32m(wx, WX_PX_RR_CFG(i),
drivers/net/ethernet/wangxun/libwx/wx_hw.c
236
fwsm = rd32(wx, WX_MIS_ST);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2360
WX_WRITE_FLUSH(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2365
return wx_disable_pcie_master(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2369
void wx_reset_mac(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2372
wr32m(wx, WX_MAC_RX_CFG, WX_MAC_RX_CFG_JE, WX_MAC_RX_CFG_JE);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2375
wr32m(wx, WX_MMC_CONTROL,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2378
wr32m(wx, WX_MAC_RX_FLOW_CTRL,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2381
wr32(wx, WX_MAC_PKT_FLT, WX_MAC_PKT_FLT_PR);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2385
void wx_reset_misc(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2389
wx_reset_mac(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2391
wr32m(wx, WX_MIS_RST_ST,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2395
wr32(wx, WX_PSR_MNG_FLEX_SEL, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2397
wr32(wx, WX_PSR_MNG_FLEX_DW_L(i), 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2398
wr32(wx, WX_PSR_MNG_FLEX_DW_H(i), 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2399
wr32(wx, WX_PSR_MNG_FLEX_MSK(i), 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2401
wr32(wx, WX_PSR_LAN_FLEX_SEL, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2403
wr32(wx, WX_PSR_LAN_FLEX_DW_L(i), 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2404
wr32(wx, WX_PSR_LAN_FLEX_DW_H(i), 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2405
wr32(wx, WX_PSR_LAN_FLEX_MSK(i), 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2409
wr32(wx, WX_RDB_PFCMACDAL, 0xC2000001);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2410
wr32(wx, WX_RDB_PFCMACDAH, 0x0180);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2423
int wx_get_pcie_msix_counts(struct wx *wx, u16 *msix_count, u16 max_msix_count)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2425
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2455
static int wx_init_rss_key(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2459
if (!wx->rss_key) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2465
wx->rss_key = rss_key;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2471
int wx_sw_init(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2473
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2477
wx->vendor_id = pdev->vendor;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2478
wx->device_id = pdev->device;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2479
wx->revision_id = pdev->revision;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2480
wx->oem_svid = pdev->subsystem_vendor;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2481
wx->oem_ssid = pdev->subsystem_device;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2482
wx->bus.device = PCI_SLOT(pdev->devfn);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2483
wx->bus.func = FIELD_GET(WX_CFG_PORT_ST_LANID,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2484
rd32(wx, WX_CFG_PORT_ST));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2486
if (wx->oem_svid == PCI_VENDOR_ID_WANGXUN ||
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2488
wx->subsystem_vendor_id = pdev->subsystem_vendor;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2489
wx->subsystem_device_id = pdev->subsystem_device;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2491
err = wx_flash_read_dword(wx, 0xfffdc, &ssid);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2493
wx_err(wx, "read of internal subsystem device id failed\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2497
wx->subsystem_device_id = swab16((u16)ssid);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2500
err = wx_init_rss_key(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2502
wx_err(wx, "rss key allocation failed\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2505
wx->rss_flags = WX_RSS_FIELD_IPV4 | WX_RSS_FIELD_IPV4_TCP |
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2508
wx->mac_table = kzalloc_objs(struct wx_mac_addr,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2509
wx->mac.num_rar_entries);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2510
if (!wx->mac_table) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2511
wx_err(wx, "mac_table allocation failed\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2512
kfree(wx->rss_key);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2516
bitmap_zero(wx->state, WX_STATE_NBITS);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2517
bitmap_zero(wx->flags, WX_PF_FLAGS_NBITS);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2518
wx->misc_irq_domain = false;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2532
static int wx_find_vlvf_slot(struct wx *wx, u32 vlan)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2545
wr32(wx, WX_PSR_VLAN_SWC_IDX, regindex);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2546
bits = rd32(wx, WX_PSR_VLAN_SWC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
255
static void wx_release_sw_sync(struct wx *wx, u32 mask)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2574
static int wx_set_vlvf(struct wx *wx, u32 vlan, u32 vind, bool vlan_on,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
258
wr32m(wx, WX_MNG_SWFW_SYNC, mask, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2587
vt = rd32(wx, WX_CFG_PORT_CTL);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2591
vlvf_index = wx_find_vlvf_slot(wx, vlan);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2595
wr32(wx, WX_PSR_VLAN_SWC_IDX, vlvf_index);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2599
bits = rd32(wx, WX_PSR_VLAN_SWC_VM_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2601
wr32(wx, WX_PSR_VLAN_SWC_VM_L, bits);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2603
bits = rd32(wx, WX_PSR_VLAN_SWC_VM_H);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2605
wr32(wx, WX_PSR_VLAN_SWC_VM_H, bits);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2610
bits = rd32(wx, WX_PSR_VLAN_SWC_VM_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2612
wr32(wx, WX_PSR_VLAN_SWC_VM_L, bits);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2613
bits |= rd32(wx, WX_PSR_VLAN_SWC_VM_H);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2615
bits = rd32(wx, WX_PSR_VLAN_SWC_VM_H);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2617
wr32(wx, WX_PSR_VLAN_SWC_VM_H, bits);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2618
bits |= rd32(wx, WX_PSR_VLAN_SWC_VM_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2623
wr32(wx, WX_PSR_VLAN_SWC, (WX_PSR_VLAN_SWC_VIEN | vlan));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2627
wr32(wx, WX_PSR_VLAN_SWC, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2642
int wx_set_vfta(struct wx *wx, u32 vlan, u32 vind, bool vlan_on)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2663
vfta = wx->mac.vft_shadow[regindex];
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2678
ret = wx_set_vlvf(wx, vlan, vind, vlan_on, &vfta_changed);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2683
wr32(wx, WX_PSR_VLAN_TBL(regindex), vfta);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2684
wx->mac.vft_shadow[regindex] = vfta;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2695
static void wx_clear_vfta(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2699
for (offset = 0; offset < wx->mac.vft_size; offset++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
27
wr32(wx, WX_MSCA, command);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
270
static int wx_acquire_sw_sync(struct wx *wx, u32 mask)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2700
wr32(wx, WX_PSR_VLAN_TBL(offset), 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2701
wx->mac.vft_shadow[offset] = 0;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2705
wr32(wx, WX_PSR_VLAN_SWC_IDX, offset);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2706
wr32(wx, WX_PSR_VLAN_SWC, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2707
wr32(wx, WX_PSR_VLAN_SWC_VM_L, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2708
wr32(wx, WX_PSR_VLAN_SWC_VM_H, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2715
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2718
wx_set_vfta(wx, vid, VMDQ_P(0), true);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2719
set_bit(vid, wx->active_vlans);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2727
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2731
wx_set_vfta(wx, vid, VMDQ_P(0), false);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2732
clear_bit(vid, wx->active_vlans);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2738
static void wx_enable_rx_drop(struct wx *wx, struct wx_ring *ring)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2743
srrctl = rd32(wx, WX_PX_RR_CFG(reg_idx));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2746
wr32(wx, WX_PX_RR_CFG(reg_idx), srrctl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2749
static void wx_disable_rx_drop(struct wx *wx, struct wx_ring *ring)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2754
srrctl = rd32(wx, WX_PX_RR_CFG(reg_idx));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2757
wr32(wx, WX_PX_RR_CFG(reg_idx), srrctl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2760
int wx_fc_enable(struct wx *wx, bool tx_pause, bool rx_pause)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2768
if (tx_pause && wx->fc.high_water) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2769
if (!wx->fc.low_water || wx->fc.low_water >= wx->fc.high_water) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
277
5000, 2000000, false, wx, WX_MNG_SWFW_SYNC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2770
wx_err(wx, "Invalid water mark configuration\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2776
mflcn_reg = rd32(wx, WX_MAC_RX_FLOW_CTRL);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2779
fccfg_reg = rd32(wx, WX_RDB_RFCC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2788
wr32(wx, WX_MAC_RX_FLOW_CTRL, mflcn_reg);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2789
wr32(wx, WX_RDB_RFCC, fccfg_reg);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2792
if (tx_pause && wx->fc.high_water) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2793
fcrtl = (wx->fc.low_water << 10) | WX_RDB_RFCL_XONE;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2794
wr32(wx, WX_RDB_RFCL, fcrtl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2795
fcrth = (wx->fc.high_water << 10) | WX_RDB_RFCH_XOFFE;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2797
wr32(wx, WX_RDB_RFCL, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
280
wr32(wx, WX_MNG_SWFW_SYNC, sem);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2804
fcrth = rd32(wx, WX_RDB_PB_SZ(0)) - 24576;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2807
wr32(wx, WX_RDB_RFCH, fcrth);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2811
wr32(wx, WX_RDB_RFCV, reg);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2814
wr32(wx, WX_RDB_RFCRT, pause_time / 2);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
282
wx_err(wx, "SW Semaphore not granted: 0x%x.\n", sem);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2822
if (wx->num_rx_queues > 1 && !tx_pause) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2823
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2824
wx_enable_rx_drop(wx, wx->rx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2826
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2827
wx_disable_rx_drop(wx, wx->rx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2838
void wx_update_stats(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2840
struct wx_hw_stats *hwstats = &wx->stats;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2848
for (i = 0; i < wx->num_rx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2849
struct wx_ring *rx_ring = wx->rx_ring[i];
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2856
wx->non_eop_descs = non_eop_descs;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2857
wx->alloc_rx_buff_failed = alloc_rx_buff_failed;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2858
wx->hw_csum_rx_error = hw_csum_rx_error;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2859
wx->hw_csum_rx_good = hw_csum_rx_good;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2861
if (test_bit(WX_FLAG_RSC_ENABLED, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2865
for (i = 0; i < wx->num_rx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2866
rsc_count += wx->rx_ring[i]->rx_stats.rsc_count;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2867
rsc_flush += wx->rx_ring[i]->rx_stats.rsc_flush;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2869
wx->rsc_count = rsc_count;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2870
wx->rsc_flush = rsc_flush;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2873
for (i = 0; i < wx->num_tx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2874
struct wx_ring *tx_ring = wx->tx_ring[i];
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2879
wx->restart_queue = restart_queue;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2880
wx->tx_busy = tx_busy;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2882
hwstats->gprc += rd32(wx, WX_RDM_PKT_CNT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2883
hwstats->gptc += rd32(wx, WX_TDM_PKT_CNT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2884
hwstats->gorc += rd64(wx, WX_RDM_BYTE_CNT_LSB);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2885
hwstats->gotc += rd64(wx, WX_TDM_BYTE_CNT_LSB);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2886
hwstats->tpr += rd64(wx, WX_RX_FRAME_CNT_GOOD_BAD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2887
hwstats->tpt += rd64(wx, WX_TX_FRAME_CNT_GOOD_BAD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2888
hwstats->crcerrs += rd64(wx, WX_RX_CRC_ERROR_FRAMES_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2889
hwstats->rlec += rd64(wx, WX_RX_LEN_ERROR_FRAMES_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
289
static int wx_host_interface_command_s(struct wx *wx, u32 *buffer,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2890
hwstats->bprc += rd64(wx, WX_RX_BC_FRAMES_GOOD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2891
hwstats->bptc += rd64(wx, WX_TX_BC_FRAMES_GOOD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2892
hwstats->mprc += rd64(wx, WX_RX_MC_FRAMES_GOOD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2893
hwstats->mptc += rd64(wx, WX_TX_MC_FRAMES_GOOD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2894
hwstats->roc += rd32(wx, WX_RX_OVERSIZE_FRAMES_GOOD);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2895
hwstats->ruc += rd32(wx, WX_RX_UNDERSIZE_FRAMES_GOOD);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2896
hwstats->lxonoffrxc += rd32(wx, WX_MAC_LXONOFFRXC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2897
hwstats->lxontxc += rd32(wx, WX_RDB_LXONTXC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2898
hwstats->lxofftxc += rd32(wx, WX_RDB_LXOFFTXC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2899
hwstats->o2bgptc += rd32(wx, WX_TDM_OS2BMC_CNT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2900
hwstats->b2ospc += rd32(wx, WX_MNG_BMC2OS_CNT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2901
hwstats->o2bspc += rd32(wx, WX_MNG_OS2BMC_CNT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2902
hwstats->b2ogprc += rd32(wx, WX_RDM_BMC2OS_CNT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2903
hwstats->rdmdrop += rd32(wx, WX_RDM_DRP_PKT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2905
if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2906
hwstats->fdirmatch += rd32(wx, WX_RDB_FDIR_MATCH);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2907
hwstats->fdirmiss += rd32(wx, WX_RDB_FDIR_MISS);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2912
for (i = wx->num_vfs * wx->num_rx_queues_per_pool;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2913
i < wx->mac.max_rx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2914
hwstats->qmprc += rd32(wx, WX_PX_MPRC(i));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2925
void wx_clear_hw_cntrs(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2929
for (i = 0; i < wx->mac.max_rx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2930
wr32(wx, WX_PX_MPRC(i), 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2932
rd32(wx, WX_RDM_PKT_CNT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2933
rd32(wx, WX_TDM_PKT_CNT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2934
rd64(wx, WX_RDM_BYTE_CNT_LSB);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2935
rd32(wx, WX_TDM_BYTE_CNT_LSB);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2936
rd32(wx, WX_RDM_DRP_PKT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2937
rd32(wx, WX_RX_UNDERSIZE_FRAMES_GOOD);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2938
rd32(wx, WX_RX_OVERSIZE_FRAMES_GOOD);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2939
rd64(wx, WX_RX_FRAME_CNT_GOOD_BAD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2940
rd64(wx, WX_TX_FRAME_CNT_GOOD_BAD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2941
rd64(wx, WX_RX_MC_FRAMES_GOOD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2942
rd64(wx, WX_TX_MC_FRAMES_GOOD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2943
rd64(wx, WX_RX_BC_FRAMES_GOOD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2944
rd64(wx, WX_TX_BC_FRAMES_GOOD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2945
rd64(wx, WX_RX_CRC_ERROR_FRAMES_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2946
rd64(wx, WX_RX_LEN_ERROR_FRAMES_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2947
rd32(wx, WX_RDB_LXONTXC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2948
rd32(wx, WX_RDB_LXOFFTXC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2949
rd32(wx, WX_MAC_LXONOFFRXC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2961
void wx_start_hw(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2966
wx_clear_vfta(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2967
WX_WRITE_FLUSH(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2969
for (i = 0; i < wx->mac.max_tx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2970
wr32(wx, WX_TDM_RP_IDX, i);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2971
wr32(wx, WX_TDM_RP_RATE, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
298
status = wx_acquire_sw_sync(wx, WX_MNG_SWFW_SYNC_SW_MB);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
30
if (wx->mac.type == wx_mac_em)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
308
wr32a(wx, WX_MNG_MBOX, i, (__force u32)cpu_to_le32(buffer[i]));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
310
buf[i] = rd32a(wx, WX_MNG_MBOX, i);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
313
wr32m(wx, WX_MNG_MBOX_CTL,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
317
timeout * 1000, false, wx, WX_MNG_MBOX_CTL);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
319
buf[0] = rd32(wx, WX_MNG_MBOX);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
32
wr32(wx, WX_MSCC, command);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
321
wx_err(wx, "Unknown FW command: 0x%x\n", buffer[0] & 0xff);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
328
wx_err(wx, "Command has failed with no status valid.\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
329
wx_dbg(wx, "write value:\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
331
wx_dbg(wx, "%x ", buffer[i]);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
332
wx_dbg(wx, "read value:\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
334
wx_dbg(wx, "%x ", buf[i]);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
335
wx_dbg(wx, "\ncheck: %x %x\n", buffer[0] & 0xff, ~buf[0] >> 24);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
348
buffer[bi] = rd32a(wx, WX_MNG_MBOX, bi);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
358
wx_err(wx, "Buffer not large enough for reply message.\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
36
100000, false, wx, WX_MSCC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
368
buffer[bi] = rd32a(wx, WX_MNG_MBOX, bi);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
373
wx_release_sw_sync(wx, WX_MNG_SWFW_SYNC_SW_MB);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
377
static bool wx_poll_fw_reply(struct wx *wx, u32 *buffer, u8 send_cmd)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
38
wx_err(wx, "Mdio read c22 command did not complete.\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
385
buffer[i] = rd32a(wx, WX_FW2SW_MBOX, i);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
392
recv_hdr->index == wx->swfw_index)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
398
static int wx_host_interface_command_r(struct wx *wx, u32 *buffer,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
413
false, WX_STATE_SWFW_BUSY, wx->state);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
418
hdr->index = wx->swfw_index;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
42
return (u16)rd32(wx, WX_MSCC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
424
wr32a(wx, WX_SW2FW_MBOX, i, (__force u32)cpu_to_le32(buffer[i]));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
426
rd32a(wx, WX_SW2FW_MBOX, i);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
430
wr32m(wx, WX_SW2FW_MBOX_CMD, WX_SW2FW_MBOX_CMD_VLD, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
431
wr32m(wx, WX_SW2FW_MBOX_CMD, WX_SW2FW_MBOX_CMD_VLD, WX_SW2FW_MBOX_CMD_VLD);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
435
timeout * 1000, true, wx, buffer, send_cmd);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
437
wx_err(wx, "Polling from FW messages timeout, cmd: 0x%x, index: %d\n",
drivers/net/ethernet/wangxun/libwx/wx_hw.c
438
send_cmd, wx->swfw_index);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
443
wx_err(wx, "Unknown FW command: 0x%x\n", send_cmd);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
458
wx_err(wx, "Buffer not large enough for reply message.\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
466
buffer[i] = rd32a(wx, WX_FW2SW_MBOX, i);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
472
if (wx->swfw_index == WX_HIC_HDR_INDEX_MAX)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
473
wx->swfw_index = 0;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
475
wx->swfw_index++;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
477
clear_bit(WX_STATE_SWFW_BUSY, wx->state);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
48
struct wx *wx = bus->priv;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
495
int wx_host_interface_command(struct wx *wx, u32 *buffer,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
499
wx_err(wx, "Buffer length failure buffersize=%d.\n", length);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
505
wx_err(wx, "Buffer length failure, not aligned to dword");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
509
if (test_bit(WX_FLAG_SWFW_RING, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
510
return wx_host_interface_command_r(wx, buffer, length,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
513
return wx_host_interface_command_s(wx, buffer, length, timeout, return_data);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
517
int wx_set_pps(struct wx *wx, bool enable, u64 nsec, u64 cycles)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
524
pps_cmd.lan_id = wx->bus.func;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
530
return wx_host_interface_command(wx, (u32 *)&pps_cmd,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
545
static int wx_read_ee_hostif_data(struct wx *wx, u16 offset, u16 *data)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
56
wr32(wx, WX_MSCA, command);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
560
status = wx_host_interface_command(wx, (u32 *)&buffer, sizeof(buffer),
drivers/net/ethernet/wangxun/libwx/wx_hw.c
566
if (!test_bit(WX_FLAG_SWFW_RING, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
567
*data = (u16)rd32a(wx, WX_MNG_MBOX, FW_NVM_DATA_OFFSET);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
569
*data = (u16)rd32a(wx, WX_FW2SW_MBOX, FW_NVM_DATA_OFFSET);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
582
int wx_read_ee_hostif(struct wx *wx, u16 offset, u16 *data)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
586
status = wx_acquire_sw_sync(wx, WX_MNG_SWFW_SYNC_SW_FLASH);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
588
status = wx_read_ee_hostif_data(wx, offset, data);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
589
wx_release_sw_sync(wx, WX_MNG_SWFW_SYNC_SW_FLASH);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
59
if (wx->mac.type == wx_mac_em)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
605
int wx_read_ee_hostif_buffer(struct wx *wx,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
61
wr32(wx, WX_MSCC, command);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
617
status = wx_acquire_sw_sync(wx, WX_MNG_SWFW_SYNC_SW_FLASH);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
636
status = wx_host_interface_command(wx, (u32 *)&buffer,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
642
wx_err(wx, "Host interface command failed\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
646
if (!test_bit(WX_FLAG_SWFW_RING, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
65
100000, false, wx, WX_MSCC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
653
value = rd32(wx, reg);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
667
wx_release_sw_sync(wx, WX_MNG_SWFW_SYNC_SW_FLASH);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
67
wx_err(wx, "Mdio write c22 command did not complete.\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
679
void wx_init_eeprom_params(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
681
struct wx_eeprom_info *eeprom = &wx->eeprom;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
689
if (!(rd32(wx, WX_SPI_STATUS) &
drivers/net/ethernet/wangxun/libwx/wx_hw.c
696
wx_dbg(wx, "Eeprom params: type = %d, size = %d\n",
drivers/net/ethernet/wangxun/libwx/wx_hw.c
701
switch (wx->mac.type) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
705
if (wx_read_ee_hostif(wx, WX_SW_REGION_PTR, &data)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
706
wx_err(wx, "NVM Read Error\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
728
void wx_get_mac_addr(struct wx *wx, u8 *mac_addr)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
734
wr32(wx, WX_PSR_MAC_SWC_IDX, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
735
rar_high = rd32(wx, WX_PSR_MAC_SWC_AD_H);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
736
rar_low = rd32(wx, WX_PSR_MAC_SWC_AD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
74
struct wx *wx = bus->priv;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
756
static int wx_set_rar(struct wx *wx, u32 index, u8 *addr, u64 pools,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
759
u32 rar_entries = wx->mac.num_rar_entries;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
76
wr32(wx, WX_MDIO_CLAUSE_SELECT, 0xF);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
764
wx_err(wx, "RAR index %d is out of range.\n", index);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
769
wr32(wx, WX_PSR_MAC_SWC_IDX, index);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
772
wr32(wx, WX_PSR_MAC_SWC_VM_L, pools & 0xFFFFFFFF);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
774
if (test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
775
wr32(wx, WX_PSR_MAC_SWC_VM_H, pools >> 32);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
793
wr32(wx, WX_PSR_MAC_SWC_AD_L, rar_low);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
794
wr32m(wx, WX_PSR_MAC_SWC_AD_H,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
810
static int wx_clear_rar(struct wx *wx, u32 index)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
812
u32 rar_entries = wx->mac.num_rar_entries;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
816
wx_err(wx, "RAR index %d is out of range.\n", index);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
824
wr32(wx, WX_PSR_MAC_SWC_IDX, index);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
826
wr32(wx, WX_PSR_MAC_SWC_VM_L, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
827
wr32(wx, WX_PSR_MAC_SWC_VM_H, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
829
wr32(wx, WX_PSR_MAC_SWC_AD_L, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
83
struct wx *wx = bus->priv;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
830
wr32m(wx, WX_PSR_MAC_SWC_AD_H,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
845
static int wx_clear_vmdq(struct wx *wx, u32 rar, u32 __maybe_unused vmdq)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
847
u32 rar_entries = wx->mac.num_rar_entries;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
85
wr32(wx, WX_MDIO_CLAUSE_SELECT, 0xF);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
852
wx_err(wx, "RAR index %d is out of range.\n", rar);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
856
wr32(wx, WX_PSR_MAC_SWC_IDX, rar);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
857
mpsar_lo = rd32(wx, WX_PSR_MAC_SWC_VM_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
858
mpsar_hi = rd32(wx, WX_PSR_MAC_SWC_VM_H);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
865
wx_clear_rar(wx, rar);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
874
static void wx_init_uta_tables(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
878
wx_dbg(wx, " Clearing UTA\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
881
wr32(wx, WX_PSR_UC_TBL(i), 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
892
void wx_init_rx_addrs(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
894
u32 rar_entries = wx->mac.num_rar_entries;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
902
if (!is_valid_ether_addr(wx->mac.addr)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
904
wx_get_mac_addr(wx, wx->mac.addr);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
905
wx_dbg(wx, "Keeping Current RAR0 Addr = %pM\n", wx->mac.addr);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
908
wx_dbg(wx, "Overriding MAC Address in RAR[0]\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
909
wx_dbg(wx, "New MAC Addr = %pM\n", wx->mac.addr);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
911
wx_set_rar(wx, 0, wx->mac.addr, 0, WX_PSR_MAC_SWC_AD_H_AV);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
913
if (test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
915
wx_clear_vmdq(wx, 0, WX_CLEAR_VMDQ_ALL);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
92
struct wx *wx = bus->priv;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
920
wx_dbg(wx, "Clearing RAR[1-%d]\n", rar_entries - 1);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
922
wr32(wx, WX_PSR_MAC_SWC_IDX, i);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
923
wr32(wx, WX_PSR_MAC_SWC_AD_L, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
924
wr32(wx, WX_PSR_MAC_SWC_AD_H, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
928
wx->addr_ctrl.mta_in_use = 0;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
929
psrctl = rd32(wx, WX_PSR_CTL);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
931
psrctl |= wx->mac.mc_filter_type << WX_PSR_CTL_MO_SHIFT;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
932
wr32(wx, WX_PSR_CTL, psrctl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
933
wx_dbg(wx, " Clearing MTA\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
934
for (i = 0; i < wx->mac.mcft_size; i++)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
935
wr32(wx, WX_PSR_MC_TBL(i), 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
937
wx_init_uta_tables(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
94
wr32(wx, WX_MDIO_CLAUSE_SELECT, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
941
static void wx_sync_mac_table(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
945
for (i = 0; i < wx->mac.num_rar_entries; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
946
if (wx->mac_table[i].state & WX_MAC_STATE_MODIFIED) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
947
if (wx->mac_table[i].state & WX_MAC_STATE_IN_USE) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
948
wx_set_rar(wx, i,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
949
wx->mac_table[i].addr,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
950
wx->mac_table[i].pools,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
953
wx_clear_rar(wx, i);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
955
wx->mac_table[i].state &= ~(WX_MAC_STATE_MODIFIED);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
960
static void wx_full_sync_mac_table(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
964
for (i = 0; i < wx->mac.num_rar_entries; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
965
if (wx->mac_table[i].state & WX_MAC_STATE_IN_USE) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
966
wx_set_rar(wx, i,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
967
wx->mac_table[i].addr,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
968
wx->mac_table[i].pools,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
971
wx_clear_rar(wx, i);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
973
wx->mac_table[i].state &= ~(WX_MAC_STATE_MODIFIED);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
978
void wx_mac_set_default_filter(struct wx *wx, u8 *addr)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
980
memcpy(&wx->mac_table[0].addr, addr, ETH_ALEN);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
981
wx->mac_table[0].pools = BIT(VMDQ_P(0));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
982
wx->mac_table[0].state = (WX_MAC_STATE_DEFAULT | WX_MAC_STATE_IN_USE);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
983
wx_set_rar(wx, 0, wx->mac_table[0].addr,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
984
wx->mac_table[0].pools,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
989
void wx_flush_sw_mac_table(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
993
for (i = 0; i < wx->mac.num_rar_entries; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
994
if (!(wx->mac_table[i].state & WX_MAC_STATE_IN_USE))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
997
wx->mac_table[i].state |= WX_MAC_STATE_MODIFIED;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
998
wx->mac_table[i].state &= ~WX_MAC_STATE_IN_USE;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
999
memset(wx->mac_table[i].addr, 0, ETH_ALEN);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
14
void wx_intr_enable(struct wx *wx, u64 qmask);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
15
void wx_irq_disable(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
16
int wx_check_flash_load(struct wx *wx, u32 check_bit);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
17
void wx_control_hw(struct wx *wx, bool drv);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
18
int wx_mng_present(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
19
int wx_host_interface_command(struct wx *wx, u32 *buffer,
drivers/net/ethernet/wangxun/libwx/wx_hw.h
21
int wx_set_pps(struct wx *wx, bool enable, u64 nsec, u64 cycles);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
22
int wx_read_ee_hostif(struct wx *wx, u16 offset, u16 *data);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
23
int wx_read_ee_hostif_buffer(struct wx *wx,
drivers/net/ethernet/wangxun/libwx/wx_hw.h
25
void wx_init_eeprom_params(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
26
void wx_get_mac_addr(struct wx *wx, u8 *mac_addr);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
27
void wx_init_rx_addrs(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
28
void wx_mac_set_default_filter(struct wx *wx, u8 *addr);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
29
int wx_add_mac_filter(struct wx *wx, u8 *addr, u16 pool);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
30
int wx_del_mac_filter(struct wx *wx, u8 *addr, u16 pool);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
31
void wx_flush_sw_mac_table(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
32
u32 wx_mta_vector(struct wx *wx, u8 *mc_addr);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
34
void wx_disable_rx(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
36
int wx_disable_sec_rx_path(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
37
void wx_enable_sec_rx_path(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
40
void wx_disable_rx_queue(struct wx *wx, struct wx_ring *ring);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
41
void wx_enable_rx_queue(struct wx *wx, struct wx_ring *ring);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
42
u32 wx_rss_indir_tbl_entries(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
43
void wx_store_reta(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
44
void wx_store_rsskey(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
45
void wx_config_rss_field(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
46
void wx_enable_rss(struct wx *wx, bool enable);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
47
void wx_configure_rx(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
48
void wx_configure(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
49
void wx_start_hw(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
50
int wx_disable_pcie_master(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
51
int wx_stop_adapter(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
52
void wx_reset_mac(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
53
void wx_reset_misc(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
54
int wx_get_pcie_msix_counts(struct wx *wx, u16 *msix_count, u16 max_msix_count);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
55
int wx_sw_init(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
56
int wx_set_vfta(struct wx *wx, u32 vlan, u32 vind, bool vlan_on);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
59
int wx_fc_enable(struct wx *wx, bool tx_pause, bool rx_pause);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
60
void wx_update_stats(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.h
61
void wx_clear_hw_cntrs(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1576
struct wx *wx = netdev_priv(tx_ring->netdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1612
wx->ptp_clock) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1613
if (wx->tstamp_config.tx_type == HWTSTAMP_TX_ON &&
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1615
wx->state)) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1618
wx->ptp_tx_skb = skb_get(skb);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1619
wx->ptp_tx_start = jiffies;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1621
wx->tx_hwtstamp_skipped++;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1637
if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags) && tx_ring->atr_sample_rate)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1638
wx->atr(tx_ring, first, ptype);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1649
dev_kfree_skb_any(wx->ptp_tx_skb);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1650
wx->ptp_tx_skb = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1651
wx->tx_hwtstamp_errors++;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1652
clear_bit_unlock(WX_STATE_PTP_TX_IN_PROGRESS, wx->state);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1662
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1676
if (r_idx >= wx->num_tx_queues)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1677
r_idx = r_idx % wx->num_tx_queues;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1678
tx_ring = wx->tx_ring[r_idx];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1686
struct wx *wx = q_vector->wx;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1689
if (!wx->adaptive_itr)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1700
if (wx->pdev->is_virtfn)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1743
void wx_napi_enable_all(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1748
for (q_idx = 0; q_idx < wx->num_q_vectors; q_idx++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1749
q_vector = wx->q_vector[q_idx];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1760
void wx_napi_disable_all(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1765
for (q_idx = 0; q_idx < wx->num_q_vectors; q_idx++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1766
q_vector = wx->q_vector[q_idx];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1774
static bool wx_set_vmdq_queues(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1776
u16 vmdq_i = wx->ring_feature[RING_F_VMDQ].limit;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1777
u16 rss_i = wx->ring_feature[RING_F_RSS].limit;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1782
if (!test_bit(WX_FLAG_VMDQ_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1785
vmdq_i += wx->ring_feature[RING_F_VMDQ].offset;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1787
if (test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1813
vmdq_i -= wx->ring_feature[RING_F_VMDQ].offset;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1816
wx->ring_feature[RING_F_VMDQ].indices = vmdq_i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1817
wx->ring_feature[RING_F_VMDQ].mask = vmdq_m;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1820
wx->ring_feature[RING_F_RSS].indices = rss_i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1821
wx->ring_feature[RING_F_RSS].mask = rss_m;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1823
wx->queues_per_pool = rss_i;/*maybe same to num_rx_queues_per_pool*/
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1824
wx->num_rx_pools = vmdq_i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1825
wx->num_rx_queues_per_pool = rss_i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1827
wx->num_rx_queues = vmdq_i * rss_i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1828
wx->num_tx_queues = vmdq_i * rss_i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1841
static void wx_set_rss_queues(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1846
f = &wx->ring_feature[RING_F_RSS];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1847
if (test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1853
if (!(test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags)))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1856
clear_bit(WX_FLAG_FDIR_HASH, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1858
wx->ring_feature[RING_F_FDIR].indices = 1;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1864
f = &wx->ring_feature[RING_F_FDIR];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1868
if (!(test_bit(WX_FLAG_FDIR_PERFECT, wx->flags)))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1869
set_bit(WX_FLAG_FDIR_HASH, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1873
wx->num_rx_queues = f->indices;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1874
wx->num_tx_queues = f->indices;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1877
static void wx_set_num_queues(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1880
wx->num_rx_queues = 1;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1881
wx->num_tx_queues = 1;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1882
wx->queues_per_pool = 1;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1884
if (wx_set_vmdq_queues(wx))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1887
wx_set_rss_queues(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1898
static int wx_acquire_msix_vectors(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1904
nvecs = max(wx->num_rx_queues, wx->num_tx_queues);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1906
nvecs = min_t(int, nvecs, wx->mac.max_msix_vectors);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1908
wx->msix_q_entries = kzalloc_objs(struct msix_entry, nvecs);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1909
if (!wx->msix_q_entries)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1915
wx->msix_entry = kzalloc_objs(struct msix_entry, 1);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1916
if (!wx->msix_entry) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1917
kfree(wx->msix_q_entries);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1918
wx->msix_q_entries = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1922
nvecs = pci_alloc_irq_vectors_affinity(wx->pdev, nvecs,
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1927
wx_err(wx, "Failed to allocate MSI-X interrupts. Err: %d\n", nvecs);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1928
kfree(wx->msix_q_entries);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1929
wx->msix_q_entries = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1930
kfree(wx->msix_entry);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1931
wx->msix_entry = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1937
wx->msix_q_entries[i].entry = i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1938
wx->msix_q_entries[i].vector = pci_irq_vector(wx->pdev, i);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1941
wx->num_q_vectors = nvecs;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1943
wx->msix_entry->entry = nvecs;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1944
wx->msix_entry->vector = pci_irq_vector(wx->pdev, nvecs);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1946
if (test_bit(WX_FLAG_IRQ_VECTOR_SHARED, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1947
wx->msix_entry->entry = 0;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1948
wx->msix_entry->vector = pci_irq_vector(wx->pdev, 0);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1949
wx->msix_q_entries[0].entry = 0;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1950
wx->msix_q_entries[0].vector = pci_irq_vector(wx->pdev, 1);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1963
static int wx_set_interrupt_capability(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1965
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1969
ret = wx_acquire_msix_vectors(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1974
dev_warn(&wx->pdev->dev, "Disabling VMQQ support\n");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1975
clear_bit(WX_FLAG_VMDQ_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1978
dev_warn(&wx->pdev->dev, "Disabling RSS support\n");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1979
wx->ring_feature[RING_F_RSS].limit = 1;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1981
wx_set_num_queues(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1989
wx_err(wx, "Fallback to MSI.\n");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1991
wx_err(wx, "Fallback to INTx.\n");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1993
wx_err(wx, "Failed to allocate MSI/INTx interrupts. Error: %d\n", nvecs);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1998
wx->num_q_vectors = 1;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2003
static bool wx_cache_ring_vmdq(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2005
struct wx_ring_feature *vmdq = &wx->ring_feature[RING_F_VMDQ];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2006
struct wx_ring_feature *rss = &wx->ring_feature[RING_F_RSS];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2011
if (!test_bit(WX_FLAG_VMDQ_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2014
if (test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2017
for (i = 0; i < wx->num_rx_queues; i++, reg_idx++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2021
wx->rx_ring[i]->reg_idx = reg_idx;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2024
for (i = 0; i < wx->num_tx_queues; i++, reg_idx++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2028
wx->tx_ring[i]->reg_idx = reg_idx;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2033
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2035
wx->rx_ring[i]->reg_idx = reg_idx + i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2038
for (i = 0; i < wx->num_tx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2040
wx->tx_ring[i]->reg_idx = reg_idx + i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2053
static void wx_cache_ring_rss(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2057
if (wx_cache_ring_vmdq(wx))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2060
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2061
wx->rx_ring[i]->reg_idx = i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2063
for (i = 0; i < wx->num_tx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2064
wx->tx_ring[i]->reg_idx = i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2086
static int wx_alloc_q_vector(struct wx *wx,
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2103
netif_napi_add(wx->netdev, &q_vector->napi,
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2107
wx->q_vector[v_idx] = q_vector;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2108
q_vector->wx = wx;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2116
switch (wx->mac.type) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2130
q_vector->itr = wx->tx_itr_setting ?
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2131
default_itr : wx->tx_itr_setting;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2134
q_vector->itr = wx->rx_itr_setting ?
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2135
default_itr : wx->rx_itr_setting;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2139
ring->dev = &wx->pdev->dev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2140
ring->netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2149
ring->count = wx->tx_ring_count;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2154
wx->tx_ring[txr_idx] = ring;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2166
ring->dev = &wx->pdev->dev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2167
ring->netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2176
ring->count = wx->rx_ring_count;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2180
wx->rx_ring[rxr_idx] = ring;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2202
static void wx_free_q_vector(struct wx *wx, int v_idx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2204
struct wx_q_vector *q_vector = wx->q_vector[v_idx];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2208
wx->tx_ring[ring->queue_index] = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2211
wx->rx_ring[ring->queue_index] = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2213
wx->q_vector[v_idx] = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2225
static int wx_alloc_q_vectors(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2228
unsigned int rxr_remaining = wx->num_rx_queues;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2229
unsigned int txr_remaining = wx->num_tx_queues;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2230
unsigned int q_vectors = wx->num_q_vectors;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2237
err = wx_alloc_q_vector(wx, q_vectors, v_idx,
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2254
wx->num_tx_queues = 0;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2255
wx->num_rx_queues = 0;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2256
wx->num_q_vectors = 0;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2259
wx_free_q_vector(wx, v_idx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2272
static void wx_free_q_vectors(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2274
int v_idx = wx->num_q_vectors;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2276
wx->num_tx_queues = 0;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2277
wx->num_rx_queues = 0;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2278
wx->num_q_vectors = 0;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2281
wx_free_q_vector(wx, v_idx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2284
void wx_reset_interrupt_capability(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2286
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2292
kfree(wx->msix_q_entries);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2293
wx->msix_q_entries = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2294
kfree(wx->msix_entry);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2295
wx->msix_entry = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2297
pci_free_irq_vectors(wx->pdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2308
void wx_clear_interrupt_scheme(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2310
wx_free_q_vectors(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2311
wx_reset_interrupt_capability(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2315
int wx_init_interrupt_scheme(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2320
if (wx->pdev->is_virtfn) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2321
if (wx->set_num_queues)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2322
wx->set_num_queues(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2324
wx_set_num_queues(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2328
ret = wx_set_interrupt_capability(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2330
wx_err(wx, "Allocate irq vectors for failed.\n");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2335
ret = wx_alloc_q_vectors(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2337
wx_err(wx, "Unable to allocate memory for queue vectors.\n");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2338
wx_reset_interrupt_capability(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2342
wx_cache_ring_rss(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2362
void wx_free_irq(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2364
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2368
if (!wx->misc_irq_domain)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2369
free_irq(pdev->irq, wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2373
for (vector = 0; vector < wx->num_q_vectors; vector++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2374
struct wx_q_vector *q_vector = wx->q_vector[vector];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2375
struct msix_entry *entry = &wx->msix_q_entries[vector];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2384
if (!wx->misc_irq_domain)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2385
free_irq(wx->msix_entry->vector, wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2395
int wx_setup_isb_resources(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2397
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2399
if (wx->isb_mem)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2402
wx->isb_mem = dma_alloc_coherent(&pdev->dev,
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2404
&wx->isb_dma,
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2406
if (!wx->isb_mem) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2407
wx_err(wx, "Alloc isb_mem failed\n");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2421
void wx_free_isb_resources(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2423
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2426
wx->isb_mem, wx->isb_dma);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2427
wx->isb_mem = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2431
u32 wx_misc_isb(struct wx *wx, enum wx_isb_idx idx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2435
cur_tag = wx->isb_mem[WX_ISB_HEADER];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2436
wx->isb_tag[idx] = cur_tag;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2438
return (__force u32)cpu_to_le32(wx->isb_mem[idx]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2450
static void wx_set_ivar(struct wx *wx, s8 direction,
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2457
if (test_bit(WX_FLAG_IRQ_VECTOR_SHARED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2461
ivar = rd32(wx, WX_PX_MISC_IVAR);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2464
wr32(wx, WX_PX_MISC_IVAR, ivar);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2469
ivar = rd32(wx, WX_PX_IVAR(queue >> 1));
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2472
wr32(wx, WX_PX_IVAR(queue >> 1), ivar);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2486
struct wx *wx = q_vector->wx;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2490
switch (wx->mac.type) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2505
wr32(wx, WX_PX_ITR(v_idx), itr_reg);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2515
void wx_configure_vectors(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2517
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2523
if (test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2524
if (wx->num_vfs >= 32)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2525
eitrsel = BIT(wx->num_vfs % 32) - 1;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2527
for (i = 0; i < wx->num_vfs; i++)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2530
wr32(wx, WX_PX_ITRSEL, eitrsel);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2534
wr32(wx, WX_PX_GPIE, WX_PX_GPIE_MODEL);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2539
wr32(wx, WX_PX_GPIE, 0);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2545
for (v_idx = 0; v_idx < wx->num_q_vectors; v_idx++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2546
struct wx_q_vector *q_vector = wx->q_vector[v_idx];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2550
wx_set_ivar(wx, 0, ring->reg_idx, v_idx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2553
wx_set_ivar(wx, 1, ring->reg_idx, v_idx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2558
wx_set_ivar(wx, -1, 0, v_idx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2560
wr32(wx, WX_PX_ITR(v_idx), 1950);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2615
void wx_clean_all_rx_rings(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2619
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2620
wx_clean_rx_ring(wx->rx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2657
static void wx_free_all_rx_resources(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2661
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2662
wx_free_rx_resources(wx->rx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2731
void wx_clean_all_tx_rings(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2735
for (i = 0; i < wx->num_tx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2736
wx_clean_tx_ring(wx->tx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2779
static void wx_free_all_tx_resources(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2783
for (i = 0; i < wx->num_tx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2784
wx_free_tx_resources(wx->tx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2787
void wx_free_resources(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2789
wx_free_all_rx_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2790
wx_free_all_tx_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2889
static int wx_setup_all_rx_resources(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2893
for (i = 0; i < wx->num_rx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2894
err = wx_setup_rx_resources(wx->rx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2898
wx_err(wx, "Allocation for Rx Queue %u failed\n", i);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2906
wx_free_rx_resources(wx->rx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2912
struct wx *wx = netdev_priv(tx_ring->netdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2914
if (!test_bit(WX_FLAG_TXHEAD_WB_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2992
static int wx_setup_all_tx_resources(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2996
for (i = 0; i < wx->num_tx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2997
err = wx_setup_tx_resources(wx->tx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3001
wx_err(wx, "Allocation for Tx Queue %u failed\n", i);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3009
wx_free_tx_resources(wx->tx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3013
int wx_setup_resources(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3018
err = wx_setup_all_tx_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3023
err = wx_setup_all_rx_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3027
err = wx_setup_isb_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3034
wx_free_all_rx_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3036
wx_free_all_tx_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3050
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3054
wx_update_stats(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3057
for (i = 0; i < wx->num_rx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3058
struct wx_ring *ring = READ_ONCE(wx->rx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3073
for (i = 0; i < wx->num_tx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3074
struct wx_ring *ring = READ_ONCE(wx->tx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3092
hwstats = &wx->stats;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3103
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3106
wx->rss_enabled = !!(features & NETIF_F_RXHASH);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3107
wx_enable_rss(wx, wx->rss_enabled);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3111
if (changed & NETIF_F_HW_VLAN_CTAG_RX && wx->do_reset)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3112
wx->do_reset(netdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3116
if (test_bit(WX_FLAG_RSC_CAPABLE, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3118
if (test_bit(WX_FLAG_RSC_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3120
clear_bit(WX_FLAG_RSC_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3121
} else if (!(test_bit(WX_FLAG_RSC_ENABLED, wx->flags))) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3122
if (wx->rx_itr_setting == 1 ||
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3123
wx->rx_itr_setting > WX_MIN_RSC_ITR) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3124
set_bit(WX_FLAG_RSC_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3127
dev_info(&wx->pdev->dev,
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3133
if (!(test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags)))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3142
if (!(test_and_set_bit(WX_FLAG_FDIR_PERFECT, wx->flags)))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3145
clear_bit(WX_FLAG_FDIR_HASH, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3149
if (test_and_clear_bit(WX_FLAG_FDIR_PERFECT, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3153
if (wx->ring_feature[RING_F_RSS].limit <= 1)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3156
set_bit(WX_FLAG_FDIR_HASH, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3161
if (need_reset && wx->do_reset)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3162
wx->do_reset(netdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3181
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3188
wx_err(wx, "802.1Q and 802.1ad VLAN stripping must be either both on or both off.");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3197
wx_err(wx, "802.1Q and 802.1ad VLAN insertion must be either both on or both off.");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3206
wx_err(wx, "802.1Q and 802.1ad VLAN filtering must be either both on or both off.");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3215
if (!test_bit(WX_FLAG_RSC_CAPABLE, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3227
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3232
if (wx->mac.type == wx_mac_em)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3249
void wx_set_ring(struct wx *wx, u32 new_tx_count,
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3259
if (new_tx_count != wx->tx_ring_count) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3260
for (i = 0; i < wx->num_tx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3261
memcpy(&temp_ring[i], wx->tx_ring[i],
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3267
wx_err(wx, "setup new tx resources failed, keep using the old config\n");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3276
for (i = 0; i < wx->num_tx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3277
wx_free_tx_resources(wx->tx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3279
memcpy(wx->tx_ring[i], &temp_ring[i],
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3283
wx->tx_ring_count = new_tx_count;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3287
if (new_rx_count != wx->rx_ring_count) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3288
for (i = 0; i < wx->num_rx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3289
memcpy(&temp_ring[i], wx->rx_ring[i],
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3295
wx_err(wx, "setup new rx resources failed, keep using the old config\n");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3304
for (i = 0; i < wx->num_rx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3305
wx_free_rx_resources(wx->rx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3306
memcpy(wx->rx_ring[i], &temp_ring[i],
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3310
wx->rx_ring_count = new_rx_count;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3315
void wx_service_event_schedule(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3317
if (!test_and_set_bit(WX_STATE_SERVICE_SCHED, wx->state))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3318
queue_work(system_power_efficient_wq, &wx->service_task);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3322
void wx_service_event_complete(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3324
if (WARN_ON(!test_bit(WX_STATE_SERVICE_SCHED, wx->state)))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3329
clear_bit(WX_STATE_SERVICE_SCHED, wx->state);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3335
struct wx *wx = timer_container_of(wx, t, service_timer);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3339
mod_timer(&wx->service_timer, next_event_offset + jiffies);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3341
wx_service_event_schedule(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
399
struct wx *wx = rx_ring->q_vector->wx;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
409
if (test_bit(WX_FLAG_RSC_ENABLED, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
590
ethertype = ring->q_vector->wx->tpid[idx];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
637
struct wx *wx = netdev_priv(rx_ring->netdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
639
if (test_bit(WX_FLAG_RSC_CAPABLE, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
645
if (unlikely(test_bit(WX_FLAG_RX_HWTSTAMP_ENABLED, wx->flags)) &&
drivers/net/ethernet/wangxun/libwx/wx_lib.c
647
wx_ptp_rx_hwtstamp(rx_ring->q_vector->wx, skb);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
754
unsigned int budget = q_vector->wx->tx_work_limit;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
756
struct wx *wx = netdev_priv(tx_ring->netdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
803
if (unlikely(test_bit(WX_STATE_PTP_TX_IN_PROGRESS, wx->state)) &&
drivers/net/ethernet/wangxun/libwx/wx_lib.c
805
ptp_schedule_worker(wx->ptp_clock, 0);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
930
struct wx *wx = q_vector->wx;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
965
if (wx->adaptive_itr)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
967
if (netif_running(wx->netdev))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
968
wx_intr_enable(wx, WX_INTR_Q(q_vector->v_idx));
drivers/net/ethernet/wangxun/libwx/wx_lib.h
15
void wx_napi_enable_all(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.h
16
void wx_napi_disable_all(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.h
17
void wx_reset_interrupt_capability(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.h
18
void wx_clear_interrupt_scheme(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.h
19
int wx_init_interrupt_scheme(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.h
21
void wx_free_irq(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.h
22
int wx_setup_isb_resources(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.h
23
void wx_free_isb_resources(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.h
24
u32 wx_misc_isb(struct wx *wx, enum wx_isb_idx idx);
drivers/net/ethernet/wangxun/libwx/wx_lib.h
26
void wx_configure_vectors(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.h
27
void wx_clean_all_rx_rings(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.h
28
void wx_clean_all_tx_rings(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.h
29
void wx_free_resources(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.h
30
int wx_setup_resources(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.h
39
void wx_set_ring(struct wx *wx, u32 new_tx_count,
drivers/net/ethernet/wangxun/libwx/wx_lib.h
41
void wx_service_event_schedule(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.h
42
void wx_service_event_complete(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
102
ret = wx_obtain_mbx_lock_pf(wx, vf);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
107
wx_check_for_msg_pf(wx, vf);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
108
wx_check_for_ack_pf(wx, vf);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
112
wr32a(wx, WX_PXMBMEM(vf), i, msg[i]);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
116
wr32a(wx, WX_PXMBMEM(vf), WX_VXMAILBOX_SIZE, WX_PXMAILBOX_STS);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
117
wr32(wx, WX_PXMAILBOX(vf), WX_PXMAILBOX_STS);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
131
int wx_read_mbx_pf(struct wx *wx, u32 *msg, u16 size, u16 vf)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
133
struct wx_mbx_info *mbx = &wx->mbx;
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
142
ret = wx_obtain_mbx_lock_pf(wx, vf);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
147
msg[i] = rd32a(wx, WX_PXMBMEM(vf), i);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
15
static int wx_obtain_mbx_lock_pf(struct wx *wx, u16 vf)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
151
wr32a(wx, WX_PXMBMEM(vf), WX_VXMAILBOX_SIZE, WX_PXMAILBOX_ACK);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
152
wr32(wx, WX_PXMAILBOX(vf), WX_PXMAILBOX_ACK);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
164
int wx_check_for_rst_pf(struct wx *wx, u16 vf)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
170
vflre = rd32(wx, WX_VFLRE(reg_offset));
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
173
wr32(wx, WX_VFLREC(reg_offset), BIT(vf_shift));
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
178
static u32 wx_read_v2p_mailbox(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
180
u32 mailbox = rd32(wx, WX_VXMAILBOX);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
182
mailbox |= wx->mbx.mailbox;
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
183
wx->mbx.mailbox |= mailbox & WX_VXMAILBOX_R2C_BITS;
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
188
static u32 wx_mailbox_get_lock_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
190
wr32(wx, WX_VXMAILBOX, WX_VXMAILBOX_VFU);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
191
return wx_read_v2p_mailbox(wx);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
200
static int wx_obtain_mbx_lock_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
205
ret = readx_poll_timeout_atomic(wx_mailbox_get_lock_vf, wx, mailbox,
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
209
wx_err(wx, "Failed to obtain mailbox lock for VF.\n");
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
214
static int wx_check_for_bit_vf(struct wx *wx, u32 mask)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
216
u32 mailbox = wx_read_v2p_mailbox(wx);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
218
wx->mbx.mailbox &= ~mask;
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
22
wr32(wx, WX_PXMAILBOX(vf), WX_PXMAILBOX_PFU);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
229
static int wx_check_for_ack_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
232
return wx_check_for_bit_vf(wx, WX_VXMAILBOX_PFACK);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
241
int wx_check_for_msg_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
244
return wx_check_for_bit_vf(wx, WX_VXMAILBOX_PFSTS);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
25
mailbox = rd32(wx, WX_PXMAILBOX(vf));
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
253
int wx_check_for_rst_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
256
return wx_check_for_bit_vf(wx,
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
267
static int wx_poll_for_msg(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
269
struct wx_mbx_info *mbx = &wx->mbx;
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
272
return readx_poll_timeout_atomic(wx_check_for_msg_vf, wx, val,
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
282
static int wx_poll_for_ack(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
284
struct wx_mbx_info *mbx = &wx->mbx;
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
287
return readx_poll_timeout_atomic(wx_check_for_ack_vf, wx, val,
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
300
int wx_read_posted_mbx(struct wx *wx, u32 *msg, u16 size)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
304
ret = wx_poll_for_msg(wx);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
309
return wx_read_mbx_vf(wx, msg, size);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
31
wx_err(wx, "Failed to obtain mailbox lock for PF%d", vf);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
321
int wx_write_posted_mbx(struct wx *wx, u32 *msg, u16 size)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
326
ret = wx_write_mbx_vf(wx, msg, size);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
331
return wx_poll_for_ack(wx);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
342
int wx_write_mbx_vf(struct wx *wx, u32 *msg, u16 size)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
344
struct wx_mbx_info *mbx = &wx->mbx;
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
349
wx_err(wx, "Invalid mailbox message size %d", size);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
354
ret = wx_obtain_mbx_lock_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
359
wx_check_for_msg_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
36
static int wx_check_for_bit_pf(struct wx *wx, u32 mask, int index)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
360
wx_check_for_ack_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
364
wr32a(wx, WX_VXMBMEM, i, msg[i]);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
367
wr32(wx, WX_VXMAILBOX, WX_VXMAILBOX_REQ);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
38
u32 mbvficr = rd32(wx, WX_MBVFICR(index));
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
380
int wx_read_mbx_vf(struct wx *wx, u32 *msg, u16 size)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
382
struct wx_mbx_info *mbx = &wx->mbx;
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
390
ret = wx_obtain_mbx_lock_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
396
msg[i] = rd32a(wx, WX_VXMBMEM, i);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
399
wr32(wx, WX_VXMAILBOX, WX_VXMAILBOX_ACK);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
404
int wx_init_mbx_params_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
406
wx->vfinfo = kzalloc_obj(struct vf_data_storage);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
407
if (!wx->vfinfo)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
411
wx->mbx.size = WX_VXMAILBOX_SIZE;
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
412
wx->mbx.mailbox = WX_VXMAILBOX;
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
413
wx->mbx.udelay = 10;
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
414
wx->mbx.timeout = 1000;
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
42
wr32(wx, WX_MBVFICR(index), mask);
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
54
int wx_check_for_ack_pf(struct wx *wx, u16 vf)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
58
return wx_check_for_bit_pf(wx,
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
71
int wx_check_for_msg_pf(struct wx *wx, u16 vf)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
75
return wx_check_for_bit_pf(wx,
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
90
int wx_write_mbx_pf(struct wx *wx, u32 *msg, u16 size, u16 vf)
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
92
struct wx_mbx_info *mbx = &wx->mbx;
drivers/net/ethernet/wangxun/libwx/wx_mbx.c
97
wx_err(wx, "Invalid mailbox message size %d", size);
drivers/net/ethernet/wangxun/libwx/wx_mbx.h
85
int wx_write_mbx_pf(struct wx *wx, u32 *msg, u16 size, u16 vf);
drivers/net/ethernet/wangxun/libwx/wx_mbx.h
86
int wx_read_mbx_pf(struct wx *wx, u32 *msg, u16 size, u16 vf);
drivers/net/ethernet/wangxun/libwx/wx_mbx.h
87
int wx_check_for_rst_pf(struct wx *wx, u16 mbx_id);
drivers/net/ethernet/wangxun/libwx/wx_mbx.h
88
int wx_check_for_msg_pf(struct wx *wx, u16 mbx_id);
drivers/net/ethernet/wangxun/libwx/wx_mbx.h
89
int wx_check_for_ack_pf(struct wx *wx, u16 mbx_id);
drivers/net/ethernet/wangxun/libwx/wx_mbx.h
91
int wx_read_posted_mbx(struct wx *wx, u32 *msg, u16 size);
drivers/net/ethernet/wangxun/libwx/wx_mbx.h
92
int wx_write_posted_mbx(struct wx *wx, u32 *msg, u16 size);
drivers/net/ethernet/wangxun/libwx/wx_mbx.h
93
int wx_check_for_rst_vf(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_mbx.h
94
int wx_check_for_msg_vf(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_mbx.h
95
int wx_read_mbx_vf(struct wx *wx, u32 *msg, u16 size);
drivers/net/ethernet/wangxun/libwx/wx_mbx.h
96
int wx_write_mbx_vf(struct wx *wx, u32 *msg, u16 size);
drivers/net/ethernet/wangxun/libwx/wx_mbx.h
97
int wx_init_mbx_params_vf(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
103
struct wx *wx = container_of(ptp, struct wx, ptp_caps);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
106
stamp = wx_ptp_readtime(wx, sts);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
107
ns = wx_ptp_timecounter_cyc2time(wx, stamp);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
116
struct wx *wx = container_of(ptp, struct wx, ptp_caps);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
122
write_seqlock_irqsave(&wx->hw_tc_lock, flags);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
123
timecounter_init(&wx->hw_tc, &wx->hw_cc, ns);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
124
write_sequnlock_irqrestore(&wx->hw_tc_lock, flags);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
126
if (wx->ptp_setup_sdp)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
127
wx->ptp_setup_sdp(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
140
static void wx_ptp_clear_tx_timestamp(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
142
rd32ptp(wx, WX_TSC_1588_STMPH);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
143
if (wx->ptp_tx_skb) {
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
144
dev_kfree_skb_any(wx->ptp_tx_skb);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
145
wx->ptp_tx_skb = NULL;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
147
clear_bit_unlock(WX_STATE_PTP_TX_IN_PROGRESS, wx->state);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
167
static void wx_ptp_convert_to_hwtstamp(struct wx *wx,
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
173
ns = wx_ptp_timecounter_cyc2time(wx, timestamp);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
185
static void wx_ptp_tx_hwtstamp(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
188
struct sk_buff *skb = wx->ptp_tx_skb;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
191
regval |= (u64)rd32ptp(wx, WX_TSC_1588_STMPL);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
192
regval |= (u64)rd32ptp(wx, WX_TSC_1588_STMPH) << 32;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
194
wx_ptp_convert_to_hwtstamp(wx, &shhwtstamps, regval);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
196
wx->ptp_tx_skb = NULL;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
197
clear_bit_unlock(WX_STATE_PTP_TX_IN_PROGRESS, wx->state);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
200
wx->tx_hwtstamp_pkts++;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
203
static int wx_ptp_tx_hwtstamp_work(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
208
if (!wx->ptp_tx_skb) {
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
209
wx_ptp_clear_tx_timestamp(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
214
tsynctxctl = rd32ptp(wx, WX_TSC_1588_CTL);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
216
wx_ptp_tx_hwtstamp(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
233
static void wx_ptp_overflow_check(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
235
bool timeout = time_is_before_jiffies(wx->last_overflow_check +
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
241
write_seqlock_irqsave(&wx->hw_tc_lock, flags);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
242
timecounter_read(&wx->hw_tc);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
243
write_sequnlock_irqrestore(&wx->hw_tc_lock, flags);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
245
wx->last_overflow_check = jiffies;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
258
static void wx_ptp_rx_hang(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
265
tsyncrxctl = rd32(wx, WX_PSR_1588_CTL);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
271
wx->last_rx_ptp_check = jiffies;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
276
rx_event = wx->last_rx_ptp_check;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
277
for (n = 0; n < wx->num_rx_queues; n++) {
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
278
rx_ring = wx->rx_ring[n];
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
285
rd32(wx, WX_PSR_1588_STMPH);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
286
wx->last_rx_ptp_check = jiffies;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
288
wx->rx_hwtstamp_cleared++;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
289
dev_warn(&wx->pdev->dev, "clearing RX Timestamp hang");
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
297
static void wx_ptp_tx_hang(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
299
bool timeout = time_is_before_jiffies(wx->ptp_tx_start +
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
302
if (!wx->ptp_tx_skb)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
305
if (!test_bit(WX_STATE_PTP_TX_IN_PROGRESS, wx->state))
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
313
wx_ptp_clear_tx_timestamp(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
314
wx->tx_hwtstamp_timeouts++;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
315
dev_warn(&wx->pdev->dev, "clearing Tx timestamp hang\n");
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
321
struct wx *wx = container_of(ptp, struct wx, ptp_caps);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
324
ts_done = wx_ptp_tx_hwtstamp_work(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
326
wx_ptp_overflow_check(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
328
wx->flags)))
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
329
wx_ptp_rx_hang(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
330
wx_ptp_tx_hang(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
335
static u64 wx_ptp_trigger_calc(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
337
struct cyclecounter *cc = &wx->hw_cc;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
34
static u64 wx_ptp_timecounter_cyc2time(struct wx *wx, u64 timestamp)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
343
write_seqlock_irqsave(&wx->hw_tc_lock, flags);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
344
ns = timecounter_read(&wx->hw_tc);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
345
wx->pps_edge_start = wx->hw_tc.cycle_last;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
346
write_sequnlock_irqrestore(&wx->hw_tc_lock, flags);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
347
wx->pps_edge_end = wx->pps_edge_start;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
358
wx->pps_edge_start += div_u64(((u64)rem << cc->shift), cc->mult);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
359
wx->pps_edge_end += div_u64(((u64)(rem + wx->pps_width) <<
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
365
static int wx_ptp_setup_sdp(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
367
struct cyclecounter *cc = &wx->hw_cc;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
371
if (wx->pps_width >= WX_NS_PER_SEC) {
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
372
wx_err(wx, "PTP pps width cannot be longer than 1s!\n");
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
377
wr32ptp(wx, WX_TSC_1588_AUX_CTL, 0);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
378
WX_WRITE_FLUSH(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
380
if (!test_bit(WX_FLAG_PTP_PPS_ENABLED, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
381
if (wx->pps_enabled) {
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
382
wx->pps_enabled = false;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
383
wx_set_pps(wx, false, 0, 0);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
388
wx->pps_enabled = true;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
389
nsec = wx_ptp_trigger_calc(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
390
wx_set_pps(wx, wx->pps_enabled, nsec, wx->pps_edge_start);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
394
wr32ptp(wx, WX_TSC_1588_TRGT_L(0), (u32)wx->pps_edge_start);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
395
wr32ptp(wx, WX_TSC_1588_TRGT_H(0), (u32)(wx->pps_edge_start >> 32));
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
396
wr32ptp(wx, WX_TSC_1588_TRGT_L(1), (u32)wx->pps_edge_end);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
397
wr32ptp(wx, WX_TSC_1588_TRGT_H(1), (u32)(wx->pps_edge_end >> 32));
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
398
wr32ptp(wx, WX_TSC_1588_SDP(0),
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
40
seq = read_seqbegin(&wx->hw_tc_lock);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
400
wr32ptp(wx, WX_TSC_1588_SDP(1), WX_TSC_1588_SDP_FUN_SEL_TS0);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
401
wr32ptp(wx, WX_TSC_1588_AUX_CTL, tsauxc);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
402
wr32ptp(wx, WX_TSC_1588_INT_EN, WX_TSC_1588_INT_EN_TT1);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
403
WX_WRITE_FLUSH(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
406
wx->sec_to_cc = div_u64(((u64)WX_NS_PER_SEC << cc->shift), cc->mult);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
41
ns = timecounter_cyc2time(&wx->hw_tc, timestamp);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
414
struct wx *wx = container_of(ptp, struct wx, ptp_caps);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
42
} while (read_seqretry(&wx->hw_tc_lock, seq));
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
422
if (rq->type != PTP_CLK_REQ_PEROUT || !wx->ptp_setup_sdp)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
431
wx_err(wx, "Absolute start time not supported.\n");
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
436
wx_err(wx, "Only 1pps is supported.\n");
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
445
wx->pps_width = timespec64_to_ns(&ts_on);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
447
wx->pps_width = 120000000;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
451
set_bit(WX_FLAG_PTP_PPS_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
453
clear_bit(WX_FLAG_PTP_PPS_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
455
return wx->ptp_setup_sdp(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
458
void wx_ptp_check_pps_event(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
466
if (!wx->ptp_clock)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
469
int_status = rd32ptp(wx, WX_TSC_1588_INT_ST);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
47
static u64 wx_ptp_readtime(struct wx *wx, struct ptp_system_timestamp *sts)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
472
wr32ptp(wx, WX_TSC_1588_AUX_CTL, 0);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
473
WX_WRITE_FLUSH(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
475
wx_ptp_trigger_calc(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
479
wr32ptp(wx, WX_TSC_1588_TRGT_L(0), (u32)wx->pps_edge_start);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
480
wr32ptp(wx, WX_TSC_1588_TRGT_H(0), (u32)(wx->pps_edge_start >> 32));
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
481
wr32ptp(wx, WX_TSC_1588_TRGT_L(1), (u32)wx->pps_edge_end);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
482
wr32ptp(wx, WX_TSC_1588_TRGT_H(1), (u32)(wx->pps_edge_end >> 32));
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
483
wr32ptp(wx, WX_TSC_1588_AUX_CTL, tsauxc);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
484
WX_WRITE_FLUSH(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
489
static long wx_ptp_create_clock(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
491
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
495
if (!IS_ERR_OR_NULL(wx->ptp_clock))
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
498
snprintf(wx->ptp_caps.name, sizeof(wx->ptp_caps.name),
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
500
wx->ptp_caps.owner = THIS_MODULE;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
501
wx->ptp_caps.n_alarm = 0;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
502
wx->ptp_caps.n_ext_ts = 0;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
503
wx->ptp_caps.pps = 0;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
504
wx->ptp_caps.adjfine = wx_ptp_adjfine;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
505
wx->ptp_caps.adjtime = wx_ptp_adjtime;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
506
wx->ptp_caps.gettimex64 = wx_ptp_gettimex64;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
507
wx->ptp_caps.settime64 = wx_ptp_settime64;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
508
wx->ptp_caps.do_aux_work = wx_ptp_do_aux_work;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
509
switch (wx->mac.type) {
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
51
timeh1 = rd32ptp(wx, WX_TSC_1588_SYSTIMH);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
512
wx->ptp_caps.max_adj = 250000000;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
513
wx->ptp_caps.n_per_out = 1;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
514
wx->ptp_setup_sdp = wx_ptp_setup_sdp;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
515
wx->ptp_caps.enable = wx_ptp_feature_enable;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
518
wx->ptp_caps.max_adj = 250000000;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
519
wx->ptp_caps.n_per_out = 0;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
520
wx->ptp_setup_sdp = NULL;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
523
wx->ptp_caps.max_adj = 500000000;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
524
wx->ptp_caps.n_per_out = 1;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
525
wx->ptp_setup_sdp = wx_ptp_setup_sdp;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
526
wx->ptp_caps.enable = wx_ptp_feature_enable;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
53
timel = rd32ptp(wx, WX_TSC_1588_SYSTIML);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
532
wx->ptp_clock = ptp_clock_register(&wx->ptp_caps, &wx->pdev->dev);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
533
if (IS_ERR(wx->ptp_clock)) {
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
534
err = PTR_ERR(wx->ptp_clock);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
535
wx->ptp_clock = NULL;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
536
wx_err(wx, "ptp clock register failed\n");
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
538
} else if (wx->ptp_clock) {
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
539
dev_info(&wx->pdev->dev, "registered PHC device on %s\n",
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
547
wx->tstamp_config.rx_filter = HWTSTAMP_FILTER_NONE;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
548
wx->tstamp_config.tx_type = HWTSTAMP_TX_OFF;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
55
timeh2 = rd32ptp(wx, WX_TSC_1588_SYSTIMH);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
553
static int wx_ptp_set_timestamp_mode(struct wx *wx,
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
563
memcpy(flags, wx->flags, sizeof(wx->flags));
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
59
timel = rd32ptp(wx, WX_TSC_1588_SYSTIML);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
621
wr32(wx, WX_PSR_ETYPE_SWC(WX_PSR_ETYPE_SWC_FILTER_1588),
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
626
wr32(wx, WX_PSR_ETYPE_SWC(WX_PSR_ETYPE_SWC_FILTER_1588), 0);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
629
regval = rd32ptp(wx, WX_TSC_1588_CTL);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
632
wr32ptp(wx, WX_TSC_1588_CTL, regval);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
635
regval = rd32(wx, WX_PSR_1588_CTL);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
638
wr32(wx, WX_PSR_1588_CTL, regval);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
641
wr32(wx, WX_PSR_1588_MSG, tsync_rx_mtrl);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
643
WX_WRITE_FLUSH(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
646
memcpy(wx->flags, flags, sizeof(wx->flags));
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
649
wx_ptp_clear_tx_timestamp(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
650
rd32(wx, WX_PSR_1588_STMPH);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
657
struct wx *wx = container_of(hw_cc, struct wx, hw_cc);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
659
return wx_ptp_readtime(wx, NULL);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
662
static void wx_ptp_link_speed_adjust(struct wx *wx, u32 *shift, u32 *incval)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
664
switch (wx->mac.type) {
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
67
struct wx *wx = container_of(ptp, struct wx, ptp_caps);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
678
switch (wx->speed) {
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
709
void wx_ptp_reset_cyclecounter(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
71
incval = READ_ONCE(wx->base_incval);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
731
wx_ptp_link_speed_adjust(wx, &cc.shift, &incval);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
734
WRITE_ONCE(wx->base_incval, incval);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
736
mask = (wx->mac.type == wx_mac_em) ? 0x7FFFFFF : 0xFFFFFF;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
738
if (wx->mac.type != wx_mac_em)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
74
mask = (wx->mac.type == wx_mac_em) ? 0x7FFFFFF : 0xFFFFFF;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
740
wr32ptp(wx, WX_TSC_1588_INC, incval);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
745
write_seqlock_irqsave(&wx->hw_tc_lock, flags);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
746
memcpy(&wx->hw_cc, &cc, sizeof(wx->hw_cc));
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
747
write_sequnlock_irqrestore(&wx->hw_tc_lock, flags);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
751
void wx_ptp_reset(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
756
wx_ptp_set_timestamp_mode(wx, &wx->tstamp_config);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
757
wx_ptp_reset_cyclecounter(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
759
wr32ptp(wx, WX_TSC_1588_SYSTIML, 0);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
76
if (wx->mac.type != wx_mac_em)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
760
wr32ptp(wx, WX_TSC_1588_SYSTIMH, 0);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
761
WX_WRITE_FLUSH(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
763
write_seqlock_irqsave(&wx->hw_tc_lock, flags);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
764
timecounter_init(&wx->hw_tc, &wx->hw_cc,
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
766
write_sequnlock_irqrestore(&wx->hw_tc_lock, flags);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
768
wx->last_overflow_check = jiffies;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
769
ptp_schedule_worker(wx->ptp_clock, HZ);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
774
if (wx->ptp_setup_sdp)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
775
wx->ptp_setup_sdp(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
779
void wx_ptp_init(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
784
seqlock_init(&wx->hw_tc_lock);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
787
if (wx_ptp_create_clock(wx))
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
79
wr32ptp(wx, WX_TSC_1588_INC, incval);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
790
wx->tx_hwtstamp_pkts = 0;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
791
wx->tx_hwtstamp_timeouts = 0;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
792
wx->tx_hwtstamp_skipped = 0;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
793
wx->tx_hwtstamp_errors = 0;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
794
wx->rx_hwtstamp_cleared = 0;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
796
wx_ptp_reset(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
799
set_bit(WX_STATE_PTP_RUNNING, wx->state);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
810
void wx_ptp_suspend(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
813
if (!test_and_clear_bit(WX_STATE_PTP_RUNNING, wx->state))
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
816
clear_bit(WX_FLAG_PTP_PPS_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
817
if (wx->ptp_setup_sdp)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
818
wx->ptp_setup_sdp(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
820
wx_ptp_clear_tx_timestamp(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
831
void wx_ptp_stop(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
834
wx_ptp_suspend(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
837
if (wx->ptp_clock) {
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
838
ptp_clock_unregister(wx->ptp_clock);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
839
wx->ptp_clock = NULL;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
840
dev_info(&wx->pdev->dev, "removed PHC on %s\n", wx->netdev->name);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
854
void wx_ptp_rx_hwtstamp(struct wx *wx, struct sk_buff *skb)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
86
struct wx *wx = container_of(ptp, struct wx, ptp_caps);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
862
tsyncrxctl = rd32(wx, WX_PSR_1588_CTL);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
866
regval |= (u64)rd32(wx, WX_PSR_1588_STMPL);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
867
regval |= (u64)rd32(wx, WX_PSR_1588_STMPH) << 32;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
869
wx_ptp_convert_to_hwtstamp(wx, skb_hwtstamps(skb), regval);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
875
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
880
*cfg = wx->tstamp_config;
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
89
write_seqlock_irqsave(&wx->hw_tc_lock, flags);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
890
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
896
err = wx_ptp_set_timestamp_mode(wx, cfg);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
90
timecounter_adjtime(&wx->hw_tc, delta);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
901
memcpy(&wx->tstamp_config, cfg, sizeof(wx->tstamp_config));
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
91
write_sequnlock_irqrestore(&wx->hw_tc_lock, flags);
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
93
if (wx->ptp_setup_sdp)
drivers/net/ethernet/wangxun/libwx/wx_ptp.c
94
wx->ptp_setup_sdp(wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.h
10
void wx_ptp_init(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.h
11
void wx_ptp_suspend(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.h
12
void wx_ptp_stop(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.h
13
void wx_ptp_rx_hwtstamp(struct wx *wx, struct sk_buff *skb);
drivers/net/ethernet/wangxun/libwx/wx_ptp.h
7
void wx_ptp_check_pps_event(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.h
8
void wx_ptp_reset_cyclecounter(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_ptp.h
9
void wx_ptp_reset(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
103
wx->vfinfo[i].spoofchk_enabled = true;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
104
wx->vfinfo[i].link_enable = true;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
106
wx->vfinfo[i].trusted = false;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
108
wx->vfinfo[i].xcast_mode = WXVF_XCAST_MODE_NONE;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
111
if (!test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
119
wr32m(wx, WX_CFG_PORT_CTL,
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
124
clear_bit(WX_FLAG_RSC_CAPABLE, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
125
clear_bit(WX_FLAG_RSC_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
130
static void wx_sriov_reinit(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
133
wx->setup_tc(wx->netdev, netdev_get_num_tc(wx->netdev));
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
137
void wx_disable_sriov(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
139
if (!pci_vfs_assigned(wx->pdev))
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
140
pci_disable_sriov(wx->pdev);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
142
wx_err(wx, "Unloading driver while VFs are assigned.\n");
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
145
wx_sriov_clear_data(wx);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
15
struct wx *wx = pci_get_drvdata(pdev);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
152
struct wx *wx = pci_get_drvdata(dev);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
155
if (netif_is_rxfh_configured(wx->netdev)) {
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
156
wx_err(wx, "Cannot enable SR-IOV while RXFH is configured\n");
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
157
wx_err(wx, "Run 'ethtool -X <if> default' to reset RSS table\n");
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
161
err = __wx_enable_sriov(wx, num_vfs);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
165
wx->num_vfs = num_vfs;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
166
for (i = 0; i < wx->num_vfs; i++)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
170
wx_sriov_reinit(wx);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
174
wx_err(wx, "Failed to enable PCI sriov: %d\n", err);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
180
wx_sriov_clear_data(wx);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
186
struct wx *wx = pci_get_drvdata(dev);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
188
if (netif_is_rxfh_configured(wx->netdev)) {
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
189
wx_err(wx, "Cannot disable SR-IOV while RXFH is configured\n");
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
19
eth_zero_addr(wx->vfinfo[vfn].vf_mac_addr);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
190
wx_err(wx, "Run 'ethtool -X <if> default' to reset RSS table\n");
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
194
wx_disable_sriov(wx);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
195
wx_sriov_reinit(wx);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
202
struct wx *wx = pci_get_drvdata(pdev);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
209
wx_err(wx, "can't free VFs because some are assigned to VMs.\n");
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
22
static int wx_alloc_vf_macvlans(struct wx *wx, u8 num_vfs)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
221
static int wx_set_vf_mac(struct wx *wx, u16 vf, const u8 *mac_addr)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
227
wx_del_mac_filter(wx, wx->vfinfo[vf].vf_mac_addr, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
228
ret = wx_add_mac_filter(wx, hw_addr, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
230
ether_addr_copy(wx->vfinfo[vf].vf_mac_addr, mac_addr);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
232
eth_zero_addr(wx->vfinfo[vf].vf_mac_addr);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
237
static void wx_set_vmolr(struct wx *wx, u16 vf, bool aupe)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
239
u32 vmolr = rd32(wx, WX_PSR_VM_L2CTL(vf));
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
246
wr32(wx, WX_PSR_VM_L2CTL(vf), vmolr);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
249
static void wx_set_vmvir(struct wx *wx, u16 vid, u16 qos, u16 vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
254
wr32(wx, WX_TDM_VLAN_INS(vf), vmvir);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
257
static int wx_set_vf_vlan(struct wx *wx, int add, int vid, u16 vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
262
return wx_set_vfta(wx, vid, vf, (bool)add);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
265
static void wx_set_vlan_anti_spoofing(struct wx *wx, bool enable, int vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
270
pfvfspoof = rd32(wx, WX_TDM_VLAN_AS(index));
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
275
wr32(wx, WX_TDM_VLAN_AS(index), pfvfspoof);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
278
static void wx_write_qde(struct wx *wx, u32 vf, u32 qde)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
28
INIT_LIST_HEAD(&wx->vf_mvs.mvlist);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
280
struct wx_ring_feature *vmdq = &wx->ring_feature[RING_F_VMDQ];
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
285
reg = rd32(wx, WX_RDM_PF_QDE(n));
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
295
wr32(wx, WX_RDM_PF_QDE(n), reg);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
298
static void wx_clear_vmvir(struct wx *wx, u32 vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
30
num_vf_macvlans = wx->mac.num_rar_entries -
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
300
wr32(wx, WX_TDM_VLAN_INS(vf), 0);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
303
static void wx_ping_vf(struct wx *wx, int vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
307
if (wx->vfinfo[vf].clear_to_send)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
309
wx_write_mbx_pf(wx, &ping, 1, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
312
static void wx_set_vf_rx_tx(struct wx *wx, int vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
317
reg_cur_tx = rd32(wx, WX_TDM_VF_TE(index));
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
318
reg_cur_rx = rd32(wx, WX_RDM_VF_RE(index));
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
320
if (wx->vfinfo[vf].link_enable) {
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
325
wr32(wx, WX_TDM_VF_TE(index), reg_req_tx);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
327
wr32(wx, WX_RDM_VF_RE(index), reg_req_rx);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
333
wr32(wx, WX_TDM_VFTE_CLR(index), reg_req_tx);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
335
wr32(wx, WX_RDM_VFRE_CLR(index), reg_req_rx);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
339
static int wx_get_vf_queues(struct wx *wx, u32 *msgbuf, u32 vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
341
struct wx_ring_feature *vmdq = &wx->ring_feature[RING_F_VMDQ];
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
347
if (wx->vfinfo[vf].pf_vlan || wx->vfinfo[vf].pf_qos)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
358
static void wx_vf_reset_event(struct wx *wx, u16 vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
360
struct vf_data_storage *vfinfo = &wx->vfinfo[vf];
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
361
u8 num_tcs = netdev_get_num_tc(wx->netdev);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
364
wx_set_vf_vlan(wx, true, vfinfo->pf_vlan, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
367
wx_set_vmolr(wx, vf, !vfinfo->pf_vlan);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
371
wx_clear_vmvir(wx, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
374
wx_set_vmvir(wx, vfinfo->pf_vlan,
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
377
wx_set_vmvir(wx, vfinfo->pf_vlan,
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
378
wx->default_up, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
382
wx->vfinfo[vf].num_vf_mc_hashes = 0;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
385
wx_set_rx_mode(wx->netdev);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
387
wx_del_mac_filter(wx, wx->vfinfo[vf].vf_mac_addr, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
389
wx->vfinfo[vf].vf_api = wx_mbox_api_null;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
392
static void wx_vf_reset_msg(struct wx *wx, u16 vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
394
const u8 *vf_mac = wx->vfinfo[vf].vf_mac_addr;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
395
struct net_device *dev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
402
wx_vf_reset_event(wx, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
406
wx_set_vf_mac(wx, vf, vf_mac);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
412
wx_write_qde(wx, vf, 1);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
415
wx_set_vf_rx_tx(wx, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
42
list_add(&mv_list[i].mvlist, &wx->vf_mvs.mvlist);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
421
wr32(wx, WX_RDM_VFRE_CLR(index), reg);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
424
wx->vfinfo[vf].clear_to_send = true;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
433
wx_err(wx, "VF %d has no MAC address assigned", vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
436
msgbuf[3] = wx->mac.mc_filter_type;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
437
wx_write_mbx_pf(wx, msgbuf, WX_VF_PERMADDR_MSG_LEN, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
44
wx->mv_list = mv_list;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
440
static int wx_set_vf_mac_addr(struct wx *wx, u32 *msgbuf, u16 vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
446
wx_err(wx, "VF %d attempted to set invalid mac\n", vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
450
if (wx->vfinfo[vf].pf_set_mac &&
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
451
memcmp(wx->vfinfo[vf].vf_mac_addr, new_mac, ETH_ALEN)) {
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
452
wx_err(wx,
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
458
ret = wx_set_vf_mac(wx, vf, new_mac);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
465
static void wx_set_vf_multicasts(struct wx *wx, u32 *msgbuf, u32 vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
467
struct vf_data_storage *vfinfo = &wx->vfinfo[vf];
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
470
u32 vmolr = rd32(wx, WX_PSR_VM_L2CTL(vf));
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
484
mta_reg = wx->mac.mta_shadow[vector_reg];
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
486
wx->mac.mta_shadow[vector_reg] = mta_reg;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
487
wr32(wx, WX_PSR_MC_TBL(vector_reg), mta_reg);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
49
static void wx_sriov_clear_data(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
490
wr32(wx, WX_PSR_VM_L2CTL(vf), vmolr);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
493
static void wx_set_vf_lpe(struct wx *wx, u32 max_frame, u32 vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
502
vfre = rd32(wx, WX_RDM_VF_RE(index));
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
504
wr32(wx, WX_RDM_VF_RE(index), vfre);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
508
reg_val = rd32(wx, WX_MAC_WDG_TIMEOUT) & WX_MAC_WDG_TIMEOUT_WTO_MASK;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
510
wr32(wx, WX_MAC_WDG_TIMEOUT,
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
514
static int wx_find_vlvf_entry(struct wx *wx, u32 vlan)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
52
wx->num_vfs = 0;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
525
wr32(wx, WX_PSR_VLAN_SWC_IDX, regindex);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
526
vlvf = rd32(wx, WX_PSR_VLAN_SWC);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
538
static int wx_set_vf_macvlan(struct wx *wx,
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
546
list_for_each(pos, &wx->vf_mvs.mvlist) {
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
55
kfree(wx->vfinfo);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
552
wx_del_mac_filter(wx, entry->vf_macvlan, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
56
wx->vfinfo = NULL;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
561
list_for_each(pos, &wx->vf_mvs.mvlist) {
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
570
retval = wx_add_mac_filter(wx, mac_addr, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
581
static int wx_set_vf_vlan_msg(struct wx *wx, u32 *msgbuf, u16 vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
588
wx->vfinfo[vf].vlan_count++;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
589
else if (wx->vfinfo[vf].vlan_count)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
59
kfree(wx->mv_list);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
590
wx->vfinfo[vf].vlan_count--;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
595
if (add && wx->netdev->flags & IFF_PROMISC)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
596
wx_set_vf_vlan(wx, add, vid, VMDQ_P(0));
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
598
ret = wx_set_vf_vlan(wx, add, vid, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
599
if (!ret && wx->vfinfo[vf].spoofchk_enabled)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
60
wx->mv_list = NULL;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
600
wx_set_vlan_anti_spoofing(wx, true, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
605
if (!add && wx->netdev->flags & IFF_PROMISC) {
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
609
reg_ndx = wx_find_vlvf_entry(wx, vid);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
612
wr32(wx, WX_PSR_VLAN_SWC_IDX, reg_ndx);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
613
vlvf = rd32(wx, WX_PSR_VLAN_SWC);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
618
bits = rd32(wx, WX_PSR_VLAN_SWC_VM_L);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
620
if (test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
621
bits |= rd32(wx, WX_PSR_VLAN_SWC_VM_H);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
623
if (test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
624
bits = rd32(wx, WX_PSR_VLAN_SWC_VM_H);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
626
bits |= rd32(wx, WX_PSR_VLAN_SWC_VM_L);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
63
wr32m(wx, WX_PSR_VM_CTL, WX_PSR_VM_CTL_POOL_MASK, 0);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
633
wx_set_vf_vlan(wx, add, vid, VMDQ_P(0));
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
639
static int wx_set_vf_macvlan_msg(struct wx *wx, u32 *msgbuf, u16 vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
64
wx->ring_feature[RING_F_VMDQ].offset = 0;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
646
if (wx->vfinfo[vf].pf_set_mac && index > 0) {
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
647
wx_err(wx, "VF %d request MACVLAN filter but is denied\n", vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
654
wx_err(wx, "VF %d attempted to set invalid mac\n", vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
66
clear_bit(WX_FLAG_IRQ_VECTOR_SHARED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
660
if (wx->vfinfo[vf].spoofchk_enabled)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
661
wx_set_vf_spoofchk(wx->netdev, vf, false);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
664
err = wx_set_vf_macvlan(wx, vf, index, new_mac);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
666
wx_err(wx,
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
67
clear_bit(WX_FLAG_SRIOV_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
675
static int wx_negotiate_vf_api(struct wx *wx, u32 *msgbuf, u32 vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
681
wx->vfinfo[vf].vf_api = api;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
684
wx_err(wx, "VF %d requested invalid api version %u\n", vf, api);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
689
static int wx_get_vf_link_state(struct wx *wx, u32 *msgbuf, u32 vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
69
if (wx->ring_feature[RING_F_VMDQ].limit == 1)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
691
msgbuf[1] = wx->vfinfo[vf].link_enable;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
696
static int wx_get_fw_version(struct wx *wx, u32 *msgbuf, u32 vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
70
clear_bit(WX_FLAG_VMDQ_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
701
ret = kstrtoul(wx->eeprom_id, 16, &fw_version);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
709
static int wx_update_vf_xcast_mode(struct wx *wx, u32 *msgbuf, u32 vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
714
if (wx->vfinfo[vf].xcast_mode == xcast_mode)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
73
static int __wx_enable_sriov(struct wx *wx, u8 num_vfs)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
744
vmolr = rd32(wx, WX_PSR_VM_L2CTL(vf));
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
747
wr32(wx, WX_PSR_VM_L2CTL(vf), vmolr);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
749
wx->vfinfo[vf].xcast_mode = xcast_mode;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
755
static void wx_rcv_msg_from_vf(struct wx *wx, u16 vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
761
retval = wx_read_mbx_pf(wx, msgbuf, mbx_size, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
763
wx_err(wx, "Error receiving message from VF\n");
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
772
wx_vf_reset_msg(wx, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
779
if (!wx->vfinfo[vf].clear_to_send) {
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
78
set_bit(WX_FLAG_SRIOV_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
781
wx_write_mbx_pf(wx, msgbuf, 1, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
787
retval = wx_set_vf_mac_addr(wx, msgbuf, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
79
dev_info(&wx->pdev->dev, "SR-IOV enabled with %d VFs\n", num_vfs);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
790
wx_set_vf_multicasts(wx, msgbuf, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
794
retval = wx_set_vf_vlan_msg(wx, msgbuf, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
797
wx_set_vf_lpe(wx, msgbuf[1], vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
801
retval = wx_set_vf_macvlan_msg(wx, msgbuf, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
804
retval = wx_negotiate_vf_api(wx, msgbuf, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
807
retval = wx_get_vf_queues(wx, msgbuf, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
81
if (num_vfs == 7 && wx->mac.type == wx_mac_em)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
810
retval = wx_get_vf_link_state(wx, msgbuf, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
813
retval = wx_get_fw_version(wx, msgbuf, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
816
retval = wx_update_vf_xcast_mode(wx, msgbuf, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
82
set_bit(WX_FLAG_IRQ_VECTOR_SHARED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
821
wx_err(wx, "Unhandled Msg %8.8x\n", msgbuf[0]);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
833
wx_write_mbx_pf(wx, msgbuf, mbx_size, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
836
static void wx_rcv_ack_from_vf(struct wx *wx, u16 vf)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
841
if (!wx->vfinfo[vf].clear_to_send)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
842
wx_write_mbx_pf(wx, &msg, 1, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
845
void wx_msg_task(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
849
for (vf = 0; vf < wx->num_vfs; vf++) {
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
85
set_bit(WX_FLAG_VMDQ_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
851
if (!wx_check_for_rst_pf(wx, vf))
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
852
wx_vf_reset_event(wx, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
855
if (!wx_check_for_msg_pf(wx, vf))
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
856
wx_rcv_msg_from_vf(wx, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
859
if (!wx_check_for_ack_pf(wx, vf))
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
86
if (!wx->ring_feature[RING_F_VMDQ].limit)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
860
wx_rcv_ack_from_vf(wx, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
865
void wx_disable_vf_rx_tx(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
867
wr32(wx, WX_TDM_VFTE_CLR(0), U32_MAX);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
868
wr32(wx, WX_RDM_VFRE_CLR(0), U32_MAX);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
869
if (test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
87
wx->ring_feature[RING_F_VMDQ].limit = 1;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
870
wr32(wx, WX_TDM_VFTE_CLR(1), U32_MAX);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
871
wr32(wx, WX_RDM_VFRE_CLR(1), U32_MAX);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
876
void wx_ping_all_vfs_with_link_status(struct wx *wx, bool link_up)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
88
wx->ring_feature[RING_F_VMDQ].offset = num_vfs;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
881
if (!wx->num_vfs)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
885
msgbuf[1] = FIELD_PREP(GENMASK(31, 1), wx->speed) | link_up;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
886
if (wx->notify_down)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
888
for (i = 0; i < wx->num_vfs; i++) {
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
889
if (wx->vfinfo[i].clear_to_send)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
891
wx_write_mbx_pf(wx, msgbuf, 2, i);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
896
static void wx_set_vf_link_state(struct wx *wx, int vf, int state)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
898
wx->vfinfo[vf].link_state = state;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
90
wx->vfinfo = kzalloc_objs(struct vf_data_storage, num_vfs);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
901
if (netif_running(wx->netdev))
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
902
wx->vfinfo[vf].link_enable = true;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
904
wx->vfinfo[vf].link_enable = false;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
907
wx->vfinfo[vf].link_enable = true;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
91
if (!wx->vfinfo)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
910
wx->vfinfo[vf].link_enable = false;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
914
wx->vfinfo[vf].clear_to_send = false;
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
915
wx_ping_vf(wx, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
917
wx_set_vf_rx_tx(wx, vf);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
920
void wx_set_all_vfs(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
924
for (i = 0; i < wx->num_vfs; i++)
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
925
wx_set_vf_link_state(wx, i, wx->vfinfo[i].link_state);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
94
ret = wx_alloc_vf_macvlans(wx, num_vfs);
drivers/net/ethernet/wangxun/libwx/wx_sriov.c
99
wr32m(wx, WX_PSR_CTL, WX_PSR_CTL_SW_EN, WX_PSR_CTL_SW_EN);
drivers/net/ethernet/wangxun/libwx/wx_sriov.h
11
void wx_disable_sriov(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_sriov.h
13
void wx_msg_task(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_sriov.h
14
void wx_disable_vf_rx_tx(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_sriov.h
15
void wx_ping_all_vfs_with_link_status(struct wx *wx, bool link_up);
drivers/net/ethernet/wangxun/libwx/wx_sriov.h
16
void wx_set_all_vfs(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1108
struct wx *wx;
drivers/net/ethernet/wangxun/libwx/wx_type.h
1373
void (*configure_fdir)(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1376
int (*ptp_setup_sdp)(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1377
void (*set_num_queues)(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1417
rd32m(struct wx *wx, u32 reg, u32 mask)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1421
val = rd32(wx, reg);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1426
wr32m(struct wx *wx, u32 reg, u32 mask, u32 field)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1430
val = rd32(wx, reg);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1433
wr32(wx, reg, val);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1437
rd64(struct wx *wx, u32 reg)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1441
lsb = rd32(wx, reg);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1442
msb = rd32(wx, reg + 4);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1448
rd32ptp(struct wx *wx, u32 reg)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1450
if (wx->mac.type == wx_mac_em)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1451
return rd32(wx, reg);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1453
return rd32(wx, reg + 0xB500);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1457
wr32ptp(struct wx *wx, u32 reg, u32 value)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1459
if (wx->mac.type == wx_mac_em)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1460
return wr32(wx, reg, value);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1462
return wr32(wx, reg + 0xB500, value);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1470
#define wx_err(wx, fmt, arg...) \
drivers/net/ethernet/wangxun/libwx/wx_type.h
1471
dev_err(&(wx)->pdev->dev, fmt, ##arg)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1473
#define wx_dbg(wx, fmt, arg...) \
drivers/net/ethernet/wangxun/libwx/wx_type.h
1474
dev_dbg(&(wx)->pdev->dev, fmt, ##arg)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1476
static inline struct wx *phylink_to_wx(struct phylink_config *config)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1478
return container_of(config, struct wx, phylink_config);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1481
static inline int wx_set_state_reset(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1485
while (test_and_set_bit(WX_STATE_RESETTING, wx->state)) {
drivers/net/ethernet/wangxun/libwx/wx_type.h
554
#define VMDQ_P(p) ((p) + wx->ring_feature[RING_F_VMDQ].offset)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
100
if (wx->mac.type == wx_mac_aml || wx->mac.type == wx_mac_aml40)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
101
wr32(wx, WX_VX_PF_BME, WX_VF_BME_ENABLE);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
107
wx_virt_clr_reg(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
112
ret = wx_mbx_write_and_read_reply(wx, msgbuf, msgbuf,
drivers/net/ethernet/wangxun/libwx/wx_vf.c
12
static void wx_virt_clr_reg(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
122
ether_addr_copy(wx->mac.perm_addr, addr);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
124
wx->mac.mc_filter_type = msgbuf[3];
drivers/net/ethernet/wangxun/libwx/wx_vf.c
136
void wx_stop_adapter_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
142
wr32(wx, WX_VXIMS, WX_VF_IRQ_CLEAR_MASK);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
145
wr32(wx, WX_VXICR, U32_MAX);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
148
for (i = 0; i < wx->mac.max_tx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
149
wr32(wx, WX_VXTXDCTL(i), WX_VXTXDCTL_FLUSH);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
152
for (i = 0; i < wx->mac.max_rx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_vf.c
153
reg_val = rd32(wx, WX_VXRXDCTL(i));
drivers/net/ethernet/wangxun/libwx/wx_vf.c
155
wr32(wx, WX_VXRXDCTL(i), reg_val);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
158
wr32(wx, WX_VXMRQC, 0);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
161
rd32(wx, WX_VXSTATUS);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
174
int wx_set_rar_vf(struct wx *wx, u32 index, u8 *addr, u32 enable_addr)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
182
ret = wx_mbx_write_and_read_reply(wx, msgbuf, msgbuf,
drivers/net/ethernet/wangxun/libwx/wx_vf.c
190
wx_get_mac_addr_vf(wx, wx->mac.addr);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
207
int wx_update_mc_addr_list_vf(struct wx *wx, struct net_device *netdev)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
22
wr32m(wx, WX_VXRXDCTL(i),
drivers/net/ethernet/wangxun/libwx/wx_vf.c
226
vector_l[i++] = wx_mta_vector(wx, ha->addr);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
229
return wx_write_posted_mbx(wx, msgbuf, ARRAY_SIZE(msgbuf));
drivers/net/ethernet/wangxun/libwx/wx_vf.c
242
int wx_update_xcast_mode_vf(struct wx *wx, int xcast_mode)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
247
if (wx->vfinfo->vf_api < wx_mbox_api_13)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
250
ret = wx_mbx_write_and_read_reply(wx, msgbuf, msgbuf,
drivers/net/ethernet/wangxun/libwx/wx_vf.c
26
rd32(wx, WX_VXSTATUS);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
270
int wx_get_link_state_vf(struct wx *wx, u16 *link_state)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
275
ret = wx_mbx_write_and_read_reply(wx, msgbuf, msgbuf,
drivers/net/ethernet/wangxun/libwx/wx_vf.c
301
int wx_set_vfta_vf(struct wx *wx, u32 vlan, u32 vind, bool vlan_on,
drivers/net/ethernet/wangxun/libwx/wx_vf.c
313
ret = wx_mbx_write_and_read_reply(wx, msgbuf, msgbuf,
drivers/net/ethernet/wangxun/libwx/wx_vf.c
325
void wx_get_mac_addr_vf(struct wx *wx, u8 *mac_addr)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
327
ether_addr_copy(mac_addr, wx->mac.perm_addr);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
331
int wx_get_fw_version_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
336
ret = wx_mbx_write_and_read_reply(wx, msgbuf, msgbuf,
drivers/net/ethernet/wangxun/libwx/wx_vf.c
343
snprintf(wx->eeprom_id, 32, "0x%08x", msgbuf[1]);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
349
int wx_set_uc_addr_vf(struct wx *wx, u32 index, u8 *addr)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
35
void wx_init_hw_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
363
ret = wx_mbx_write_and_read_reply(wx, msgbuf, msgbuf,
drivers/net/ethernet/wangxun/libwx/wx_vf.c
37
wx_get_mac_addr_vf(wx, wx->mac.addr);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
384
int wx_rlpml_set_vf(struct wx *wx, u16 max_size)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
389
ret = wx_mbx_write_and_read_reply(wx, msgbuf, msgbuf,
drivers/net/ethernet/wangxun/libwx/wx_vf.c
408
int wx_negotiate_api_version(struct wx *wx, int api)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
41
static int wx_mbx_write_and_read_reply(struct wx *wx, u32 *req_buf,
drivers/net/ethernet/wangxun/libwx/wx_vf.c
413
ret = wx_mbx_write_and_read_reply(wx, msgbuf, msgbuf,
drivers/net/ethernet/wangxun/libwx/wx_vf.c
423
wx->vfinfo->vf_api = api;
drivers/net/ethernet/wangxun/libwx/wx_vf.c
429
int wx_get_queues_vf(struct wx *wx, u32 *num_tcs, u32 *default_tc)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
435
if (wx->vfinfo->vf_api < wx_mbox_api_13)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
439
ret = wx_mbx_write_and_read_reply(wx, msgbuf, msgbuf,
drivers/net/ethernet/wangxun/libwx/wx_vf.c
452
wx->mac.max_tx_queues = msgbuf[WX_VF_TX_QUEUES];
drivers/net/ethernet/wangxun/libwx/wx_vf.c
453
if (wx->mac.max_tx_queues == 0 ||
drivers/net/ethernet/wangxun/libwx/wx_vf.c
454
wx->mac.max_tx_queues > WX_VF_MAX_TX_QUEUES)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
455
wx->mac.max_tx_queues = WX_VF_MAX_TX_QUEUES;
drivers/net/ethernet/wangxun/libwx/wx_vf.c
457
wx->mac.max_rx_queues = msgbuf[WX_VF_RX_QUEUES];
drivers/net/ethernet/wangxun/libwx/wx_vf.c
458
if (wx->mac.max_rx_queues == 0 ||
drivers/net/ethernet/wangxun/libwx/wx_vf.c
459
wx->mac.max_rx_queues > WX_VF_MAX_RX_QUEUES)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
46
ret = wx_write_posted_mbx(wx, req_buf, size);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
460
wx->mac.max_rx_queues = WX_VF_MAX_RX_QUEUES;
drivers/net/ethernet/wangxun/libwx/wx_vf.c
464
if (*num_tcs > wx->mac.max_rx_queues)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
468
if (*default_tc >= wx->mac.max_tx_queues)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
475
static int wx_get_link_status_from_pf(struct wx *wx, u32 *msgbuf)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
480
wx->notify_down = true;
drivers/net/ethernet/wangxun/libwx/wx_vf.c
482
wx->notify_down = false;
drivers/net/ethernet/wangxun/libwx/wx_vf.c
484
if (wx->notify_down) {
drivers/net/ethernet/wangxun/libwx/wx_vf.c
485
wx->link = false;
drivers/net/ethernet/wangxun/libwx/wx_vf.c
486
wx->speed = SPEED_UNKNOWN;
drivers/net/ethernet/wangxun/libwx/wx_vf.c
490
wx->link = WX_PFLINK_STATUS(links_reg);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
491
wx->speed = WX_PFLINK_SPEED(links_reg);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
496
static int wx_pf_ping_vf(struct wx *wx, u32 *msgbuf)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
50
return wx_read_posted_mbx(wx, resp_buf, size);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
513
static void wx_check_physical_link(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
522
if (wx->mac.type == wx_mac_em)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
524
100, 500, false, wx, WX_VXSTATUS);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
527
500, false, wx, WX_VXSTATUS);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
529
wx->speed = SPEED_UNKNOWN;
drivers/net/ethernet/wangxun/libwx/wx_vf.c
530
wx->link = false;
drivers/net/ethernet/wangxun/libwx/wx_vf.c
534
wx->link = true;
drivers/net/ethernet/wangxun/libwx/wx_vf.c
538
wx->speed = wx_speed_lookup_vf[wx->mac.type].bit0_f;
drivers/net/ethernet/wangxun/libwx/wx_vf.c
540
wx->speed = wx_speed_lookup_vf[wx->mac.type].bit1_f;
drivers/net/ethernet/wangxun/libwx/wx_vf.c
542
wx->speed = wx_speed_lookup_vf[wx->mac.type].bit2_f;
drivers/net/ethernet/wangxun/libwx/wx_vf.c
544
wx->speed = wx_speed_lookup_vf[wx->mac.type].bit3_f;
drivers/net/ethernet/wangxun/libwx/wx_vf.c
546
wx->speed = SPEED_UNKNOWN;
drivers/net/ethernet/wangxun/libwx/wx_vf.c
549
int wx_check_mac_link_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
551
struct wx_mbx_info *mbx = &wx->mbx;
drivers/net/ethernet/wangxun/libwx/wx_vf.c
558
wx_check_for_rst_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
559
if (!wx_check_for_msg_vf(wx))
drivers/net/ethernet/wangxun/libwx/wx_vf.c
560
ret = wx_read_mbx_vf(wx, msgbuf, 2);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
566
ret = wx_get_link_status_from_pf(wx, msgbuf);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
569
ret = wx_pf_ping_vf(wx, msgbuf);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
578
wx_check_physical_link(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
62
int wx_reset_hw_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf.c
64
struct wx_mbx_info *mbx = &wx->mbx;
drivers/net/ethernet/wangxun/libwx/wx_vf.c
73
wx_stop_adapter_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
76
wx->vfinfo->vf_api = wx_mbox_api_null;
drivers/net/ethernet/wangxun/libwx/wx_vf.c
79
if (wx->b4_addr) {
drivers/net/ethernet/wangxun/libwx/wx_vf.c
81
b4_buf[i] = readl(wx->b4_addr + i * 4);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
84
wr32m(wx, WX_VXCTRL, WX_VXCTRL_RST, WX_VXCTRL_RST);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
85
rd32(wx, WX_VXSTATUS);
drivers/net/ethernet/wangxun/libwx/wx_vf.c
88
while (!wx_check_for_rst_vf(wx) && timeout) {
drivers/net/ethernet/wangxun/libwx/wx_vf.c
94
if (wx->b4_addr) {
drivers/net/ethernet/wangxun/libwx/wx_vf.c
96
writel(b4_buf[i], wx->b4_addr + i * 4);
drivers/net/ethernet/wangxun/libwx/wx_vf.h
112
void wx_init_hw_vf(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_vf.h
113
int wx_reset_hw_vf(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_vf.h
114
void wx_get_mac_addr_vf(struct wx *wx, u8 *mac_addr);
drivers/net/ethernet/wangxun/libwx/wx_vf.h
115
void wx_stop_adapter_vf(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_vf.h
116
int wx_get_fw_version_vf(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_vf.h
117
int wx_set_rar_vf(struct wx *wx, u32 index, u8 *addr, u32 enable_addr);
drivers/net/ethernet/wangxun/libwx/wx_vf.h
118
int wx_update_mc_addr_list_vf(struct wx *wx, struct net_device *netdev);
drivers/net/ethernet/wangxun/libwx/wx_vf.h
119
int wx_set_uc_addr_vf(struct wx *wx, u32 index, u8 *addr);
drivers/net/ethernet/wangxun/libwx/wx_vf.h
120
int wx_rlpml_set_vf(struct wx *wx, u16 max_size);
drivers/net/ethernet/wangxun/libwx/wx_vf.h
121
int wx_negotiate_api_version(struct wx *wx, int api);
drivers/net/ethernet/wangxun/libwx/wx_vf.h
122
int wx_get_queues_vf(struct wx *wx, u32 *num_tcs, u32 *default_tc);
drivers/net/ethernet/wangxun/libwx/wx_vf.h
123
int wx_update_xcast_mode_vf(struct wx *wx, int xcast_mode);
drivers/net/ethernet/wangxun/libwx/wx_vf.h
124
int wx_get_link_state_vf(struct wx *wx, u16 *link_state);
drivers/net/ethernet/wangxun/libwx/wx_vf.h
125
int wx_set_vfta_vf(struct wx *wx, u32 vlan, u32 vind, bool vlan_on,
drivers/net/ethernet/wangxun/libwx/wx_vf.h
127
int wx_check_mac_link_vf(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
101
err = request_threaded_irq(wx->msix_entry->vector, wx_msix_misc_vf,
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
102
NULL, IRQF_ONESHOT, netdev->name, wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
104
wx_err(wx, "request_irq for msix_other failed: %d\n", err);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
113
free_irq(wx->msix_q_entries[vector].vector,
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
114
wx->q_vector[vector]);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
116
wx_reset_interrupt_capability(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
121
void wx_negotiate_api_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
128
spin_lock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
130
err = wx_negotiate_api_version(wx, api[idx]);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
135
spin_unlock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
139
void wx_reset_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
141
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
144
ret = wx_reset_hw_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
146
wx_init_hw_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
147
wx_negotiate_api_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
148
if (is_valid_ether_addr(wx->mac.addr)) {
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
149
eth_hw_addr_set(netdev, wx->mac.addr);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
150
ether_addr_copy(netdev->perm_addr, wx->mac.addr);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
157
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
17
struct wx *wx = pci_get_drvdata(pdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
174
spin_lock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
175
wx_update_xcast_mode_vf(wx, xcast_mode);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
176
wx_update_mc_addr_list_vf(wx, netdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
178
spin_unlock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
188
static void wx_configure_rx_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
19
netif_device_detach(wx->netdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
190
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
193
wx_setup_psrtype_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
194
wx_setup_vfmrqc_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
196
spin_lock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
197
ret = wx_rlpml_set_vf(wx,
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
199
spin_unlock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
20
wx_clear_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
201
wx_dbg(wx, "Failed to set MTU at %d\n", netdev->mtu);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
206
for (i = 0; i < wx->num_rx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
207
struct wx_ring *rx_ring = wx->rx_ring[i];
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
209
wx_set_rx_buffer_len_vf(wx, rx_ring);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
211
wx_configure_rx_ring_vf(wx, rx_ring);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
215
void wx_configure_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
217
wx_set_rx_mode_vf(wx->netdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
218
wx_configure_tx_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
219
wx_configure_rx_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
225
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
233
spin_lock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
234
ret = wx_set_rar_vf(wx, 1, (u8 *)addr->sa_data, 1);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
235
spin_unlock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
240
memcpy(wx->mac.addr, addr->sa_data, netdev->addr_len);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
241
memcpy(wx->mac.perm_addr, addr->sa_data, netdev->addr_len);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
248
void wxvf_watchdog_update_link(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
252
if (!test_bit(WX_FLAG_NEED_UPDATE_LINK, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
255
spin_lock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
256
err = wx_check_mac_link_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
257
spin_unlock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
259
wx->link = false;
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
260
set_bit(WX_FLAG_NEED_DO_RESET, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
262
clear_bit(WX_FLAG_NEED_UPDATE_LINK, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
266
static void wxvf_irq_enable(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
268
wr32(wx, WX_VXIMC, wx->eims_enable_mask);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
271
static void wxvf_up_complete(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
274
netif_carrier_off(wx->netdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
275
mod_timer(&wx->service_timer, jiffies + HZ);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
276
set_bit(WX_FLAG_NEED_UPDATE_LINK, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
278
wx_configure_msix_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
280
wx_napi_enable_all(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
283
wr32(wx, WX_VXICR, U32_MAX);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
284
wxvf_irq_enable(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
286
netif_tx_start_all_queues(wx->netdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
291
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
294
err = wx_setup_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
297
wx_configure_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
299
err = wx_request_msix_irqs_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
304
err = netif_set_real_num_tx_queues(netdev, wx->num_tx_queues);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
308
err = netif_set_real_num_rx_queues(netdev, wx->num_rx_queues);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
312
wxvf_up_complete(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
316
wx_free_irq(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
318
wx_free_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
320
wx_reset_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
325
static void wxvf_down(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
327
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
329
timer_delete_sync(&wx->service_timer);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
333
wx_napi_disable_all(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
334
wx_reset_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
336
wx_clean_all_tx_rings(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
337
wx_clean_all_rx_rings(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
340
static void wxvf_reinit_locked(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
342
while (test_and_set_bit(WX_STATE_RESETTING, wx->state))
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
344
wxvf_down(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
345
wx_free_irq(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
346
wx_configure_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
347
wx_request_msix_irqs_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
348
wxvf_up_complete(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
349
clear_bit(WX_STATE_RESETTING, wx->state);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
352
static void wxvf_reset_subtask(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
354
if (!test_bit(WX_FLAG_NEED_DO_RESET, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
356
clear_bit(WX_FLAG_NEED_DO_RESET, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
359
if (test_bit(WX_STATE_RESETTING, wx->state) ||
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
36
struct wx *wx = pci_get_drvdata(pdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
360
!(netif_running(wx->netdev))) {
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
364
wxvf_reinit_locked(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
370
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
372
wxvf_down(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
373
wx_free_irq(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
374
wx_free_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
380
static void wxvf_link_config_subtask(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
382
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
384
wxvf_watchdog_update_link(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
385
if (wx->link) {
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
39
wx_init_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
390
phy_speed_to_str(wx->speed));
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
40
netif_device_attach(wx->netdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
401
struct wx *wx = container_of(work, struct wx, service_task);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
403
wxvf_link_config_subtask(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
404
wxvf_reset_subtask(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
405
wx_service_event_complete(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
408
void wxvf_init_service(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
410
timer_setup(&wx->service_timer, wx_service_timer, 0);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
411
INIT_WORK(&wx->service_task, wxvf_service_task);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
412
clear_bit(WX_STATE_SERVICE_SCHED, wx->state);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
48
struct wx *wx = pci_get_drvdata(pdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
51
cancel_work_sync(&wx->service_task);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
52
netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
54
kfree(wx->vfinfo);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
55
kfree(wx->rss_key);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
56
kfree(wx->mac_table);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
57
wx_clear_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
66
struct wx *wx = data;
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
68
set_bit(WX_FLAG_NEED_UPDATE_LINK, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
70
if (netif_running(wx->netdev))
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
71
wr32(wx, WX_VXIMC, wx->eims_other);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
76
int wx_request_msix_irqs_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
78
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
81
for (vector = 0; vector < wx->num_q_vectors; vector++) {
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
82
struct wx_q_vector *q_vector = wx->q_vector[vector];
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
83
struct msix_entry *entry = &wx->msix_q_entries[vector];
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
95
wx_err(wx, "request_irq failed for MSIX interrupt %s Error: %d\n",
drivers/net/ethernet/wangxun/libwx/wx_vf_common.h
11
int wx_request_msix_irqs_vf(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.h
12
void wx_negotiate_api_vf(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.h
13
void wx_reset_vf(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.h
15
void wx_configure_vf(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.h
17
void wxvf_watchdog_update_link(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.h
20
void wxvf_init_service(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
107
static void wx_configure_tx_ring_vf(struct wx *wx, struct wx_ring *ring)
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
115
wr32(wx, WX_VXTXDCTL(reg_idx), WX_VXTXDCTL_FLUSH);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
116
wr32(wx, WX_VXTDBAL(reg_idx), tdba & DMA_BIT_MASK(32));
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
117
wr32(wx, WX_VXTDBAH(reg_idx), tdba >> 32);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
120
pcie_capability_clear_and_set_word(wx->pdev, PCI_EXP_DEVCTL,
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
124
wr32(wx, WX_VXTDH(reg_idx), 0);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
125
wr32(wx, WX_VXTDT(reg_idx), 0);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
126
ring->tail = wx->hw_addr + WX_VXTDT(reg_idx);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
136
wr32(wx, WX_VXTXD_HEAD_ADDRL(reg_idx),
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
138
wr32(wx, WX_VXTXD_HEAD_ADDRH(reg_idx),
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
148
wr32(wx, WX_VXTXDCTL(reg_idx), txdctl);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
15
struct wx *wx = q_vector->wx;
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
151
1000, 10000, true, wx, WX_VXTXDCTL(reg_idx));
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
153
wx_err(wx, "Could not enable Tx Queue %d\n", reg_idx);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
162
void wx_configure_tx_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
167
for (i = 0; i < wx->num_tx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
168
wx_configure_tx_ring_vf(wx, wx->tx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
171
static void wx_configure_srrctl_vf(struct wx *wx, struct wx_ring *ring,
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
176
srrctl = rd32m(wx, WX_VXRXDCTL(index),
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
182
wr32(wx, WX_VXRXDCTL(index), srrctl);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
185
void wx_setup_psrtype_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
194
wr32m(wx, WX_VXMRQC, WX_VXMRQC_PSR_MASK, WX_VXMRQC_PSR(psrtype));
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
197
void wx_setup_vfmrqc_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
199
u16 rss_i = wx->num_rx_queues;
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
204
netdev_rss_key_fill(wx->rss_key, WX_RSS_KEY_SIZE);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
206
wr32(wx, WX_VXRSSRK(i), wx->rss_key[i]);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
212
wx->rss_indir_tbl[i] = j;
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
216
wr32(wx, WX_VXRETA(i >> 2), vfreta);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
229
if (wx->num_rx_queues > 3)
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
231
else if (wx->num_rx_queues > 1)
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
233
wr32m(wx, WX_VXMRQC, WX_VXMRQC_RSS_MASK, WX_VXMRQC_RSS(vfmrqc));
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
236
void wx_configure_rx_ring_vf(struct wx *wx, struct wx_ring *ring)
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
244
rxdctl = rd32(wx, WX_VXRXDCTL(reg_idx));
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
245
wx_disable_rx_queue(wx, ring);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
247
wr32(wx, WX_VXRDBAL(reg_idx), rdba & DMA_BIT_MASK(32));
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
248
wr32(wx, WX_VXRDBAH(reg_idx), rdba >> 32);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
251
pcie_capability_clear_and_set_word(wx->pdev, PCI_EXP_DEVCTL,
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
255
wr32(wx, WX_VXRDH(reg_idx), 0);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
256
wr32(wx, WX_VXRDT(reg_idx), 0);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
257
ring->tail = wx->hw_addr + WX_VXRDT(reg_idx);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
26
wr32(wx, WX_VXITR(v_idx), itr_reg);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
272
wx_configure_srrctl_vf(wx, ring, reg_idx);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
284
if (test_bit(WX_FLAG_RX_MERGE_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
287
wr32(wx, WX_VXRXDCTL(reg_idx), rxdctl);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
29
static void wx_set_ivar_vf(struct wx *wx, s8 direction, u8 queue,
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
290
wx_enable_rx_queue(wx, ring);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
37
ivar = rd32(wx, WX_VXIVAR_MISC);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
40
wr32(wx, WX_VXIVAR_MISC, ivar);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
45
ivar = rd32(wx, WX_VXIVAR(queue >> 1));
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
48
wr32(wx, WX_VXIVAR(queue >> 1), ivar);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
52
void wx_configure_msix_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
56
wx->eims_enable_mask = 0;
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
57
for (v_idx = 0; v_idx < wx->num_q_vectors; v_idx++) {
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
58
struct wx_q_vector *q_vector = wx->q_vector[v_idx];
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
62
wx_set_ivar_vf(wx, 0, ring->reg_idx, v_idx);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
65
wx_set_ivar_vf(wx, 1, ring->reg_idx, v_idx);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
68
wx->eims_enable_mask |= BIT(v_idx);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
72
wx_set_ivar_vf(wx, -1, 1, v_idx);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
75
wx->eims_other = BIT(v_idx);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
76
wx->eims_enable_mask |= wx->eims_other;
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
81
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
88
wx_set_uc_addr_vf(wx, ++count, ha->addr);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c
94
wx_set_uc_addr_vf(wx, 0, NULL);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.h
10
void wx_setup_psrtype_vf(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.h
11
void wx_setup_vfmrqc_vf(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.h
12
void wx_configure_tx_vf(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.h
13
void wx_configure_rx_ring_vf(struct wx *wx, struct wx_ring *ring);
drivers/net/ethernet/wangxun/libwx/wx_vf_lib.h
8
void wx_configure_msix_vf(struct wx *wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
18
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
20
if (!wx->wol_hw_supported)
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
24
if (wx->wol & WX_PSR_WKUP_CTL_MAG)
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
31
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
32
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
34
if (!wx->wol_hw_supported)
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
37
wx->wol = 0;
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
39
wx->wol = WX_PSR_WKUP_CTL_MAG;
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
40
netdev->ethtool->wol_enabled = !!(wx->wol);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
41
wr32(wx, WX_PSR_WKUP_CTL, wx->wol);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
52
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
63
if (new_tx_count == wx->tx_ring_count &&
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
64
new_rx_count == wx->rx_ring_count)
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
67
err = wx_set_state_reset(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
71
if (!netif_running(wx->netdev)) {
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
72
for (i = 0; i < wx->num_tx_queues; i++)
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
73
wx->tx_ring[i]->count = new_tx_count;
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
74
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
75
wx->rx_ring[i]->count = new_rx_count;
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
76
wx->tx_ring_count = new_tx_count;
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
77
wx->rx_ring_count = new_rx_count;
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
83
i = max_t(int, wx->num_tx_queues, wx->num_rx_queues);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
90
ngbe_down(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
92
wx_set_ring(wx, new_tx_count, new_rx_count, temp_ring);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
95
wx_configure(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
96
ngbe_up(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
99
clear_bit(WX_STATE_RESETTING, wx->state);
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
13
int ngbe_eeprom_chksum_hostif(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
28
status = wx_host_interface_command(wx, (u32 *)&buffer, sizeof(buffer),
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
33
tmp = rd32a(wx, WX_MNG_MBOX, 1);
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
39
static int ngbe_reset_misc(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
41
wx_reset_misc(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
42
if (wx->gpio_ctrl) {
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
44
wr32(wx, NGBE_GPIO_DDR, 0x1);
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
45
ngbe_sfp_modules_txrx_powerctl(wx, false);
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
50
void ngbe_sfp_modules_txrx_powerctl(struct wx *wx, bool swi)
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
53
wr32(wx, NGBE_GPIO_DR, swi ? 0 : NGBE_GPIO_DR_0);
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
64
int ngbe_reset_hw(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
70
ret = wx_stop_adapter(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
74
if (wx->mac_type != em_mac_type_mdi) {
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
75
val = WX_MIS_RST_LAN_RST(wx->bus.func);
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
76
wr32(wx, WX_MIS_RST, val | rd32(wx, WX_MIS_RST));
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
79
!(val & (BIT(9) << wx->bus.func)), 1000,
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
80
100000, false, wx, 0x10028);
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
82
wx_err(wx, "Lan reset exceed s maximum times.\n");
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
86
ngbe_reset_misc(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
88
wx_clear_hw_cntrs(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
91
wx_get_mac_addr(wx, wx->mac.perm_addr);
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
94
wx->mac.num_rar_entries = NGBE_RAR_ENTRIES;
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
95
wx_init_rx_addrs(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c
96
pci_set_master(wx->pdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.h
10
int ngbe_eeprom_chksum_hostif(struct wx *wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.h
11
void ngbe_sfp_modules_txrx_powerctl(struct wx *wx, bool swi);
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.h
12
int ngbe_reset_hw(struct wx *wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
100
wx->mac.rx_pb_size = NGBE_RX_PB_SIZE;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
101
wx->mac.tx_pb_size = NGBE_TDB_PB_SZ;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
104
err = wx_sw_init(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
109
ngbe_init_type_code(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
112
wx->max_q_vectors = NGBE_MAX_MSIX_VECTORS;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
113
err = wx_get_pcie_msix_counts(wx, &msix_count, NGBE_MAX_MSIX_VECTORS);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
116
wx->mac.max_msix_vectors = msix_count;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
118
wx->ring_feature[RING_F_RSS].limit = min_t(int, NGBE_MAX_RSS_INDICES,
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
120
wx->rss_enabled = true;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
122
wx->adaptive_itr = false;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
123
wx->rx_itr_setting = WX_7K_ITR;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
124
wx->tx_itr_setting = WX_7K_ITR;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
127
wx->tx_ring_count = NGBE_DEFAULT_TXD;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
128
wx->rx_ring_count = NGBE_DEFAULT_RXD;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
131
wx->tx_work_limit = NGBE_DEFAULT_TX_WORK;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
132
wx->rx_work_limit = NGBE_DEFAULT_RX_WORK;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
134
wx->mbx.size = WX_VXMAILBOX_SIZE;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
135
wx->setup_tc = ngbe_setup_tc;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
136
set_bit(0, &wx->fwd_bitmask);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
146
static void ngbe_irq_enable(struct wx *wx, bool queues)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
153
wr32(wx, WX_GPIO_DDR, WX_GPIO_DDR_0);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
154
wr32(wx, WX_GPIO_INTEN, WX_GPIO_INTEN_0 | WX_GPIO_INTEN_1);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
155
wr32(wx, WX_GPIO_INTTYPE_LEVEL, 0x0);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
156
wr32(wx, WX_GPIO_POLARITY, wx->gpio_ctrl ? 0 : 0x3);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
158
wr32(wx, WX_PX_MISC_IEN, mask);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
162
wx_intr_enable(wx, NGBE_INTR_ALL);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
164
wx_intr_enable(wx, NGBE_INTR_MISC(wx));
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
175
struct wx *wx = data;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
179
q_vector = wx->q_vector[0];
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
180
pdev = wx->pdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
182
eicr = wx_misc_isb(wx, WX_ISB_VEC0);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
187
if (netif_running(wx->netdev))
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
188
ngbe_irq_enable(wx, true);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
191
wx->isb_mem[WX_ISB_VEC0] = 0;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
193
wr32(wx, WX_PX_INTA, 1);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
195
eicr_misc = wx_misc_isb(wx, WX_ISB_MISC);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
197
wx_ptp_check_pps_event(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
199
wx->isb_mem[WX_ISB_MISC] = 0;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
203
if (netif_running(wx->netdev))
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
204
ngbe_irq_enable(wx, false);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
209
static irqreturn_t __ngbe_msix_misc(struct wx *wx, u32 eicr)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
212
wx_msg_task(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
215
wx_ptp_check_pps_event(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
218
if (netif_running(wx->netdev))
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
219
ngbe_irq_enable(wx, false);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
226
struct wx *wx = data;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
229
eicr = wx_misc_isb(wx, WX_ISB_MISC);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
231
return __ngbe_msix_misc(wx, eicr);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
237
struct wx *wx = data;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
240
eicr = wx_misc_isb(wx, WX_ISB_MISC);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
243
q_vector = wx->q_vector[0];
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
245
if (netif_running(wx->netdev))
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
246
ngbe_irq_enable(wx, true);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
250
return __ngbe_msix_misc(wx, eicr);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
260
static int ngbe_request_msix_irqs(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
262
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
265
for (vector = 0; vector < wx->num_q_vectors; vector++) {
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
266
struct wx_q_vector *q_vector = wx->q_vector[vector];
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
267
struct msix_entry *entry = &wx->msix_q_entries[vector];
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
279
wx_err(wx, "request_irq failed for MSIX interrupt %s Error: %d\n",
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
289
if (test_bit(WX_FLAG_IRQ_VECTOR_SHARED, wx->flags))
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
290
err = request_irq(wx->msix_entry->vector,
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
291
ngbe_misc_and_queue, 0, netdev->name, wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
293
err = request_irq(wx->msix_entry->vector,
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
294
ngbe_msix_misc, 0, netdev->name, wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
297
wx_err(wx, "request_irq for msix_other failed: %d\n", err);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
306
free_irq(wx->msix_q_entries[vector].vector,
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
307
wx->q_vector[vector]);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
309
wx_reset_interrupt_capability(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
320
static int ngbe_request_irq(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
322
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
323
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
327
err = ngbe_request_msix_irqs(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
330
netdev->name, wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
333
netdev->name, wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
336
wx_err(wx, "request_irq failed, Error %d\n", err);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
341
static void ngbe_disable_device(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
343
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
346
if (wx->num_vfs) {
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
348
wr32(wx, WX_PX_ITRSEL, 0);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
351
for (i = 0; i < wx->num_vfs; i++)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
352
wx->vfinfo[i].clear_to_send = 0;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
353
wx->notify_down = true;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
355
wx_ping_all_vfs_with_link_status(wx, false);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
356
wx->notify_down = false;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
359
wx_disable_vf_rx_tx(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
363
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
365
wx_disable_rx_queue(wx, wx->rx_ring[i]);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
367
wx_disable_rx(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
368
wx_napi_disable_all(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
371
if (wx->gpio_ctrl)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
372
ngbe_sfp_modules_txrx_powerctl(wx, false);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
373
wx_irq_disable(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
375
for (i = 0; i < wx->num_tx_queues; i++) {
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
376
u8 reg_idx = wx->tx_ring[i]->reg_idx;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
378
wr32(wx, WX_PX_TR_CFG(reg_idx), WX_PX_TR_CFG_SWFLSH);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
381
wx_update_stats(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
384
static void ngbe_reset(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
386
wx_flush_sw_mac_table(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
387
wx_mac_set_default_filter(wx, wx->mac.addr);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
388
if (test_bit(WX_STATE_PTP_RUNNING, wx->state))
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
389
wx_ptp_reset(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
392
void ngbe_down(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
394
phylink_stop(wx->phylink);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
395
ngbe_disable_device(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
396
ngbe_reset(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
397
wx_clean_all_tx_rings(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
398
wx_clean_all_rx_rings(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
401
void ngbe_up(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
403
wx_configure_vectors(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
407
wx_napi_enable_all(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
409
netif_tx_start_all_queues(wx->netdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
412
rd32(wx, WX_PX_IC(0));
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
413
rd32(wx, WX_PX_MISC_IC);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
414
ngbe_irq_enable(wx, true);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
415
if (wx->gpio_ctrl)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
416
ngbe_sfp_modules_txrx_powerctl(wx, true);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
418
phylink_start(wx->phylink);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
420
wr32m(wx, WX_CFG_PORT_CTL,
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
422
if (wx->num_vfs)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
423
wx_ping_all_vfs_with_link_status(wx, false);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
437
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
440
wx_control_hw(wx, true);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
442
err = wx_setup_resources(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
446
wx_configure(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
448
err = ngbe_request_irq(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
452
err = phylink_connect_phy(wx->phylink, wx->phydev);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
456
err = netif_set_real_num_tx_queues(netdev, wx->num_tx_queues);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
460
err = netif_set_real_num_rx_queues(netdev, wx->num_rx_queues);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
464
wx_ptp_init(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
466
ngbe_up(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
470
phylink_disconnect_phy(wx->phylink);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
472
wx_free_irq(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
474
wx_free_isb_resources(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
475
wx_free_resources(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
492
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
494
wx_ptp_stop(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
495
ngbe_down(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
496
wx_free_irq(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
497
wx_free_isb_resources(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
498
wx_free_resources(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
499
phylink_disconnect_phy(wx->phylink);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
500
wx_control_hw(wx, false);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
507
struct wx *wx = pci_get_drvdata(pdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
509
u32 wufc = wx->wol;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
511
netdev = wx->netdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
517
wx_clear_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
522
wx_configure_rx(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
523
wr32(wx, NGBE_PSR_WKUP_CTL, wufc);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
525
wr32(wx, NGBE_PSR_WKUP_CTL, 0);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
529
wx_control_hw(wx, false);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
53
static void ngbe_init_type_code(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
536
struct wx *wx = pci_get_drvdata(pdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
539
wake = !!wx->wol;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
558
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
567
wx_clear_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
574
wx_init_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
58
wx->mac.type = wx_mac_em;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
59
type_mask = (u16)(wx->subsystem_device_id & NGBE_OEM_MASK);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
60
ncsi_mask = wx->subsystem_device_id & NGBE_NCSI_MASK;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
61
wol_mask = wx->subsystem_device_id & NGBE_WOL_MASK;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
616
struct wx *wx = NULL;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
63
val = rd32(wx, WX_CFG_PORT_ST);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
64
wx->mac_type = (val & BIT(7)) >> 7 ?
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
646
sizeof(struct wx),
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
656
wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
657
wx->netdev = netdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
658
wx->pdev = pdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
659
wx->msg_enable = BIT(3) - 1;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
661
wx->hw_addr = devm_ioremap(&pdev->dev,
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
664
if (!wx->hw_addr) {
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
673
wx->driver_name = ngbe_driver_name;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
68
wx->wol_hw_supported = (wol_mask == NGBE_WOL_SUP) ? 1 : 0;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
69
wx->ncsi_enabled = (ncsi_mask == NGBE_NCSI_MASK ||
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
698
wx->bd_number = func_nums;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
700
err = ngbe_sw_init(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
705
err = wx_check_flash_load(wx, NGBE_SPI_ILDR_STATUS_PERST);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
708
err = wx_check_flash_load(wx, NGBE_SPI_ILDR_STATUS_PWRRST);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
712
err = wx_mng_present(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
718
err = ngbe_reset_hw(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
724
if (wx->bus.func == 0) {
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
725
wr32(wx, NGBE_CALSUM_CAP_STATUS, 0x0);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
726
wr32(wx, NGBE_EEPROM_VERSION_STORE_REG, 0x0);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
728
e2rom_cksum_cap = rd32(wx, NGBE_CALSUM_CAP_STATUS);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
729
saved_ver = rd32(wx, NGBE_EEPROM_VERSION_STORE_REG);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
732
wx_init_eeprom_params(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
733
if (wx->bus.func == 0 || e2rom_cksum_cap == 0) {
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
735
err = ngbe_eeprom_chksum_hostif(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
743
wx->wol = 0;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
744
if (wx->wol_hw_supported)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
745
wx->wol = NGBE_PSR_WKUP_CTL_MAG;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
747
netdev->ethtool->wol_enabled = !!(wx->wol);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
748
wr32(wx, NGBE_PSR_WKUP_CTL, wx->wol);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
749
device_set_wakeup_enable(&pdev->dev, wx->wol);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
757
wx_read_ee_hostif(wx,
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
758
wx->eeprom.sw_region_offset + NGBE_EEPROM_VERSION_H,
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
761
wx_read_ee_hostif(wx,
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
762
wx->eeprom.sw_region_offset + NGBE_EEPROM_VERSION_L,
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
765
wr32(wx, NGBE_EEPROM_VERSION_STORE_REG, etrack_id);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
767
snprintf(wx->eeprom_id, sizeof(wx->eeprom_id),
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
77
wx->gpio_ctrl = 1;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
770
eth_hw_addr_set(netdev, wx->mac.perm_addr);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
771
wx_mac_set_default_filter(wx, wx->mac.perm_addr);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
773
err = wx_init_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
778
err = ngbe_mdio_init(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
786
pci_set_drvdata(pdev, wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
791
phylink_destroy(wx->phylink);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
792
wx_control_hw(wx, false);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
794
wx_clear_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
796
kfree(wx->rss_key);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
797
kfree(wx->mac_table);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
80
wx->gpio_ctrl = 0;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
817
struct wx *wx = pci_get_drvdata(pdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
820
netdev = wx->netdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
821
wx_disable_sriov(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
823
phylink_destroy(wx->phylink);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
827
kfree(wx->rss_key);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
828
kfree(wx->mac_table);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
829
wx_clear_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
847
struct wx *wx;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
850
wx = pci_get_drvdata(pdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
851
netdev = wx->netdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
855
wx_err(wx, "Cannot enable PCI device from suspend\n");
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
861
ngbe_reset_hw(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
863
err = wx_init_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
89
static int ngbe_sw_init(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
91
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
95
wx->mac.num_rar_entries = NGBE_RAR_ENTRIES;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
96
wx->mac.max_rx_queues = NGBE_MAX_RX_QUEUES;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
97
wx->mac.max_tx_queues = NGBE_MAX_TX_QUEUES;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
98
wx->mac.mcft_size = NGBE_MC_TBL_SIZE;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
99
wx->mac.vft_size = NGBE_SP_VFT_TBL_SIZE;
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
102
wr32m(wx, NGBE_CFG_LAN_SPEED, 0x3, lan_speed);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
104
reg = rd32(wx, WX_MAC_TX_CFG);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
107
wr32(wx, WX_MAC_TX_CFG, reg);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
110
reg = rd32(wx, WX_MAC_RX_CFG);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
111
wr32(wx, WX_MAC_RX_CFG, reg);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
112
wr32(wx, WX_MAC_PKT_FLT, WX_MAC_PKT_FLT_PR);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
113
reg = rd32(wx, WX_MAC_WDG_TIMEOUT);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
114
wr32(wx, WX_MAC_WDG_TIMEOUT, reg);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
116
wx->speed = speed;
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
117
wx->last_rx_ptp_check = jiffies;
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
118
if (test_bit(WX_STATE_PTP_RUNNING, wx->state))
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
119
wx_ptp_reset_cyclecounter(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
121
wx_ping_all_vfs_with_link_status(wx, true);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
130
static int ngbe_phylink_init(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
136
config = &wx->phylink_config;
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
137
config->dev = &wx->netdev->dev;
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
154
wx->phylink = phylink;
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
159
int ngbe_mdio_init(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
161
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
174
mii_bus->priv = wx;
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
176
if (wx->mac_type == em_mac_type_rgmii) {
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
18
struct wx *wx = bus->priv;
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
186
wx->phydev = phy_find_first(mii_bus);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
187
if (!wx->phydev)
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
190
phy_attached_info(wx->phydev);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
192
wx->link = 0;
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
193
wx->speed = 0;
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
194
wx->duplex = 0;
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
196
ret = ngbe_phylink_init(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
198
wx_err(wx, "failed to init phylink: %d\n", ret);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
22
return (u16)rd32(wx, NGBE_PHY_CONFIG(regnum));
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
27
struct wx *wx = bus->priv;
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
30
wr32(wx, NGBE_PHY_CONFIG(regnum), value);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
36
struct wx *wx = bus->priv;
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
39
if (wx->mac_type == em_mac_type_mdi)
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
50
struct wx *wx = bus->priv;
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
53
if (wx->mac_type == em_mac_type_mdi)
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
69
struct wx *wx = phylink_to_wx(config);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
71
wx->speed = SPEED_UNKNOWN;
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
72
if (test_bit(WX_STATE_PTP_RUNNING, wx->state))
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
73
wx_ptp_reset_cyclecounter(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
75
wx_ping_all_vfs_with_link_status(wx, false);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
84
struct wx *wx = phylink_to_wx(config);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.c
87
wx_fc_enable(wx, tx_pause, rx_pause);
drivers/net/ethernet/wangxun/ngbe/ngbe_mdio.h
10
int ngbe_mdio_init(struct wx *wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_type.h
142
void ngbe_down(struct wx *wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_type.h
143
void ngbe_up(struct wx *wx);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
101
wx->mac.max_tx_queues = NGBEVF_MAX_TX_QUEUES;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
102
wx->mac.max_rx_queues = NGBEVF_MAX_RX_QUEUES;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
104
wx->adaptive_itr = true;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
105
wx->rx_itr_setting = 1;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
106
wx->tx_itr_setting = 1;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
108
wx->tx_ring_count = NGBEVF_DEFAULT_TXD;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
109
wx->rx_ring_count = NGBEVF_DEFAULT_RXD;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
111
wx->tx_work_limit = NGBEVF_DEFAULT_TX_WORK;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
112
wx->rx_work_limit = NGBEVF_DEFAULT_RX_WORK;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
113
wx->set_num_queues = ngbevf_set_num_queues;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
117
kfree(wx->vfinfo);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
119
kfree(wx->rss_key);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
120
kfree(wx->mac_table);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
140
struct wx *wx = NULL;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
166
sizeof(struct wx),
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
176
wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
177
wx->netdev = netdev;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
178
wx->pdev = pdev;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
180
wx->msg_enable = netif_msg_init(-1, NETIF_MSG_DRV |
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
182
wx->hw_addr = devm_ioremap(&pdev->dev,
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
185
if (!wx->hw_addr) {
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
190
wx->driver_name = KBUILD_MODNAME;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
195
err = ngbevf_sw_init(wx);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
201
eth_hw_addr_set(netdev, wx->mac.perm_addr);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
202
ether_addr_copy(netdev->perm_addr, wx->mac.addr);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
204
wxvf_init_service(wx);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
205
err = wx_init_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
209
wx_get_fw_version_vf(wx);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
214
pci_set_drvdata(pdev, wx);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
220
wx_clear_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
222
timer_delete_sync(&wx->service_timer);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
223
cancel_work_sync(&wx->service_task);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
224
kfree(wx->vfinfo);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
225
kfree(wx->rss_key);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
226
kfree(wx->mac_table);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
53
static void ngbevf_set_num_queues(struct wx *wx)
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
56
wx->num_rx_queues = 1;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
57
wx->num_tx_queues = 1;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
60
static int ngbevf_sw_init(struct wx *wx)
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
62
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
63
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
67
err = wx_sw_init(wx);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
72
err = wx_init_mbx_params_vf(wx);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
77
wx->mac.type = wx_mac_em;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
78
wx->mac.max_msix_vectors = NGBEVF_MAX_MSIX_VECTORS;
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
80
spin_lock_init(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
82
err = wx_reset_hw_vf(wx);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
84
wx_err(wx, "PF still in reset state. Is the PF interface up?\n");
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
87
wx_init_hw_vf(wx);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
88
wx_negotiate_api_vf(wx);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
89
if (is_zero_ether_addr(wx->mac.addr))
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
92
eth_hw_addr_set(netdev, wx->mac.addr);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
97
ether_addr_copy(wx->mac.addr, netdev->dev_addr);
drivers/net/ethernet/wangxun/ngbevf/ngbevf_main.c
98
ether_addr_copy(wx->mac.perm_addr, netdev->dev_addr);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
109
static int txgbe_identify_module_hostif(struct wx *wx,
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
117
return wx_host_interface_command(wx, (u32 *)buffer,
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
122
static int txgbe_set_phy_link_hostif(struct wx *wx, int speed, int autoneg, int duplex)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
150
return wx_host_interface_command(wx, (u32 *)&buffer, sizeof(buffer),
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
154
static void txgbe_get_link_capabilities(struct wx *wx, int *speed,
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
157
struct txgbe *txgbe = wx->priv;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
172
static void txgbe_get_mac_link(struct wx *wx, int *speed)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
176
status = rd32(wx, TXGBE_CFG_PORT_ST);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
18
void txgbe_gpio_init_aml(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
189
int txgbe_set_phy_link(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
193
txgbe_get_link_capabilities(wx, &speed, &autoneg, &duplex);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
195
err = txgbe_set_phy_link_hostif(wx, speed, autoneg, duplex);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
197
wx_err(wx, "Failed to setup link\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
204
static int txgbe_sfp_to_linkmodes(struct wx *wx, struct txgbe_sff_id *id)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
208
struct txgbe *txgbe = wx->priv;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
22
if (wx->mac.type == wx_mac_aml40)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
250
wx_err(wx, "unsupported SFP module\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
261
wx->phylink_config.supported_interfaces,
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
265
set_bit(WX_FLAG_NEED_LINK_CONFIG, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
27
wr32(wx, WX_GPIO_INTTYPE_LEVEL, mod_rst);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
271
static int txgbe_qsfp_to_linkmodes(struct wx *wx, struct txgbe_sff_id *id)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
275
struct txgbe *txgbe = wx->priv;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
28
wr32(wx, WX_GPIO_INTEN, mod_rst);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
30
status = rd32(wx, WX_GPIO_INTSTATUS);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
315
wx_err(wx, "unsupported QSFP module\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
326
wx->phylink_config.supported_interfaces,
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
33
wr32(wx, WX_GPIO_EOI, BIT(i));
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
330
set_bit(WX_FLAG_NEED_LINK_CONFIG, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
336
int txgbe_identify_module(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
344
if (wx->mac.type == wx_mac_aml40)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
349
gpio = rd32(wx, WX_GPIO_EXT);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
353
err = txgbe_identify_module_hostif(wx, &buffer);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
355
wx_err(wx, "Failed to identify module\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
364
wx_err(wx, "Invalid module\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
369
return txgbe_sfp_to_linkmodes(wx, id);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
371
return txgbe_qsfp_to_linkmodes(wx, id);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
374
void txgbe_setup_link(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
376
struct txgbe *txgbe = wx->priv;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
381
set_bit(WX_FLAG_NEED_MODULE_RESET, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
382
wx_service_event_schedule(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
388
struct wx *wx = phylink_to_wx(config);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
391
txgbe_get_mac_link(wx, &speed);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
397
static void txgbe_reconfig_mac(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
40
struct wx *wx = txgbe->wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
401
wdg = rd32(wx, WX_MAC_WDG_TIMEOUT);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
402
fc = rd32(wx, WX_MAC_RX_FLOW_CTRL);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
404
wr32(wx, WX_MIS_RST, TXGBE_MIS_RST_MAC_RST(wx->bus.func));
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
408
wr32m(wx, TXGBE_MAC_MISC_CTL, TXGBE_MAC_MISC_CTL_LINK_STS_MOD,
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
410
wx_reset_mac(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
412
wr32(wx, WX_MAC_WDG_TIMEOUT, wdg);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
413
wr32(wx, WX_MAC_RX_FLOW_CTRL, fc);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
423
struct wx *wx = phylink_to_wx(config);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
426
wx_fc_enable(wx, tx_pause, rx_pause);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
428
txgbe_reconfig_mac(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
429
txgbe_enable_sec_tx_path(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
43
if (wx->mac.type == wx_mac_aml40)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
431
txcfg = rd32(wx, TXGBE_AML_MAC_TX_CFG);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
448
wr32m(wx, WX_MAC_RX_CFG, WX_MAC_RX_CFG_RE, WX_MAC_RX_CFG_RE);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
449
wr32(wx, TXGBE_AML_MAC_TX_CFG, txcfg | TXGBE_AML_MAC_TX_CFG_TE);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
451
wx->speed = speed;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
452
wx->last_rx_ptp_check = jiffies;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
453
if (test_bit(WX_STATE_PTP_RUNNING, wx->state))
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
454
wx_ptp_reset_cyclecounter(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
456
wx_ping_all_vfs_with_link_status(wx, true);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
463
struct wx *wx = phylink_to_wx(config);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
465
wr32m(wx, TXGBE_AML_MAC_TX_CFG, TXGBE_AML_MAC_TX_CFG_TE, 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
466
wr32m(wx, WX_MAC_RX_CFG, WX_MAC_RX_CFG_RE, 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
468
wx->speed = SPEED_UNKNOWN;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
469
if (test_bit(WX_STATE_PTP_RUNNING, wx->state))
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
470
wx_ptp_reset_cyclecounter(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
472
wx_ping_all_vfs_with_link_status(wx, false);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
48
wr32(wx, WX_GPIO_INTMASK, 0xFF);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
49
status = rd32(wx, WX_GPIO_INTSTATUS);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
490
struct wx *wx = txgbe->wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
495
config = &wx->phylink_config;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
496
config->dev = &wx->netdev->dev;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
502
if (wx->mac.type == wx_mac_aml40) {
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
51
set_bit(WX_FLAG_NEED_MODULE_RESET, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
52
wr32(wx, WX_GPIO_EOI, mod_rst);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
523
wx_err(wx, "Failed to set fixed link\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
527
wx->phylink = phylink;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
53
wx_service_event_schedule(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
56
wr32(wx, WX_GPIO_INTMASK, 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
60
int txgbe_test_hostif(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
64
if (wx->mac.type == wx_mac_sp)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
72
return wx_host_interface_command(wx, (u32 *)&buffer, sizeof(buffer),
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
76
int txgbe_read_eeprom_hostif(struct wx *wx,
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
88
err = wx_host_interface_command(wx, (u32 *)buffer,
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
99
value = rd32a(wx, WX_FW2SW_MBOX, i + offset);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.h
10
int txgbe_read_eeprom_hostif(struct wx *wx,
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.h
13
int txgbe_set_phy_link(struct wx *wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.h
14
int txgbe_identify_module(struct wx *wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.h
15
void txgbe_setup_link(struct wx *wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.h
7
void txgbe_gpio_init_aml(struct wx *wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.h
9
int txgbe_test_hostif(struct wx *wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
19
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
198
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
20
struct txgbe *txgbe = wx->priv;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
200
return wx->num_rx_queues;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
206
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
207
struct txgbe *txgbe = wx->priv;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
27
if (wx->mac.type == wx_mac_sp)
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
280
wx_dbg(txgbe->wx, "FDIR entry already exist\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
293
struct wx *wx = txgbe->wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
311
if (netif_running(wx->netdev) &&
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
314
err = txgbe_fdir_erase_perfect_filter(wx,
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
357
struct wx *wx = txgbe->wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
362
if (!(test_bit(WX_FLAG_FDIR_PERFECT, wx->flags)))
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
374
if (!vf && ring >= wx->num_rx_queues)
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
376
else if (vf && (vf > wx->num_vfs ||
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
377
ring >= wx->num_rx_queues_per_pool))
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
382
queue = wx->rx_ring[ring]->reg_idx;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
384
queue = ((vf - 1) * wx->num_rx_queues_per_pool) + ring;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
389
wx_err(wx, "Location out of range\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
405
wx_err(wx, "Unrecognized flow type\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
44
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
469
err = txgbe_fdir_set_input_mask(wx, &mask);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
473
wx_err(wx, "Hardware only supports one mask per port. To change the mask you must first delete all the rules.\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
488
if (netif_running(wx->netdev)) {
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
489
err = txgbe_fdir_write_perfect_filter(wx, &input->filter,
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
523
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
524
struct txgbe *txgbe = wx->priv;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
546
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
55
if (new_tx_count == wx->tx_ring_count &&
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
550
if (!test_bit(WX_FLAG_SWFW_RING, wx->flags))
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
559
err = txgbe_read_eeprom_hostif(wx, &buffer, page_data->length,
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
56
new_rx_count == wx->rx_ring_count)
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
562
wx_err(wx, "Failed to read module EEPROM\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
59
err = wx_set_state_reset(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
63
if (!netif_running(wx->netdev)) {
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
64
for (i = 0; i < wx->num_tx_queues; i++)
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
65
wx->tx_ring[i]->count = new_tx_count;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
66
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
67
wx->rx_ring[i]->count = new_rx_count;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
68
wx->tx_ring_count = new_tx_count;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
69
wx->rx_ring_count = new_rx_count;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
75
i = max_t(int, wx->num_tx_queues, wx->num_rx_queues);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
82
txgbe_down(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
84
wx_set_ring(wx, new_tx_count, new_rx_count, temp_ring);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
87
txgbe_up(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
90
clear_bit(WX_STATE_RESETTING, wx->state);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
158
static int txgbe_fdir_check_cmd_complete(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
165
wx, TXGBE_RDB_FDIR_CMD);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
177
static int txgbe_fdir_add_signature_filter(struct wx *wx,
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
200
wx_err(wx, "Error on flow type input\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
213
wr32(wx, TXGBE_RDB_FDIR_HASH, fdirhashcmd);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
214
wr32(wx, TXGBE_RDB_FDIR_CMD, fdircmd);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
216
wx_dbg(wx, "Tx Queue=%x hash=%x\n", queue, (u32)fdirhashcmd);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
218
err = txgbe_fdir_check_cmd_complete(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
220
wx_err(wx, "Flow Director command did not complete!\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
303
txgbe_fdir_add_signature_filter(q_vector->wx, input, common,
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
307
int txgbe_fdir_set_input_mask(struct wx *wx, union txgbe_atr_input *input_mask)
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
323
wx_dbg(wx, "bucket hash should always be 0 in mask\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
333
wx_err(wx, "Error on vm pool mask\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
342
wx_err(wx, "Error on src/dst port mask\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
349
wx_err(wx, "Error on flow type mask\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
354
wr32(wx, TXGBE_RDB_FDIR_OTHER_MSK, fdirm);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
358
flex = rd32(wx, TXGBE_RDB_FDIR_FLEX_CFG(index));
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
371
wx_err(wx, "Error on flexible byte mask\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
374
wr32(wx, TXGBE_RDB_FDIR_FLEX_CFG(index), flex);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
382
wr32(wx, TXGBE_RDB_FDIR_TCP_MSK, ~fdirtcpm);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
383
wr32(wx, TXGBE_RDB_FDIR_UDP_MSK, ~fdirtcpm);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
384
wr32(wx, TXGBE_RDB_FDIR_SCTP_MSK, ~fdirtcpm);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
387
wr32(wx, TXGBE_RDB_FDIR_SA4_MSK,
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
389
wr32(wx, TXGBE_RDB_FDIR_DA4_MSK,
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
395
int txgbe_fdir_write_perfect_filter(struct wx *wx,
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
403
wr32(wx, TXGBE_RDB_FDIR_IP6(2), ntohl(input->formatted.src_ip[0]));
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
404
wr32(wx, TXGBE_RDB_FDIR_IP6(1), ntohl(input->formatted.src_ip[1]));
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
405
wr32(wx, TXGBE_RDB_FDIR_IP6(0), ntohl(input->formatted.src_ip[2]));
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
408
wr32(wx, TXGBE_RDB_FDIR_SA, ntohl(input->formatted.src_ip[0]));
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
413
wr32(wx, TXGBE_RDB_FDIR_DA, ntohl(input->formatted.dst_ip[0]));
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
419
wr32(wx, TXGBE_RDB_FDIR_PORT, fdirport);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
425
wr32(wx, TXGBE_RDB_FDIR_FLEX, fdirvlan);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
431
wr32(wx, TXGBE_RDB_FDIR_HASH, fdirhash);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
436
WX_WRITE_FLUSH(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
448
wr32(wx, TXGBE_RDB_FDIR_CMD, fdircmd);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
449
err = txgbe_fdir_check_cmd_complete(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
451
wx_err(wx, "Flow Director command did not complete!\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
456
int txgbe_fdir_erase_perfect_filter(struct wx *wx,
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
466
wr32(wx, TXGBE_RDB_FDIR_HASH, fdirhash);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
469
WX_WRITE_FLUSH(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
472
wr32(wx, TXGBE_RDB_FDIR_CMD, TXGBE_RDB_FDIR_CMD_CMD_QUERY_REM_FILT);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
474
err = txgbe_fdir_check_cmd_complete(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
476
wx_err(wx, "Flow Director command did not complete!\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
480
fdircmd = rd32(wx, TXGBE_RDB_FDIR_CMD);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
483
wr32(wx, TXGBE_RDB_FDIR_HASH, fdirhash);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
484
WX_WRITE_FLUSH(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
485
wr32(wx, TXGBE_RDB_FDIR_CMD,
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
497
static void txgbe_fdir_enable(struct wx *wx, u32 fdirctrl)
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
503
wr32(wx, TXGBE_RDB_FDIR_HKEY, TXGBE_ATR_BUCKET_HASH_KEY);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
504
wr32(wx, TXGBE_RDB_FDIR_SKEY, TXGBE_ATR_SIGNATURE_HASH_KEY);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
506
wr32(wx, TXGBE_RDB_FDIR_CTL, fdirctrl);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
507
WX_WRITE_FLUSH(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
509
1000, 10000, false, wx, TXGBE_RDB_FDIR_CTL);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
512
wx_dbg(wx, "Flow Director poll time exceeded!\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
519
static void txgbe_init_fdir_signature(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
526
flex = rd32(wx, TXGBE_RDB_FDIR_FLEX_CFG(index));
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
531
wr32(wx, TXGBE_RDB_FDIR_FLEX_CFG(index), flex);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
543
txgbe_fdir_enable(wx, fdirctrl);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
550
static void txgbe_init_fdir_perfect(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
569
txgbe_fdir_enable(wx, fdirctrl);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
572
static void txgbe_fdir_filter_restore(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
575
struct txgbe *txgbe = wx->priv;
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
583
ret = txgbe_fdir_set_input_mask(wx, &txgbe->fdir_mask);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
595
if (ring >= wx->num_rx_queues) {
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
596
wx_err(wx, "FDIR restore failed, ring:%u\n",
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
602
queue = wx->rx_ring[ring]->reg_idx;
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
605
ret = txgbe_fdir_write_perfect_filter(wx,
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
610
wx_err(wx, "FDIR restore failed, index:%u\n",
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
618
void txgbe_configure_fdir(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
620
wx_disable_sec_rx_path(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
622
if (test_bit(WX_FLAG_FDIR_HASH, wx->flags)) {
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
623
txgbe_init_fdir_signature(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
624
} else if (test_bit(WX_FLAG_FDIR_PERFECT, wx->flags)) {
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
625
txgbe_init_fdir_perfect(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
626
txgbe_fdir_filter_restore(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
629
wx_enable_sec_rx_path(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
632
void txgbe_fdir_filter_exit(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.c
635
struct txgbe *txgbe = wx->priv;
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.h
10
int txgbe_fdir_set_input_mask(struct wx *wx, union txgbe_atr_input *input_mask);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.h
11
int txgbe_fdir_write_perfect_filter(struct wx *wx,
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.h
14
int txgbe_fdir_erase_perfect_filter(struct wx *wx,
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.h
17
void txgbe_configure_fdir(struct wx *wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_fdir.h
18
void txgbe_fdir_filter_exit(struct wx *wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
103
if (wx->mac.type == wx_mac_aml) {
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
108
if (i != wx->eeprom.sw_region_offset + TXGBE_EEPROM_CHECKSUM)
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
127
int txgbe_validate_eeprom_checksum(struct wx *wx, u16 *checksum_val)
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
137
status = wx_read_ee_hostif(wx, 0, &checksum);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
139
wx_err(wx, "EEPROM read failed\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
144
status = txgbe_calc_eeprom_checksum(wx, &checksum);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
148
status = wx_read_ee_hostif(wx, wx->eeprom.sw_region_offset +
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
158
wx_err(wx, "Invalid EEPROM checksum\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
168
static void txgbe_reset_misc(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
170
wx_reset_misc(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
171
txgbe_init_thermal_sensor_thresh(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
182
int txgbe_reset_hw(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
187
status = wx_stop_adapter(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
191
if (wx->media_type != wx_media_copper) {
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
194
val = WX_MIS_RST_LAN_RST(wx->bus.func);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
195
wr32(wx, WX_MIS_RST, val | rd32(wx, WX_MIS_RST));
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
196
WX_WRITE_FLUSH(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
200
status = wx_check_flash_load(wx, TXGBE_SPI_ILDR_STATUS_LAN_SW_RST(wx->bus.func));
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
204
txgbe_reset_misc(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
206
if (wx->mac.type != wx_mac_sp) {
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
207
wr32(wx, TXGBE_PX_PF_BME, 0x1);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
208
wr32m(wx, TXGBE_RDM_RSC_CTL, TXGBE_RDM_RSC_CTL_FREE_CTL,
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
212
wx_clear_hw_cntrs(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
215
wx_get_mac_addr(wx, wx->mac.perm_addr);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
221
wx->mac.num_rar_entries = TXGBE_RAR_ENTRIES;
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
222
wx_init_rx_addrs(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
224
pci_set_master(wx->pdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
23
int txgbe_disable_sec_tx_path(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
27
wr32m(wx, WX_TSC_CTL, WX_TSC_CTL_TX_DIS, WX_TSC_CTL_TX_DIS);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
29
1000, 20000, false, wx, WX_TSC_ST);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
38
void txgbe_enable_sec_tx_path(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
40
wr32m(wx, WX_TSC_CTL, WX_TSC_CTL_TX_DIS, 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
41
WX_WRITE_FLUSH(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
51
static void txgbe_init_thermal_sensor_thresh(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
53
struct wx_thermal_sensor_data *data = &wx->mac.sensor;
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
58
if (wx->bus.func)
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
61
wr32(wx, TXGBE_TS_CTL, TXGBE_TS_CTL_EVAL_MD);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
63
wr32(wx, WX_TS_INT_EN,
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
65
wr32(wx, WX_TS_EN, WX_TS_EN_ENA);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
68
wr32(wx, WX_TS_ALARM_THRE, 677);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
70
wr32(wx, WX_TS_DALARM_THRE, 614);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
80
static int txgbe_calc_eeprom_checksum(struct wx *wx, u16 *checksum)
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
87
wx_init_eeprom_params(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
94
status = wx_read_ee_hostif_buffer(wx, 0, TXGBE_EEPROM_LAST_WORD, eeprom_ptrs);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.c
96
wx_err(wx, "Failed to read EEPROM image\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.h
10
int txgbe_reset_hw(struct wx *wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.h
7
int txgbe_disable_sec_tx_path(struct wx *wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.h
8
void txgbe_enable_sec_tx_path(struct wx *wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_hw.h
9
int txgbe_validate_eeprom_checksum(struct wx *wx, u16 *checksum_val);
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
126
struct wx *wx = txgbe->wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
129
if (wx->pdev->msix_enabled) {
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
130
eicr = wx_misc_isb(wx, WX_ISB_MISC);
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
133
wx_msg_task(txgbe->wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
134
wx_intr_enable(wx, TXGBE_INTR_MISC(wx));
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
139
eicr = wx_misc_isb(wx, WX_ISB_VEC0);
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
144
if (netif_running(wx->netdev))
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
145
txgbe_irq_enable(wx, true);
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
148
wx->isb_mem[WX_ISB_VEC0] = 0;
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
149
if (!(wx->pdev->msi_enabled))
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
150
wr32(wx, WX_PX_INTA, 1);
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
153
q_vector = wx->q_vector[0];
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
156
txgbe->eicr = wx_misc_isb(wx, WX_ISB_MISC);
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
164
struct wx *wx = txgbe->wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
182
wx_ptp_check_pps_event(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
186
wx_intr_enable(wx, TXGBE_INTR_MISC(wx));
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
204
if (txgbe->wx->mac.type != wx_mac_sp)
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
210
txgbe->wx->misc_irq_domain = false;
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
216
struct wx *wx = txgbe->wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
22
void txgbe_irq_enable(struct wx *wx, bool queues)
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
229
if (wx->pdev->msix_enabled) {
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
230
txgbe->misc.irq = wx->msix_entry->vector;
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
232
txgbe->misc.irq = wx->pdev->irq;
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
233
if (!wx->pdev->msi_enabled)
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
240
wx->netdev->name, txgbe);
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
248
if (wx->mac.type == wx_mac_sp)
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
256
wx->misc_irq_domain = true;
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
26
if (wx->mac.type != wx_mac_sp) {
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
28
txgbe_gpio_init_aml(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
31
wr32(wx, WX_PX_MISC_IEN, misc_ien);
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
34
wx_intr_enable(wx, TXGBE_INTR_MISC(wx));
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
36
wx_intr_enable(wx, TXGBE_INTR_QALL(wx));
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
45
int txgbe_request_queue_irqs(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
47
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
50
if (!wx->pdev->msix_enabled)
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
53
for (vector = 0; vector < wx->num_q_vectors; vector++) {
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
54
struct wx_q_vector *q_vector = wx->q_vector[vector];
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
55
struct msix_entry *entry = &wx->msix_q_entries[vector];
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
67
wx_err(wx, "request_irq failed for MSIX interrupt %s Error: %d\n",
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
78
free_irq(wx->msix_q_entries[vector].vector,
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
79
wx->q_vector[vector]);
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.h
4
void txgbe_irq_enable(struct wx *wx, bool queues);
drivers/net/ethernet/wangxun/txgbe/txgbe_irq.h
5
int txgbe_request_queue_irqs(struct wx *wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
102
err = txgbe_identify_module(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
106
clear_bit(WX_FLAG_NEED_MODULE_RESET, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
109
static void txgbe_link_config_subtask(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
113
if (!test_bit(WX_FLAG_NEED_LINK_CONFIG, wx->flags))
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
116
err = txgbe_set_phy_link(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
120
clear_bit(WX_FLAG_NEED_LINK_CONFIG, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
129
struct wx *wx = container_of(work, struct wx, service_task);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
131
txgbe_module_detection_subtask(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
132
txgbe_link_config_subtask(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
134
wx_service_event_complete(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
137
static void txgbe_init_service(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
139
timer_setup(&wx->service_timer, wx_service_timer, 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
140
INIT_WORK(&wx->service_task, txgbe_service_task);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
141
clear_bit(WX_STATE_SERVICE_SCHED, wx->state);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
144
static void txgbe_up_complete(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
146
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
148
wx_control_hw(wx, true);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
149
wx_configure_vectors(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
153
wx_napi_enable_all(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
155
switch (wx->mac.type) {
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
157
txgbe_setup_link(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
158
phylink_start(wx->phylink);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
162
wr32m(wx, WX_GPIO_DR, TXGBE_GPIOBIT_1, 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
163
txgbe_setup_link(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
164
phylink_start(wx->phylink);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
167
phylink_start(wx->phylink);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
174
rd32(wx, WX_PX_IC(0));
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
175
rd32(wx, WX_PX_IC(1));
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
176
rd32(wx, WX_PX_MISC_IC);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
177
txgbe_irq_enable(wx, true);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
181
mod_timer(&wx->service_timer, jiffies);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
184
wr32m(wx, WX_CFG_PORT_CTL, WX_CFG_PORT_CTL_PFRSTD,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
187
wx_set_all_vfs(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
190
static void txgbe_reset(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
192
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
196
err = txgbe_reset_hw(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
198
wx_err(wx, "Hardware Error: %d\n", err);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
200
wx_start_hw(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
202
memcpy(old_addr, &wx->mac_table[0].addr, netdev->addr_len);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
203
wx_flush_sw_mac_table(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
204
wx_mac_set_default_filter(wx, old_addr);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
206
if (test_bit(WX_STATE_PTP_RUNNING, wx->state))
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
207
wx_ptp_reset(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
210
static void txgbe_disable_device(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
212
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
215
wx_disable_pcie_master(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
217
wx_disable_rx(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
220
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
222
wx_disable_rx_queue(wx, wx->rx_ring[i]);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
227
wx_irq_disable(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
228
wx_napi_disable_all(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
230
timer_delete_sync(&wx->service_timer);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
232
if (wx->bus.func < 2)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
233
wr32m(wx, TXGBE_MIS_PRB_CTL, TXGBE_MIS_PRB_CTL_LAN_UP(wx->bus.func), 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
235
wx_err(wx, "%s: invalid bus lan id %d\n",
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
236
__func__, wx->bus.func);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
238
if (wx->num_vfs) {
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
240
wr32(wx, WX_PX_ITRSEL, 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
242
for (i = 0; i < wx->num_vfs; i++)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
243
wx->vfinfo[i].clear_to_send = 0;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
245
wx_set_all_vfs(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
248
if (!(((wx->subsystem_device_id & WX_NCSI_MASK) == WX_NCSI_SUP) ||
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
249
((wx->subsystem_device_id & WX_WOL_MASK) == WX_WOL_SUP))) {
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
251
wr32m(wx, WX_MAC_TX_CFG, WX_MAC_TX_CFG_TE, 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
255
for (i = 0; i < wx->num_tx_queues; i++) {
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
256
u8 reg_idx = wx->tx_ring[i]->reg_idx;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
258
wr32(wx, WX_PX_TR_CFG(reg_idx), WX_PX_TR_CFG_SWFLSH);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
262
wr32m(wx, WX_TDM_CTL, WX_TDM_CTL_TE, 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
264
wx_update_stats(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
267
void txgbe_down(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
269
txgbe_disable_device(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
270
txgbe_reset(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
272
switch (wx->mac.type) {
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
274
phylink_stop(wx->phylink);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
277
phylink_stop(wx->phylink);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
279
wr32m(wx, WX_GPIO_DR, TXGBE_GPIOBIT_1, TXGBE_GPIOBIT_1);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
282
phylink_stop(wx->phylink);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
288
wx_clean_all_tx_rings(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
289
wx_clean_all_rx_rings(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
292
void txgbe_up(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
294
wx_configure(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
295
wx_ptp_init(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
296
txgbe_up_complete(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
303
static void txgbe_init_type_code(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
305
u8 device_type = wx->subsystem_device_id & 0xF0;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
307
switch (wx->device_id) {
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
310
wx->mac.type = wx_mac_sp;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
316
wx->mac.type = wx_mac_aml;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
320
wx->mac.type = wx_mac_aml40;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
323
wx->mac.type = wx_mac_unknown;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
329
wx->media_type = wx_media_fiber;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
333
wx->media_type = wx_media_copper;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
338
wx->media_type = wx_media_backplane;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
341
if (wx->bus.func == 0)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
342
wx->media_type = wx_media_fiber;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
344
wx->media_type = wx_media_copper;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
347
wx->media_type = wx_media_unknown;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
356
static int txgbe_sw_init(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
361
wx->mac.num_rar_entries = TXGBE_RAR_ENTRIES;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
362
wx->mac.max_tx_queues = TXGBE_MAX_TXQ;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
363
wx->mac.max_rx_queues = TXGBE_MAX_RXQ;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
364
wx->mac.mcft_size = TXGBE_MC_TBL_SIZE;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
365
wx->mac.vft_size = TXGBE_VFT_TBL_SIZE;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
366
wx->mac.rx_pb_size = TXGBE_RX_PB_SIZE;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
367
wx->mac.tx_pb_size = TXGBE_TDB_PB_SZ;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
370
err = wx_sw_init(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
374
txgbe_init_type_code(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
377
wx->max_q_vectors = TXGBE_MAX_MSIX_VECTORS;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
378
err = wx_get_pcie_msix_counts(wx, &msix_count, TXGBE_MAX_MSIX_VECTORS);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
380
wx_err(wx, "Do not support MSI-X\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
381
wx->mac.max_msix_vectors = msix_count;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
383
wx->ring_feature[RING_F_RSS].limit = min_t(int, TXGBE_MAX_RSS_INDICES,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
385
wx->rss_enabled = true;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
387
wx->ring_feature[RING_F_FDIR].limit = min_t(int, TXGBE_MAX_FDIR_INDICES,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
389
set_bit(WX_FLAG_FDIR_CAPABLE, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
390
set_bit(WX_FLAG_FDIR_HASH, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
391
wx->atr_sample_rate = TXGBE_DEFAULT_ATR_SAMPLE_RATE;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
392
wx->atr = txgbe_atr;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
393
wx->configure_fdir = txgbe_configure_fdir;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
395
set_bit(WX_FLAG_RSC_CAPABLE, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
396
set_bit(WX_FLAG_RSC_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
397
set_bit(WX_FLAG_MULTI_64_FUNC, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
400
wx->adaptive_itr = true;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
401
wx->rx_itr_setting = 1;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
402
wx->tx_itr_setting = 1;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
405
wx->tx_ring_count = TXGBE_DEFAULT_TXD;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
406
wx->rx_ring_count = TXGBE_DEFAULT_RXD;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
407
wx->mbx.size = WX_VXMAILBOX_SIZE;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
410
wx->tx_work_limit = TXGBE_DEFAULT_TX_WORK;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
411
wx->rx_work_limit = TXGBE_DEFAULT_RX_WORK;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
413
wx->setup_tc = txgbe_setup_tc;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
414
wx->do_reset = txgbe_do_reset;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
415
set_bit(0, &wx->fwd_bitmask);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
417
switch (wx->mac.type) {
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
422
set_bit(WX_FLAG_RX_MERGE_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
423
set_bit(WX_FLAG_TXHEAD_WB_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
424
set_bit(WX_FLAG_SWFW_RING, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
425
wx->swfw_index = 0;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
451
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
454
err = wx_setup_resources(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
458
wx_configure(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
460
err = txgbe_setup_misc_irq(wx->priv);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
464
err = txgbe_request_queue_irqs(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
469
err = netif_set_real_num_tx_queues(netdev, wx->num_tx_queues);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
473
err = netif_set_real_num_rx_queues(netdev, wx->num_rx_queues);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
477
wx_ptp_init(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
479
txgbe_up_complete(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
484
wx_free_irq(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
486
txgbe_free_misc_irq(wx->priv);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
487
wx_reset_interrupt_capability(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
489
wx_free_resources(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
491
txgbe_reset(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
503
static void txgbe_close_suspend(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
505
wx_ptp_suspend(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
506
txgbe_disable_device(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
507
wx_free_resources(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
523
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
525
wx_ptp_stop(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
526
txgbe_down(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
527
wx_free_irq(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
528
txgbe_free_misc_irq(wx->priv);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
529
wx_free_resources(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
530
txgbe_fdir_filter_exit(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
531
wx_control_hw(wx, false);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
538
struct wx *wx = pci_get_drvdata(pdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
54
static void txgbe_check_minimum_link(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
541
netdev = wx->netdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
546
txgbe_close_suspend(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
549
wx_control_hw(wx, false);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
573
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
58
pdev = wx->pdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
582
txgbe_reset(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
584
wx_clear_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
591
wx_init_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
599
static void txgbe_reinit_locked(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
603
netif_trans_update(wx->netdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
605
err = wx_set_state_reset(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
607
wx_err(wx, "wait device reset timeout\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
611
txgbe_down(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
612
txgbe_up(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
614
clear_bit(WX_STATE_RESETTING, wx->state);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
619
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
622
txgbe_reinit_locked(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
624
txgbe_reset(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
629
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
635
wr32(wx, TXGBE_CFG_VXLAN, ntohs(ti.port));
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
638
wr32(wx, TXGBE_CFG_VXLAN_GPE, ntohs(ti.port));
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
641
wr32(wx, TXGBE_CFG_GENEVE, ntohs(ti.port));
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
694
struct wx *wx = NULL;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
71
static int txgbe_enumerate_functions(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
725
sizeof(struct wx),
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
73
struct pci_dev *entry, *pdev = wx->pdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
735
wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
736
wx->netdev = netdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
737
wx->pdev = pdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
739
wx->msg_enable = (1 << DEFAULT_DEBUG_LEVEL_SHIFT) - 1;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
741
wx->hw_addr = devm_ioremap(&pdev->dev,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
744
if (!wx->hw_addr) {
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
753
wx->driver_name = txgbe_driver_name;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
759
err = txgbe_sw_init(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
764
err = wx_check_flash_load(wx, TXGBE_SPI_ILDR_STATUS_PERST);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
767
err = wx_check_flash_load(wx, TXGBE_SPI_ILDR_STATUS_PWRRST);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
771
err = wx_mng_present(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
777
err = txgbe_reset_hw(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
815
err = txgbe_validate_eeprom_checksum(wx, NULL);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
818
wr32(wx, WX_MIS_RST, WX_MIS_RST_SW_RST);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
823
eth_hw_addr_set(netdev, wx->mac.perm_addr);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
824
wx_mac_set_default_filter(wx, wx->mac.perm_addr);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
826
txgbe_init_service(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
828
err = wx_init_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
835
wx_read_ee_hostif(wx,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
836
wx->eeprom.sw_region_offset + TXGBE_EEPROM_VERSION_H,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
838
wx_read_ee_hostif(wx,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
839
wx->eeprom.sw_region_offset + TXGBE_EEPROM_VERSION_L,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
843
wx_read_ee_hostif(wx,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
844
wx->eeprom.sw_region_offset + TXGBE_ISCSI_BOOT_CONFIG,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
849
wx_read_ee_hostif(wx, offset + 0x84, &eeprom_cfg_blkh);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
850
wx_read_ee_hostif(wx, offset + 0x83, &eeprom_cfg_blkl);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
858
snprintf(wx->eeprom_id, sizeof(wx->eeprom_id),
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
862
snprintf(wx->eeprom_id, sizeof(wx->eeprom_id),
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
866
snprintf(wx->eeprom_id, sizeof(wx->eeprom_id),
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
873
err = txgbe_test_hostif(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
886
txgbe->wx = wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
887
wx->priv = txgbe;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
899
pci_set_drvdata(pdev, wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
909
expected_gts = txgbe_enumerate_functions(wx) * 10;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
913
txgbe_check_minimum_link(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
92
static void txgbe_module_detection_subtask(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
922
wx_clear_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
923
wx_control_hw(wx, false);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
925
timer_delete_sync(&wx->service_timer);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
926
cancel_work_sync(&wx->service_task);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
928
kfree(wx->rss_key);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
929
kfree(wx->mac_table);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
949
struct wx *wx = pci_get_drvdata(pdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
950
struct txgbe *txgbe = wx->priv;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
953
cancel_work_sync(&wx->service_task);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
955
netdev = wx->netdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
956
wx_disable_sriov(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
96
if (!test_bit(WX_FLAG_NEED_MODULE_RESET, wx->flags))
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
960
wx_free_isb_resources(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
965
kfree(wx->rss_key);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
966
kfree(wx->mac_table);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
967
wx_clear_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
102
val = rd32(wx, TXGBE_XPCS_IDA_DATA);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
109
struct wx *wx = bus->priv;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
118
wr32(wx, TXGBE_XPCS_IDA_ADDR, offset);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
121
wr32(wx, TXGBE_XPCS_IDA_DATA, val);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
131
struct wx *wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
134
wx = txgbe->wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
135
pdev = wx->pdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
146
mii_bus->priv = wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
166
struct wx *wx = phylink_to_wx(config);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
167
struct txgbe *txgbe = wx->priv;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
169
if (wx->media_type != wx_media_copper)
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
183
struct wx *wx = phylink_to_wx(config);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
185
wr32m(wx, WX_MAC_TX_CFG, WX_MAC_TX_CFG_TE, 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
187
wx->speed = SPEED_UNKNOWN;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
188
if (test_bit(WX_STATE_PTP_RUNNING, wx->state))
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
189
wx_ptp_reset_cyclecounter(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
191
wx_ping_all_vfs_with_link_status(wx, false);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
200
struct wx *wx = phylink_to_wx(config);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
203
wx_fc_enable(wx, tx_pause, rx_pause);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
205
txcfg = rd32(wx, WX_MAC_TX_CFG);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
221
wr32(wx, WX_MAC_TX_CFG, txcfg | WX_MAC_TX_CFG_TE);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
224
wr32m(wx, WX_MAC_RX_CFG, WX_MAC_RX_CFG_RE, WX_MAC_RX_CFG_RE);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
225
wr32(wx, WX_MAC_PKT_FLT, WX_MAC_PKT_FLT_PR);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
226
wdg = rd32(wx, WX_MAC_WDG_TIMEOUT);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
227
wr32(wx, WX_MAC_WDG_TIMEOUT, wdg);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
229
wx->speed = speed;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
230
wx->last_rx_ptp_check = jiffies;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
231
if (test_bit(WX_STATE_PTP_RUNNING, wx->state))
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
232
wx_ptp_reset_cyclecounter(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
234
wx_ping_all_vfs_with_link_status(wx, true);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
240
struct wx *wx = phylink_to_wx(config);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
242
wr32m(wx, WX_MAC_TX_CFG, WX_MAC_TX_CFG_TE, 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
243
wr32m(wx, WX_MAC_RX_CFG, WX_MAC_RX_CFG_RE, 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
245
return txgbe_disable_sec_tx_path(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
251
struct wx *wx = phylink_to_wx(config);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
253
txgbe_enable_sec_tx_path(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
254
wr32m(wx, WX_MAC_RX_CFG, WX_MAC_RX_CFG_RE, WX_MAC_RX_CFG_RE);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
272
struct wx *wx = txgbe->wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
276
config = &wx->phylink_config;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
277
config->dev = &wx->netdev->dev;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
282
if (wx->media_type == wx_media_copper) {
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
297
if (wx->phydev) {
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
30
struct pci_dev *pdev = txgbe->wx->pdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
300
ret = phylink_connect_phy(phylink, wx->phydev);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
307
wx->phylink = phylink;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
315
struct wx *wx = txgbe->wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
319
status = rd32(wx, TXGBE_CFG_PORT_ST);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
325
phylink_mac_change(wx->phylink, up);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
332
struct wx *wx = gpiochip_get_data(chip);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
335
val = rd32m(wx, WX_GPIO_EXT, BIT(offset));
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
342
struct wx *wx = gpiochip_get_data(chip);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
345
val = rd32(wx, WX_GPIO_DDR);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
354
struct wx *wx = gpiochip_get_data(chip);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
357
raw_spin_lock_irqsave(&wx->gpio_lock, flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
358
wr32m(wx, WX_GPIO_DDR, BIT(offset), 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
359
raw_spin_unlock_irqrestore(&wx->gpio_lock, flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
367
struct wx *wx = gpiochip_get_data(chip);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
373
raw_spin_lock_irqsave(&wx->gpio_lock, flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
374
wr32m(wx, WX_GPIO_DR, BIT(offset), set);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
375
wr32m(wx, WX_GPIO_DDR, BIT(offset), BIT(offset));
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
376
raw_spin_unlock_irqrestore(&wx->gpio_lock, flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
385
struct wx *wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
388
wx = txgbe->wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
389
dev = &wx->pdev->dev;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
391
raw_spin_lock_init(&wx->gpio_lock);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
398
pci_dev_id(wx->pdev));
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
412
ret = devm_gpiochip_add_data(dev, gc, wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
423
struct pci_dev *pdev = txgbe->wx->pdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
449
struct wx *wx = context;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
451
*val = rd32(wx, reg + TXGBE_I2C_BASE);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
458
struct wx *wx = context;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
460
wr32(wx, reg + TXGBE_I2C_BASE, val);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
479
struct wx *wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
481
wx = txgbe->wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
482
pdev = wx->pdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
483
i2c_regmap = devm_regmap_init(&pdev->dev, NULL, wx, &i2c_regmap_config);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
485
wx_err(wx, "failed to init I2C regmap\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
507
struct pci_dev *pdev = txgbe->wx->pdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
529
struct wx *wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
532
wx = txgbe->wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
533
pdev = wx->pdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
544
mii_bus->priv = wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
549
wx_err(wx, "failed to register MDIO bus: %d\n", ret);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
555
wx_err(wx, "no PHY found\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
561
wx->link = 0;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
562
wx->speed = 0;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
563
wx->duplex = 0;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
564
wx->phydev = phydev;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
568
wx_err(wx, "failed to init phylink: %d\n", ret);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
577
struct wx *wx = txgbe->wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
580
switch (wx->mac.type) {
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
585
if (wx->media_type == wx_media_copper)
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
594
wx_err(wx, "failed to register software nodes\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
600
wx_err(wx, "failed to init mdio pcs: %d\n", ret);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
606
wx_err(wx, "failed to init phylink\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
612
wx_err(wx, "failed to init gpio\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
618
wx_err(wx, "failed to register clock: %d\n", ret);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
624
wx_err(wx, "failed to init i2c interface: %d\n", ret);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
630
wx_err(wx, "failed to register sfp\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
642
phylink_destroy(wx->phylink);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
653
switch (txgbe->wx->mac.type) {
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
656
phylink_destroy(txgbe->wx->phylink);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
659
if (txgbe->wx->media_type == wx_media_copper) {
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
660
phylink_disconnect_phy(txgbe->wx->phylink);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
661
phylink_destroy(txgbe->wx->phylink);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
673
phylink_destroy(txgbe->wx->phylink);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
90
struct wx *wx = bus->priv;
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
99
wr32(wx, TXGBE_XPCS_IDA_ADDR, offset);
drivers/net/ethernet/wangxun/txgbe/txgbe_type.h
313
void txgbe_down(struct wx *wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_type.h
314
void txgbe_up(struct wx *wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_type.h
457
struct wx *wx;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
103
static int txgbevf_sw_init(struct wx *wx)
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
105
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
106
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
110
err = wx_sw_init(wx);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
115
err = wx_init_mbx_params_vf(wx);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
120
wx->mac.max_msix_vectors = TXGBEVF_MAX_MSIX_VECTORS;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
122
txgbevf_init_type_code(wx);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
124
spin_lock_init(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
126
err = wx_reset_hw_vf(wx);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
128
wx_err(wx, "PF still in reset state. Is the PF interface up?\n");
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
131
wx_init_hw_vf(wx);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
132
wx_negotiate_api_vf(wx);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
133
if (is_zero_ether_addr(wx->mac.addr))
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
136
eth_hw_addr_set(netdev, wx->mac.addr);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
141
ether_addr_copy(wx->mac.addr, netdev->dev_addr);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
142
ether_addr_copy(wx->mac.perm_addr, netdev->dev_addr);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
145
wx->mac.max_tx_queues = TXGBEVF_MAX_TX_QUEUES;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
146
wx->mac.max_rx_queues = TXGBEVF_MAX_RX_QUEUES;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
148
wx->adaptive_itr = true;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
149
wx->rx_itr_setting = 1;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
150
wx->tx_itr_setting = 1;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
152
wx->tx_ring_count = TXGBEVF_DEFAULT_TXD;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
153
wx->rx_ring_count = TXGBEVF_DEFAULT_RXD;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
155
wx->tx_work_limit = TXGBEVF_DEFAULT_TX_WORK;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
156
wx->rx_work_limit = TXGBEVF_DEFAULT_RX_WORK;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
158
wx->set_num_queues = txgbevf_set_num_queues;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
160
switch (wx->mac.type) {
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
165
set_bit(WX_FLAG_RX_MERGE_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
166
set_bit(WX_FLAG_TXHEAD_WB_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
174
kfree(wx->vfinfo);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
176
kfree(wx->rss_key);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
177
kfree(wx->mac_table);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
197
struct wx *wx = NULL;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
223
sizeof(struct wx),
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
233
wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
234
wx->netdev = netdev;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
235
wx->pdev = pdev;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
237
wx->msg_enable = netif_msg_init(-1, NETIF_MSG_DRV |
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
239
wx->hw_addr = devm_ioremap(&pdev->dev,
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
242
if (!wx->hw_addr) {
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
247
wx->b4_addr = devm_ioremap(&pdev->dev,
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
250
if (!wx->b4_addr) {
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
255
wx->driver_name = KBUILD_MODNAME;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
260
err = txgbevf_sw_init(wx);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
266
eth_hw_addr_set(netdev, wx->mac.perm_addr);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
267
ether_addr_copy(netdev->perm_addr, wx->mac.addr);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
269
wxvf_init_service(wx);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
270
err = wx_init_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
274
wx_get_fw_version_vf(wx);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
279
pci_set_drvdata(pdev, wx);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
285
wx_clear_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
287
timer_delete_sync(&wx->service_timer);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
288
cancel_work_sync(&wx->service_task);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
289
kfree(wx->vfinfo);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
290
kfree(wx->rss_key);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
291
kfree(wx->mac_table);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
49
static void txgbevf_set_num_queues(struct wx *wx)
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
56
wx->num_rx_queues = 1;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
57
wx->num_tx_queues = 1;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
59
spin_lock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
61
ret = wx_get_queues_vf(wx, &num_tcs, &def_q);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
62
spin_unlock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
69
wx->num_rx_queues = num_tcs;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
72
queue = min_t(u16, wx->mac.max_rx_queues, wx->mac.max_tx_queues);
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
75
if (wx->vfinfo->vf_api >= wx_mbox_api_13) {
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
76
wx->num_rx_queues = rss;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
77
wx->num_tx_queues = rss;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
82
static void txgbevf_init_type_code(struct wx *wx)
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
84
switch (wx->device_id) {
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
87
wx->mac.type = wx_mac_sp;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
95
wx->mac.type = wx_mac_aml;
drivers/net/ethernet/wangxun/txgbevf/txgbevf_main.c
98
wx->mac.type = wx_mac_unknown;