|
@@ -1563,7 +1563,7 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv,
|
|
|
dev_err(adapter->dev, "SCAN_RESP: too many AP returned (%d)\n",
|
|
|
scan_rsp->number_of_sets);
|
|
|
ret = -1;
|
|
|
- goto done;
|
|
|
+ goto check_next_scan;
|
|
|
}
|
|
|
|
|
|
bytes_left = le16_to_cpu(scan_rsp->bss_descript_size);
|
|
@@ -1634,7 +1634,8 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv,
|
|
|
if (!beacon_size || beacon_size > bytes_left) {
|
|
|
bss_info += bytes_left;
|
|
|
bytes_left = 0;
|
|
|
- return -1;
|
|
|
+ ret = -1;
|
|
|
+ goto check_next_scan;
|
|
|
}
|
|
|
|
|
|
/* Initialize the current working beacon pointer for this BSS
|
|
@@ -1690,7 +1691,7 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv,
|
|
|
dev_err(priv->adapter->dev,
|
|
|
"%s: bytes left < IE length\n",
|
|
|
__func__);
|
|
|
- goto done;
|
|
|
+ goto check_next_scan;
|
|
|
}
|
|
|
if (element_id == WLAN_EID_DS_PARAMS) {
|
|
|
channel = *(current_ptr + sizeof(struct ieee_types_header));
|
|
@@ -1753,6 +1754,7 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+check_next_scan:
|
|
|
spin_lock_irqsave(&adapter->scan_pending_q_lock, flags);
|
|
|
if (list_empty(&adapter->scan_pending_q)) {
|
|
|
spin_unlock_irqrestore(&adapter->scan_pending_q_lock, flags);
|
|
@@ -1813,7 +1815,6 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-done:
|
|
|
return ret;
|
|
|
}
|
|
|
|