Skip to content

Commit 4236e2a

Browse files
committed
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue
Jeff Kirsher says: ==================== Intel Wired LAN Driver Updates 2015-09-30 This series contains updates to i40e and i40evf only. Vasily Averin provides a couple of rtnl lock/unlock fixes for both i40e and i40evf. Shannon provides several updates and fixes, first fixes up a type clash in i40e_aq_rc_to_posix(), where the error codes are signed values, so we need to treat them as such. Then fixes up a padding issue where an extra byte is added in i40e_aqc_get_cee_dcb_cfg_v1_resp to directly acknowledge the padding. Updated i40e to keep debugfs register read and writes from accessing outside of the io-remapped space. Added support and device id for another 20 GbE device. Jesse fixes the transmit hand workaround code for ARM that was causing Tx hangs to still occur occasionally when there really was no hang. Then fixed the receive dropped counter to show up in netstat interface. Refactor the interrupt enable function since it was always making the caller add the base_vector from the VSI struct which is already passed to the function. Fix kbuild warnings found in 0day build infrastructure by adding a harmless cast to a dev_info(), also fix 32 bit build warnings found by sparse. Greg fixed a configuration error that results if a port VLAN is set for a VF before the VF driver is loaded, so that when the VF driver is loaded the port VLAN is ignored. Mitch fixes the use of QOS field consistently in i40e_ndo_set_vf_port_vlan(). Modified the init timing of the driver to increase stability on load/unload and SR-IOV enable/disable cycles. Anjali updates i40e to not collect VEB stats if they are disabled in the hardware for performance reasons. ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents 28117b0 + 9c70d7c commit 4236e2a

16 files changed

+87
-63
lines changed

drivers/net/ethernet/intel/i40e/i40e.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@
7171
#define I40E_MAX_VEB 16
7272

