Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue

Tony Nguyen says:

====================
Intel Wired LAN Driver Updates 2022-12-05 (i40e)

Michal clears XPS init flag on reset to allow for updated values to be
written.

Sylwester adds sleep to VF reset to resolve issue of VFs not getting
resources.

Przemyslaw rejects filters for raw IPv4 or IPv6 l4_4_bytes filters as they
are not supported.

* '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue:
i40e: Disallow ip4 and ip6 l4_4_bytes
i40e: Fix for VF MAC address 0
i40e: Fix not setting default xps_cpus after reset
====================

Link: https://lore.kernel.org/r/20221205212523.3197565-1-anthony.l.nguyen@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+22 -11
+2 -10
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
··· 4464 4464 return -EOPNOTSUPP; 4465 4465 4466 4466 /* First 4 bytes of L4 header */ 4467 - if (usr_ip4_spec->l4_4_bytes == htonl(0xFFFFFFFF)) 4468 - new_mask |= I40E_L4_SRC_MASK | I40E_L4_DST_MASK; 4469 - else if (!usr_ip4_spec->l4_4_bytes) 4470 - new_mask &= ~(I40E_L4_SRC_MASK | I40E_L4_DST_MASK); 4471 - else 4467 + if (usr_ip4_spec->l4_4_bytes) 4472 4468 return -EOPNOTSUPP; 4473 4469 4474 4470 /* Filtering on Type of Service is not supported. */ ··· 4503 4507 else 4504 4508 return -EOPNOTSUPP; 4505 4509 4506 - if (usr_ip6_spec->l4_4_bytes == htonl(0xFFFFFFFF)) 4507 - new_mask |= I40E_L4_SRC_MASK | I40E_L4_DST_MASK; 4508 - else if (!usr_ip6_spec->l4_4_bytes) 4509 - new_mask &= ~(I40E_L4_SRC_MASK | I40E_L4_DST_MASK); 4510 - else 4510 + if (usr_ip6_spec->l4_4_bytes) 4511 4511 return -EOPNOTSUPP; 4512 4512 4513 4513 /* Filtering on Traffic class is not supported. */
+18 -1
drivers/net/ethernet/intel/i40e/i40e_main.c
··· 10655 10655 } 10656 10656 10657 10657 /** 10658 + * i40e_clean_xps_state - clean xps state for every tx_ring 10659 + * @vsi: ptr to the VSI 10660 + **/ 10661 + static void i40e_clean_xps_state(struct i40e_vsi *vsi) 10662 + { 10663 + int i; 10664 + 10665 + if (vsi->tx_rings) 10666 + for (i = 0; i < vsi->num_queue_pairs; i++) 10667 + if (vsi->tx_rings[i]) 10668 + clear_bit(__I40E_TX_XPS_INIT_DONE, 10669 + vsi->tx_rings[i]->state); 10670 + } 10671 + 10672 + /** 10658 10673 * i40e_prep_for_reset - prep for the core to reset 10659 10674 * @pf: board private structure 10660 10675 * ··· 10693 10678 i40e_pf_quiesce_all_vsi(pf); 10694 10679 10695 10680 for (v = 0; v < pf->num_alloc_vsi; v++) { 10696 - if (pf->vsi[v]) 10681 + if (pf->vsi[v]) { 10682 + i40e_clean_xps_state(pf->vsi[v]); 10697 10683 pf->vsi[v]->seid = 0; 10684 + } 10698 10685 } 10699 10686 10700 10687 i40e_shutdown_adminq(&pf->hw);
+2
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
··· 1578 1578 i40e_cleanup_reset_vf(vf); 1579 1579 1580 1580 i40e_flush(hw); 1581 + usleep_range(20000, 40000); 1581 1582 clear_bit(I40E_VF_STATE_RESETTING, &vf->vf_states); 1582 1583 1583 1584 return true; ··· 1702 1701 } 1703 1702 1704 1703 i40e_flush(hw); 1704 + usleep_range(20000, 40000); 1705 1705 clear_bit(__I40E_VF_DISABLE, pf->state); 1706 1706 1707 1707 return true;