mac80211: update to v6.1.24
[openwrt/staging/dedeckeh.git] / package / kernel / mac80211 / patches / subsys / 319-wifi-mac80211-mesh-fast-xmit-support.patch
index 12e9cf5744be400bd3fab31039ff6d3904d64d9a..968d2885f2a987eaa17d4eea0390732d0dbe24a3 100644 (file)
@@ -40,7 +40,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
  /* Maximum number of broadcast/multicast frames to buffer when some of the
   * associated stations are using power saving. */
-@@ -655,6 +656,19 @@ struct mesh_table {
+@@ -656,6 +657,19 @@ struct mesh_table {
        atomic_t entries;               /* Up to MAX_MESH_NEIGHBOURS */
  };
  
@@ -60,7 +60,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  struct ieee80211_if_mesh {
        struct timer_list housekeeping_timer;
        struct timer_list mesh_path_timer;
-@@ -733,6 +747,7 @@ struct ieee80211_if_mesh {
+@@ -734,6 +748,7 @@ struct ieee80211_if_mesh {
        struct mesh_table mpp_paths; /* Store paths for MPP&MAP */
        int mesh_paths_generation;
        int mpp_paths_generation;
@@ -68,7 +68,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  };
  
  #ifdef CPTCFG_MAC80211_MESH
-@@ -1998,6 +2013,11 @@ int ieee80211_tx_control_port(struct wip
+@@ -2002,6 +2017,11 @@ int ieee80211_tx_control_port(struct wip
                              int link_id, u64 *cookie);
  int ieee80211_probe_mesh_link(struct wiphy *wiphy, struct net_device *dev,
                              const u8 *buf, size_t len);
@@ -728,7 +728,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
 --- a/net/mac80211/tx.c
 +++ b/net/mac80211/tx.c
-@@ -3021,6 +3021,9 @@ void ieee80211_check_fast_xmit(struct st
+@@ -3022,6 +3022,9 @@ void ieee80211_check_fast_xmit(struct st
        if (!ieee80211_hw_check(&local->hw, SUPPORT_FAST_XMIT))
                return;
  
@@ -738,7 +738,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        /* Locking here protects both the pointer itself, and against concurrent
         * invocations winning data access races to, e.g., the key pointer that
         * is used.
-@@ -3402,6 +3405,9 @@ static bool ieee80211_amsdu_aggregate(st
+@@ -3403,6 +3406,9 @@ static bool ieee80211_amsdu_aggregate(st
        if (sdata->vif.offload_flags & IEEE80211_OFFLOAD_ENCAP_ENABLED)
                return false;
  
@@ -748,7 +748,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        if (skb_is_gso(skb))
                return false;
  
-@@ -3634,10 +3640,11 @@ free:
+@@ -3635,10 +3641,11 @@ free:
        return NULL;
  }
  
@@ -764,7 +764,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  {
        struct ieee80211_local *local = sdata->local;
        struct ieee80211_hdr *hdr = (void *)fast_tx->hdr;
-@@ -3646,7 +3653,6 @@ static void __ieee80211_xmit_fast(struct
+@@ -3647,7 +3654,6 @@ static void __ieee80211_xmit_fast(struct
        ieee80211_tx_result r;
        int hw_headroom = sdata->local->hw.extra_tx_headroom;
        int extra_head = fast_tx->hdr_len - (ETH_HLEN - 2);
@@ -772,7 +772,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        skb = skb_share_check(skb, GFP_ATOMIC);
        if (unlikely(!skb))
-@@ -3666,11 +3672,10 @@ static void __ieee80211_xmit_fast(struct
+@@ -3667,11 +3673,10 @@ static void __ieee80211_xmit_fast(struct
                                          ENCRYPT_NO)))
                goto free;
  
@@ -786,7 +786,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        info = IEEE80211_SKB_CB(skb);
        memset(info, 0, sizeof(*info));
-@@ -3689,7 +3694,8 @@ static void __ieee80211_xmit_fast(struct
+@@ -3690,7 +3695,8 @@ static void __ieee80211_xmit_fast(struct
  #endif
  
        if (hdr->frame_control & cpu_to_le16(IEEE80211_STYPE_QOS_DATA)) {
@@ -796,7 +796,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                *ieee80211_get_qos_ctl(hdr) = tid;
        }
  
-@@ -3732,6 +3738,7 @@ static bool ieee80211_xmit_fast(struct i
+@@ -3733,6 +3739,7 @@ static bool ieee80211_xmit_fast(struct i
        struct ieee80211_hdr *hdr = (void *)fast_tx->hdr;
        struct tid_ampdu_tx *tid_tx = NULL;
        struct sk_buff *next;
@@ -804,7 +804,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        u8 tid = IEEE80211_NUM_TIDS;
  
        /* control port protocol needs a lot of special handling */
-@@ -3757,6 +3764,8 @@ static bool ieee80211_xmit_fast(struct i
+@@ -3758,6 +3765,8 @@ static bool ieee80211_xmit_fast(struct i
                }
        }
  
@@ -813,7 +813,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        /* after this point (skb is modified) we cannot return false */
        skb = ieee80211_tx_skb_fixup(skb, ieee80211_sdata_netdev_features(sdata));
        if (!skb)
-@@ -3764,7 +3773,8 @@ static bool ieee80211_xmit_fast(struct i
+@@ -3765,7 +3774,8 @@ static bool ieee80211_xmit_fast(struct i
  
        skb_list_walk_safe(skb, skb, next) {
                skb_mark_not_on_list(skb);
@@ -823,7 +823,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        }
  
        return true;
-@@ -4244,8 +4254,15 @@ void __ieee80211_subif_start_xmit(struct
+@@ -4252,8 +4262,15 @@ void __ieee80211_subif_start_xmit(struct
                return;
        }
  
@@ -839,7 +839,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        if (ieee80211_lookup_ra_sta(sdata, skb, &sta))
                goto out_free;
  
-@@ -4255,8 +4272,6 @@ void __ieee80211_subif_start_xmit(struct
+@@ -4263,8 +4280,6 @@ void __ieee80211_subif_start_xmit(struct
        skb_set_queue_mapping(skb, ieee80211_select_queue(sdata, sta, skb));
        ieee80211_aggr_check(sdata, sta, skb);