local_info_t *local;
        struct ieee80211_hdr_4addr *hdr;
        u16 fc;
-       int hdr_len, res;
+       int prefix_len, postfix_len, hdr_len, res;
 
        iface = netdev_priv(skb->dev);
        local = iface->local;
        if (skb == NULL)
                return NULL;
 
-       if ((skb_headroom(skb) < crypt->ops->extra_mpdu_prefix_len ||
-            skb_tailroom(skb) < crypt->ops->extra_mpdu_postfix_len) &&
-           pskb_expand_head(skb, crypt->ops->extra_mpdu_prefix_len,
-                            crypt->ops->extra_mpdu_postfix_len, GFP_ATOMIC)) {
+       prefix_len = crypt->ops->extra_mpdu_prefix_len +
+               crypt->ops->extra_msdu_prefix_len;
+       postfix_len = crypt->ops->extra_mpdu_postfix_len +
+               crypt->ops->extra_msdu_postfix_len;
+       if ((skb_headroom(skb) < prefix_len ||
+            skb_tailroom(skb) < postfix_len) &&
+           pskb_expand_head(skb, prefix_len, postfix_len, GFP_ATOMIC)) {
                kfree_skb(skb);
                return NULL;
        }