On Mon, 2012-01-16 at 11:43 +0200, Yoni Divinsky wrote: > In function ieee80211_tx_h_encrypt the var info was > initialized from tx->skb, since the fucntion > is called after the function ieee80211_tx_h_fragment > tx->skb is not valid anymore. Wow, that's quite a while ago, I guess nobody tests WAPI often? :-) > @@ -1001,8 +1001,6 @@ ieee80211_tx_h_stats(struct ieee80211_tx_data *tx) > static ieee80211_tx_result debug_noinline > ieee80211_tx_h_encrypt(struct ieee80211_tx_data *tx) > { > - struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb); > - > if (!tx->key) > return TX_CONTINUE; > > @@ -1017,13 +1015,7 @@ ieee80211_tx_h_encrypt(struct ieee80211_tx_data *tx) > case WLAN_CIPHER_SUITE_AES_CMAC: > return ieee80211_crypto_aes_cmac_encrypt(tx); > default: > - /* handle hw-only algorithm */ > - if (info->control.hw_key) { > - ieee80211_tx_set_protected(tx); > - return TX_CONTINUE; > - } > - break; > - > + return ieee80211_crypto_default_encrypt(tx); How about ieee80211_require_hw_crypto() or something like that? > +ieee80211_tx_result > +ieee80211_crypto_default_encrypt(struct ieee80211_tx_data *tx) > +{ > + struct sk_buff *skb; > + struct ieee80211_tx_info *info = NULL; > + > + skb_queue_walk(&tx->skbs, skb) { > + info = IEEE80211_SKB_CB(skb); > + > + /* handle hw-only algorithm */ > + if (info == NULL || !info->control.hw_key) > + return TX_DROP; info == NULL can't happen johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html