netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 0/2][pull request] Intel Wired LAN Driver Updates 2023-07-10 (i40e)
@ 2023-07-10 16:40 Tony Nguyen
  2023-07-10 16:40 ` [PATCH net-next 1/2] i40e: Add helper for VF inited state check with timeout Tony Nguyen
  2023-07-10 16:40 ` [PATCH net-next 2/2] i40e: Wait for pending VF reset in VF set callbacks Tony Nguyen
  0 siblings, 2 replies; 11+ messages in thread
From: Tony Nguyen @ 2023-07-10 16:40 UTC (permalink / raw)
  To: davem, kuba, pabeni, edumazet, netdev; +Cc: Tony Nguyen

This series contains updates to i40e driver only.

Ivan Vecera adds waiting for VF to complete initialization on VF related
configuration callbacks.

The following are changes since commit 6843306689aff3aea608e4d2630b2a5a0137f827:
  Merge tag 'net-6.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
and are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue 40GbE

Ivan Vecera (2):
  i40e: Add helper for VF inited state check with timeout
  i40e: Wait for pending VF reset in VF set callbacks

 .../ethernet/intel/i40e/i40e_virtchnl_pf.c    | 63 +++++++++++--------
 1 file changed, 36 insertions(+), 27 deletions(-)

-- 
2.38.1


^ permalink raw reply	[flat|nested] 11+ messages in thread
* [PATCH net-next 1/2] i40e: Add helper for VF inited state check with timeout
@ 2023-06-13 12:16 Ivan Vecera
  2023-06-14  8:26 ` Simon Horman
  0 siblings, 1 reply; 11+ messages in thread
From: Ivan Vecera @ 2023-06-13 12:16 UTC (permalink / raw)
  To: netdev
  Cc: Ma Yuying, Jesse Brandeburg, Tony Nguyen, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	moderated list:INTEL ETHERNET DRIVERS, open list

Move the check for VF inited state (with optional up-to 300ms
timeout to separate helper i40e_check_vf_init_timeout() that
will be used in the following commit.

Tested-by: Ma Yuying <yuma@redhat.com>
Signed-off-by: Ivan Vecera <ivecera@redhat.com>
---
 .../ethernet/intel/i40e/i40e_virtchnl_pf.c    | 47 ++++++++++++-------
 1 file changed, 31 insertions(+), 16 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
index be59ba3774e1..b84b6b675fa7 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
@@ -4304,6 +4304,36 @@ static int i40e_validate_vf(struct i40e_pf *pf, int vf_id)
 	return ret;
 }
 
+/**
+ * i40e_check_vf_init_timeout
+ * @vf: the virtual function
+ *
+ * Check that the VF's initialization was successfully done and if not
+ * wait up to 300ms for its finish.
+ *
+ * Returns true when VF is initialized, false on timeout
+ **/
+static bool i40e_check_vf_init_timeout(struct i40e_vf *vf)
+{
+	int i;
+
+	/* When the VF is resetting wait until it is done.
+	 * It can take up to 200 milliseconds, but wait for
+	 * up to 300 milliseconds to be safe.
+	 */
+	for (i = 0; i < 15; i++) {
+		if (test_bit(I40E_VF_STATE_INIT, &vf->vf_states))
+			return true;
+
+		msleep(20);
+	}
+
+	dev_err(&vf->pf->pdev->dev, "VF %d still in reset. Try again.\n",
+		vf->vf_id);
+
+	return false;
+}
+
 /**
  * i40e_ndo_set_vf_mac
  * @netdev: network interface device structure
@@ -4322,7 +4352,6 @@ int i40e_ndo_set_vf_mac(struct net_device *netdev, int vf_id, u8 *mac)
 	int ret = 0;
 	struct hlist_node *h;
 	int bkt;
-	u8 i;
 
 	if (test_and_set_bit(__I40E_VIRTCHNL_OP_PENDING, pf->state)) {
 		dev_warn(&pf->pdev->dev, "Unable to configure VFs, other operation is pending.\n");
@@ -4335,21 +4364,7 @@ int i40e_ndo_set_vf_mac(struct net_device *netdev, int vf_id, u8 *mac)
 		goto error_param;
 
 	vf = &pf->vf[vf_id];
-
-	/* When the VF is resetting wait until it is done.
-	 * It can take up to 200 milliseconds,
-	 * but wait for up to 300 milliseconds to be safe.
-	 * Acquire the VSI pointer only after the VF has been
-	 * properly initialized.
-	 */
-	for (i = 0; i < 15; i++) {
-		if (test_bit(I40E_VF_STATE_INIT, &vf->vf_states))
-			break;
-		msleep(20);
-	}
-	if (!test_bit(I40E_VF_STATE_INIT, &vf->vf_states)) {
-		dev_err(&pf->pdev->dev, "VF %d still in reset. Try again.\n",
-			vf_id);
+	if (!i40e_check_vf_init_timeout(vf)) {
 		ret = -EAGAIN;
 		goto error_param;
 	}
-- 
2.39.3


^ permalink raw reply related	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2023-07-12 17:31 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-10 16:40 [PATCH net-next 0/2][pull request] Intel Wired LAN Driver Updates 2023-07-10 (i40e) Tony Nguyen
2023-07-10 16:40 ` [PATCH net-next 1/2] i40e: Add helper for VF inited state check with timeout Tony Nguyen
2023-07-11 12:09   ` Leon Romanovsky
2023-07-12  0:37     ` Jakub Kicinski
2023-07-12 13:28       ` Ivan Vecera
2023-07-12 13:18     ` Ivan Vecera
2023-07-12 17:31       ` Jakub Kicinski
2023-07-10 16:40 ` [PATCH net-next 2/2] i40e: Wait for pending VF reset in VF set callbacks Tony Nguyen
2023-07-11 12:10   ` Leon Romanovsky
  -- strict thread matches above, loose matches on Subject: below --
2023-06-13 12:16 [PATCH net-next 1/2] i40e: Add helper for VF inited state check with timeout Ivan Vecera
2023-06-14  8:26 ` Simon Horman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).