mac80211: backport the txq scheduling / airtime fairness API
[openwrt/openwrt.git] / package / kernel / mac80211 / patches / subsys / 351-mac80211-add-TX_NEEDS_ALIGNED4_SKBS-hw-flag.patch
index 352246d592147109f32310fc652316d1fe6b4740..b45675b5590677a76c16ef94b2f8b01a747fdbd2 100644 (file)
@@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/include/net/mac80211.h
 +++ b/include/net/mac80211.h
-@@ -2134,6 +2134,9 @@ struct ieee80211_txq {
+@@ -2140,6 +2140,9 @@ struct ieee80211_txq {
   * @IEEE80211_HW_TX_STATUS_NO_AMPDU_LEN: Driver does not report accurate A-MPDU
   *    length in tx status information
   *
@@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
   * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
   */
  enum ieee80211_hw_flags {
-@@ -2180,6 +2183,7 @@ enum ieee80211_hw_flags {
+@@ -2186,6 +2189,7 @@ enum ieee80211_hw_flags {
        IEEE80211_HW_DEAUTH_NEED_MGD_TX_PREP,
        IEEE80211_HW_DOESNT_SUPPORT_QOS_NDP,
        IEEE80211_HW_TX_STATUS_NO_AMPDU_LEN,
@@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        /* keep last, obviously */
        NUM_IEEE80211_HW_FLAGS
-@@ -2462,6 +2466,40 @@ ieee80211_get_alt_retry_rate(const struc
+@@ -2472,6 +2476,40 @@ ieee80211_get_alt_retry_rate(const struc
  void ieee80211_free_txskb(struct ieee80211_hw *hw, struct sk_buff *skb);
  
  /**
@@ -148,7 +148,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
   out:
 --- a/net/mac80211/sta_info.h
 +++ b/net/mac80211/sta_info.h
-@@ -301,7 +301,7 @@ struct ieee80211_fast_tx {
+@@ -311,7 +311,7 @@ struct ieee80211_fast_tx {
        u8 hdr_len;
        u8 sa_offs, da_offs, pn_offs;
        u8 band;
@@ -227,7 +227,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        if (likely(sta)) {
                if (!IS_ERR(sta))
-@@ -2215,7 +2214,7 @@ netdev_tx_t ieee80211_monitor_start_xmit
+@@ -2222,7 +2221,7 @@ netdev_tx_t ieee80211_monitor_start_xmit
                goto fail;
  
        hdr = (struct ieee80211_hdr *)(skb->data + len_rthdr);
@@ -236,7 +236,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        if (skb->len < len_rthdr + hdrlen)
                goto fail;
-@@ -2433,7 +2432,7 @@ static struct sk_buff *ieee80211_build_h
+@@ -2440,7 +2439,7 @@ static struct sk_buff *ieee80211_build_h
        struct ieee80211_chanctx_conf *chanctx_conf;
        struct ieee80211_sub_if_data *ap_sdata;
        enum nl80211_band band;
@@ -245,7 +245,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        if (IS_ERR(sta))
                sta = NULL;
-@@ -2732,7 +2731,9 @@ static struct sk_buff *ieee80211_build_h
+@@ -2739,7 +2738,9 @@ static struct sk_buff *ieee80211_build_h
        }
  
        skb_pull(skb, skip_header_bytes);
@@ -255,7 +255,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        /*
         * So we need to modify the skb header and hence need a copy of
-@@ -2765,6 +2766,9 @@ static struct sk_buff *ieee80211_build_h
+@@ -2772,6 +2773,9 @@ static struct sk_buff *ieee80211_build_h
                memcpy(skb_push(skb, meshhdrlen), &mesh_hdr, meshhdrlen);
  #endif
  
@@ -265,7 +265,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        if (ieee80211_is_data_qos(fc)) {
                __le16 *qos_control;
  
-@@ -2940,6 +2944,8 @@ void ieee80211_check_fast_xmit(struct st
+@@ -2947,6 +2951,8 @@ void ieee80211_check_fast_xmit(struct st
                fc |= cpu_to_le16(IEEE80211_STYPE_QOS_DATA);
        }
  
@@ -274,7 +274,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        /* We store the key here so there's no point in using rcu_dereference()
         * but that's fine because the code that changes the pointers will call
         * this function after doing so. For a single CPU that would be enough,
-@@ -3518,7 +3524,7 @@ begin:
+@@ -3525,7 +3531,7 @@ begin:
        tx.local = local;
        tx.skb = skb;
        tx.sdata = vif_to_sdata(info->control.vif);
@@ -283,7 +283,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        if (txq->sta)
                tx.sta = container_of(txq->sta, struct sta_info, sta);
-@@ -3856,7 +3862,7 @@ ieee80211_build_data_template(struct iee
+@@ -4009,7 +4015,7 @@ ieee80211_build_data_template(struct iee
        hdr = (void *)skb->data;
        tx.sta = sta_info_get(sdata, hdr->addr1);
        tx.skb = skb;