Commit 85c7ca91 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge branch 'intel-wired-lan-driver-updates-2025-02-24-ice-idpf-iavf-ixgbe'

Tony Nguyen says:

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

For ice:

Marcin moves incorrect call placement to clean up VF mailbox
tracking and changes call for configuring default VSI to allow
for existing rule.

For iavf:

Jake fixes a circular locking dependency.

For ixgbe:

Piotr corrects condition for determining media cage presence.
====================

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


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 5568e4ca b1e44b4a
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -1983,7 +1983,7 @@ static int iavf_reinit_interrupt_scheme(struct iavf_adapter *adapter, bool runni
static void iavf_finish_config(struct work_struct *work)
{
	struct iavf_adapter *adapter;
	bool netdev_released = false;
	bool locks_released = false;
	int pairs, err;

	adapter = container_of(work, struct iavf_adapter, finish_config);
@@ -2012,19 +2012,22 @@ static void iavf_finish_config(struct work_struct *work)
		netif_set_real_num_tx_queues(adapter->netdev, pairs);

		if (adapter->netdev->reg_state != NETREG_REGISTERED) {
			mutex_unlock(&adapter->crit_lock);
			netdev_unlock(adapter->netdev);
			netdev_released = true;
			locks_released = true;
			err = register_netdevice(adapter->netdev);
			if (err) {
				dev_err(&adapter->pdev->dev, "Unable to register netdev (%d)\n",
					err);

				/* go back and try again.*/
				mutex_lock(&adapter->crit_lock);
				iavf_free_rss(adapter);
				iavf_free_misc_irq(adapter);
				iavf_reset_interrupt_capability(adapter);
				iavf_change_state(adapter,
						  __IAVF_INIT_CONFIG_ADAPTER);
				mutex_unlock(&adapter->crit_lock);
				goto out;
			}
		}
@@ -2040,9 +2043,10 @@ static void iavf_finish_config(struct work_struct *work)
	}

out:
	if (!locks_released) {
		mutex_unlock(&adapter->crit_lock);
	if (!netdev_released)
		netdev_unlock(adapter->netdev);
	}
	rtnl_unlock();
}

+1 −2
Original line number Diff line number Diff line
@@ -38,8 +38,7 @@ static int ice_eswitch_setup_env(struct ice_pf *pf)
	if (ice_vsi_add_vlan_zero(uplink_vsi))
		goto err_vlan_zero;

	if (ice_cfg_dflt_vsi(uplink_vsi->port_info, uplink_vsi->idx, true,
			     ICE_FLTR_RX))
	if (ice_set_dflt_vsi(uplink_vsi))
		goto err_def_rx;

	if (ice_cfg_dflt_vsi(uplink_vsi->port_info, uplink_vsi->idx, true,
+1 −4
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ static void ice_free_vf_entries(struct ice_pf *pf)

	hash_for_each_safe(vfs->table, bkt, tmp, vf, entry) {
		hash_del_rcu(&vf->entry);
		ice_deinitialize_vf_entry(vf);
		ice_put_vf(vf);
	}
}
@@ -193,10 +194,6 @@ void ice_free_vfs(struct ice_pf *pf)
			wr32(hw, GLGEN_VFLRSTAT(reg_idx), BIT(bit_idx));
		}

		/* clear malicious info since the VF is getting released */
		if (!ice_is_feature_supported(pf, ICE_F_MBX_LIMIT))
			list_del(&vf->mbx_info.list_entry);

		mutex_unlock(&vf->cfg_lock);
	}

+8 −0
Original line number Diff line number Diff line
@@ -1036,6 +1036,14 @@ void ice_initialize_vf_entry(struct ice_vf *vf)
	mutex_init(&vf->cfg_lock);
}

void ice_deinitialize_vf_entry(struct ice_vf *vf)
{
	struct ice_pf *pf = vf->pf;

	if (!ice_is_feature_supported(pf, ICE_F_MBX_LIMIT))
		list_del(&vf->mbx_info.list_entry);
}

/**
 * ice_dis_vf_qs - Disable the VF queues
 * @vf: pointer to the VF structure
+1 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@
#endif

void ice_initialize_vf_entry(struct ice_vf *vf);
void ice_deinitialize_vf_entry(struct ice_vf *vf);
void ice_dis_vf_qs(struct ice_vf *vf);
int ice_check_vf_init(struct ice_vf *vf);
enum virtchnl_status_code ice_err_to_virt_err(int err);
Loading