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
632
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
671
wx = (w + 2) / 3;
drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c
672
P = 3 * wx - w;
drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c
676
L = (ax + wx - 1) / wx;
drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c
681
Delay = L * wx * (numSlices - 1) + ax + s + lstall + 22;
drivers/gpu/drm/amd/display/dc/dml/dcn31/display_mode_vba_31.c
703
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
741
wx = (w + 2) / 3;
drivers/gpu/drm/amd/display/dc/dml/dcn31/display_mode_vba_31.c
742
P = 3 * wx - w;
drivers/gpu/drm/amd/display/dc/dml/dcn31/display_mode_vba_31.c
746
L = (ax + wx - 1) / wx;
drivers/gpu/drm/amd/display/dc/dml/dcn31/display_mode_vba_31.c
751
Delay = L * wx * (numSlices - 1) + ax + s + lstall + 22;
drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c
721
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
759
wx = (w + 2) / 3;
drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c
760
P = 3 * wx - w;
drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c
764
L = (ax + wx - 1) / wx;
drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c
769
Delay = L * wx * (numSlices - 1) + ax + s + lstall + 22;
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
101
Delay = L * wx * (numSlices - 1) + ax + s + lstall + 22;
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
54
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
91
wx = (w + 2) / 3;
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
92
p = 3 * wx - w;
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c
96
L = (ax + wx - 1) / wx;
drivers/gpu/drm/amd/display/dc/dml2_0/display_mode_core.c
861
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
896
wx = (w + 2) / 3;
drivers/gpu/drm/amd/display/dc/dml2_0/display_mode_core.c
897
p = 3 * wx - w;
drivers/gpu/drm/amd/display/dc/dml2_0/display_mode_core.c
901
L = (ax + wx - 1) / wx;
drivers/gpu/drm/amd/display/dc/dml2_0/display_mode_core.c
906
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
229
obj->wx = data1[6];
drivers/input/touchscreen/raydium_i2c_ts.c
866
u8 wx, wy;
drivers/input/touchscreen/raydium_i2c_ts.c
881
wx = contact[RM_CONTACT_WIDTH_X_POS];
drivers/input/touchscreen/raydium_i2c_ts.c
884
input_report_abs(ts->input, ABS_MT_TOUCH_MAJOR, max(wx, wy));
drivers/input/touchscreen/raydium_i2c_ts.c
885
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
if (!wx->wol_hw_supported)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
274
if (wx->wol & WX_PSR_WKUP_CTL_MAG)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
282
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
283
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
285
if (!wx->wol_hw_supported)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
288
wx->wol = 0;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
290
wx->wol = WX_PSR_WKUP_CTL_MAG;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
291
wr32(wx, WX_PSR_WKUP_CTL, wx->wol);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
292
device_set_wakeup_enable(&pdev->dev, !!(wx->wol));
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
301
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
303
phylink_ethtool_get_pauseparam(wx->phylink, pause);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
310
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
312
return phylink_ethtool_set_pauseparam(wx->phylink, pause);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
321
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
327
ring->rx_pending = wx->rx_ring_count;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
328
ring->tx_pending = wx->tx_ring_count;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
339
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
341
ec->tx_max_coalesced_frames_irq = wx->tx_work_limit;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
343
if (wx->rx_itr_setting <= 1)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
344
ec->rx_coalesce_usecs = wx->rx_itr_setting;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
346
ec->rx_coalesce_usecs = wx->rx_itr_setting >> 2;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
348
if (wx->adaptive_itr) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
354
if (wx->q_vector[0]->tx.count && wx->q_vector[0]->rx.count)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
358
if (wx->tx_itr_setting <= 1)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
359
ec->tx_coalesce_usecs = wx->tx_itr_setting;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
361
ec->tx_coalesce_usecs = wx->tx_itr_setting >> 2;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
367
static void wx_update_rsc(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
369
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
373
if (!test_bit(WX_FLAG_RSC_CAPABLE, wx->flags) ||
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
378
if (wx->rx_itr_setting == 1 ||
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
379
wx->rx_itr_setting > WX_MIN_RSC_ITR) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
380
if (!test_bit(WX_FLAG_RSC_ENABLED, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
381
set_bit(WX_FLAG_RSC_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
382
dev_info(&wx->pdev->dev,
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
388
} else if (test_bit(WX_FLAG_RSC_ENABLED, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
389
clear_bit(WX_FLAG_RSC_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
390
dev_info(&wx->pdev->dev,
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
397
if (need_reset && wx->do_reset)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
398
wx->do_reset(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
406
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
412
if (wx->q_vector[0]->tx.count && wx->q_vector[0]->rx.count) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
422
wx->tx_work_limit = ec->tx_max_coalesced_frames_irq;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
424
switch (wx->mac.type) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
448
wx->adaptive_itr = true;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
449
wx->rx_itr_setting = 1;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
450
wx->tx_itr_setting = 1;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
455
wx->rx_itr_setting = ec->rx_coalesce_usecs << 2;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
457
wx->rx_itr_setting = ec->rx_coalesce_usecs;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
460
wx->tx_itr_setting = ec->tx_coalesce_usecs << 2;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
462
wx->tx_itr_setting = ec->tx_coalesce_usecs;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
464
if (wx->adaptive_itr) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
465
wx->adaptive_itr = false;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
466
wx->rx_itr_setting = rx_itr_param;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
467
wx->tx_itr_setting = tx_itr_param;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
468
} else if (wx->rx_itr_setting == 1 || wx->tx_itr_setting == 1) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
469
wx->adaptive_itr = true;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
472
if (wx->rx_itr_setting != 1)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
473
rx_itr_param = wx->rx_itr_setting;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
475
if (wx->tx_itr_setting != 1)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
476
tx_itr_param = wx->tx_itr_setting;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
479
if (wx->q_vector[0]->tx.count && wx->q_vector[0]->rx.count)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
480
wx->tx_itr_setting = wx->rx_itr_setting;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
482
for (i = 0; i < wx->num_q_vectors; i++) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
483
q_vector = wx->q_vector[i];
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
493
wx_update_rsc(wx);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
499
static unsigned int wx_max_channels(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
503
if (!wx->msix_q_entries) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
508
if (test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
520
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
523
ch->max_combined = wx_max_channels(wx);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
526
if (wx->msix_q_entries) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
532
ch->combined_count = wx->ring_feature[RING_F_RSS].indices;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
534
if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
535
ch->combined_count = wx->ring_feature[RING_F_FDIR].indices;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
543
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
550
if (count > wx_max_channels(wx))
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
553
if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
554
wx->ring_feature[RING_F_FDIR].limit = count;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
556
wx->ring_feature[RING_F_RSS].limit = count;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
558
return wx->setup_tc(dev, netdev_get_num_tc(dev));
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
564
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
566
return wx_rss_indir_tbl_entries(wx);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
576
static void wx_get_reta(struct wx *wx, u32 *indir)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
578
u32 reta_size = wx_rss_indir_tbl_entries(wx);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
579
u16 rss_m = wx->ring_feature[RING_F_RSS].mask;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
581
if (test_bit(WX_FLAG_SRIOV_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
582
rss_m = wx->ring_feature[RING_F_RSS].indices - 1;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
585
indir[i] = wx->rss_indir_tbl[i] & rss_m;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
591
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
596
wx_get_reta(wx, rxfh->indir);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
599
memcpy(rxfh->key, wx->rss_key, WX_RSS_KEY_SIZE);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
609
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
616
reta_entries = wx_rss_indir_tbl_entries(wx);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
620
wx->rss_indir_tbl[i] = rxfh->indir[i];
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
622
wx_store_reta(wx);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
627
memcpy(wx->rss_key, rxfh->key, WX_RSS_KEY_SIZE);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
628
wx_store_rsskey(wx);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
647
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
655
if (wx->rss_flags & entry->flag)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
669
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
670
u8 flags = wx->rss_flags;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
685
if (flags != wx->rss_flags) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
686
wx->rss_flags = flags;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
687
wx_config_rss_field(wx);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
700
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
702
return wx->msg_enable;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
708
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
710
wx->msg_enable = data;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
717
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
737
if (wx->ptp_clock)
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
738
info->phc_index = ptp_clock_index(wx->ptp_clock);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
752
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
754
if (wx->ptp_clock) {
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
755
ts_stats->pkts = wx->tx_hwtstamp_pkts;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
756
ts_stats->lost = wx->tx_hwtstamp_timeouts +
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
757
wx->tx_hwtstamp_skipped +
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
758
wx->rx_hwtstamp_cleared;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
759
ts_stats->err = wx->tx_hwtstamp_errors;
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
767
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
77
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
773
cmd->base.speed = wx->speed;
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
2484
wx->bus.func = PCI_FUNC(pdev->devfn);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2486
wx->bus.func = FIELD_GET(WX_CFG_PORT_ST_LANID,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2487
rd32(wx, WX_CFG_PORT_ST));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2489
if (wx->oem_svid == PCI_VENDOR_ID_WANGXUN ||
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2491
wx->subsystem_vendor_id = pdev->subsystem_vendor;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2492
wx->subsystem_device_id = pdev->subsystem_device;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2494
err = wx_flash_read_dword(wx, 0xfffdc, &ssid);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2496
wx_err(wx, "read of internal subsystem device id failed\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2500
wx->subsystem_device_id = swab16((u16)ssid);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2503
err = wx_init_rss_key(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2505
wx_err(wx, "rss key allocation failed\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2508
wx->rss_flags = WX_RSS_FIELD_IPV4 | WX_RSS_FIELD_IPV4_TCP |
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2511
wx->mac_table = kzalloc_objs(struct wx_mac_addr,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2512
wx->mac.num_rar_entries);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2513
if (!wx->mac_table) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2514
wx_err(wx, "mac_table allocation failed\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2515
kfree(wx->rss_key);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2519
spin_lock_init(&wx->hw_stats_lock);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2520
mutex_init(&wx->reset_lock);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2521
bitmap_zero(wx->state, WX_STATE_NBITS);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2522
bitmap_zero(wx->flags, WX_PF_FLAGS_NBITS);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2523
set_bit(WX_STATE_DOWN, wx->state);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2524
wx->misc_irq_domain = false;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2538
static int wx_find_vlvf_slot(struct wx *wx, u32 vlan)
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
2551
wr32(wx, WX_PSR_VLAN_SWC_IDX, regindex);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2552
bits = rd32(wx, WX_PSR_VLAN_SWC);
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
2580
static int wx_set_vlvf(struct wx *wx, u32 vlan, u32 vind, bool vlan_on,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2593
vt = rd32(wx, WX_CFG_PORT_CTL);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2597
vlvf_index = wx_find_vlvf_slot(wx, vlan);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2601
wr32(wx, WX_PSR_VLAN_SWC_IDX, vlvf_index);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2605
bits = rd32(wx, WX_PSR_VLAN_SWC_VM_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2607
wr32(wx, WX_PSR_VLAN_SWC_VM_L, bits);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2609
bits = rd32(wx, WX_PSR_VLAN_SWC_VM_H);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2611
wr32(wx, WX_PSR_VLAN_SWC_VM_H, bits);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2616
bits = rd32(wx, WX_PSR_VLAN_SWC_VM_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2618
wr32(wx, WX_PSR_VLAN_SWC_VM_L, bits);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2619
bits |= rd32(wx, WX_PSR_VLAN_SWC_VM_H);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2621
bits = rd32(wx, WX_PSR_VLAN_SWC_VM_H);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2623
wr32(wx, WX_PSR_VLAN_SWC_VM_H, bits);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2624
bits |= rd32(wx, WX_PSR_VLAN_SWC_VM_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2629
wr32(wx, WX_PSR_VLAN_SWC, (WX_PSR_VLAN_SWC_VIEN | vlan));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2633
wr32(wx, WX_PSR_VLAN_SWC, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2648
int wx_set_vfta(struct wx *wx, u32 vlan, u32 vind, bool vlan_on)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2669
vfta = wx->mac.vft_shadow[regindex];
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2684
ret = wx_set_vlvf(wx, vlan, vind, vlan_on, &vfta_changed);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2689
wr32(wx, WX_PSR_VLAN_TBL(regindex), vfta);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2690
wx->mac.vft_shadow[regindex] = vfta;
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
2701
static void wx_clear_vfta(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2705
for (offset = 0; offset < wx->mac.vft_size; offset++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2706
wr32(wx, WX_PSR_VLAN_TBL(offset), 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2707
wx->mac.vft_shadow[offset] = 0;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2711
wr32(wx, WX_PSR_VLAN_SWC_IDX, offset);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2712
wr32(wx, WX_PSR_VLAN_SWC, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2713
wr32(wx, WX_PSR_VLAN_SWC_VM_L, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2714
wr32(wx, WX_PSR_VLAN_SWC_VM_H, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2721
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2724
wx_set_vfta(wx, vid, VMDQ_P(0), true);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2725
set_bit(vid, wx->active_vlans);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2733
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2737
wx_set_vfta(wx, vid, VMDQ_P(0), false);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2738
clear_bit(vid, wx->active_vlans);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2744
static void wx_enable_rx_drop(struct wx *wx, struct wx_ring *ring)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2749
srrctl = rd32(wx, WX_PX_RR_CFG(reg_idx));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2752
wr32(wx, WX_PX_RR_CFG(reg_idx), srrctl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2755
static void wx_disable_rx_drop(struct wx *wx, struct wx_ring *ring)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2760
srrctl = rd32(wx, WX_PX_RR_CFG(reg_idx));
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2763
wr32(wx, WX_PX_RR_CFG(reg_idx), srrctl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2766
int wx_fc_enable(struct wx *wx, bool tx_pause, bool rx_pause)
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
2774
if (tx_pause && wx->fc.high_water) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2775
if (!wx->fc.low_water || wx->fc.low_water >= wx->fc.high_water) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2776
wx_err(wx, "Invalid water mark configuration\n");
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2782
wx->fc.mode = wx_fc_full;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2784
wx->fc.mode = wx_fc_rx_pause;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2786
wx->fc.mode = wx_fc_tx_pause;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2788
wx->fc.mode = wx_fc_none;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2791
mflcn_reg = rd32(wx, WX_MAC_RX_FLOW_CTRL);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2794
fccfg_reg = rd32(wx, WX_RDB_RFCC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
280
wr32(wx, WX_MNG_SWFW_SYNC, sem);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2803
wr32(wx, WX_MAC_RX_FLOW_CTRL, mflcn_reg);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2804
wr32(wx, WX_RDB_RFCC, fccfg_reg);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2807
if (tx_pause && wx->fc.high_water) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2808
fcrtl = (wx->fc.low_water << 10);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2809
if (wx->mac.type != wx_mac_sp)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2811
wr32(wx, WX_RDB_RFCL, fcrtl);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2812
fcrth = (wx->fc.high_water << 10) | WX_RDB_RFCH_XOFFE;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2814
wr32(wx, WX_RDB_RFCL, 0);
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
2821
fcrth = rd32(wx, WX_RDB_PB_SZ(0)) - 24576;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2824
wr32(wx, WX_RDB_RFCH, fcrth);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2828
wr32(wx, WX_RDB_RFCV, reg);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2831
wr32(wx, WX_RDB_RFCRT, pause_time / 2);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2839
if (wx->num_rx_queues > 1 && !tx_pause) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2840
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2841
wx_enable_rx_drop(wx, wx->rx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2843
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2844
wx_disable_rx_drop(wx, wx->rx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2851
static void wx_update_xoff_rx_lfc(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2853
struct wx_hw_stats *hwstats = &wx->stats;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2855
if (wx->fc.mode != wx_fc_full &&
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2856
wx->fc.mode != wx_fc_rx_pause)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2859
if (wx->mac.type >= wx_mac_aml)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2860
hwstats->lxoffrxc += rd32_wrap(wx, WX_MAC_LXOFFRXC_AML,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2861
&wx->last_stats.lxoffrxc);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2863
hwstats->lxoffrxc += rd64(wx, WX_MAC_LXOFFRXC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2870
void wx_update_stats(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2872
struct wx_hw_stats *hwstats = &wx->stats;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2879
if (test_bit(WX_STATE_DOWN, wx->state) ||
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2880
test_bit(WX_STATE_RESETTING, wx->state))
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2883
spin_lock(&wx->hw_stats_lock);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2886
for (i = 0; i < wx->num_rx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2887
struct wx_ring *rx_ring = wx->rx_ring[i];
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
2894
wx->non_eop_descs = non_eop_descs;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2895
wx->alloc_rx_buff_failed = alloc_rx_buff_failed;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2896
wx->hw_csum_rx_error = hw_csum_rx_error;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2897
wx->hw_csum_rx_good = hw_csum_rx_good;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2899
if (test_bit(WX_FLAG_RSC_ENABLED, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2903
for (i = 0; i < wx->num_rx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2904
rsc_count += wx->rx_ring[i]->rx_stats.rsc_count;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2905
rsc_flush += wx->rx_ring[i]->rx_stats.rsc_flush;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2907
wx->rsc_count = rsc_count;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2908
wx->rsc_flush = rsc_flush;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2911
for (i = 0; i < wx->num_tx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2912
struct wx_ring *tx_ring = wx->tx_ring[i];
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2917
wx->restart_queue = restart_queue;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2918
wx->tx_busy = tx_busy;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2920
wx_update_xoff_rx_lfc(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2922
hwstats->gprc += rd32(wx, WX_RDM_PKT_CNT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2923
hwstats->gptc += rd32(wx, WX_TDM_PKT_CNT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2924
hwstats->gorc += rd64(wx, WX_RDM_BYTE_CNT_LSB);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2925
hwstats->gotc += rd64(wx, WX_TDM_BYTE_CNT_LSB);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2926
hwstats->tpr += rd64(wx, WX_RX_FRAME_CNT_GOOD_BAD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2927
hwstats->tpt += rd64(wx, WX_TX_FRAME_CNT_GOOD_BAD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2928
hwstats->crcerrs += rd64(wx, WX_RX_CRC_ERROR_FRAMES_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2929
hwstats->rlec += rd64(wx, WX_RX_LEN_ERROR_FRAMES_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2930
hwstats->bprc += rd64(wx, WX_RX_BC_FRAMES_GOOD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2931
hwstats->bptc += rd64(wx, WX_TX_BC_FRAMES_GOOD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2932
hwstats->mprc += rd64(wx, WX_RX_MC_FRAMES_GOOD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2933
hwstats->mptc += rd64(wx, WX_TX_MC_FRAMES_GOOD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2934
hwstats->roc += rd32(wx, WX_RX_OVERSIZE_FRAMES_GOOD);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2935
hwstats->ruc += rd32(wx, WX_RX_UNDERSIZE_FRAMES_GOOD);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2936
if (wx->mac.type >= wx_mac_aml)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2937
hwstats->lxonrxc += rd32_wrap(wx, WX_MAC_LXONRXC_AML,
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2938
&wx->last_stats.lxonrxc);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2940
hwstats->lxonrxc += rd32(wx, WX_MAC_LXONRXC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2941
hwstats->lxontxc += rd32(wx, WX_RDB_LXONTXC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2942
hwstats->lxofftxc += rd32(wx, WX_RDB_LXOFFTXC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2943
hwstats->o2bgptc += rd32(wx, WX_TDM_OS2BMC_CNT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2944
hwstats->b2ospc += rd32(wx, WX_MNG_BMC2OS_CNT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2945
hwstats->o2bspc += rd32(wx, WX_MNG_OS2BMC_CNT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2946
hwstats->b2ogprc += rd32(wx, WX_RDM_BMC2OS_CNT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2947
hwstats->rdmdrop += rd32(wx, WX_RDM_DRP_PKT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2949
if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2950
hwstats->fdirmatch += rd32(wx, WX_RDB_FDIR_MATCH);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2951
hwstats->fdirmiss += rd32(wx, WX_RDB_FDIR_MISS);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2954
for (i = wx->num_vfs * wx->num_rx_queues_per_pool;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2955
i < wx->mac.max_rx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2956
hwstats->qmprc += rd32_wrap(wx, WX_PX_MPRC(i),
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2957
&wx->last_stats.qmprc[i]);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2959
spin_unlock(&wx->hw_stats_lock);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2970
void wx_clear_hw_cntrs(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2974
for (i = wx->num_vfs * wx->num_rx_queues_per_pool;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2975
i < wx->mac.max_rx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2976
wr32(wx, WX_PX_MPRC(i), 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2977
wx->last_stats.qmprc[i] = 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
2980
rd32(wx, WX_RDM_PKT_CNT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2981
rd32(wx, WX_TDM_PKT_CNT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2982
rd64(wx, WX_RDM_BYTE_CNT_LSB);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2983
rd32(wx, WX_TDM_BYTE_CNT_LSB);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2984
rd32(wx, WX_RDM_DRP_PKT);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2985
rd32(wx, WX_RX_UNDERSIZE_FRAMES_GOOD);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2986
rd32(wx, WX_RX_OVERSIZE_FRAMES_GOOD);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2987
rd64(wx, WX_RX_FRAME_CNT_GOOD_BAD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2988
rd64(wx, WX_TX_FRAME_CNT_GOOD_BAD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2989
rd64(wx, WX_RX_MC_FRAMES_GOOD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2990
rd64(wx, WX_TX_MC_FRAMES_GOOD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2991
rd64(wx, WX_RX_BC_FRAMES_GOOD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2992
rd64(wx, WX_TX_BC_FRAMES_GOOD_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2993
rd64(wx, WX_RX_CRC_ERROR_FRAMES_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2994
rd64(wx, WX_RX_LEN_ERROR_FRAMES_L);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2995
rd32(wx, WX_RDB_LXONTXC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2996
rd32(wx, WX_RDB_LXOFFTXC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2997
if (wx->mac.type >= wx_mac_aml) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2998
wr32(wx, WX_MAC_LXONRXC_AML, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
2999
wr32(wx, WX_MAC_LXOFFRXC_AML, 0);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
30
if (wx->mac.type == wx_mac_em)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
3000
wx->last_stats.lxonrxc = 0;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
3001
wx->last_stats.lxoffrxc = 0;
drivers/net/ethernet/wangxun/libwx/wx_hw.c
3003
rd32(wx, WX_MAC_LXONRXC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
3004
rd64(wx, WX_MAC_LXOFFRXC);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
3017
void wx_start_hw(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_hw.c
3022
wx_clear_vfta(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
3023
WX_WRITE_FLUSH(wx);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
3025
for (i = 0; i < wx->mac.max_tx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_hw.c
3026
wr32(wx, WX_TDM_RP_IDX, i);
drivers/net/ethernet/wangxun/libwx/wx_hw.c
3027
wr32(wx, WX_TDM_RP_RATE, 0);
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
1614
wx->ptp_clock) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1615
if (wx->tstamp_config.tx_type == HWTSTAMP_TX_ON &&
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1617
wx->state)) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1620
wx->ptp_tx_skb = skb_get(skb);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1621
wx->ptp_tx_start = jiffies;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1623
wx->tx_hwtstamp_skipped++;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1639
if (test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags) && tx_ring->atr_sample_rate)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1640
wx->atr(tx_ring, first, ptype);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1651
dev_kfree_skb_any(wx->ptp_tx_skb);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1652
wx->ptp_tx_skb = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1653
wx->tx_hwtstamp_errors++;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1654
clear_bit_unlock(WX_STATE_PTP_TX_IN_PROGRESS, wx->state);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1664
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1678
if (r_idx >= wx->num_tx_queues)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1679
r_idx = r_idx % wx->num_tx_queues;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1680
tx_ring = wx->tx_ring[r_idx];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1688
struct wx *wx = q_vector->wx;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1691
if (!wx->adaptive_itr)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1702
if (wx->pdev->is_virtfn)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1745
void wx_napi_enable_all(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1750
for (q_idx = 0; q_idx < wx->num_q_vectors; q_idx++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1751
q_vector = wx->q_vector[q_idx];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1762
void wx_napi_disable_all(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1767
for (q_idx = 0; q_idx < wx->num_q_vectors; q_idx++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1768
q_vector = wx->q_vector[q_idx];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1776
static bool wx_set_vmdq_queues(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1778
u16 vmdq_i = wx->ring_feature[RING_F_VMDQ].limit;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1779
u16 rss_i = wx->ring_feature[RING_F_RSS].limit;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1784
if (!test_bit(WX_FLAG_VMDQ_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1787
vmdq_i += wx->ring_feature[RING_F_VMDQ].offset;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1789
if (test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1816
vmdq_i -= wx->ring_feature[RING_F_VMDQ].offset;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1819
wx->ring_feature[RING_F_VMDQ].indices = vmdq_i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1820
wx->ring_feature[RING_F_VMDQ].mask = vmdq_m;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1823
wx->ring_feature[RING_F_RSS].indices = rss_i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1824
wx->ring_feature[RING_F_RSS].mask = rss_m;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1826
wx->queues_per_pool = rss_i;/*maybe same to num_rx_queues_per_pool*/
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1827
wx->num_rx_pools = vmdq_i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1828
wx->num_rx_queues_per_pool = rss_i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1830
wx->num_rx_queues = vmdq_i * rss_i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1831
wx->num_tx_queues = vmdq_i * rss_i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1844
static void wx_set_rss_queues(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1849
f = &wx->ring_feature[RING_F_RSS];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1850
if (test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1856
if (!(test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags)))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1859
clear_bit(WX_FLAG_FDIR_HASH, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1861
wx->ring_feature[RING_F_FDIR].indices = 1;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1867
f = &wx->ring_feature[RING_F_FDIR];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1871
if (!(test_bit(WX_FLAG_FDIR_PERFECT, wx->flags)))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1872
set_bit(WX_FLAG_FDIR_HASH, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1876
wx->num_rx_queues = f->indices;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1877
wx->num_tx_queues = f->indices;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1880
static void wx_set_num_queues(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1883
wx->num_rx_queues = 1;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1884
wx->num_tx_queues = 1;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1885
wx->queues_per_pool = 1;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1887
if (wx_set_vmdq_queues(wx))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1890
wx_set_rss_queues(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1901
static int wx_acquire_msix_vectors(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1907
nvecs = max(wx->num_rx_queues, wx->num_tx_queues);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1909
nvecs = min_t(int, nvecs, wx->mac.max_msix_vectors);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1911
wx->msix_q_entries = kzalloc_objs(struct msix_entry, nvecs);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1912
if (!wx->msix_q_entries)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1918
wx->msix_entry = kzalloc_objs(struct msix_entry, 1);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1919
if (!wx->msix_entry) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1920
kfree(wx->msix_q_entries);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1921
wx->msix_q_entries = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1925
nvecs = pci_alloc_irq_vectors_affinity(wx->pdev, nvecs,
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1930
wx_err(wx, "Failed to allocate MSI-X interrupts. Err: %d\n", nvecs);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1931
kfree(wx->msix_q_entries);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1932
wx->msix_q_entries = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1933
kfree(wx->msix_entry);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1934
wx->msix_entry = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1940
wx->msix_q_entries[i].entry = i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1941
wx->msix_q_entries[i].vector = pci_irq_vector(wx->pdev, i);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1944
wx->num_q_vectors = nvecs;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1946
wx->msix_entry->entry = nvecs;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1947
wx->msix_entry->vector = pci_irq_vector(wx->pdev, nvecs);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1949
if (test_bit(WX_FLAG_IRQ_VECTOR_SHARED, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1950
wx->msix_entry->entry = 0;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1951
wx->msix_entry->vector = pci_irq_vector(wx->pdev, 0);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1952
wx->msix_q_entries[0].entry = 0;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1953
wx->msix_q_entries[0].vector = pci_irq_vector(wx->pdev, 1);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1966
static int wx_set_interrupt_capability(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1968
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1972
ret = wx_acquire_msix_vectors(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1977
dev_warn(&wx->pdev->dev, "Disabling VMQQ support\n");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1978
clear_bit(WX_FLAG_VMDQ_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1981
dev_warn(&wx->pdev->dev, "Disabling RSS support\n");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1982
wx->ring_feature[RING_F_RSS].limit = 1;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1984
wx_set_num_queues(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1992
wx_err(wx, "Fallback to MSI.\n");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1994
wx_err(wx, "Fallback to INTx.\n");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
1996
wx_err(wx, "Failed to allocate MSI/INTx interrupts. Error: %d\n", nvecs);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2001
wx->num_q_vectors = 1;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2006
static bool wx_cache_ring_vmdq(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2008
struct wx_ring_feature *vmdq = &wx->ring_feature[RING_F_VMDQ];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2009
struct wx_ring_feature *rss = &wx->ring_feature[RING_F_RSS];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2014
if (!test_bit(WX_FLAG_VMDQ_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2017
if (test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2020
for (i = 0; i < wx->num_rx_queues; i++, reg_idx++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2024
wx->rx_ring[i]->reg_idx = reg_idx;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2027
for (i = 0; i < wx->num_tx_queues; i++, reg_idx++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2031
wx->tx_ring[i]->reg_idx = reg_idx;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2036
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2038
wx->rx_ring[i]->reg_idx = reg_idx + i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2041
for (i = 0; i < wx->num_tx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2043
wx->tx_ring[i]->reg_idx = reg_idx + i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2056
static void wx_cache_ring_rss(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2060
if (wx_cache_ring_vmdq(wx))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2063
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2064
wx->rx_ring[i]->reg_idx = i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2066
for (i = 0; i < wx->num_tx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2067
wx->tx_ring[i]->reg_idx = i;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2089
static int wx_alloc_q_vector(struct wx *wx,
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2106
netif_napi_add(wx->netdev, &q_vector->napi,
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2110
wx->q_vector[v_idx] = q_vector;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2111
q_vector->wx = wx;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2119
switch (wx->mac.type) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2133
q_vector->itr = wx->tx_itr_setting ?
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2134
default_itr : wx->tx_itr_setting;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2137
q_vector->itr = wx->rx_itr_setting ?
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2138
default_itr : wx->rx_itr_setting;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2142
ring->dev = &wx->pdev->dev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2143
ring->netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2152
ring->count = wx->tx_ring_count;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2157
wx->tx_ring[txr_idx] = ring;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2169
ring->dev = &wx->pdev->dev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2170
ring->netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2179
ring->count = wx->rx_ring_count;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2183
wx->rx_ring[rxr_idx] = ring;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2205
static void wx_free_q_vector(struct wx *wx, int v_idx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2207
struct wx_q_vector *q_vector = wx->q_vector[v_idx];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2211
wx->tx_ring[ring->queue_index] = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2214
wx->rx_ring[ring->queue_index] = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2216
wx->q_vector[v_idx] = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2228
static int wx_alloc_q_vectors(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2231
unsigned int rxr_remaining = wx->num_rx_queues;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2232
unsigned int txr_remaining = wx->num_tx_queues;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2233
unsigned int q_vectors = wx->num_q_vectors;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2240
err = wx_alloc_q_vector(wx, q_vectors, v_idx,
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2257
wx->num_tx_queues = 0;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2258
wx->num_rx_queues = 0;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2259
wx->num_q_vectors = 0;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2262
wx_free_q_vector(wx, v_idx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2275
static void wx_free_q_vectors(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2277
int v_idx = wx->num_q_vectors;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2279
wx->num_tx_queues = 0;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2280
wx->num_rx_queues = 0;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2281
wx->num_q_vectors = 0;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2284
wx_free_q_vector(wx, v_idx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2287
void wx_reset_interrupt_capability(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2289
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2295
kfree(wx->msix_q_entries);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2296
wx->msix_q_entries = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2297
kfree(wx->msix_entry);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2298
wx->msix_entry = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2300
pci_free_irq_vectors(wx->pdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2311
void wx_clear_interrupt_scheme(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2313
wx_free_q_vectors(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2314
wx_reset_interrupt_capability(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2318
int wx_init_interrupt_scheme(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2323
if (wx->pdev->is_virtfn) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2324
if (wx->set_num_queues)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2325
wx->set_num_queues(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2327
wx_set_num_queues(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2331
ret = wx_set_interrupt_capability(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2333
wx_err(wx, "Allocate irq vectors for failed.\n");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2338
ret = wx_alloc_q_vectors(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2340
wx_err(wx, "Unable to allocate memory for queue vectors.\n");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2341
wx_reset_interrupt_capability(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2345
wx_cache_ring_rss(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2347
set_bit(WX_STATE_DOWN, wx->state);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2367
void wx_free_irq(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2369
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2373
if (!wx->misc_irq_domain)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2374
free_irq(pdev->irq, wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2378
for (vector = 0; vector < wx->num_q_vectors; vector++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2379
struct wx_q_vector *q_vector = wx->q_vector[vector];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2380
struct msix_entry *entry = &wx->msix_q_entries[vector];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2389
if (!wx->misc_irq_domain)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2390
free_irq(wx->msix_entry->vector, wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2400
int wx_setup_isb_resources(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2402
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2404
if (wx->isb_mem)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2407
wx->isb_mem = dma_alloc_coherent(&pdev->dev,
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2409
&wx->isb_dma,
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2411
if (!wx->isb_mem) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2412
wx_err(wx, "Alloc isb_mem failed\n");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2426
void wx_free_isb_resources(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2428
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2431
wx->isb_mem, wx->isb_dma);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2432
wx->isb_mem = NULL;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2436
u32 wx_misc_isb(struct wx *wx, enum wx_isb_idx idx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2440
cur_tag = wx->isb_mem[WX_ISB_HEADER];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2441
wx->isb_tag[idx] = cur_tag;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2443
return (__force u32)cpu_to_le32(wx->isb_mem[idx]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2455
static void wx_set_ivar(struct wx *wx, s8 direction,
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2462
if (test_bit(WX_FLAG_IRQ_VECTOR_SHARED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2466
ivar = rd32(wx, WX_PX_MISC_IVAR);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2469
wr32(wx, WX_PX_MISC_IVAR, ivar);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2474
ivar = rd32(wx, WX_PX_IVAR(queue >> 1));
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2477
wr32(wx, WX_PX_IVAR(queue >> 1), ivar);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2491
struct wx *wx = q_vector->wx;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2495
switch (wx->mac.type) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2510
wr32(wx, WX_PX_ITR(v_idx), itr_reg);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2520
void wx_configure_vectors(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2522
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2528
if (test_bit(WX_FLAG_MULTI_64_FUNC, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2529
if (wx->num_vfs >= 32)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2530
eitrsel = BIT(wx->num_vfs % 32) - 1;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2532
for (i = 0; i < wx->num_vfs; i++)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2535
wr32(wx, WX_PX_ITRSEL, eitrsel);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2539
wr32(wx, WX_PX_GPIE, WX_PX_GPIE_MODEL);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2544
wr32(wx, WX_PX_GPIE, 0);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2550
for (v_idx = 0; v_idx < wx->num_q_vectors; v_idx++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2551
struct wx_q_vector *q_vector = wx->q_vector[v_idx];
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2555
wx_set_ivar(wx, 0, ring->reg_idx, v_idx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2558
wx_set_ivar(wx, 1, ring->reg_idx, v_idx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2563
wx_set_ivar(wx, -1, 0, v_idx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2565
wr32(wx, WX_PX_ITR(v_idx), 1950);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2620
void wx_clean_all_rx_rings(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2624
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2625
wx_clean_rx_ring(wx->rx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2662
static void wx_free_all_rx_resources(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2666
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2667
wx_free_rx_resources(wx->rx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2736
void wx_clean_all_tx_rings(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2740
for (i = 0; i < wx->num_tx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2741
wx_clean_tx_ring(wx->tx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2784
static void wx_free_all_tx_resources(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2788
for (i = 0; i < wx->num_tx_queues; i++)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2789
wx_free_tx_resources(wx->tx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2792
void wx_free_resources(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2794
wx_free_all_rx_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2795
wx_free_all_tx_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2894
static int wx_setup_all_rx_resources(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2898
for (i = 0; i < wx->num_rx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2899
err = wx_setup_rx_resources(wx->rx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2903
wx_err(wx, "Allocation for Rx Queue %u failed\n", i);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2911
wx_free_rx_resources(wx->rx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2917
struct wx *wx = netdev_priv(tx_ring->netdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2919
if (!test_bit(WX_FLAG_TXHEAD_WB_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
2997
static int wx_setup_all_tx_resources(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3001
for (i = 0; i < wx->num_tx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3002
err = wx_setup_tx_resources(wx->tx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3006
wx_err(wx, "Allocation for Tx Queue %u failed\n", i);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3014
wx_free_tx_resources(wx->tx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3018
int wx_setup_resources(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3023
err = wx_setup_all_tx_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3028
err = wx_setup_all_rx_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3032
err = wx_setup_isb_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3039
wx_free_all_rx_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3041
wx_free_all_tx_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3055
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3059
wx_update_stats(wx);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3062
for (i = 0; i < wx->num_rx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3063
struct wx_ring *ring = READ_ONCE(wx->rx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3078
for (i = 0; i < wx->num_tx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3079
struct wx_ring *ring = READ_ONCE(wx->tx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3097
hwstats = &wx->stats;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3108
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3111
wx->rss_enabled = !!(features & NETIF_F_RXHASH);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3112
wx_enable_rss(wx, wx->rss_enabled);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3116
if (changed & NETIF_F_HW_VLAN_CTAG_RX && wx->do_reset)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3117
wx->do_reset(netdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3121
if (test_bit(WX_FLAG_RSC_CAPABLE, wx->flags)) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3123
if (test_bit(WX_FLAG_RSC_ENABLED, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3125
clear_bit(WX_FLAG_RSC_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3126
} else if (!(test_bit(WX_FLAG_RSC_ENABLED, wx->flags))) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3127
if (wx->rx_itr_setting == 1 ||
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3128
wx->rx_itr_setting > WX_MIN_RSC_ITR) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3129
set_bit(WX_FLAG_RSC_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3132
dev_info(&wx->pdev->dev,
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3138
if (!(test_bit(WX_FLAG_FDIR_CAPABLE, wx->flags)))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3147
if (!(test_and_set_bit(WX_FLAG_FDIR_PERFECT, wx->flags)))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3150
clear_bit(WX_FLAG_FDIR_HASH, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3154
if (test_and_clear_bit(WX_FLAG_FDIR_PERFECT, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3158
if (wx->ring_feature[RING_F_RSS].limit <= 1)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3161
set_bit(WX_FLAG_FDIR_HASH, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3166
if (need_reset && wx->do_reset)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3167
wx->do_reset(netdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3186
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3193
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
3202
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
3211
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
3220
if (!test_bit(WX_FLAG_RSC_CAPABLE, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3232
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3237
if (wx->mac.type == wx_mac_em)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3254
void wx_set_ring(struct wx *wx, u32 new_tx_count,
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3264
if (new_tx_count != wx->tx_ring_count) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3265
for (i = 0; i < wx->num_tx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3266
memcpy(&temp_ring[i], wx->tx_ring[i],
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3272
wx_err(wx, "setup new tx resources failed, keep using the old config\n");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3281
for (i = 0; i < wx->num_tx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3282
wx_free_tx_resources(wx->tx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3284
memcpy(wx->tx_ring[i], &temp_ring[i],
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3288
wx->tx_ring_count = new_tx_count;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3292
if (new_rx_count != wx->rx_ring_count) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3293
for (i = 0; i < wx->num_rx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3294
memcpy(&temp_ring[i], wx->rx_ring[i],
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3300
wx_err(wx, "setup new rx resources failed, keep using the old config\n");
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3309
for (i = 0; i < wx->num_rx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3310
wx_free_rx_resources(wx->rx_ring[i]);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3311
memcpy(wx->rx_ring[i], &temp_ring[i],
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3315
wx->rx_ring_count = new_rx_count;
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3320
void wx_service_event_schedule(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3322
if (!test_bit(WX_STATE_DOWN, wx->state) &&
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3323
!test_and_set_bit(WX_STATE_SERVICE_SCHED, wx->state))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3324
queue_work(system_power_efficient_wq, &wx->service_task);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3328
void wx_service_event_complete(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3330
if (WARN_ON(!test_bit(WX_STATE_SERVICE_SCHED, wx->state)))
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3335
clear_bit(WX_STATE_SERVICE_SCHED, wx->state);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3341
struct wx *wx = timer_container_of(wx, t, service_timer);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3345
mod_timer(&wx->service_timer, next_event_offset + jiffies);
drivers/net/ethernet/wangxun/libwx/wx_lib.c
3347
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
879
!test_bit(WX_STATE_DOWN, wx->state)) {
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 (!test_bit(WX_STATE_DOWN, wx->state))
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 (!test_bit(WX_STATE_DOWN, wx->state))
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
1112
struct wx *wx;
drivers/net/ethernet/wangxun/libwx/wx_type.h
1396
void (*configure_fdir)(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1399
int (*ptp_setup_sdp)(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1400
void (*set_num_queues)(struct wx *wx);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1441
rd32m(struct wx *wx, u32 reg, u32 mask)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1445
val = rd32(wx, reg);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1450
wr32m(struct wx *wx, u32 reg, u32 mask, u32 field)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1454
val = rd32(wx, reg);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1457
wr32(wx, reg, val);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1461
rd64(struct wx *wx, u32 reg)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1465
lsb = rd32(wx, reg);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1466
msb = rd32(wx, reg + 4);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1472
rd32ptp(struct wx *wx, u32 reg)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1474
if (wx->mac.type == wx_mac_em)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1475
return rd32(wx, reg);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1477
return rd32(wx, reg + 0xB500);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1481
wr32ptp(struct wx *wx, u32 reg, u32 value)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1483
if (wx->mac.type == wx_mac_em)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1484
return wr32(wx, reg, value);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1486
return wr32(wx, reg + 0xB500, value);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1490
rd32_wrap(struct wx *wx, u32 reg, u32 *last)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1494
val = rd32(wx, reg);
drivers/net/ethernet/wangxun/libwx/wx_type.h
1506
#define wx_err(wx, fmt, arg...) \
drivers/net/ethernet/wangxun/libwx/wx_type.h
1507
dev_err(&(wx)->pdev->dev, fmt, ##arg)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1509
#define wx_dbg(wx, fmt, arg...) \
drivers/net/ethernet/wangxun/libwx/wx_type.h
1510
dev_dbg(&(wx)->pdev->dev, fmt, ##arg)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1512
static inline struct wx *phylink_to_wx(struct phylink_config *config)
drivers/net/ethernet/wangxun/libwx/wx_type.h
1514
return container_of(config, struct wx, phylink_config);
drivers/net/ethernet/wangxun/libwx/wx_type.h
558
#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
102
err = request_irq(wx->msix_entry->vector, wx_msix_misc_vf,
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
103
0, netdev->name, wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
105
wx_err(wx, "request_irq for msix_other failed: %d\n", err);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
114
free_irq(wx->msix_q_entries[vector].vector,
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
115
wx->q_vector[vector]);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
117
wx_reset_interrupt_capability(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
122
void wx_negotiate_api_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
129
spin_lock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
131
err = wx_negotiate_api_version(wx, api[idx]);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
136
spin_unlock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
140
void wx_reset_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
142
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
145
ret = wx_reset_hw_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
147
wx_init_hw_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
148
wx_negotiate_api_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
149
if (is_valid_ether_addr(wx->mac.addr)) {
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
150
eth_hw_addr_set(netdev, wx->mac.addr);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
151
ether_addr_copy(netdev->perm_addr, wx->mac.addr);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
158
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
175
spin_lock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
176
wx_update_xcast_mode_vf(wx, xcast_mode);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
177
wx_update_mc_addr_list_vf(wx, netdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
179
spin_unlock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
189
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
191
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
194
wx_setup_psrtype_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
195
wx_setup_vfmrqc_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
197
spin_lock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
198
ret = wx_rlpml_set_vf(wx,
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
20
wx_clear_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
200
spin_unlock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
202
wx_dbg(wx, "Failed to set MTU at %d\n", netdev->mtu);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
207
for (i = 0; i < wx->num_rx_queues; i++) {
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
208
struct wx_ring *rx_ring = wx->rx_ring[i];
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
210
wx_set_rx_buffer_len_vf(wx, rx_ring);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
212
wx_configure_rx_ring_vf(wx, rx_ring);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
216
void wx_configure_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
218
wx_set_rx_mode_vf(wx->netdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
219
wx_configure_tx_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
220
wx_configure_rx_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
226
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
234
spin_lock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
235
ret = wx_set_rar_vf(wx, 1, (u8 *)addr->sa_data, 1);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
236
spin_unlock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
241
memcpy(wx->mac.addr, addr->sa_data, netdev->addr_len);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
242
memcpy(wx->mac.perm_addr, addr->sa_data, netdev->addr_len);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
249
void wxvf_watchdog_update_link(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
253
if (!test_bit(WX_FLAG_NEED_UPDATE_LINK, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
256
spin_lock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
257
err = wx_check_mac_link_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
258
spin_unlock_bh(&wx->mbx.mbx_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
260
wx->link = false;
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
261
set_bit(WX_FLAG_NEED_DO_RESET, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
263
clear_bit(WX_FLAG_NEED_UPDATE_LINK, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
267
static void wxvf_irq_enable(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
269
wr32(wx, WX_VXIMC, wx->eims_enable_mask);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
272
static void wxvf_up_complete(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
275
netif_carrier_off(wx->netdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
276
mod_timer(&wx->service_timer, jiffies + HZ);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
277
set_bit(WX_FLAG_NEED_UPDATE_LINK, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
279
wx_configure_msix_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
281
clear_bit(WX_STATE_DOWN, wx->state);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
282
wx_napi_enable_all(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
285
wr32(wx, WX_VXICR, U32_MAX);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
286
wxvf_irq_enable(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
288
netif_tx_start_all_queues(wx->netdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
293
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
296
err = wx_setup_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
299
wx_configure_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
301
err = wx_request_msix_irqs_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
306
err = netif_set_real_num_tx_queues(netdev, wx->num_tx_queues);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
310
err = netif_set_real_num_rx_queues(netdev, wx->num_rx_queues);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
314
wxvf_up_complete(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
318
wx_free_irq(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
320
wx_free_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
322
wx_reset_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
327
static void wxvf_down(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
329
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
331
if (test_and_set_bit(WX_STATE_DOWN, wx->state))
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
334
timer_delete_sync(&wx->service_timer);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
338
wx_napi_disable_all(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
339
wx_reset_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
341
wx_clean_all_tx_rings(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
342
wx_clean_all_rx_rings(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
345
static void wxvf_reinit_locked(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
347
mutex_lock(&wx->reset_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
348
set_bit(WX_STATE_RESETTING, wx->state);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
350
wxvf_down(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
351
wx_free_irq(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
352
wx_configure_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
353
wx_request_msix_irqs_vf(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
354
wxvf_up_complete(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
355
clear_bit(WX_STATE_RESETTING, wx->state);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
356
mutex_unlock(&wx->reset_lock);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
359
static void wxvf_reset_subtask(struct wx *wx)
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
361
if (!test_bit(WX_FLAG_NEED_DO_RESET, wx->flags))
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
363
clear_bit(WX_FLAG_NEED_DO_RESET, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
366
if (test_bit(WX_STATE_RESETTING, wx->state) ||
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
367
test_bit(WX_STATE_DOWN, wx->state)) {
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
371
wxvf_reinit_locked(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
377
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
379
wxvf_down(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
380
wx_free_irq(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
381
wx_free_resources(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
387
static void wxvf_link_config_subtask(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
389
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
39
wx_init_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
391
wxvf_watchdog_update_link(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
392
if (wx->link) {
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
397
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
408
struct wx *wx = container_of(work, struct wx, service_task);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
410
wxvf_link_config_subtask(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
411
wxvf_reset_subtask(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
412
wx_service_event_complete(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
415
void wxvf_init_service(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
417
timer_setup(&wx->service_timer, wx_service_timer, 0);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
418
INIT_WORK(&wx->service_task, wxvf_service_task);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
419
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
netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
53
timer_shutdown_sync(&wx->service_timer);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
54
cancel_work_sync(&wx->service_task);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
55
kfree(wx->vfinfo);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
56
kfree(wx->rss_key);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
57
kfree(wx->mac_table);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
58
wx_clear_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
67
struct wx *wx = data;
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
69
set_bit(WX_FLAG_NEED_UPDATE_LINK, wx->flags);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
71
if (!test_bit(WX_STATE_DOWN, wx->state))
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
72
wr32(wx, WX_VXIMC, wx->eims_other);
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
77
int wx_request_msix_irqs_vf(struct wx *wx)
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
79
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
82
for (vector = 0; vector < wx->num_q_vectors; vector++) {
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
83
struct wx_q_vector *q_vector = wx->q_vector[vector];
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
84
struct msix_entry *entry = &wx->msix_q_entries[vector];
drivers/net/ethernet/wangxun/libwx/wx_vf_common.c
96
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
20
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
31
if (new_tx_count == wx->tx_ring_count &&
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
32
new_rx_count == wx->rx_ring_count)
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
35
mutex_lock(&wx->reset_lock);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
36
set_bit(WX_STATE_RESETTING, wx->state);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
38
if (!netif_running(wx->netdev)) {
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
39
for (i = 0; i < wx->num_tx_queues; i++)
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
40
wx->tx_ring[i]->count = new_tx_count;
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
41
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
42
wx->rx_ring[i]->count = new_rx_count;
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
43
wx->tx_ring_count = new_tx_count;
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
44
wx->rx_ring_count = new_rx_count;
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
50
i = max_t(int, wx->num_tx_queues, wx->num_rx_queues);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
57
ngbe_down(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
59
wx_set_ring(wx, new_tx_count, new_rx_count, temp_ring);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
62
wx_configure(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
63
ngbe_up(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
66
clear_bit(WX_STATE_RESETTING, wx->state);
drivers/net/ethernet/wangxun/ngbe/ngbe_ethtool.c
67
mutex_unlock(&wx->reset_lock);
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
147
struct wx *wx = container_of(work, struct wx, service_task);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
149
wx_update_stats(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
151
wx_service_event_complete(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
154
static void ngbe_init_service(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
156
timer_setup(&wx->service_timer, wx_service_timer, 0);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
157
INIT_WORK(&wx->service_task, ngbe_service_task);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
158
clear_bit(WX_STATE_SERVICE_SCHED, wx->state);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
166
static void ngbe_irq_enable(struct wx *wx, bool queues)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
173
wr32(wx, WX_GPIO_DDR, WX_GPIO_DDR_0);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
174
wr32(wx, WX_GPIO_INTEN, WX_GPIO_INTEN_0 | WX_GPIO_INTEN_1);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
175
wr32(wx, WX_GPIO_INTTYPE_LEVEL, 0x0);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
176
wr32(wx, WX_GPIO_POLARITY, wx->gpio_ctrl ? 0 : 0x3);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
178
wr32(wx, WX_PX_MISC_IEN, mask);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
182
wx_intr_enable(wx, NGBE_INTR_ALL);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
184
wx_intr_enable(wx, NGBE_INTR_MISC(wx));
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
195
struct wx *wx = data;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
199
q_vector = wx->q_vector[0];
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
200
pdev = wx->pdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
202
eicr = wx_misc_isb(wx, WX_ISB_VEC0);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
207
if (!test_bit(WX_STATE_DOWN, wx->state))
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
208
ngbe_irq_enable(wx, true);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
211
wx->isb_mem[WX_ISB_VEC0] = 0;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
213
wr32(wx, WX_PX_INTA, 1);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
215
eicr_misc = wx_misc_isb(wx, WX_ISB_MISC);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
217
wx_ptp_check_pps_event(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
219
wx->isb_mem[WX_ISB_MISC] = 0;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
223
if (!test_bit(WX_STATE_DOWN, wx->state))
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
224
ngbe_irq_enable(wx, false);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
229
static irqreturn_t __ngbe_msix_misc(struct wx *wx, u32 eicr)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
232
wx_msg_task(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
235
wx_ptp_check_pps_event(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
238
if (!test_bit(WX_STATE_DOWN, wx->state))
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
239
ngbe_irq_enable(wx, false);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
246
struct wx *wx = data;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
249
eicr = wx_misc_isb(wx, WX_ISB_MISC);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
251
return __ngbe_msix_misc(wx, eicr);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
257
struct wx *wx = data;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
260
eicr = wx_misc_isb(wx, WX_ISB_MISC);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
263
q_vector = wx->q_vector[0];
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
265
if (!test_bit(WX_STATE_DOWN, wx->state))
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
266
ngbe_irq_enable(wx, true);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
270
return __ngbe_msix_misc(wx, eicr);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
280
static int ngbe_request_msix_irqs(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
282
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
285
for (vector = 0; vector < wx->num_q_vectors; vector++) {
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
286
struct wx_q_vector *q_vector = wx->q_vector[vector];
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
287
struct msix_entry *entry = &wx->msix_q_entries[vector];
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
299
wx_err(wx, "request_irq failed for MSIX interrupt %s Error: %d\n",
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
309
if (test_bit(WX_FLAG_IRQ_VECTOR_SHARED, wx->flags))
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
310
err = request_irq(wx->msix_entry->vector,
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
311
ngbe_misc_and_queue, 0, netdev->name, wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
313
err = request_irq(wx->msix_entry->vector,
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
314
ngbe_msix_misc, 0, netdev->name, wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
317
wx_err(wx, "request_irq for msix_other failed: %d\n", err);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
326
free_irq(wx->msix_q_entries[vector].vector,
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
327
wx->q_vector[vector]);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
329
wx_reset_interrupt_capability(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
340
static int ngbe_request_irq(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
342
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
343
struct pci_dev *pdev = wx->pdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
347
err = ngbe_request_msix_irqs(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
350
netdev->name, wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
353
netdev->name, wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
356
wx_err(wx, "request_irq failed, Error %d\n", err);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
361
static void ngbe_disable_device(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
363
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
366
if (test_and_set_bit(WX_STATE_DOWN, wx->state))
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
369
if (wx->num_vfs) {
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
371
wr32(wx, WX_PX_ITRSEL, 0);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
374
for (i = 0; i < wx->num_vfs; i++)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
375
wx->vfinfo[i].clear_to_send = 0;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
376
wx->notify_down = true;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
378
wx_ping_all_vfs_with_link_status(wx, false);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
379
wx->notify_down = false;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
382
wx_disable_vf_rx_tx(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
386
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
388
wx_disable_rx_queue(wx, wx->rx_ring[i]);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
390
wx_disable_rx(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
391
wx_napi_disable_all(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
395
timer_delete_sync(&wx->service_timer);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
396
cancel_work_sync(&wx->service_task);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
398
if (wx->gpio_ctrl)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
399
ngbe_sfp_modules_txrx_powerctl(wx, false);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
400
wx_irq_disable(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
402
for (i = 0; i < wx->num_tx_queues; i++) {
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
403
u8 reg_idx = wx->tx_ring[i]->reg_idx;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
405
wr32(wx, WX_PX_TR_CFG(reg_idx), WX_PX_TR_CFG_SWFLSH);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
409
static void ngbe_reset(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
411
wx_flush_sw_mac_table(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
412
wx_mac_set_default_filter(wx, wx->mac.addr);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
413
if (test_bit(WX_STATE_PTP_RUNNING, wx->state))
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
414
wx_ptp_reset(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
417
void ngbe_down(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
419
phylink_stop(wx->phylink);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
420
ngbe_disable_device(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
421
ngbe_reset(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
422
wx_clean_all_tx_rings(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
423
wx_clean_all_rx_rings(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
426
void ngbe_up(struct wx *wx)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
428
wx_configure_vectors(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
432
clear_bit(WX_STATE_DOWN, wx->state);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
433
wx_napi_enable_all(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
435
netif_tx_start_all_queues(wx->netdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
436
mod_timer(&wx->service_timer, jiffies);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
439
rd32(wx, WX_PX_IC(0));
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
440
rd32(wx, WX_PX_MISC_IC);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
441
ngbe_irq_enable(wx, true);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
442
if (wx->gpio_ctrl)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
443
ngbe_sfp_modules_txrx_powerctl(wx, true);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
445
phylink_start(wx->phylink);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
447
wr32m(wx, WX_CFG_PORT_CTL,
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
449
if (wx->num_vfs)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
450
wx_ping_all_vfs_with_link_status(wx, false);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
464
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
467
wx_control_hw(wx, true);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
469
err = wx_setup_resources(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
473
wx_configure(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
475
err = ngbe_request_irq(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
479
err = phylink_connect_phy(wx->phylink, wx->phydev);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
483
err = netif_set_real_num_tx_queues(netdev, wx->num_tx_queues);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
487
err = netif_set_real_num_rx_queues(netdev, wx->num_rx_queues);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
491
wx_ptp_init(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
493
ngbe_up(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
497
phylink_disconnect_phy(wx->phylink);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
499
wx_free_irq(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
501
wx_free_isb_resources(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
502
wx_free_resources(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
519
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
521
wx_ptp_stop(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
522
ngbe_down(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
523
wx_free_irq(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
524
wx_free_isb_resources(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
525
wx_free_resources(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
526
phylink_disconnect_phy(wx->phylink);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
527
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
534
struct wx *wx = pci_get_drvdata(pdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
536
u32 wufc = wx->wol;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
538
netdev = wx->netdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
544
wx_clear_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
549
wx_configure_rx(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
550
wr32(wx, WX_PSR_WKUP_CTL, wufc);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
552
wr32(wx, WX_PSR_WKUP_CTL, 0);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
556
wx_control_hw(wx, false);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
563
struct wx *wx = pci_get_drvdata(pdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
566
wake = !!wx->wol;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
58
wx->mac.type = wx_mac_em;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
585
struct wx *wx = netdev_priv(dev);
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
594
wx_clear_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
60
ncsi_mask = wx->subsystem_device_id & WX_NCSI_MASK;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
601
wx_init_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
61
wol_mask = wx->subsystem_device_id & WX_WOL_MASK;
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
643
struct wx *wx = NULL;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
673
sizeof(struct wx),
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
68
wx->wol_hw_supported = (wol_mask == WX_WOL_SUP) ? 1 : 0;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
683
wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
684
wx->netdev = netdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
685
wx->pdev = pdev;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
686
wx->msg_enable = BIT(3) - 1;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
688
wx->hw_addr = devm_ioremap(&pdev->dev,
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
69
wx->ncsi_enabled = (ncsi_mask == WX_NCSI_SUP ||
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
691
if (!wx->hw_addr) {
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
700
wx->driver_name = ngbe_driver_name;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
724
wx->bd_number = func_nums;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
726
err = ngbe_sw_init(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
731
err = wx_check_flash_load(wx, NGBE_SPI_ILDR_STATUS_PERST);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
734
err = wx_check_flash_load(wx, NGBE_SPI_ILDR_STATUS_PWRRST);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
738
err = wx_mng_present(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
744
err = ngbe_reset_hw(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
750
if (wx->bus.func == 0) {
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
751
wr32(wx, NGBE_CALSUM_CAP_STATUS, 0x0);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
752
wr32(wx, NGBE_EEPROM_VERSION_STORE_REG, 0x0);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
754
e2rom_cksum_cap = rd32(wx, NGBE_CALSUM_CAP_STATUS);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
755
saved_ver = rd32(wx, NGBE_EEPROM_VERSION_STORE_REG);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
758
wx_init_eeprom_params(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
759
if (wx->bus.func == 0 || e2rom_cksum_cap == 0) {
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
761
err = ngbe_eeprom_chksum_hostif(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
769
wx->wol = 0;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
77
wx->gpio_ctrl = 1;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
770
if (wx->wol_hw_supported)
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
771
wx->wol = WX_PSR_WKUP_CTL_MAG;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
773
netdev->ethtool->wol_enabled = !!(wx->wol);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
774
wr32(wx, WX_PSR_WKUP_CTL, wx->wol);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
775
device_set_wakeup_enable(&pdev->dev, wx->wol);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
783
wx_read_ee_hostif(wx,
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
784
wx->eeprom.sw_region_offset + NGBE_EEPROM_VERSION_H,
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
787
wx_read_ee_hostif(wx,
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
788
wx->eeprom.sw_region_offset + NGBE_EEPROM_VERSION_L,
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
791
wr32(wx, NGBE_EEPROM_VERSION_STORE_REG, etrack_id);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
793
snprintf(wx->eeprom_id, sizeof(wx->eeprom_id),
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
796
eth_hw_addr_set(netdev, wx->mac.perm_addr);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
797
wx_mac_set_default_filter(wx, wx->mac.perm_addr);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
799
ngbe_init_service(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
80
wx->gpio_ctrl = 0;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
801
err = wx_init_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
806
err = ngbe_mdio_init(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
814
pci_set_drvdata(pdev, wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
819
phylink_destroy(wx->phylink);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
820
wx_control_hw(wx, false);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
822
wx_clear_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
824
timer_delete_sync(&wx->service_timer);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
825
cancel_work_sync(&wx->service_task);
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
848
struct wx *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
852
wx_disable_sriov(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
855
timer_shutdown_sync(&wx->service_timer);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
856
cancel_work_sync(&wx->service_task);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
858
phylink_destroy(wx->phylink);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
862
kfree(wx->rss_key);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
863
kfree(wx->mac_table);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
864
wx_clear_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
882
struct wx *wx;
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
885
wx = pci_get_drvdata(pdev);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
886
netdev = wx->netdev;
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
890
wx_err(wx, "Cannot enable PCI device from suspend\n");
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
896
ngbe_reset_hw(wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
898
err = wx_init_interrupt_scheme(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
125
void ngbe_down(struct wx *wx);
drivers/net/ethernet/wangxun/ngbe/ngbe_type.h
126
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
101
value = rd32a(wx, WX_FW2SW_MBOX, i + offset);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
111
static int txgbe_identify_module_hostif(struct wx *wx,
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
119
return wx_host_interface_command(wx, (u32 *)buffer,
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
124
static int txgbe_set_phy_link_hostif(struct wx *wx, int speed, int autoneg, int duplex)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
152
return wx_host_interface_command(wx, (u32 *)&buffer, sizeof(buffer),
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
156
static void txgbe_get_link_capabilities(struct wx *wx, int *speed,
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
159
struct txgbe *txgbe = wx->priv;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
174
static void txgbe_get_mac_link(struct wx *wx, int *speed)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
178
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
191
void txgbe_set_phy_link(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
195
txgbe_get_link_capabilities(wx, &speed, &autoneg, &duplex);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
197
err = txgbe_set_phy_link_hostif(wx, speed, autoneg, duplex);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
199
wx_err(wx, "Failed to setup link\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
202
static int txgbe_sfp_to_linkmodes(struct wx *wx, struct txgbe_sff_id *id)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
206
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
248
wx_err(wx, "unsupported SFP module\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
259
wx->phylink_config.supported_interfaces,
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
263
set_bit(WX_FLAG_NEED_LINK_CONFIG, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
269
static int txgbe_qsfp_to_linkmodes(struct wx *wx, struct txgbe_sff_id *id)
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
273
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
313
wx_err(wx, "unsupported QSFP module\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
324
wx->phylink_config.supported_interfaces,
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
328
set_bit(WX_FLAG_NEED_LINK_CONFIG, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
33
wr32(wx, WX_GPIO_EOI, BIT(i));
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
334
int txgbe_identify_module(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
342
if (wx->mac.type == wx_mac_aml40)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
347
gpio = rd32(wx, WX_GPIO_EXT);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
351
err = txgbe_identify_module_hostif(wx, &buffer);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
353
wx_err(wx, "Failed to identify module\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
359
return txgbe_sfp_to_linkmodes(wx, id);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
364
return txgbe_qsfp_to_linkmodes(wx, id);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
366
wx_err(wx, "Invalid module\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
370
void txgbe_setup_link(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
372
struct txgbe *txgbe = wx->priv;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
377
set_bit(WX_FLAG_NEED_MODULE_RESET, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
378
wx_service_event_schedule(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
384
struct wx *wx = phylink_to_wx(config);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
387
txgbe_get_mac_link(wx, &speed);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
393
static void txgbe_reconfig_mac(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
397
wdg = rd32(wx, WX_MAC_WDG_TIMEOUT);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
398
fc = rd32(wx, WX_MAC_RX_FLOW_CTRL);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
40
struct wx *wx = txgbe->wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
400
wr32(wx, WX_MIS_RST, TXGBE_MIS_RST_MAC_RST(wx->bus.func));
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
404
wr32m(wx, TXGBE_MAC_MISC_CTL, TXGBE_MAC_MISC_CTL_LINK_STS_MOD,
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
406
wx_reset_mac(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
408
wr32(wx, WX_MAC_WDG_TIMEOUT, wdg);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
409
wr32(wx, WX_MAC_RX_FLOW_CTRL, fc);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
419
struct wx *wx = phylink_to_wx(config);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
422
wx_fc_enable(wx, tx_pause, rx_pause);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
424
txgbe_reconfig_mac(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
425
txgbe_enable_sec_tx_path(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
427
txcfg = rd32(wx, TXGBE_AML_MAC_TX_CFG);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
43
if (wx->mac.type == wx_mac_aml40)
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
444
wr32m(wx, WX_MAC_RX_CFG, WX_MAC_RX_CFG_RE, WX_MAC_RX_CFG_RE);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
445
wr32(wx, TXGBE_AML_MAC_TX_CFG, txcfg | TXGBE_AML_MAC_TX_CFG_TE);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
447
wx->speed = speed;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
448
wx->last_rx_ptp_check = jiffies;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
449
if (test_bit(WX_STATE_PTP_RUNNING, wx->state))
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
450
wx_ptp_reset_cyclecounter(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
452
wx_ping_all_vfs_with_link_status(wx, true);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
459
struct wx *wx = phylink_to_wx(config);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
461
wr32m(wx, TXGBE_AML_MAC_TX_CFG, TXGBE_AML_MAC_TX_CFG_TE, 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
462
wr32m(wx, WX_MAC_RX_CFG, WX_MAC_RX_CFG_RE, 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
464
wx->speed = SPEED_UNKNOWN;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
465
if (test_bit(WX_STATE_PTP_RUNNING, wx->state))
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
466
wx_ptp_reset_cyclecounter(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
468
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
486
struct wx *wx = txgbe->wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
49
status = rd32(wx, WX_GPIO_INTSTATUS);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
491
config = &wx->phylink_config;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
492
config->dev = &wx->netdev->dev;
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
498
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
519
wx_err(wx, "Failed to set fixed link\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
52
wr32(wx, WX_GPIO_EOI, mod_rst);
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.c
524
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.h
10
int txgbe_read_eeprom_hostif(struct wx *wx,
drivers/net/ethernet/wangxun/txgbe/txgbe_aml.h
13
void 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
185
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
187
return wx->num_rx_queues;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
19
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
193
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
194
struct txgbe *txgbe = wx->priv;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
20
struct txgbe *txgbe = wx->priv;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
267
wx_dbg(txgbe->wx, "FDIR entry already exist\n");
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
struct wx *wx = txgbe->wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
298
if (netif_running(wx->netdev) &&
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
301
err = txgbe_fdir_erase_perfect_filter(wx,
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
344
struct wx *wx = txgbe->wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
349
if (!(test_bit(WX_FLAG_FDIR_PERFECT, wx->flags)))
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
361
if (!vf && ring >= wx->num_rx_queues)
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
363
else if (vf && (vf > wx->num_vfs ||
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
364
ring >= wx->num_rx_queues_per_pool))
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
369
queue = wx->rx_ring[ring]->reg_idx;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
371
queue = ((vf - 1) * wx->num_rx_queues_per_pool) + ring;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
376
wx_err(wx, "Location out of range\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
392
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
456
err = txgbe_fdir_set_input_mask(wx, &mask);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
460
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
475
if (netif_running(wx->netdev)) {
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
476
err = txgbe_fdir_write_perfect_filter(wx, &input->filter,
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
510
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
511
struct txgbe *txgbe = wx->priv;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
533
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
537
if (!test_bit(WX_FLAG_SWFW_RING, wx->flags))
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
546
err = txgbe_read_eeprom_hostif(wx, &buffer, page_data->length,
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
549
wx_err(wx, "Failed to read module EEPROM\n");
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
56
new_rx_count == wx->rx_ring_count)
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
59
mutex_lock(&wx->reset_lock);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
60
set_bit(WX_STATE_RESETTING, wx->state);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
62
if (!netif_running(wx->netdev)) {
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
63
for (i = 0; i < wx->num_tx_queues; i++)
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
64
wx->tx_ring[i]->count = new_tx_count;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
65
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
66
wx->rx_ring[i]->count = new_rx_count;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
67
wx->tx_ring_count = new_tx_count;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
68
wx->rx_ring_count = new_rx_count;
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
74
i = max_t(int, wx->num_tx_queues, wx->num_rx_queues);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
81
txgbe_down(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
83
wx_set_ring(wx, new_tx_count, new_rx_count, temp_ring);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
86
txgbe_up(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
89
clear_bit(WX_STATE_RESETTING, wx->state);
drivers/net/ethernet/wangxun/txgbe/txgbe_ethtool.c
90
mutex_unlock(&wx->reset_lock);
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 (!test_bit(WX_STATE_DOWN, wx->state))
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
104
set_bit(WX_FLAG_NEED_MODULE_RESET, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
107
static void txgbe_link_config_subtask(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
109
if (!test_and_clear_bit(WX_FLAG_NEED_LINK_CONFIG, wx->flags))
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
112
txgbe_set_phy_link(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
121
struct wx *wx = container_of(work, struct wx, service_task);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
123
txgbe_module_detection_subtask(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
124
txgbe_link_config_subtask(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
125
wx_update_stats(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
127
wx_service_event_complete(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
130
static void txgbe_init_service(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
132
timer_setup(&wx->service_timer, wx_service_timer, 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
133
INIT_WORK(&wx->service_task, txgbe_service_task);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
134
clear_bit(WX_STATE_SERVICE_SCHED, wx->state);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
137
static void txgbe_up_complete(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
139
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
141
wx_control_hw(wx, true);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
142
wx_configure_vectors(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
146
clear_bit(WX_STATE_DOWN, wx->state);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
147
wx_napi_enable_all(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
149
switch (wx->mac.type) {
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
151
txgbe_setup_link(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
152
phylink_start(wx->phylink);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
156
wr32m(wx, WX_GPIO_DR, TXGBE_GPIOBIT_1, 0);
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
161
phylink_start(wx->phylink);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
168
rd32(wx, WX_PX_IC(0));
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
169
rd32(wx, WX_PX_IC(1));
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
170
rd32(wx, WX_PX_MISC_IC);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
171
txgbe_irq_enable(wx, true);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
175
mod_timer(&wx->service_timer, jiffies);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
178
wr32m(wx, WX_CFG_PORT_CTL, WX_CFG_PORT_CTL_PFRSTD,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
181
wx_set_all_vfs(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
184
static void txgbe_reset(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
186
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
190
err = txgbe_reset_hw(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
192
wx_err(wx, "Hardware Error: %d\n", err);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
194
wx_start_hw(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
196
memcpy(old_addr, &wx->mac_table[0].addr, netdev->addr_len);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
197
wx_flush_sw_mac_table(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
198
wx_mac_set_default_filter(wx, old_addr);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
200
if (test_bit(WX_STATE_PTP_RUNNING, wx->state))
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
201
wx_ptp_reset(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
204
static void txgbe_disable_device(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
206
struct net_device *netdev = wx->netdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
209
if (test_and_set_bit(WX_STATE_DOWN, wx->state))
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
212
wx_disable_pcie_master(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
214
wx_disable_rx(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
217
for (i = 0; i < wx->num_rx_queues; i++)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
219
wx_disable_rx_queue(wx, wx->rx_ring[i]);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
224
wx_irq_disable(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
225
wx_napi_disable_all(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
227
timer_delete_sync(&wx->service_timer);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
228
cancel_work_sync(&wx->service_task);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
230
if (wx->bus.func < 2)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
231
wr32m(wx, TXGBE_MIS_PRB_CTL, TXGBE_MIS_PRB_CTL_LAN_UP(wx->bus.func), 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
233
wx_err(wx, "%s: invalid bus lan id %d\n",
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
234
__func__, wx->bus.func);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
236
if (wx->num_vfs) {
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
238
wr32(wx, WX_PX_ITRSEL, 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
240
for (i = 0; i < wx->num_vfs; i++)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
241
wx->vfinfo[i].clear_to_send = 0;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
243
wx_set_all_vfs(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
246
if (!(((wx->subsystem_device_id & WX_NCSI_MASK) == WX_NCSI_SUP) ||
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
247
((wx->subsystem_device_id & WX_WOL_MASK) == WX_WOL_SUP))) {
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
249
wr32m(wx, WX_MAC_TX_CFG, WX_MAC_TX_CFG_TE, 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
253
for (i = 0; i < wx->num_tx_queues; i++) {
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
254
u8 reg_idx = wx->tx_ring[i]->reg_idx;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
256
wr32(wx, WX_PX_TR_CFG(reg_idx), WX_PX_TR_CFG_SWFLSH);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
260
wr32m(wx, WX_TDM_CTL, WX_TDM_CTL_TE, 0);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
263
void txgbe_down(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
265
txgbe_disable_device(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
266
txgbe_reset(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
268
switch (wx->mac.type) {
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
270
phylink_stop(wx->phylink);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
273
phylink_stop(wx->phylink);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
275
wr32m(wx, WX_GPIO_DR, TXGBE_GPIOBIT_1, TXGBE_GPIOBIT_1);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
278
phylink_stop(wx->phylink);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
284
wx_clean_all_tx_rings(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
285
wx_clean_all_rx_rings(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
288
void txgbe_up(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
290
wx_configure(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
291
wx_ptp_init(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
292
txgbe_up_complete(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
299
static void txgbe_init_type_code(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
301
u8 device_type = wx->subsystem_device_id & 0xF0;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
303
switch (wx->device_id) {
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
306
wx->mac.type = wx_mac_sp;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
312
wx->mac.type = wx_mac_aml;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
316
wx->mac.type = wx_mac_aml40;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
319
wx->mac.type = wx_mac_unknown;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
325
wx->media_type = wx_media_fiber;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
329
wx->media_type = wx_media_copper;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
334
wx->media_type = wx_media_backplane;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
337
if (wx->bus.func == 0)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
338
wx->media_type = wx_media_fiber;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
340
wx->media_type = wx_media_copper;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
343
wx->media_type = wx_media_unknown;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
352
static int txgbe_sw_init(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
357
wx->mac.num_rar_entries = TXGBE_RAR_ENTRIES;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
358
wx->mac.max_tx_queues = TXGBE_MAX_TXQ;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
359
wx->mac.max_rx_queues = TXGBE_MAX_RXQ;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
360
wx->mac.mcft_size = TXGBE_MC_TBL_SIZE;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
361
wx->mac.vft_size = TXGBE_VFT_TBL_SIZE;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
362
wx->mac.rx_pb_size = TXGBE_RX_PB_SIZE;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
363
wx->mac.tx_pb_size = TXGBE_TDB_PB_SZ;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
366
err = wx_sw_init(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
370
txgbe_init_type_code(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
373
wx->max_q_vectors = TXGBE_MAX_MSIX_VECTORS;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
374
err = wx_get_pcie_msix_counts(wx, &msix_count, TXGBE_MAX_MSIX_VECTORS);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
376
wx_err(wx, "Do not support MSI-X\n");
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
377
wx->mac.max_msix_vectors = msix_count;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
379
wx->ring_feature[RING_F_RSS].limit = min_t(int, TXGBE_MAX_RSS_INDICES,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
381
wx->rss_enabled = true;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
383
wx->ring_feature[RING_F_FDIR].limit = min_t(int, TXGBE_MAX_FDIR_INDICES,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
385
set_bit(WX_FLAG_FDIR_CAPABLE, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
386
set_bit(WX_FLAG_FDIR_HASH, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
387
wx->atr_sample_rate = TXGBE_DEFAULT_ATR_SAMPLE_RATE;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
388
wx->atr = txgbe_atr;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
389
wx->configure_fdir = txgbe_configure_fdir;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
391
set_bit(WX_FLAG_RSC_CAPABLE, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
392
set_bit(WX_FLAG_RSC_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
393
set_bit(WX_FLAG_MULTI_64_FUNC, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
396
wx->adaptive_itr = true;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
397
wx->rx_itr_setting = 1;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
398
wx->tx_itr_setting = 1;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
401
wx->tx_ring_count = TXGBE_DEFAULT_TXD;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
402
wx->rx_ring_count = TXGBE_DEFAULT_RXD;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
403
wx->mbx.size = WX_VXMAILBOX_SIZE;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
406
wx->tx_work_limit = TXGBE_DEFAULT_TX_WORK;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
407
wx->rx_work_limit = TXGBE_DEFAULT_RX_WORK;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
409
wx->setup_tc = txgbe_setup_tc;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
410
wx->do_reset = txgbe_do_reset;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
411
set_bit(0, &wx->fwd_bitmask);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
413
switch (wx->mac.type) {
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
418
set_bit(WX_FLAG_RX_MERGE_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
419
set_bit(WX_FLAG_TXHEAD_WB_ENABLED, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
420
set_bit(WX_FLAG_SWFW_RING, wx->flags);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
421
wx->swfw_index = 0;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
447
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
450
err = wx_setup_resources(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
454
wx_configure(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
456
err = txgbe_setup_misc_irq(wx->priv);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
460
err = txgbe_request_queue_irqs(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
465
err = netif_set_real_num_tx_queues(netdev, wx->num_tx_queues);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
469
err = netif_set_real_num_rx_queues(netdev, wx->num_rx_queues);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
473
wx_ptp_init(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
475
txgbe_up_complete(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
480
wx_free_irq(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
482
txgbe_free_misc_irq(wx->priv);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
483
wx_reset_interrupt_capability(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
485
wx_free_resources(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
487
txgbe_reset(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
499
static void txgbe_close_suspend(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
501
wx_ptp_suspend(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
502
txgbe_disable_device(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
503
wx_free_resources(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
519
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
521
wx_ptp_stop(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
522
txgbe_down(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
523
wx_free_irq(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
524
txgbe_free_misc_irq(wx->priv);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
525
wx_free_resources(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
526
txgbe_fdir_filter_exit(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
527
wx_control_hw(wx, false);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
534
struct wx *wx = pci_get_drvdata(pdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
537
netdev = wx->netdev;
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
542
txgbe_close_suspend(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
545
wx_control_hw(wx, false);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
569
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
578
txgbe_reset(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
58
pdev = wx->pdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
580
wx_clear_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
587
wx_init_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
595
static void txgbe_reinit_locked(struct wx *wx)
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
597
netif_trans_update(wx->netdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
599
mutex_lock(&wx->reset_lock);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
600
set_bit(WX_STATE_RESETTING, wx->state);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
602
txgbe_down(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
603
txgbe_up(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
605
clear_bit(WX_STATE_RESETTING, wx->state);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
606
mutex_unlock(&wx->reset_lock);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
611
struct wx *wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
614
txgbe_reinit_locked(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
616
txgbe_reset(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
621
struct wx *wx = netdev_priv(dev);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
627
wr32(wx, TXGBE_CFG_VXLAN, ntohs(ti.port));
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
630
wr32(wx, TXGBE_CFG_VXLAN_GPE, ntohs(ti.port));
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
633
wr32(wx, TXGBE_CFG_GENEVE, ntohs(ti.port));
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
686
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
717
sizeof(struct wx),
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
727
wx = netdev_priv(netdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
728
wx->netdev = netdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
729
wx->pdev = pdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
73
struct pci_dev *entry, *pdev = wx->pdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
731
wx->msg_enable = (1 << DEFAULT_DEBUG_LEVEL_SHIFT) - 1;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
733
wx->hw_addr = devm_ioremap(&pdev->dev,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
736
if (!wx->hw_addr) {
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
745
wx->driver_name = txgbe_driver_name;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
751
err = txgbe_sw_init(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
756
err = wx_check_flash_load(wx, TXGBE_SPI_ILDR_STATUS_PERST);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
759
err = wx_check_flash_load(wx, TXGBE_SPI_ILDR_STATUS_PWRRST);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
763
err = wx_mng_present(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
769
err = txgbe_reset_hw(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
806
err = txgbe_validate_eeprom_checksum(wx, NULL);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
809
wr32(wx, WX_MIS_RST, WX_MIS_RST_SW_RST);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
814
eth_hw_addr_set(netdev, wx->mac.perm_addr);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
815
wx_mac_set_default_filter(wx, wx->mac.perm_addr);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
817
txgbe_init_service(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
819
err = wx_init_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
826
wx_read_ee_hostif(wx,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
827
wx->eeprom.sw_region_offset + TXGBE_EEPROM_VERSION_H,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
829
wx_read_ee_hostif(wx,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
830
wx->eeprom.sw_region_offset + TXGBE_EEPROM_VERSION_L,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
834
wx_read_ee_hostif(wx,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
835
wx->eeprom.sw_region_offset + TXGBE_ISCSI_BOOT_CONFIG,
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
840
wx_read_ee_hostif(wx, offset + 0x84, &eeprom_cfg_blkh);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
841
wx_read_ee_hostif(wx, offset + 0x83, &eeprom_cfg_blkl);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
849
snprintf(wx->eeprom_id, sizeof(wx->eeprom_id),
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
853
snprintf(wx->eeprom_id, sizeof(wx->eeprom_id),
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
857
snprintf(wx->eeprom_id, sizeof(wx->eeprom_id),
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
861
if (wx->mac.type == wx_mac_sp &&
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
865
err = txgbe_test_hostif(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
878
txgbe->wx = wx;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
879
wx->priv = txgbe;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
891
pci_set_drvdata(pdev, wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
901
expected_gts = txgbe_enumerate_functions(wx) * 10;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
905
txgbe_check_minimum_link(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
914
wx_clear_interrupt_scheme(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
915
wx_control_hw(wx, false);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
917
timer_delete_sync(&wx->service_timer);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
918
cancel_work_sync(&wx->service_task);
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
920
kfree(wx->rss_key);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
921
kfree(wx->mac_table);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
941
struct wx *wx = pci_get_drvdata(pdev);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
942
struct txgbe *txgbe = wx->priv;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
945
netdev = wx->netdev;
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
946
wx_disable_sriov(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
948
txgbe_fdir_filter_exit(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
950
timer_shutdown_sync(&wx->service_timer);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
951
cancel_work_sync(&wx->service_task);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
954
wx_free_isb_resources(wx);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
959
kfree(wx->rss_key);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
96
if (!test_and_clear_bit(WX_FLAG_NEED_MODULE_RESET, wx->flags))
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
960
kfree(wx->mac_table);
drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
961
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
661
phylink_disconnect_phy(txgbe->wx->phylink);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
663
phylink_destroy(txgbe->wx->phylink);
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
675
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
460
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;