mac80211: update to 6.6.15
[openwrt/openwrt.git] / package / kernel / mac80211 / patches / subsys / 310-mac80211-split-mesh-fast-tx-cache-into-local-proxied.patch
index f362751e0a3ba4db138d455dda1a0bd45dc156b2..4853cef723171e82906dabb649a08ce4bf7d2412 100644 (file)
@@ -82,7 +82,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        struct ieee80211_fast_tx fast_tx;
        u8 hdr[sizeof(struct ieee80211s_hdr) + sizeof(rfc1042_header)];
-@@ -334,7 +358,8 @@ void mesh_path_tx_root_frame(struct ieee
+@@ -333,7 +357,8 @@ void mesh_path_tx_root_frame(struct ieee
  
  bool mesh_action_is_path_sel(struct ieee80211_mgmt *mgmt);
  struct ieee80211_mesh_fast_tx *
@@ -175,12 +175,12 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +      ether_addr_copy(key.addr, addr);
        cache = &sdata->u.mesh.tx_cache;
        spin_lock_bh(&cache->walk_lock);
--      entry = rhashtable_lookup(&cache->rht, addr, fast_tx_rht_params);
+-      entry = rhashtable_lookup_fast(&cache->rht, addr, fast_tx_rht_params);
 -      if (entry)
 -              mesh_fast_tx_entry_free(cache, entry);
 +      for (i = MESH_FAST_TX_TYPE_LOCAL; i < MESH_FAST_TX_TYPE_FORWARDED; i++) {
 +              key.type = i;
-+              entry = rhashtable_lookup(&cache->rht, &key, fast_tx_rht_params);
++              entry = rhashtable_lookup_fast(&cache->rht, &key, fast_tx_rht_params);
 +              if (entry)
 +                      mesh_fast_tx_entry_free(cache, entry);
 +      }
@@ -189,7 +189,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
 --- a/net/mac80211/rx.c
 +++ b/net/mac80211/rx.c
-@@ -2727,7 +2727,10 @@ ieee80211_rx_mesh_fast_forward(struct ie
+@@ -2726,7 +2726,10 @@ ieee80211_rx_mesh_fast_forward(struct ie
                               struct sk_buff *skb, int hdrlen)
  {
        struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
@@ -201,7 +201,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        struct ieee80211s_hdr *mesh_hdr;
        struct tid_ampdu_tx *tid_tx;
        struct sta_info *sta;
-@@ -2736,9 +2739,13 @@ ieee80211_rx_mesh_fast_forward(struct ie
+@@ -2735,9 +2738,13 @@ ieee80211_rx_mesh_fast_forward(struct ie
  
        mesh_hdr = (struct ieee80211s_hdr *)(skb->data + sizeof(eth));
        if ((mesh_hdr->flags & MESH_FLAGS_AE) == MESH_FLAGS_AE_A5_A6)