All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-wired-lan] [PATCH net-next v6 2/3] iavf: Add __IAVF_INIT_FAILED state
@ 2021-08-19  8:47 Mateusz Palczewski
  2021-10-18 18:51 ` Jankowski, Konrad0
  0 siblings, 1 reply; 2+ messages in thread
From: Mateusz Palczewski @ 2021-08-19  8:47 UTC (permalink / raw)
  To: intel-wired-lan

This commit adds a new state, __IAVF_INIT_FAILED
to the state machine. From now on initialization functions report errors not
by returning an error value, but by changing the state to indicate that
something went wrong.

Signed-off-by: Jakub Pawlak <jakub.pawlak@intel.com>
Signed-off-by: Jan Sokolowski <jan.sokolowski@intel.com>
Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
---
v6: Fixed that patch so that it applies on next-queue tree
v5: Fixed the patch so that it applies on net-next tree
v4: Removed unnecessary line
v3: Added new file to patch series
v2: Splitted the patch into 2 to make them smaller
---
 drivers/net/ethernet/intel/iavf/iavf.h      |  1 +
 drivers/net/ethernet/intel/iavf/iavf_main.c | 35 ++++++++++++---------
 2 files changed, 21 insertions(+), 15 deletions(-)

diff --git a/drivers/net/ethernet/intel/iavf/iavf.h b/drivers/net/ethernet/intel/iavf/iavf.h
index 4f937cc..d7f8026 100644
--- a/drivers/net/ethernet/intel/iavf/iavf.h
+++ b/drivers/net/ethernet/intel/iavf/iavf.h
@@ -178,6 +178,7 @@ enum iavf_state_t {
 	__IAVF_INIT_VERSION_CHECK,	/* aq msg sent, awaiting reply */
 	__IAVF_INIT_GET_RESOURCES,	/* aq msg sent, awaiting reply */
 	__IAVF_INIT_SW,		/* got resources, setting up structs */
+	__IAVF_INIT_FAILED,	/* init failed, restarting procedure */
 	__IAVF_RESETTING,		/* in reset */
 	__IAVF_COMM_FAILED,		/* communication with PF failed */
 	/* Below here, watchdog is running */
diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c b/drivers/net/ethernet/intel/iavf/iavf_main.c
index 740e68b..ce8b002 100644
--- a/drivers/net/ethernet/intel/iavf/iavf_main.c
+++ b/drivers/net/ethernet/intel/iavf/iavf_main.c
@@ -14,7 +14,7 @@
 static int iavf_setup_all_tx_resources(struct iavf_adapter *adapter);
 static int iavf_setup_all_rx_resources(struct iavf_adapter *adapter);
 static int iavf_close(struct net_device *netdev);
-static int iavf_init_get_resources(struct iavf_adapter *adapter);
+static void iavf_init_get_resources(struct iavf_adapter *adapter);
 static int iavf_check_reset_complete(struct iavf_hw *hw);
 
 char iavf_driver_name[] = "iavf";
@@ -1709,9 +1709,9 @@ static int iavf_process_aq_command(struct iavf_adapter *adapter)
  *
  * Function process __IAVF_STARTUP driver state.
  * When success the state is changed to __IAVF_INIT_VERSION_CHECK
- * when fails it returns -EAGAIN
+ * when fails the state is changed to __IAVF_INIT_FAILED
  **/
-static int iavf_startup(struct iavf_adapter *adapter)
+static void iavf_startup(struct iavf_adapter *adapter)
 {
 	struct pci_dev *pdev = adapter->pdev;
 	struct iavf_hw *hw = &adapter->hw;
@@ -1751,8 +1751,9 @@ static int iavf_startup(struct iavf_adapter *adapter)
 		goto err;
 	}
 	iavf_change_state(adapter, __IAVF_INIT_VERSION_CHECK);
+	return;
 err:
-	return err;
+	iavf_change_state(adapter, __IAVF_INIT_FAILED);
 }
 
 /**
@@ -1761,9 +1762,9 @@ static int iavf_startup(struct iavf_adapter *adapter)
  *
  * Function process __IAVF_INIT_VERSION_CHECK driver state.
  * When success the state is changed to __IAVF_INIT_GET_RESOURCES
- * when fails it returns -EAGAIN
+ * when fails the state is changed to __IAVF_INIT_FAILED
  **/
-static int iavf_init_version_check(struct iavf_adapter *adapter)
+static void iavf_init_version_check(struct iavf_adapter *adapter)
 {
 	struct pci_dev *pdev = adapter->pdev;
 	struct iavf_hw *hw = &adapter->hw;
@@ -1798,8 +1799,9 @@ static int iavf_init_version_check(struct iavf_adapter *adapter)
 		goto err;
 	}
 	iavf_change_state(adapter, __IAVF_INIT_GET_RESOURCES);
+	return;
 err:
-	return err;
+	iavf_change_state(adapter, __IAVF_INIT_FAILED);
 }
 
 /**
@@ -1809,9 +1811,9 @@ static int iavf_init_version_check(struct iavf_adapter *adapter)
  * Function process __IAVF_INIT_GET_RESOURCES driver state and
  * finishes driver initialization procedure.
  * When success the state is changed to __IAVF_DOWN
- * when fails it returns -EAGAIN
+ * when fails the state is changed to __IAVF_INIT_FAILED
  **/
-static int iavf_init_get_resources(struct iavf_adapter *adapter)
+static void iavf_init_get_resources(struct iavf_adapter *adapter)
 {
 	struct net_device *netdev = adapter->netdev;
 	struct pci_dev *pdev = adapter->pdev;
@@ -1839,7 +1841,7 @@ static int iavf_init_get_resources(struct iavf_adapter *adapter)
 		 */
 		iavf_shutdown_adminq(hw);
 		dev_err(&pdev->dev, "Unable to get VF config due to PF error condition, not retrying\n");
-		return 0;
+		return;
 	}
 	if (err) {
 		dev_err(&pdev->dev, "Unable to get VF config (%d)\n", err);
@@ -1931,7 +1933,7 @@ static int iavf_init_get_resources(struct iavf_adapter *adapter)
 	else
 		iavf_init_rss(adapter);
 
-	return err;
+	return;
 err_mem:
 	iavf_free_rss(adapter);
 err_register:
@@ -1942,7 +1944,7 @@ static int iavf_init_get_resources(struct iavf_adapter *adapter)
 	kfree(adapter->vf_res);
 	adapter->vf_res = NULL;
 err:
-	return err;
+	iavf_change_state(adapter, __IAVF_INIT_FAILED);
 }
 
 /**
@@ -3689,15 +3691,18 @@ static void iavf_init_task(struct work_struct *work)
 	}
 	switch (adapter->state) {
 	case __IAVF_STARTUP:
-		if (iavf_startup(adapter) < 0)
+		iavf_startup(adapter);
+		if (adapter->state == __IAVF_INIT_FAILED)
 			goto init_failed;
 		break;
 	case __IAVF_INIT_VERSION_CHECK:
-		if (iavf_init_version_check(adapter) < 0)
+		iavf_init_version_check(adapter);
+		if (adapter->state == __IAVF_INIT_FAILED)
 			goto init_failed;
 		break;
 	case __IAVF_INIT_GET_RESOURCES:
-		if (iavf_init_get_resources(adapter) < 0)
+		iavf_init_get_resources(adapter);
+		if (adapter->state == __IAVF_INIT_FAILED)
 			goto init_failed;
 		goto out;
 	default:
-- 
2.17.1


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

* [Intel-wired-lan] [PATCH net-next v6 2/3] iavf: Add __IAVF_INIT_FAILED state
  2021-08-19  8:47 [Intel-wired-lan] [PATCH net-next v6 2/3] iavf: Add __IAVF_INIT_FAILED state Mateusz Palczewski
@ 2021-10-18 18:51 ` Jankowski, Konrad0
  0 siblings, 0 replies; 2+ messages in thread
