*     a TKIP key if it only requires MIC space. Do not set together with
  *     @IEEE80211_KEY_FLAG_GENERATE_MMIC on the same key.
  * @IEEE80211_KEY_FLAG_NO_AUTO_TX: Key needs explicit Tx activation.
+ * @IEEE80211_KEY_FLAG_GENERATE_MMIE: This flag should be set by the driver
+ *     for a AES_CMAC key to indicate that it requires sequence number
+ *     generation only
  */
 enum ieee80211_key_flags {
        IEEE80211_KEY_FLAG_GENERATE_IV_MGMT     = BIT(0),
        IEEE80211_KEY_FLAG_RESERVE_TAILROOM     = BIT(7),
        IEEE80211_KEY_FLAG_PUT_MIC_SPACE        = BIT(8),
        IEEE80211_KEY_FLAG_NO_AUTO_TX           = BIT(9),
+       IEEE80211_KEY_FLAG_GENERATE_MMIE        = BIT(10),
 };
 
 /**
 
 
        info = IEEE80211_SKB_CB(skb);
 
-       if (info->control.hw_key)
+       if (info->control.hw_key &&
+           !(key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_MMIE))
                return TX_CONTINUE;
 
        if (WARN_ON(skb_tailroom(skb) < sizeof(*mmie)))
 
        bip_ipn_set64(mmie->sequence_number, pn64);
 
+       if (info->control.hw_key)
+               return TX_CONTINUE;
+
        bip_aad(skb, aad);
 
        /*