diff options
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/queue')
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/queue/tx.c | 10 | 
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/queue/tx.c b/drivers/net/wireless/intel/iwlwifi/queue/tx.c index 726185d6fab8..d1c39c214f95 100644 --- a/drivers/net/wireless/intel/iwlwifi/queue/tx.c +++ b/drivers/net/wireless/intel/iwlwifi/queue/tx.c @@ -1554,14 +1554,18 @@ void iwl_txq_reclaim(struct iwl_trans *trans, int txq_id, int ssn,  		     struct sk_buff_head *skbs)  {  	struct iwl_txq *txq = trans->txqs.txq[txq_id]; -	int tfd_num = iwl_txq_get_cmd_index(txq, ssn); -	int read_ptr = iwl_txq_get_cmd_index(txq, txq->read_ptr); -	int last_to_free; +	int tfd_num, read_ptr, last_to_free;  	/* This function is not meant to release cmd queue*/  	if (WARN_ON(txq_id == trans->txqs.cmd.q_id))  		return; +	if (WARN_ON(!txq)) +		return; + +	tfd_num = iwl_txq_get_cmd_index(txq, ssn); +	read_ptr = iwl_txq_get_cmd_index(txq, txq->read_ptr); +  	spin_lock_bh(&txq->lock);  	if (!test_bit(txq_id, trans->txqs.queue_used)) {  |