On Mon, Jan 16, 2012 at 2:21 PM, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote: > 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? :-) Who said anything about WAPI ;-) > >> @@ -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? To be consistent with the other encryptions I think it would be better to use something like: ieee80211_crypto_hw_encrypt(tx) > >> +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 I agree, thanks, Yoni > > 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