Merge tag 'iwlwifi-for-kalle-2016-09-15' of git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-fixes
* fix to prevent firmware crash when sending off-channel frames
This commit is contained in:
@ -513,6 +513,15 @@ int iwl_mvm_tx_skb_non_sta(struct iwl_mvm *mvm, struct sk_buff *skb)
|
|||||||
int hdrlen = ieee80211_hdrlen(hdr->frame_control);
|
int hdrlen = ieee80211_hdrlen(hdr->frame_control);
|
||||||
int queue;
|
int queue;
|
||||||
|
|
||||||
|
/* IWL_MVM_OFFCHANNEL_QUEUE is used for ROC packets that can be used
|
||||||
|
* in 2 different types of vifs, P2P & STATION. P2P uses the offchannel
|
||||||
|
* queue. STATION (HS2.0) uses the auxiliary context of the FW,
|
||||||
|
* and hence needs to be sent on the aux queue
|
||||||
|
*/
|
||||||
|
if (IEEE80211_SKB_CB(skb)->hw_queue == IWL_MVM_OFFCHANNEL_QUEUE &&
|
||||||
|
skb_info->control.vif->type == NL80211_IFTYPE_STATION)
|
||||||
|
IEEE80211_SKB_CB(skb)->hw_queue = mvm->aux_queue;
|
||||||
|
|
||||||
memcpy(&info, skb->cb, sizeof(info));
|
memcpy(&info, skb->cb, sizeof(info));
|
||||||
|
|
||||||
if (WARN_ON_ONCE(info.flags & IEEE80211_TX_CTL_AMPDU))
|
if (WARN_ON_ONCE(info.flags & IEEE80211_TX_CTL_AMPDU))
|
||||||
@ -526,16 +535,6 @@ int iwl_mvm_tx_skb_non_sta(struct iwl_mvm *mvm, struct sk_buff *skb)
|
|||||||
/* This holds the amsdu headers length */
|
/* This holds the amsdu headers length */
|
||||||
skb_info->driver_data[0] = (void *)(uintptr_t)0;
|
skb_info->driver_data[0] = (void *)(uintptr_t)0;
|
||||||
|
|
||||||
/*
|
|
||||||
* IWL_MVM_OFFCHANNEL_QUEUE is used for ROC packets that can be used
|
|
||||||
* in 2 different types of vifs, P2P & STATION. P2P uses the offchannel
|
|
||||||
* queue. STATION (HS2.0) uses the auxiliary context of the FW,
|
|
||||||
* and hence needs to be sent on the aux queue
|
|
||||||
*/
|
|
||||||
if (IEEE80211_SKB_CB(skb)->hw_queue == IWL_MVM_OFFCHANNEL_QUEUE &&
|
|
||||||
info.control.vif->type == NL80211_IFTYPE_STATION)
|
|
||||||
IEEE80211_SKB_CB(skb)->hw_queue = mvm->aux_queue;
|
|
||||||
|
|
||||||
queue = info.hw_queue;
|
queue = info.hw_queue;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user