[PATCH] [OEM-B] rsi: fix for fw assert during bg-scan

Ganapathi Kondraju ganapathirajukondraju at gmail.com
Wed Oct 16 11:49:18 UTC 2019


BugLink: http://bugs.launchpad.net/bugs/1848318

issue: Observed firmware assert while performing background scan.

root cause: there is a redundant null check for ssid info while preparing
probe request in background scan case, which blocks the probe request pkt
length updation, leads to assert no-71(if probe-req-length is 0 or greater
the max probe length 120) in firmware.

Signed-off-by: Ganapathi Kondraju <ganapathirajukondraju at gmail.com>
---
 drivers/net/wireless/rsi/rsi_91x_mgmt.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/rsi/rsi_91x_mgmt.c b/drivers/net/wireless/rsi/rsi_91x_mgmt.c
index 5590a35c7559..e1e4c74b908b 100644
--- a/drivers/net/wireless/rsi/rsi_91x_mgmt.c
+++ b/drivers/net/wireless/rsi/rsi_91x_mgmt.c
@@ -1823,7 +1823,7 @@ int rsi_prepare_probe_request(struct rsi_common *common,
 		return -EINVAL;
 	ssid_info = &scan_req->ssids[n_ssid];
 	if (!ssid_info)
-		return -EINVAL;
+		rsi_dbg(INFO_ZONE, "%s: No ssid info\n" __func__);
 
 	hdr = (struct ieee80211_hdr *)pbreq;
 	hdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
@@ -2025,9 +2025,13 @@ int rsi_send_bgscan_probe_req(struct rsi_common *common)
 	bgscan->channel_scan_time = cpu_to_le16(RSI_CHANNEL_SCAN_TIME);
 
 	/* Append dot11 probe request */
-	rsi_prepare_probe_request(common, scan_req, 0, 0,
-				  &skb->data[frame_len],
-				  &pbreq_len);
+	status = rsi_prepare_probe_request(common, scan_req, 0, 0,
+					   &skb->data[frame_len],
+					   &pbreq_len);
+	if (status) {
+		rsi_dbg(ERR_ZONE, "Failed to prepare bgscan probe req\n");
+		return status;
+	}
 	bgscan->probe_req_length = cpu_to_le16(pbreq_len);
 
 	rsi_set_len_qno(&bgscan->desc_dword0.len_qno,
-- 
2.17.1




More information about the kernel-team mailing list