mac80211: remove unused status flag checks
The decryption code verifies whether or not a given frame was decrypted and verified by hardware. This is unnecessary, as the crypto RX handler already does it long before the decryption code is even invoked, so remove that code to avoid confusion. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
60ae0f2005
commit
dc1580ddfc
@@ -899,6 +899,9 @@ ieee80211_rx_h_decrypt(struct ieee80211_rx_data *rx)
|
|||||||
|
|
||||||
if (!is_multicast_ether_addr(hdr->addr1) && stakey) {
|
if (!is_multicast_ether_addr(hdr->addr1) && stakey) {
|
||||||
rx->key = stakey;
|
rx->key = stakey;
|
||||||
|
if ((status->flag & RX_FLAG_DECRYPTED) &&
|
||||||
|
(status->flag & RX_FLAG_IV_STRIPPED))
|
||||||
|
return RX_CONTINUE;
|
||||||
/* Skip decryption if the frame is not protected. */
|
/* Skip decryption if the frame is not protected. */
|
||||||
if (!ieee80211_has_protected(fc))
|
if (!ieee80211_has_protected(fc))
|
||||||
return RX_CONTINUE;
|
return RX_CONTINUE;
|
||||||
|
@@ -221,19 +221,13 @@ ieee80211_crypto_tkip_decrypt(struct ieee80211_rx_data *rx)
|
|||||||
if (!rx->sta || skb->len - hdrlen < 12)
|
if (!rx->sta || skb->len - hdrlen < 12)
|
||||||
return RX_DROP_UNUSABLE;
|
return RX_DROP_UNUSABLE;
|
||||||
|
|
||||||
if (status->flag & RX_FLAG_DECRYPTED) {
|
|
||||||
if (status->flag & RX_FLAG_IV_STRIPPED) {
|
|
||||||
/*
|
/*
|
||||||
* Hardware took care of all processing, including
|
* Let TKIP code verify IV, but skip decryption.
|
||||||
* replay protection, and stripped the ICV/IV so
|
* In the case where hardware checks the IV as well,
|
||||||
* we cannot do any checks here.
|
* we don't even get here, see ieee80211_rx_h_decrypt()
|
||||||
*/
|
*/
|
||||||
return RX_CONTINUE;
|
if (status->flag & RX_FLAG_DECRYPTED)
|
||||||
}
|
|
||||||
|
|
||||||
/* let TKIP code verify IV, but skip decryption */
|
|
||||||
hwaccel = 1;
|
hwaccel = 1;
|
||||||
}
|
|
||||||
|
|
||||||
res = ieee80211_tkip_decrypt_data(rx->local->wep_rx_tfm,
|
res = ieee80211_tkip_decrypt_data(rx->local->wep_rx_tfm,
|
||||||
key, skb->data + hdrlen,
|
key, skb->data + hdrlen,
|
||||||
@@ -447,10 +441,6 @@ ieee80211_crypto_ccmp_decrypt(struct ieee80211_rx_data *rx)
|
|||||||
if (!rx->sta || data_len < 0)
|
if (!rx->sta || data_len < 0)
|
||||||
return RX_DROP_UNUSABLE;
|
return RX_DROP_UNUSABLE;
|
||||||
|
|
||||||
if ((status->flag & RX_FLAG_DECRYPTED) &&
|
|
||||||
(status->flag & RX_FLAG_IV_STRIPPED))
|
|
||||||
return RX_CONTINUE;
|
|
||||||
|
|
||||||
ccmp_hdr2pn(pn, skb->data + hdrlen);
|
ccmp_hdr2pn(pn, skb->data + hdrlen);
|
||||||
|
|
||||||
queue = ieee80211_is_mgmt(hdr->frame_control) ?
|
queue = ieee80211_is_mgmt(hdr->frame_control) ?
|
||||||
@@ -564,10 +554,6 @@ ieee80211_crypto_aes_cmac_decrypt(struct ieee80211_rx_data *rx)
|
|||||||
if (!ieee80211_is_mgmt(hdr->frame_control))
|
if (!ieee80211_is_mgmt(hdr->frame_control))
|
||||||
return RX_CONTINUE;
|
return RX_CONTINUE;
|
||||||
|
|
||||||
if ((status->flag & RX_FLAG_DECRYPTED) &&
|
|
||||||
(status->flag & RX_FLAG_IV_STRIPPED))
|
|
||||||
return RX_CONTINUE;
|
|
||||||
|
|
||||||
if (skb->len < 24 + sizeof(*mmie))
|
if (skb->len < 24 + sizeof(*mmie))
|
||||||
return RX_DROP_UNUSABLE;
|
return RX_DROP_UNUSABLE;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user