|
@@ -728,15 +728,9 @@ static void lbs_scan_worker(struct work_struct *work)
|
|
|
le16_to_cpu(scan_cmd->hdr.size),
|
|
|
lbs_ret_scan, 0);
|
|
|
|
|
|
- if (priv->scan_channel >= priv->scan_req->n_channels) {
|
|
|
+ if (priv->scan_channel >= priv->scan_req->n_channels)
|
|
|
/* Mark scan done */
|
|
|
- if (priv->internal_scan)
|
|
|
- kfree(priv->scan_req);
|
|
|
- else
|
|
|
- cfg80211_scan_done(priv->scan_req, false);
|
|
|
-
|
|
|
- priv->scan_req = NULL;
|
|
|
- }
|
|
|
+ lbs_scan_done(priv);
|
|
|
|
|
|
/* Restart network */
|
|
|
if (carrier)
|
|
@@ -774,6 +768,21 @@ static void _internal_start_scan(struct lbs_private *priv, bool internal,
|
|
|
lbs_deb_leave(LBS_DEB_CFG80211);
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ * Clean up priv->scan_req. Should be used to handle the allocation details.
|
|
|
+ */
|
|
|
+void lbs_scan_done(struct lbs_private *priv)
|
|
|
+{
|
|
|
+ WARN_ON(!priv->scan_req);
|
|
|
+
|
|
|
+ if (priv->internal_scan)
|
|
|
+ kfree(priv->scan_req);
|
|
|
+ else
|
|
|
+ cfg80211_scan_done(priv->scan_req, false);
|
|
|
+
|
|
|
+ priv->scan_req = NULL;
|
|
|
+}
|
|
|
+
|
|
|
static int lbs_cfg_scan(struct wiphy *wiphy,
|
|
|
struct net_device *dev,
|
|
|
struct cfg80211_scan_request *request)
|