mac80211: update to version 4.19.32-1
[openwrt/staging/lynxis.git] / package / kernel / mac80211 / patches / subsys / 357-mac80211-optimize-skb-resizing.patch
index 8fd85fedcc9e3f420a2161a82afcf6526c67abe0..98b23422653d271122e42c191bb0fd36edff5282 100644 (file)
@@ -65,14 +65,20 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        struct ieee80211_hdr *hdr;
 -      bool enc_tailroom;
 -      int tail_need = 0;
-+      int head_need, head_max;
-+      int tail_need, tail_max;
-+      bool enc_tailroom = false;
+-
 -      hdr = (struct ieee80211_hdr *) skb->data;
 -      enc_tailroom = may_encrypt &&
 -                     (sdata->crypto_tx_tailroom_needed_cnt ||
 -                      ieee80211_is_mgmt(hdr->frame_control));
+-
+-      if (enc_tailroom) {
+-              tail_need = IEEE80211_ENCRYPT_TAILROOM;
+-              tail_need -= skb_tailroom(skb);
+-              tail_need = max_t(int, tail_need, 0);
++      int head_need, head_max;
++      int tail_need, tail_max;
++      bool enc_tailroom = false;
++
 +      if (sdata && !hdr_len &&
 +          !(info->flags & IEEE80211_TX_INTFL_DONT_ENCRYPT)) {
 +              hdr = (struct ieee80211_hdr *) skb->data;
@@ -80,11 +86,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +                              ieee80211_is_mgmt(hdr->frame_control));
 +              hdr_len += sdata->encrypt_headroom;
 +      }
--      if (enc_tailroom) {
--              tail_need = IEEE80211_ENCRYPT_TAILROOM;
--              tail_need -= skb_tailroom(skb);
--              tail_need = max_t(int, tail_need, 0);
++
 +      head_need = head_max = hdr_len;
 +      tail_need = tail_max = 0;
 +      if (!sdata) {
@@ -127,13 +129,13 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 -      bool may_encrypt;
 -
 -      may_encrypt = !(info->flags & IEEE80211_TX_INTFL_DONT_ENCRYPT);
--
 -      headroom = local->tx_headroom;
 -      if (may_encrypt)
 -              headroom += sdata->encrypt_headroom;
 -      headroom -= skb_headroom(skb);
 -      headroom = max_t(int, 0, headroom);
+-
 -      if (ieee80211_skb_resize(sdata, skb, headroom, may_encrypt)) {
 +      if (ieee80211_skb_resize(sdata, skb, 0, 0)) {
                ieee80211_free_txskb(&local->hw, skb);