From: Jankowski, Konrad0 @ 2021-10-18 18:51 UTC (permalink / raw)
  To: intel-wired-lan



> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Mateusz Palczewski
> Sent: czwartek, 19 sierpnia 2021 10:48
> To: intel-wired-lan at lists.osuosl.org
> Cc: Palczewski, Mateusz <mateusz.palczewski@intel.com>; Pawlak, Jakub
> <jakub.pawlak@intel.com>
> Subject: [Intel-wired-lan] [PATCH net-next v6 2/3] iavf: Add
> __IAVF_INIT_FAILED state
> 
> This commit adds a new state, __IAVF_INIT_FAILED to the state machine.
> From now on initialization functions report errors not by returning an error
> value, but by changing the state to indicate that something went wrong.
> 
> Signed-off-by: Jakub Pawlak <jakub.pawlak@intel.com>
> Signed-off-by: Jan Sokolowski <jan.sokolowski@intel.com>
> Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
> ---
> v6: Fixed that patch so that it applies on next-queue tree
> v5: Fixed the patch so that it applies on net-next tree
> v4: Removed unnecessary line
> v3: Added new file to patch series
> v2: Splitted the patch into 2 to make them smaller
> ---
>  drivers/net/ethernet/intel/iavf/iavf.h      |  1 +
>  drivers/net/ethernet/intel/iavf/iavf_main.c | 35 ++++++++++++---------
>  2 files changed, 21 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/iavf/iavf.h
> b/drivers/net/ethernet/intel/iavf/iavf.h
> index 4f937cc..d7f8026 100644
> --- a/drivers/net/ethernet/intel/iavf/iavf.h
> +++ b/drivers/net/ethernet/intel/iavf/iavf.h
> @@ -178,6 +178,7 @@ enum iavf_state_t {
>  	__IAVF_INIT_VERSION_CHECK,	/* aq msg sent, awaiting reply
> */
>  	__IAVF_INIT_GET_RESOURCES,	/* aq msg sent, awaiting reply
> */
>  	__IAVF_INIT_SW,		/* got resources, setting up structs */
> +	__IAVF_INIT_FAILED,	/* init failed, restarting procedure */
>  	__IAVF_RESETTING,		/* in reset */
>  	__IAVF_COMM_FAILED,		/* communication with PF
> failed */
>  	/* Below here, watchdog is running */
> diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c
> b/drivers/net/ethernet/intel/iavf/iavf_main.c
> index 740e68b..ce8b002 100644
> --- a/drivers/net/ethernet/intel/iavf/iavf_main.c
> +++ b/drivers/net/ethernet/intel/iavf/iavf_main.c
> @@ -14,7 +14,7 @@
>  static int iavf_setup_all_tx_resources(struct iavf_adapter *adapter);  static
> int iavf_setup_all_rx_resources(struct iavf_adapter *adapter);  static int
> iavf_close(struct net_device *netdev); -static int
> iavf_init_get_resources(struct iavf_adapter *adapter);
> +static void iavf_init_get_resources(struct iavf_adapter *adapter);
>  static int iavf_check_reset_complete(struct iavf_hw *hw);
> 
>  char iavf_driver_name[] = "iavf";
> @@ -1709,9 +1709,9 @@ static int iavf_process_aq_command(struct
> iavf_adapter *adapter)
>   *
>   * Function process __IAVF_STARTUP driver state.
>   * When success the state is changed to __IAVF_INIT_VERSION_CHECK
> - * when fails it returns -EAGAIN
> + * when fails the state is changed to __IAVF_INIT_FAILED
>   **/
> -static int iavf_startup(struct iavf_adapter *adapter)
> +static void iavf_startup(struct iavf_adapter *adapter)
>  {
>  	struct pci_dev *pdev = adapter->pdev;
>  	struct iavf_hw *hw = &adapter->hw;
> @@ -1751,8 +1751,9 @@ static int iavf_startup(struct iavf_adapter *adapter)
>  		goto err;
>  	}
>  	iavf_change_state(adapter, __IAVF_INIT_VERSION_CHECK);
> +	return;
>  err:
> -	return err;
> +	iavf_change_state(adapter, __IAVF_INIT_FAILED);
>  }
> 
>  /**
> @@ -1761,9 +1762,9 @@ static int iavf_startup(struct iavf_adapter *adapter)
>   *
>   * Function process __IAVF_INIT_VERSION_CHECK driver state.
>   * When success the state is changed to __IAVF_INIT_GET_RESOURCES
> - * when fails it returns -EAGAIN
> + * when fails the state is changed to __IAVF_INIT_FAILED
>   **/
> -static int iavf_init_version_check(struct iavf_adapter *adapter)
> +static void iavf_init_version_check(struct iavf_adapter *adapter)
>  {
>  	struct pci_dev *pdev = adapter->pdev;
>  	struct iavf_hw *hw = &adapter->hw;
> @@ -1798,8 +1799,9 @@ static int iavf_init_version_check(struct
> iavf_adapter *adapter)
>  		goto err;
>  	}
>  	iavf_change_state(adapter, __IAVF_INIT_GET_RESOURCES);
> +	return;
>  err:
> -	return err;
> +	iavf_change_state(adapter, __IAVF_INIT_FAILED);
>  }
> 
>  /**
> @@ -1809,9 +1811,9 @@ static int iavf_init_version_check(struct
> iavf_adapter *adapter)
>   * Function process __IAVF_INIT_GET_RESOURCES driver state and
>   * finishes driver initialization procedure.
>   * When success the state is changed to __IAVF_DOWN
> - * when fails it returns -EAGAIN
> + * when fails the state is changed to __IAVF_INIT_FAILED
>   **/
> -static int iavf_init_get_resources(struct iavf_adapter *adapter)
> +static void iavf_init_get_resources(struct iavf_adapter *adapter)
>  {
>  	struct net_device *netdev = adapter->netdev;
>  	struct pci_dev *pdev = adapter->pdev;
> @@ -1839,7 +1841,7 @@ static int iavf_init_get_resources(struct
> iavf_adapter *adapter)
>  		 */
>  		iavf_shutdown_adminq(hw);
>  		dev_err(&pdev->dev, "Unable to get VF config due to PF
> error condition, not retrying\n");
> -		return 0;
> +		return;
>  	}
>  	if (err) {
>  		dev_err(&pdev->dev, "Unable to get VF config (%d)\n", err);
> @@ -1931,7 +1933,7 @@ static int iavf_init_get_resources(struct
> iavf_adapter *adapter)
>  	else
>  		iavf_init_rss(adapter);
> 
> -	return err;
> +	return;
>  err_mem:
>  	iavf_free_rss(adapter);
>  err_register:
> @@ -1942,7 +1944,7 @@ static int iavf_init_get_resources(struct
> iavf_adapter *adapter)
>  	kfree(adapter->vf_res);
>  	adapter->vf_res = NULL;
>  err:
> -	return err;
> +	iavf_change_state(adapter, __IAVF_INIT_FAILED);
>  }
> 
>  /**
> @@ -3689,15 +3691,18 @@ static void iavf_init_task(struct work_struct
> *work)
>  	}
>  	switch (adapter->state) {
>  	case __IAVF_STARTUP:
> -		if (iavf_startup(adapter) < 0)
> +		iavf_startup(adapter);
> +		if (adapter->state == __IAVF_INIT_FAILED)
>  			goto init_failed;
>  		break;
>  	case __IAVF_INIT_VERSION_CHECK:
> -		if (iavf_init_version_check(adapter) < 0)
> +		iavf_init_version_check(adapter);
> +		if (adapter->state == __IAVF_INIT_FAILED)
>  			goto init_failed;
>  		break;
>  	case __IAVF_INIT_GET_RESOURCES:
> -		if (iavf_init_get_resources(adapter) < 0)
> +		iavf_init_get_resources(adapter);
> +		if (adapter->state == __IAVF_INIT_FAILED)
>  			goto init_failed;
>  		goto out;
>  	default:
> --
> 2.17.1
> 
Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>

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

end of thread, other threads:[~2021-10-18 18:51 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-19  8:47 [Intel-wired-lan] [PATCH net-next v6 2/3] iavf: Add __IAVF_INIT_FAILED state Mateusz Palczewski
2021-10-18 18:51 ` Jankowski, Konrad0

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.