diff options
| author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2013-05-01 08:47:44 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2013-05-01 08:47:44 -0700 | 
| commit | bf61c8840efe60fd8f91446860b63338fb424158 (patch) | |
| tree | 7a71832407a4f0d6346db773343f4c3ae2257b19 /drivers/net/wireless/mwifiex/init.c | |
| parent | 5846115b30f3a881e542c8bfde59a699c1c13740 (diff) | |
| parent | 0c6a61657da78098472fd0eb71cc01f2387fa1bb (diff) | |
| download | olio-linux-3.10-bf61c8840efe60fd8f91446860b63338fb424158.tar.xz olio-linux-3.10-bf61c8840efe60fd8f91446860b63338fb424158.zip  | |
Merge branch 'next' into for-linus
Prepare first set of updates for 3.10 merge window.
Diffstat (limited to 'drivers/net/wireless/mwifiex/init.c')
| -rw-r--r-- | drivers/net/wireless/mwifiex/init.c | 51 | 
1 files changed, 35 insertions, 16 deletions
diff --git a/drivers/net/wireless/mwifiex/init.c b/drivers/net/wireless/mwifiex/init.c index b5d37a8caa0..e38aa9b3663 100644 --- a/drivers/net/wireless/mwifiex/init.c +++ b/drivers/net/wireless/mwifiex/init.c @@ -39,11 +39,8 @@ static int mwifiex_add_bss_prio_tbl(struct mwifiex_private *priv)  	unsigned long flags;  	bss_prio = kzalloc(sizeof(struct mwifiex_bss_prio_node), GFP_KERNEL); -	if (!bss_prio) { -		dev_err(adapter->dev, "%s: failed to alloc bss_prio\n", -			__func__); +	if (!bss_prio)  		return -ENOMEM; -	}  	bss_prio->priv = priv;  	INIT_LIST_HEAD(&bss_prio->list); @@ -84,18 +81,19 @@ static void scan_delay_timer_fn(unsigned long data)  		spin_unlock_irqrestore(&adapter->mwifiex_cmd_lock, flags);  		if (priv->user_scan_cfg) { -			dev_dbg(priv->adapter->dev, -				"info: %s: scan aborted\n", __func__); -			cfg80211_scan_done(priv->scan_request, 1); -			priv->scan_request = NULL; +			if (priv->scan_request) { +				dev_dbg(priv->adapter->dev, +					"info: aborting scan\n"); +				cfg80211_scan_done(priv->scan_request, 1); +				priv->scan_request = NULL; +			} else { +				dev_dbg(priv->adapter->dev, +					"info: scan already aborted\n"); +			} +  			kfree(priv->user_scan_cfg);  			priv->user_scan_cfg = NULL;  		} - -		if (priv->scan_pending_on_block) { -			priv->scan_pending_on_block = false; -			up(&priv->async_sem); -		}  		goto done;  	} @@ -316,7 +314,6 @@ static void mwifiex_init_adapter(struct mwifiex_adapter *adapter)  	adapter->pm_wakeup_fw_try = false; -	adapter->max_tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K;  	adapter->tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K;  	adapter->curr_tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K; @@ -387,9 +384,17 @@ void mwifiex_wake_up_net_dev_queue(struct net_device *netdev,  					struct mwifiex_adapter *adapter)  {  	unsigned long dev_queue_flags; +	unsigned int i;  	spin_lock_irqsave(&adapter->queue_lock, dev_queue_flags); -	netif_tx_wake_all_queues(netdev); + +	for (i = 0; i < netdev->num_tx_queues; i++) { +		struct netdev_queue *txq = netdev_get_tx_queue(netdev, i); + +		if (netif_tx_queue_stopped(txq)) +			netif_tx_wake_queue(txq); +	} +  	spin_unlock_irqrestore(&adapter->queue_lock, dev_queue_flags);  } @@ -400,9 +405,17 @@ void mwifiex_stop_net_dev_queue(struct net_device *netdev,  					struct mwifiex_adapter *adapter)  {  	unsigned long dev_queue_flags; +	unsigned int i;  	spin_lock_irqsave(&adapter->queue_lock, dev_queue_flags); -	netif_tx_stop_all_queues(netdev); + +	for (i = 0; i < netdev->num_tx_queues; i++) { +		struct netdev_queue *txq = netdev_get_tx_queue(netdev, i); + +		if (!netif_tx_queue_stopped(txq)) +			netif_tx_stop_queue(txq); +	} +  	spin_unlock_irqrestore(&adapter->queue_lock, dev_queue_flags);  } @@ -574,6 +587,12 @@ int mwifiex_init_fw(struct mwifiex_adapter *adapter)  				return -1;  		}  	} + +	if (adapter->if_ops.init_fw_port) { +		if (adapter->if_ops.init_fw_port(adapter)) +			return -1; +	} +  	for (i = 0; i < adapter->priv_num; i++) {  		if (adapter->priv[i]) {  			ret = mwifiex_sta_init_cmd(adapter->priv[i], first_sta);  |