Commit b2aec4ef authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files
Tony Nguyen says:

====================
Intel Wired LAN Driver Updates 2025-01-24 (idpf, ice, iavf)

For idpf:

Emil adds memory barrier when accessing control queue descriptors and
restores call to idpf_vc_xn_shutdown() when resetting.

Manoj Vishwanathan expands transaction lock to properly protect xn->salt
value and adds additional debugging information.

Marco Leogrande converts workqueues to be unbound.

For ice:

Przemek fixes incorrect size use for array.

Mateusz removes reporting of invalid parameter and value.

For iavf:

Michal adjusts some VLAN changes to occur without a PF call to avoid
timing issues with the calls.

* '200GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue:
  iavf: allow changing VLAN state without calling PF
  ice: remove invalid parameter of equalizer
  ice: fix ice_parser_rt::bst_key array size
  idpf: add more info during virtchnl transaction timeout/salt mismatch
  idpf: convert workqueues to unbound
  idpf: Acquire the lock before accessing the xn->salt
  idpf: fix transaction timeouts on reset
  idpf: add read memory barrier when checking descriptor done bit
====================

Link: https://patch.msgid.link/20250124213213.1328775-1-anthony.l.nguyen@intel.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 463ec95a ee7d7943
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -773,6 +773,11 @@ iavf_vlan_filter *iavf_add_vlan(struct iavf_adapter *adapter,
		f->state = IAVF_VLAN_ADD;
		adapter->num_vlan_filters++;
		iavf_schedule_aq_request(adapter, IAVF_FLAG_AQ_ADD_VLAN_FILTER);
	} else if (f->state == IAVF_VLAN_REMOVE) {
		/* IAVF_VLAN_REMOVE means that VLAN wasn't yet removed.
		 * We can safely only change the state here.
		 */
		f->state = IAVF_VLAN_ACTIVE;
	}

clearout:
@@ -793,8 +798,18 @@ static void iavf_del_vlan(struct iavf_adapter *adapter, struct iavf_vlan vlan)

	f = iavf_find_vlan(adapter, vlan);
	if (f) {
		/* IAVF_ADD_VLAN means that VLAN wasn't even added yet.
		 * Remove it from the list.
		 */
		if (f->state == IAVF_VLAN_ADD) {
			list_del(&f->list);
			kfree(f);
			adapter->num_vlan_filters--;
		} else {
			f->state = IAVF_VLAN_REMOVE;
		iavf_schedule_aq_request(adapter, IAVF_FLAG_AQ_DEL_VLAN_FILTER);
			iavf_schedule_aq_request(adapter,
						 IAVF_FLAG_AQ_DEL_VLAN_FILTER);
		}
	}

	spin_unlock_bh(&adapter->mac_vlan_list_lock);
+0 −1
Original line number Diff line number Diff line
@@ -1498,7 +1498,6 @@ struct ice_aqc_dnl_equa_param {
#define ICE_AQC_RX_EQU_POST1 (0x12 << ICE_AQC_RX_EQU_SHIFT)
#define ICE_AQC_RX_EQU_BFLF (0x13 << ICE_AQC_RX_EQU_SHIFT)
#define ICE_AQC_RX_EQU_BFHF (0x14 << ICE_AQC_RX_EQU_SHIFT)
#define ICE_AQC_RX_EQU_DRATE (0x15 << ICE_AQC_RX_EQU_SHIFT)
#define ICE_AQC_RX_EQU_CTLE_GAINHF (0x20 << ICE_AQC_RX_EQU_SHIFT)
#define ICE_AQC_RX_EQU_CTLE_GAINLF (0x21 << ICE_AQC_RX_EQU_SHIFT)
#define ICE_AQC_RX_EQU_CTLE_GAINDC (0x22 << ICE_AQC_RX_EQU_SHIFT)
+0 −1
Original line number Diff line number Diff line
@@ -710,7 +710,6 @@ static int ice_get_tx_rx_equa(struct ice_hw *hw, u8 serdes_num,
		{ ICE_AQC_RX_EQU_POST1, rx, &ptr->rx_equ_post1 },
		{ ICE_AQC_RX_EQU_BFLF, rx, &ptr->rx_equ_bflf },
		{ ICE_AQC_RX_EQU_BFHF, rx, &ptr->rx_equ_bfhf },
		{ ICE_AQC_RX_EQU_DRATE, rx, &ptr->rx_equ_drate },
		{ ICE_AQC_RX_EQU_CTLE_GAINHF, rx, &ptr->rx_equ_ctle_gainhf },
		{ ICE_AQC_RX_EQU_CTLE_GAINLF, rx, &ptr->rx_equ_ctle_gainlf },
		{ ICE_AQC_RX_EQU_CTLE_GAINDC, rx, &ptr->rx_equ_ctle_gaindc },
+0 −1
Original line number Diff line number Diff line
@@ -15,7 +15,6 @@ struct ice_serdes_equalization_to_ethtool {
	int rx_equ_post1;
	int rx_equ_bflf;
	int rx_equ_bfhf;
	int rx_equ_drate;
	int rx_equ_ctle_gainhf;
	int rx_equ_ctle_gainlf;
	int rx_equ_ctle_gaindc;
+2 −4
Original line number Diff line number Diff line
@@ -257,7 +257,6 @@ ice_pg_nm_cam_match(struct ice_pg_nm_cam_item *table, int size,
/*** ICE_SID_RXPARSER_BOOST_TCAM and ICE_SID_LBL_RXPARSER_TMEM sections ***/
#define ICE_BST_TCAM_TABLE_SIZE		256
#define ICE_BST_TCAM_KEY_SIZE		20
#define ICE_BST_KEY_TCAM_SIZE		19

/* Boost TCAM item */
struct ice_bst_tcam_item {
@@ -401,7 +400,6 @@ u16 ice_xlt_kb_flag_get(struct ice_xlt_kb *kb, u64 pkt_flag);
#define ICE_PARSER_GPR_NUM	128
#define ICE_PARSER_FLG_NUM	64
#define ICE_PARSER_ERR_NUM	16
#define ICE_BST_KEY_SIZE	10
#define ICE_MARKER_ID_SIZE	9
#define ICE_MARKER_MAX_SIZE	\
		(ICE_MARKER_ID_SIZE * BITS_PER_BYTE - 1)
@@ -431,13 +429,13 @@ struct ice_parser_rt {
	u8 pkt_buf[ICE_PARSER_MAX_PKT_LEN + ICE_PARSER_PKT_REV];
	u16 pkt_len;
	u16 po;
	u8 bst_key[ICE_BST_KEY_SIZE];
	u8 bst_key[ICE_BST_TCAM_KEY_SIZE];
	struct ice_pg_cam_key pg_key;
	u8 pg_prio;
	struct ice_alu *alu0;
	struct ice_alu *alu1;
	struct ice_alu *alu2;
	struct ice_pg_cam_action *action;
	u8 pg_prio;
	struct ice_gpr_pu pu;
	u8 markers[ICE_MARKER_ID_SIZE];
	bool protocols[ICE_PO_PAIR_SIZE];
Loading