7373
#define I40E_MAX_NUM_DESCRIPTORS 4096
74-
#define I40E_MAX_REGISTER 0x800000
7574
#define I40E_MAX_CSR_SPACE (4 * 1024 * 1024 - 64 * 1024)
7675
#define I40E_DEFAULT_NUM_DESCRIPTORS 512
7776
#define I40E_REQ_DESCRIPTOR_MULTIPLE 32
@@ -326,6 +325,7 @@ struct i40e_pf {
326325
#define I40E_FLAG_OUTER_UDP_CSUM_CAPABLE BIT_ULL(33)
327326
#define I40E_FLAG_128_QP_RSS_CAPABLE BIT_ULL(34)
328327
#define I40E_FLAG_WB_ON_ITR_CAPABLE BIT_ULL(35)
328+
#define I40E_FLAG_VEB_STATS_ENABLED BIT_ULL(37)
329329
#define I40E_FLAG_MULTIPLE_TCP_UDP_RSS_PCTYPE BIT_ULL(38)
330330
#define I40E_FLAG_VEB_MODE_ENABLED BIT_ULL(40)
331331

@@ -408,6 +408,8 @@ struct i40e_pf {
408408
/* These are only valid in NPAR modes */
409409
u32 npar_max_bw;
410410
u32 npar_min_bw;
411+
412+
u32 ioremap_len;
411413
};
412414

413415
struct i40e_mac_filter {

drivers/net/ethernet/intel/i40e/i40e_adminq.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,10 @@ struct i40e_adminq_info {
109109

110110
/**
111111
* i40e_aq_rc_to_posix - convert errors to user-land codes
112-
* aq_rc: AdminQ error code to convert
112+
* aq_ret: AdminQ handler error code can override aq_rc
113+
* aq_rc: AdminQ firmware error code to convert
113114
**/
114-
static inline int i40e_aq_rc_to_posix(u32 aq_ret, u16 aq_rc)
115+
static inline int i40e_aq_rc_to_posix(int aq_ret, int aq_rc)
115116
{
116117
int aq_to_posix[] = {
117118
0, /* I40E_AQ_RC_OK */
@@ -143,8 +144,10 @@ static inline int i40e_aq_rc_to_posix(u32 aq_ret, u16 aq_rc)
143144
if (aq_ret == I40E_ERR_ADMIN_QUEUE_TIMEOUT)
144145
return -EAGAIN;
145146

146-
if (aq_rc >= ARRAY_SIZE(aq_to_posix))
147+
if (aq_rc >= (sizeof(aq_to_posix) / sizeof((aq_to_posix)[0])) ||
148+
aq_rc < 0)
147149
return -ERANGE;
150+
148151
return aq_to_posix[aq_rc];
149152
}
150153

drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2074,16 +2074,25 @@ I40E_CHECK_CMD_LENGTH(i40e_aqc_lldp_start);
20742074
#define I40E_AQC_CEE_ISCSI_STATUS_MASK (0x7 << I40E_AQC_CEE_ISCSI_STATUS_SHIFT)
20752075
#define I40E_AQC_CEE_FIP_STATUS_SHIFT 0x10
20762076
#define I40E_AQC_CEE_FIP_STATUS_MASK (0x7 << I40E_AQC_CEE_FIP_STATUS_SHIFT)
2077+
2078+
/* struct i40e_aqc_get_cee_dcb_cfg_v1_resp was originally defined with
2079+
* word boundary layout issues, which the Linux compilers silently deal
2080+
* with by adding padding, making the actual struct larger than designed.
2081+
* However, the FW compiler for the NIC is less lenient and complains
2082+
* about the struct. Hence, the struct defined here has an extra byte in
2083+
* fields reserved3 and reserved4 to directly acknowledge that padding,
2084+
* and the new length is used in the length check macro.
2085+
*/
20772086
struct i40e_aqc_get_cee_dcb_cfg_v1_resp {
20782087
u8 reserved1;
20792088
u8 oper_num_tc;
20802089
u8 oper_prio_tc[4];
20812090
u8 reserved2;
20822091
u8 oper_tc_bw[8];
20832092
u8 oper_pfc_en;
2084-
u8 reserved3;
2093+
u8 reserved3[2];
20852094
__le16 oper_app_prio;
2086-
u8 reserved4;
2095+
u8 reserved4[2];
20872096
__le16 tlv_status;
20882097
};
20892098

drivers/net/ethernet/intel/i40e/i40e_common.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ static i40e_status i40e_set_mac_type(struct i40e_hw *hw)
5252
case I40E_DEV_ID_QSFP_C:
5353
case I40E_DEV_ID_10G_BASE_T:
5454
case I40E_DEV_ID_20G_KR2:
55+
case I40E_DEV_ID_20G_KR2_A:
5556
hw->mac.type = I40E_MAC_XL710;
5657
break;
5758
case I40E_DEV_ID_SFP_X722:
@@ -441,9 +442,6 @@ static i40e_status i40e_aq_get_set_rss_lut(struct i40e_hw *hw,
441442
I40E_AQC_SET_RSS_LUT_TABLE_TYPE_SHIFT) &
442443
I40E_AQC_SET_RSS_LUT_TABLE_TYPE_MASK));
443444

444-
cmd_resp->addr_high = cpu_to_le32(high_16_bits((u64)lut));
445-
cmd_resp->addr_low = cpu_to_le32(lower_32_bits((u64)lut));
446-
447445
status = i40e_asq_send_command(hw, &desc, lut, lut_size, NULL);
448446

449447
return status;
@@ -518,8 +516,6 @@ static i40e_status i40e_aq_get_set_rss_key(struct i40e_hw *hw,
518516
I40E_AQC_SET_RSS_KEY_VSI_ID_SHIFT) &
519517
I40E_AQC_SET_RSS_KEY_VSI_ID_MASK));
520518
cmd_resp->vsi_id |= cpu_to_le16((u16)I40E_AQC_SET_RSS_KEY_VSI_VALID);
521-
cmd_resp->addr_high = cpu_to_le32(high_16_bits((u64)key));
522-
cmd_resp->addr_low = cpu_to_le32(lower_32_bits((u64)key));
523519

524520
status = i40e_asq_send_command(hw, &desc, key, key_size, NULL);
525521

drivers/net/ethernet/intel/i40e/i40e_debugfs.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1495,9 +1495,9 @@ static ssize_t i40e_dbg_command_write(struct file *filp,
14951495
}
14961496

