2021-05-25 17:39:48

by Loic Poulain

[permalink] [raw]
Subject: [PATCH] net: wireless: wcn36xx: Handle scan initialization error

In case firmware is not able to initialize scanning, return
an error to skip scanning on the channel. Scan initialization
can fail, if e.g. the firmware is not able to submit the null
function packet with PS bit set.

Signed-off-by: Loic Poulain <[email protected]>
---
drivers/net/wireless/ath/wcn36xx/main.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/ath/wcn36xx/main.c b/drivers/net/wireless/ath/wcn36xx/main.c
index eaa38d3..c99c670 100644
--- a/drivers/net/wireless/ath/wcn36xx/main.c
+++ b/drivers/net/wireless/ath/wcn36xx/main.c
@@ -433,8 +433,11 @@ static int wcn36xx_config(struct ieee80211_hw *hw, u32 changed)
/* A scan is ongoing, do not change the operating
* channel, but start a scan session on the channel.
*/
- wcn36xx_smd_init_scan(wcn, HAL_SYS_MODE_SCAN,
- wcn->sw_scan_vif);
+ if (wcn36xx_smd_init_scan(wcn, HAL_SYS_MODE_SCAN,
+ wcn->sw_scan_vif)) {
+ mutex_unlock(&wcn->conf_mutex);
+ return -EIO;
+ }
wcn36xx_smd_start_scan(wcn, ch);
} else {
wcn36xx_change_opchannel(wcn, ch);
--
2.7.4


2021-06-12 10:59:03

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] net: wireless: wcn36xx: Handle scan initialization error

Loic Poulain <[email protected]> writes:

> In case firmware is not able to initialize scanning, return
> an error to skip scanning on the channel. Scan initialization
> can fail, if e.g. the firmware is not able to submit the null
> function packet with PS bit set.
>
> Signed-off-by: Loic Poulain <[email protected]>

No "net: wireless:" in the title, please.

> --- a/drivers/net/wireless/ath/wcn36xx/main.c
> +++ b/drivers/net/wireless/ath/wcn36xx/main.c
> @@ -433,8 +433,11 @@ static int wcn36xx_config(struct ieee80211_hw *hw, u32 changed)
> /* A scan is ongoing, do not change the operating
> * channel, but start a scan session on the channel.
> */
> - wcn36xx_smd_init_scan(wcn, HAL_SYS_MODE_SCAN,
> - wcn->sw_scan_vif);
> + if (wcn36xx_smd_init_scan(wcn, HAL_SYS_MODE_SCAN,
> + wcn->sw_scan_vif)) {
> + mutex_unlock(&wcn->conf_mutex);
> + return -EIO;
> + }

Why are you rewriting the error code from wcn36xx_smd_init_scan()?

Also I think this style is more readable (which does not rewrite the
error code either):

ret = foo();
if (ret) {
...
}

--
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches