if (ieee80211_get_hdr_info(skb, &sa, &da, &qos_tid, &data, &data_len))
return TXRX_DROP;
- if (!(tx->key->conf.flags & IEEE80211_KEY_FORCE_SW_ENCRYPT) &&
+ if ((tx->key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE) &&
!(tx->flags & IEEE80211_TXRXD_FRAGMENTED) &&
!(tx->local->hw.flags & IEEE80211_HW_TKIP_INCLUDE_MMIC) &&
!wpa_test) {
return TXRX_CONTINUE;
if ((rx->u.rx.status->flag & RX_FLAG_DECRYPTED) &&
- !(rx->key->conf.flags & IEEE80211_KEY_FORCE_SW_ENCRYPT)) {
+ (rx->key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE)) {
if (rx->local->hw.flags & IEEE80211_HW_WEP_INCLUDE_IV) {
if (skb->len < MICHAEL_MIC_LEN)
return TXRX_DROP;
hdrlen = ieee80211_get_hdrlen(fc);
len = skb->len - hdrlen;
- if (tx->key->conf.flags & IEEE80211_KEY_FORCE_SW_ENCRYPT)
- tailneed = TKIP_ICV_LEN;
- else
+ if (tx->key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE)
tailneed = 0;
+ else
+ tailneed = TKIP_ICV_LEN;
if ((skb_headroom(skb) < TKIP_IV_LEN ||
skb_tailroom(skb) < tailneed)) {
if (key->u.tkip.iv16 == 0)
key->u.tkip.iv32++;
- if (!(tx->key->conf.flags & IEEE80211_KEY_FORCE_SW_ENCRYPT)) {
+ if (tx->key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE) {
u32 flags = tx->local->hw.flags;
hdr = (struct ieee80211_hdr *)skb->data;
tx->u.tx.control->iv_len = TKIP_IV_LEN;
ieee80211_tx_set_iswep(tx);
- if (!(tx->key->conf.flags & IEEE80211_KEY_FORCE_SW_ENCRYPT) &&
+ if ((tx->key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE) &&
!(tx->local->hw.flags & IEEE80211_HW_WEP_INCLUDE_IV) &&
!wpa_test) {
/* hwaccel - with no need for preallocated room for IV/ICV */
return TXRX_DROP;
if ((rx->u.rx.status->flag & RX_FLAG_DECRYPTED) &&
- !(key->conf.flags & IEEE80211_KEY_FORCE_SW_ENCRYPT)) {
+ (key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE)) {
if (!(rx->local->hw.flags & IEEE80211_HW_WEP_INCLUDE_IV)) {
/* Hardware takes care of all processing, including
* replay protection, so no need to continue here. */
hdrlen = ieee80211_get_hdrlen(fc);
len = skb->len - hdrlen;
- if (key->conf.flags & IEEE80211_KEY_FORCE_SW_ENCRYPT)
- tailneed = CCMP_MIC_LEN;
- else
+ if (key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE)
tailneed = 0;
+ else
+ tailneed = CCMP_MIC_LEN;
if ((skb_headroom(skb) < CCMP_HDR_LEN ||
skb_tailroom(skb) < tailneed)) {
ccmp_pn2hdr(pos, pn, key->conf.keyidx);
- if (!(key->conf.flags & IEEE80211_KEY_FORCE_SW_ENCRYPT)) {
+ if (key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE) {
/* hwaccel - with preallocated room for CCMP header */
tx->u.tx.control->key_idx = key->conf.hw_key_idx;
return 0;
tx->u.tx.control->iv_len = CCMP_HDR_LEN;
ieee80211_tx_set_iswep(tx);
- if (!(tx->key->conf.flags & IEEE80211_KEY_FORCE_SW_ENCRYPT) &&
+ if ((tx->key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE) &&
!(tx->local->hw.flags & IEEE80211_HW_WEP_INCLUDE_IV)) {
/* hwaccel - with no need for preallocated room for CCMP "
* header or MIC fields */
if (tx->u.tx.extra_frag) {
int i;
-
for (i = 0; i < tx->u.tx.num_extra_frag; i++) {
if (ccmp_encrypt_skb(tx, tx->u.tx.extra_frag[i], test)
< 0)
return TXRX_DROP;
if ((rx->u.rx.status->flag & RX_FLAG_DECRYPTED) &&
- !(key->conf.flags & IEEE80211_KEY_FORCE_SW_ENCRYPT) &&
+ (key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE) &&
!(rx->local->hw.flags & IEEE80211_HW_WEP_INCLUDE_IV))
return TXRX_CONTINUE;
}
if ((rx->u.rx.status->flag & RX_FLAG_DECRYPTED) &&
- !(key->conf.flags & IEEE80211_KEY_FORCE_SW_ENCRYPT)) {
+ (key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE)) {
/* hwaccel has already decrypted frame and verified MIC */
} else {
u8 *scratch, *b_0, *aad;