14971497
/* check the range on address */
1498-
if (address >= I40E_MAX_REGISTER) {
1499-
dev_info(&pf->pdev->dev, "read reg address 0x%08x too large\n",
1500-
address);
1498+
if (address > (pf->ioremap_len - sizeof(u32))) {
1499+
dev_info(&pf->pdev->dev, "read reg address 0x%08x too large, max=0x%08lx\n",
1500+
address, (unsigned long int)(pf->ioremap_len - sizeof(u32)));
15011501
goto command_write_done;
15021502
}
15031503

@@ -1514,9 +1514,9 @@ static ssize_t i40e_dbg_command_write(struct file *filp,
15141514
}
15151515

15161516
/* check the range on address */
1517-
if (address >= I40E_MAX_REGISTER) {
1518-
dev_info(&pf->pdev->dev, "write reg address 0x%08x too large\n",
1519-
address);
1517+
if (address > (pf->ioremap_len - sizeof(u32))) {
1518+
dev_info(&pf->pdev->dev, "write reg address 0x%08x too large, max=0x%08lx\n",
1519+
address, (unsigned long int)(pf->ioremap_len - sizeof(u32)));
15201520
goto command_write_done;
15211521
}
15221522
wr32(&pf->hw, address, value);

drivers/net/ethernet/intel/i40e/i40e_ethtool.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,7 @@ static void i40e_get_settings_link_down(struct i40e_hw *hw,
437437
ecmd->advertising |= ADVERTISED_100baseT_Full;
438438
break;
439439
case I40E_DEV_ID_20G_KR2:
440+
case I40E_DEV_ID_20G_KR2_A:
440441
/* backplane 20G */
441442
ecmd->supported = SUPPORTED_20000baseKR2_Full;
442443
ecmd->advertising = ADVERTISED_20000baseKR2_Full;
@@ -1263,7 +1264,8 @@ static int i40e_get_sset_count(struct net_device *netdev, int sset)
12631264
if (vsi == pf->vsi[pf->lan_vsi] && pf->hw.partition_id == 1) {
12641265
int len = I40E_PF_STATS_LEN(netdev);
12651266

1266-
if (pf->lan_veb != I40E_NO_VEB)
1267+
if ((pf->lan_veb != I40E_NO_VEB) &&
1268+
(pf->flags & I40E_FLAG_VEB_STATS_ENABLED))
12671269
len += I40E_VEB_STATS_TOTAL;
12681270
return len;
12691271
} else {
@@ -1336,7 +1338,8 @@ static void i40e_get_ethtool_stats(struct net_device *netdev,
13361338
if (vsi != pf->vsi[pf->lan_vsi] || pf->hw.partition_id != 1)
13371339
return;
13381340

1339-
if (pf->lan_veb != I40E_NO_VEB) {
1341+
if ((pf->lan_veb != I40E_NO_VEB) &&
1342+
(pf->flags & I40E_FLAG_VEB_STATS_ENABLED)) {
13401343
struct i40e_veb *veb = pf->veb[pf->lan_veb];
13411344
for (j = 0; j < I40E_VEB_STATS_LEN; j++) {
13421345
p = (char *)veb;
@@ -1409,7 +1412,8 @@ static void i40e_get_strings(struct net_device *netdev, u32 stringset,
14091412
if (vsi != pf->vsi[pf->lan_vsi] || pf->hw.partition_id != 1)
14101413
return;
14111414

1412-
if (pf->lan_veb != I40E_NO_VEB) {
1415+
if ((pf->lan_veb != I40E_NO_VEB) &&
1416+
(pf->flags & I40E_FLAG_VEB_STATS_ENABLED)) {
14131417
for (i = 0; i < I40E_VEB_STATS_LEN; i++) {
14141418
snprintf(p, ETH_GSTRING_LEN, "veb.%s",
14151419
i40e_gstrings_veb_stats[i].stat_string);

drivers/net/ethernet/intel/i40e/i40e_main.c

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ static const struct pci_device_id i40e_pci_tbl[] = {
7979
{PCI_VDEVICE(INTEL, I40E_DEV_ID_SFP_X722), 0},
8080
{PCI_VDEVICE(INTEL, I40E_DEV_ID_1G_BASE_T_X722), 0},
8181
{PCI_VDEVICE(INTEL, I40E_DEV_ID_10G_BASE_T_X722), 0},
82+
{PCI_VDEVICE(INTEL, I40E_DEV_ID_20G_KR2), 0},
83+
{PCI_VDEVICE(INTEL, I40E_DEV_ID_20G_KR2_A), 0},
8284
/* required last entry */
8385
{0, }
8486
};
@@ -474,6 +476,7 @@ static struct rtnl_link_stats64 *i40e_get_netdev_stats_struct(
474476
stats->tx_errors = vsi_stats->tx_errors;
475477
stats->tx_dropped = vsi_stats->tx_dropped;
476478
stats->rx_errors = vsi_stats->rx_errors;
479+
stats->rx_dropped = vsi_stats->rx_dropped;
477480
stats->rx_crc_errors = vsi_stats->rx_crc_errors;
478481
stats->rx_length_errors = vsi_stats->rx_length_errors;
479482

@@ -1269,7 +1272,7 @@ bool i40e_is_vsi_in_vlan(struct i40e_vsi *vsi)
12691272
* so we have to go through all the list in order to make sure
12701273
*/
12711274
list_for_each_entry(f, &vsi->mac_filter_list, list) {
1272-
if (f->vlan >= 0)
1275+
if (f->vlan >= 0 || vsi->info.pvid)
12731276
return true;
12741277
}
12751278

@@ -3064,7 +3067,7 @@ void i40e_irq_dynamic_enable_icr0(struct i40e_pf *pf)
30643067
/**
30653068
* i40e_irq_dynamic_enable - Enable default interrupt generation settings
30663069
* @vsi: pointer to a vsi
3067-
* @vector: enable a particular Hw Interrupt vector
3070+
* @vector: enable a particular Hw Interrupt vector, without base_vector
30683071
**/
30693072
void i40e_irq_dynamic_enable(struct i40e_vsi *vsi, int vector)
30703073
{
@@ -3075,7 +3078,7 @@ void i40e_irq_dynamic_enable(struct i40e_vsi *vsi, int vector)
30753078
val = I40E_PFINT_DYN_CTLN_INTENA_MASK |
30763079
I40E_PFINT_DYN_CTLN_CLEARPBA_MASK |
30773080
(I40E_ITR_NONE << I40E_PFINT_DYN_CTLN_ITR_INDX_SHIFT);
3078-
wr32(hw, I40E_PFINT_DYN_CTLN(vector - 1), val);
3081+
wr32(hw, I40E_PFINT_DYN_CTLN(vector + vsi->base_vector - 1), val);
30793082
/* skip the flush */
30803083
}
30813084

@@ -3218,8 +3221,7 @@ static int i40e_vsi_enable_irq(struct i40e_vsi *vsi)
32183221
int i;
32193222

32203223
if (pf->flags & I40E_FLAG_MSIX_ENABLED) {
3221-
for (i = vsi->base_vector;
3222-
i < (vsi->num_q_vectors + vsi->base_vector); i++)
3224+
for (i = 0; i < vsi->num_q_vectors; i++)
32233225
i40e_irq_dynamic_enable(vsi, i);
32243226
} else {
32253227
i40e_irq_dynamic_enable_icr0(pf);
@@ -3451,8 +3453,7 @@ static bool i40e_clean_fdir_tx_irq(struct i40e_ring *tx_ring, int budget)
34513453
tx_ring->next_to_clean = i;
34523454

34533455
if (vsi->back->flags & I40E_FLAG_MSIX_ENABLED) {
3454-
i40e_irq_dynamic_enable(vsi,
3455-
tx_ring->q_vector->v_idx + vsi->base_vector);
3456+
i40e_irq_dynamic_enable(vsi, tx_ring->q_vector->v_idx);
34563457
}
34573458
return budget > 0;
34583459
}
@@ -5905,10 +5906,12 @@ static void i40e_watchdog_subtask(struct i40e_pf *pf)
59055906
if (pf->vsi[i] && pf->vsi[i]->netdev)
59065907
i40e_update_stats(pf->vsi[i]);
59075908

5908-
/* Update the stats for the active switching components */
5909-
for (i = 0; i < I40E_MAX_VEB; i++)
5910-
if (pf->veb[i])
5911-
i40e_update_veb_stats(pf->veb[i]);
5909+
if (pf->flags & I40E_FLAG_VEB_STATS_ENABLED) {
5910+
/* Update the stats for the active switching components */
5911+
for (i = 0; i < I40E_MAX_VEB; i++)
5912+
if (pf->veb[i])
5913+
i40e_update_veb_stats(pf->veb[i]);
5914+
}
59125915

59135916
i40e_ptp_rx_hang(pf->vsi[pf->lan_vsi]);
59145917
}
@@ -7996,6 +7999,9 @@ static int i40e_sw_init(struct i40e_pf *pf)
79967999
pf->lan_veb = I40E_NO_VEB;
79978000
pf->lan_vsi = I40E_NO_VSI;
79988001

8002+
/* By default FW has this off for performance reasons */
8003+
pf->flags &= ~I40E_FLAG_VEB_STATS_ENABLED;
8004+
79998005
/* set up queue assignment tracking */
80008006
size = sizeof(struct i40e_lump_tracking)
80018007
+ (sizeof(u16) * pf->hw.func_caps.num_tx_qp);
@@ -8175,9 +8181,6 @@ static void i40e_del_vxlan_port(struct net_device *netdev,
81758181
pf->vxlan_ports[idx] = 0;
81768182
pf->pending_vxlan_bitmap |= BIT_ULL(idx);
81778183
pf->flags |= I40E_FLAG_VXLAN_FILTER_SYNC;
8178-
8179-
dev_info(&pf->pdev->dev, "deleting vxlan port %d\n",
8180-
ntohs(port));
81818184
} else {
81828185
netdev_warn(netdev, "vxlan port %d was not found, not deleting\n",
81838186
ntohs(port));
@@ -9939,7 +9942,6 @@ static void i40e_print_features(struct i40e_pf *pf)
99399942
static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
99409943
{
99419944
struct i40e_aq_get_phy_abilities_resp abilities;
9942-
unsigned long ioremap_len;
99439945
struct i40e_pf *pf;
99449946
struct i40e_hw *hw;
99459947
static u16 pfs_found;
@@ -9992,15 +9994,15 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
99929994
hw = &pf->hw;
99939995
hw->back = pf;
99949996

9995-
ioremap_len = min_t(unsigned long, pci_resource_len(pdev, 0),
9996-
I40E_MAX_CSR_SPACE);
9997+
pf->ioremap_len = min_t(int, pci_resource_len(pdev, 0),
9998+
I40E_MAX_CSR_SPACE);
99979999

9998-
hw->hw_addr = ioremap(pci_resource_start(pdev, 0), ioremap_len);
10000+
hw->hw_addr = ioremap(pci_resource_start(pdev, 0), pf->ioremap_len);
999910001
if (!hw->hw_addr) {
1000010002
err = -EIO;
1000110003
dev_info(&pdev->dev, "ioremap(0x%04x, 0x%04x) failed: 0x%x\n",
1000210004
(unsigned int)pci_resource_start(pdev, 0),
10003-
(unsigned int)pci_resource_len(pdev, 0), err);
10005+
pf->ioremap_len, err);
1000410006
goto err_ioremap;
1000510007
}
1000610008
hw->vendor_id = pdev->vendor;
@@ -10538,7 +10540,7 @@ static void i40e_pci_error_resume(struct pci_dev *pdev)
1053810540

1053910541
rtnl_lock();
1054010542
i40e_handle_reset_warning(pf);
10541-
rtnl_lock();
10543+
rtnl_unlock();
1054210544
}
1054310545

1054410546
/**

drivers/net/ethernet/intel/i40e/i40e_txrx.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -923,6 +923,8 @@ int i40e_setup_tx_descriptors(struct i40e_ring *tx_ring)
923923
if (!dev)
924924
return -ENOMEM;
925925

926+
/* warn if we are about to overwrite the pointer */
927+
WARN_ON(tx_ring->tx_bi);
926928
bi_size = sizeof(struct i40e_tx_buffer) * tx_ring->count;
927929
tx_ring->tx_bi = kzalloc(bi_size, GFP_KERNEL);
928930
if (!tx_ring->tx_bi)
@@ -1083,6 +1085,8 @@ int i40e_setup_rx_descriptors(struct i40e_ring *rx_ring)
10831085
struct device *dev = rx_ring->dev;
10841086
int bi_size;
10851087

1088+
/* warn if we are about to overwrite the pointer */
1089+
WARN_ON(rx_ring->rx_bi);
10861090
bi_size = sizeof(struct i40e_rx_buffer) * rx_ring->count;
10871091
rx_ring->rx_bi = kzalloc(bi_size, GFP_KERNEL);
10881092
if (!rx_ring->rx_bi)
@@ -1783,8 +1787,7 @@ static inline void i40e_update_enable_itr(struct i40e_vsi *vsi,
17831787
if (!test_bit(__I40E_DOWN, &vsi->state))
17841788
wr32(hw, I40E_PFINT_DYN_CTLN(vector - 1), val);
17851789
} else {
1786-
i40e_irq_dynamic_enable(vsi,
1787-
q_vector->v_idx + vsi->base_vector);
1790+
i40e_irq_dynamic_enable(vsi, q_vector->v_idx);
17881791
}
17891792
if (ITR_IS_DYNAMIC(vsi->tx_itr_setting)) {
17901793
old_itr = q_vector->tx.itr;
@@ -1806,8 +1809,7 @@ static inline void i40e_update_enable_itr(struct i40e_vsi *vsi,
18061809
wr32(hw, I40E_PFINT_DYN_CTLN(q_vector->v_idx +
18071810
vsi->base_vector - 1), val);
18081811
} else {
1809-
i40e_irq_dynamic_enable(vsi,
1810-
q_vector->v_idx + vsi->base_vector);
1812+
i40e_irq_dynamic_enable(vsi, q_vector->v_idx);
18111813
}
18121814
}
18131815

@@ -1842,6 +1844,7 @@ int i40e_napi_poll(struct napi_struct *napi, int budget)
18421844
i40e_for_each_ring(ring, q_vector->tx) {
18431845
clean_complete &= i40e_clean_tx_irq(ring, vsi->work_limit);
18441846
arm_wb |= ring->arm_wb;
1847+
ring->arm_wb = false;
18451848
}
18461849

18471850
/* We attempt to distribute budget to each Rx queue fairly, but don't

drivers/net/ethernet/intel/i40e/i40e_txrx.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,12 @@ enum i40e_dyn_idx_t {
7979
BIT_ULL(I40E_FILTER_PCTYPE_L2_PAYLOAD))
8080

8181
#define I40E_DEFAULT_RSS_HENA_EXPANDED (I40E_DEFAULT_RSS_HENA | \
82-
BIT(I40E_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK) | \
83-
BIT(I40E_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP) | \
84-
BIT(I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP) | \
85-
BIT(I40E_FILTER_PCTYPE_NONF_IPV6_TCP_SYN_NO_ACK) | \
86-
BIT(I40E_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP) | \
87-
BIT(I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP))
82+
BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK) | \
83+
BIT_ULL(I40E_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP) | \
84+
BIT_ULL(I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP) | \
85+
BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_TCP_SYN_NO_ACK) | \
86+
BIT_ULL(I40E_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP) | \
87+
BIT_ULL(I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP))
8888

8989
#define i40e_pf_get_default_rss_hena(pf) \
9090
(((pf)->flags & I40E_FLAG_MULTIPLE_TCP_UDP_RSS_PCTYPE) ? \

drivers/net/ethernet/intel/i40e/i40e_type.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
#define I40E_DEV_ID_QSFP_C 0x1585
4646
#define I40E_DEV_ID_10G_BASE_T 0x1586
4747
#define I40E_DEV_ID_20G_KR2 0x1587
48+
#define I40E_DEV_ID_20G_KR2_A 0x1588
4849
#define I40E_DEV_ID_VF 0x154C
4950
#define I40E_DEV_ID_VF_HV 0x1571
5051
#define I40E_DEV_ID_SFP_X722 0x37D0

0 commit comments

Comments
 (0)