diff options
Diffstat (limited to 'drivers/net/wireless/libertas/cfg.c')
| -rw-r--r-- | drivers/net/wireless/libertas/cfg.c | 25 | 
1 files changed, 17 insertions, 8 deletions
diff --git a/drivers/net/wireless/libertas/cfg.c b/drivers/net/wireless/libertas/cfg.c index ff6378276ff..4fcd653bddc 100644 --- a/drivers/net/wireless/libertas/cfg.c +++ b/drivers/net/wireless/libertas/cfg.c @@ -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)  |