mac80211: update to version 4.19.85
authorHauke Mehrtens <hauke@hauke-m.de>
Thu, 21 Nov 2019 21:46:21 +0000 (22:46 +0100)
committerRISCi_ATOM <bob@bobcall.me>
Sat, 7 Dec 2019 15:38:58 +0000 (10:38 -0500)
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
package/kernel/mac80211/Makefile
package/kernel/mac80211/patches/ath/381-ath9k-fix-tx99-with-monitor-mode-interface.patch [deleted file]
package/kernel/mac80211/patches/ath/395-ath9k-add-back-support-for-using-active-monitor-inte.patch [deleted file]
package/kernel/mac80211/patches/ath/404-regd_no_assoc_hints.patch
package/kernel/mac80211/patches/subsys/321-cfg80211-Add-airtime-statistics-and-settings.patch
package/kernel/mac80211/patches/subsys/354-mac80211-calculate-hash-for-fq-without-holding-fq-lo.patch
package/kernel/mac80211/patches/subsys/365-mac80211-IBSS-send-deauth-when-expiring-inactive-STA.patch
package/kernel/mac80211/patches/subsys/370-backports-Adapt-to-changes-to-skb_get_hash_perturb.patch [deleted file]
package/kernel/mac80211/patches/subsys/522-mac80211_configure_antenna_gain.patch

index 0ce12996c0bd49b4d0dc7dce15b0d5a489137cba..da7b62a7a27678958e2a6f9a6523d02643a45cb8 100644 (file)
@@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=mac80211
 
-PKG_VERSION:=4.19.79-1
+PKG_VERSION:=4.19.85-1
 PKG_RELEASE:=1
-PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v4.19.79/
-PKG_HASH:=ee03b16949e4968092cfed3cd763ff4682bc29fa3b52ebc239aa915583413cf3
+PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v4.19.85/
+PKG_HASH:=6a92df43e8c3e2410638d84dfd18773d667757532dd0a911227c9b7d65aee34d
 
 PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
diff --git a/package/kernel/mac80211/patches/ath/381-ath9k-fix-tx99-with-monitor-mode-interface.patch b/package/kernel/mac80211/patches/ath/381-ath9k-fix-tx99-with-monitor-mode-interface.patch
deleted file mode 100644 (file)
index d5c3782..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-From: Felix Fietkau <nbd@nbd.name>
-Date: Mon, 20 Aug 2018 11:35:05 +0200
-Subject: [PATCH] ath9k: fix tx99 with monitor mode interface
-
-Tx99 is typically configured via a monitor mode interface, which does
-not get added to the driver as a vif. Since the code currently expects
-a configured virtual interface for tx99, enabling tx99 via debugfs fails.
-Since the vif is not needed anyway, remove all checks for it.
-
-Signed-off-by: Felix Fietkau <nbd@nbd.name>
----
-
---- a/drivers/net/wireless/ath/ath9k/ath9k.h
-+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
-@@ -1074,7 +1074,6 @@ struct ath_softc {
-       struct ath_spec_scan_priv spec_priv;
--      struct ieee80211_vif *tx99_vif;
-       struct sk_buff *tx99_skb;
-       bool tx99_state;
-       s16 tx99_power;
---- a/drivers/net/wireless/ath/ath9k/main.c
-+++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -1251,15 +1251,10 @@ static int ath9k_add_interface(struct ie
-       struct ath_vif *avp = (void *)vif->drv_priv;
-       struct ath_node *an = &avp->mcast_node;
--      mutex_lock(&sc->mutex);
-+      if (IS_ENABLED(CPTCFG_ATH9K_TX99))
-+              return -EOPNOTSUPP;
--      if (IS_ENABLED(CPTCFG_ATH9K_TX99)) {
--              if (sc->cur_chan->nvifs >= 1) {
--                      mutex_unlock(&sc->mutex);
--                      return -EOPNOTSUPP;
--              }
--              sc->tx99_vif = vif;
--      }
-+      mutex_lock(&sc->mutex);
-       ath_dbg(common, CONFIG, "Attach a VIF of type: %d\n", vif->type);
-       sc->cur_chan->nvifs++;
-@@ -1342,7 +1337,6 @@ static void ath9k_remove_interface(struc
-       ath9k_p2p_remove_vif(sc, vif);
-       sc->cur_chan->nvifs--;
--      sc->tx99_vif = NULL;
-       if (!ath9k_is_chanctx_enabled())
-               list_del(&avp->list);
---- a/drivers/net/wireless/ath/ath9k/tx99.c
-+++ b/drivers/net/wireless/ath/ath9k/tx99.c
-@@ -54,12 +54,6 @@ static struct sk_buff *ath9k_build_tx99_
-       struct ieee80211_hdr *hdr;
-       struct ieee80211_tx_info *tx_info;
-       struct sk_buff *skb;
--      struct ath_vif *avp;
--
--      if (!sc->tx99_vif)
--              return NULL;
--
--      avp = (struct ath_vif *)sc->tx99_vif->drv_priv;
-       skb = alloc_skb(len, GFP_KERNEL);
-       if (!skb)
-@@ -77,14 +71,11 @@ static struct sk_buff *ath9k_build_tx99_
-       memcpy(hdr->addr2, hw->wiphy->perm_addr, ETH_ALEN);
-       memcpy(hdr->addr3, hw->wiphy->perm_addr, ETH_ALEN);
--      hdr->seq_ctrl |= cpu_to_le16(avp->seq_no);
--
-       tx_info = IEEE80211_SKB_CB(skb);
-       memset(tx_info, 0, sizeof(*tx_info));
-       rate = &tx_info->control.rates[0];
-       tx_info->band = sc->cur_chan->chandef.chan->band;
-       tx_info->flags = IEEE80211_TX_CTL_NO_ACK;
--      tx_info->control.vif = sc->tx99_vif;
-       rate->count = 1;
-       if (ah->curchan && IS_CHAN_HT(ah->curchan)) {
-               rate->flags |= IEEE80211_TX_RC_MCS;
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -2974,7 +2974,7 @@ int ath9k_tx99_send(struct ath_softc *sc
-               return -EINVAL;
-       }
--      ath_set_rates(sc->tx99_vif, NULL, bf);
-+      ath_set_rates(NULL, NULL, bf);
-       ath9k_hw_set_desc_link(sc->sc_ah, bf->bf_desc, bf->bf_daddr);
-       ath9k_hw_tx99_start(sc->sc_ah, txctl->txq->axq_qnum);
diff --git a/package/kernel/mac80211/patches/ath/395-ath9k-add-back-support-for-using-active-monitor-inte.patch b/package/kernel/mac80211/patches/ath/395-ath9k-add-back-support-for-using-active-monitor-inte.patch
deleted file mode 100644 (file)
index 7f30de9..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-From: Felix Fietkau <nbd@nbd.name>
-Date: Sat, 22 Sep 2018 15:20:50 +0200
-Subject: [PATCH] ath9k: add back support for using active monitor interfaces
- for tx99
-
-Various documented examples on how to set up tx99 with ath9k rely
-on setting up a regular monitor interface for setting the channel.
-My previous patch "ath9k: fix tx99 with monitor mode interface" made
-it possible to set it up this way again. However, it was removing support
-for using an active monitor interface, which is required for controlling
-the bitrate as well, since the bitrate is not passed down with a regular
-monitor interface.
-
-This patch partially reverts the previous one, but keeps support for using
-a regular monitor interface to keep documented steps working in cases
-where the bitrate does not matter
-
-Fixes: d9c52fd17cb48 ("ath9k: fix tx99 with monitor mode interface")
-Signed-off-by: Felix Fietkau <nbd@nbd.name>
----
-
---- a/drivers/net/wireless/ath/ath9k/ath9k.h
-+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
-@@ -1074,6 +1074,7 @@ struct ath_softc {
-       struct ath_spec_scan_priv spec_priv;
-+      struct ieee80211_vif *tx99_vif;
-       struct sk_buff *tx99_skb;
-       bool tx99_state;
-       s16 tx99_power;
---- a/drivers/net/wireless/ath/ath9k/main.c
-+++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -1251,8 +1251,13 @@ static int ath9k_add_interface(struct ie
-       struct ath_vif *avp = (void *)vif->drv_priv;
-       struct ath_node *an = &avp->mcast_node;
--      if (IS_ENABLED(CPTCFG_ATH9K_TX99))
--              return -EOPNOTSUPP;
-+      if (IS_ENABLED(CPTCFG_ATH9K_TX99)) {
-+              if (sc->cur_chan->nvifs >= 1) {
-+                      mutex_unlock(&sc->mutex);
-+                      return -EOPNOTSUPP;
-+              }
-+              sc->tx99_vif = vif;
-+      }
-       mutex_lock(&sc->mutex);
-@@ -1337,6 +1342,7 @@ static void ath9k_remove_interface(struc
-       ath9k_p2p_remove_vif(sc, vif);
-       sc->cur_chan->nvifs--;
-+      sc->tx99_vif = NULL;
-       if (!ath9k_is_chanctx_enabled())
-               list_del(&avp->list);
---- a/drivers/net/wireless/ath/ath9k/tx99.c
-+++ b/drivers/net/wireless/ath/ath9k/tx99.c
-@@ -54,6 +54,7 @@ static struct sk_buff *ath9k_build_tx99_
-       struct ieee80211_hdr *hdr;
-       struct ieee80211_tx_info *tx_info;
-       struct sk_buff *skb;
-+      struct ath_vif *avp;
-       skb = alloc_skb(len, GFP_KERNEL);
-       if (!skb)
-@@ -71,11 +72,17 @@ static struct sk_buff *ath9k_build_tx99_
-       memcpy(hdr->addr2, hw->wiphy->perm_addr, ETH_ALEN);
-       memcpy(hdr->addr3, hw->wiphy->perm_addr, ETH_ALEN);
-+      if (sc->tx99_vif) {
-+              avp = (struct ath_vif *) sc->tx99_vif->drv_priv;
-+              hdr->seq_ctrl |= cpu_to_le16(avp->seq_no);
-+      }
-+
-       tx_info = IEEE80211_SKB_CB(skb);
-       memset(tx_info, 0, sizeof(*tx_info));
-       rate = &tx_info->control.rates[0];
-       tx_info->band = sc->cur_chan->chandef.chan->band;
-       tx_info->flags = IEEE80211_TX_CTL_NO_ACK;
-+      tx_info->control.vif = sc->tx99_vif;
-       rate->count = 1;
-       if (ah->curchan && IS_CHAN_HT(ah->curchan)) {
-               rate->flags |= IEEE80211_TX_RC_MCS;
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -2974,7 +2974,7 @@ int ath9k_tx99_send(struct ath_softc *sc
-               return -EINVAL;
-       }
--      ath_set_rates(NULL, NULL, bf);
-+      ath_set_rates(sc->tx99_vif, NULL, bf);
-       ath9k_hw_set_desc_link(sc->sc_ah, bf->bf_desc, bf->bf_daddr);
-       ath9k_hw_tx99_start(sc->sc_ah, txctl->txq->axq_qnum);
index d4c7318377ebed3fac5f7a7dd22233d0366f94ea..266b750e4b31c7b511b524e47acf1f552fdd39c8 100644 (file)
@@ -1,6 +1,6 @@
 --- a/net/wireless/reg.c
 +++ b/net/wireless/reg.c
-@@ -3021,6 +3021,8 @@ void regulatory_hint_country_ie(struct w
+@@ -3027,6 +3027,8 @@ void regulatory_hint_country_ie(struct w
        enum environment_cap env = ENVIRON_ANY;
        struct regulatory_request *request = NULL, *lr;
  
@@ -9,11 +9,11 @@
        /* IE len must be evenly divisible by 2 */
        if (country_ie_len & 0x01)
                return;
-@@ -3227,6 +3229,7 @@ static void restore_regulatory_settings(
+@@ -3252,6 +3254,7 @@ static bool is_wiphy_all_set_reg_flag(en
  
  void regulatory_hint_disconnect(void)
  {
 +      return;
-       pr_debug("All devices are disconnected, going to restore regulatory settings\n");
-       restore_regulatory_settings(false);
- }
+       /* Restore of regulatory settings is not required when wiphy(s)
+        * ignore IE from connected access point but clearance of beacon hints
+        * is required when wiphy(s) supports beacon hints.
index 9078fc2596ed0a8ec6ac1947abccb92fd9ef2ac6..9dac46842dd2e6648d657c513d2cf08c7bf754e8 100644 (file)
@@ -148,7 +148,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
        MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
 --- a/net/wireless/nl80211.c
 +++ b/net/wireless/nl80211.c
-@@ -462,6 +462,7 @@ static const struct nla_policy nl80211_p
+@@ -463,6 +463,7 @@ static const struct nla_policy nl80211_p
        [NL80211_ATTR_TXQ_QUANTUM] = { .type = NLA_U32 },
        [NL80211_ATTR_HE_CAPABILITY] = { .type = NLA_BINARY,
                                         .len = NL80211_HE_MAX_CAPABILITY_LEN },
@@ -156,7 +156,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
  };
  
  /* policy for the key attributes */
-@@ -4702,6 +4703,11 @@ static int nl80211_send_station(struct s
+@@ -4703,6 +4704,11 @@ static int nl80211_send_station(struct s
        PUT_SINFO(PLID, plid, u16);
        PUT_SINFO(PLINK_STATE, plink_state, u8);
        PUT_SINFO_U64(RX_DURATION, rx_duration);
@@ -168,7 +168,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
  
        switch (rdev->wiphy.signal_type) {
        case CFG80211_SIGNAL_TYPE_MBM:
-@@ -5338,6 +5344,15 @@ static int nl80211_set_station(struct sk
+@@ -5339,6 +5345,15 @@ static int nl80211_set_station(struct sk
                        nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]);
        }
  
@@ -184,7 +184,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
        /* Include parameters for TDLS peer (will check later) */
        err = nl80211_set_station_tdls(info, &params);
        if (err)
-@@ -5476,6 +5491,15 @@ static int nl80211_new_station(struct sk
+@@ -5477,6 +5492,15 @@ static int nl80211_new_station(struct sk
                        return -EINVAL;
        }
  
index 3084a4ba32669085c448e24a1fda6ce8e1639eda..b5a49dbfe016023428c7952203a9733f5776153f 100644 (file)
@@ -10,37 +10,53 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/include/net/fq_impl.h
 +++ b/include/net/fq_impl.h
-@@ -107,21 +107,23 @@ begin:
+@@ -107,29 +107,31 @@ begin:
        return skb;
  }
  
-+static u32 fq_flow_idx(struct fq *fq, struct sk_buff *skb)
-+{
-+      u32 hash = skb_get_hash_perturb(skb, fq->perturbation);
-+
-+      return reciprocal_scale(hash, fq->flows_cnt);
-+}
-+
- static struct fq_flow *fq_flow_classify(struct fq *fq,
+-static struct fq_flow *fq_flow_classify(struct fq *fq,
 -                                      struct fq_tin *tin,
-+                                      struct fq_tin *tin, u32 idx,
-                                       struct sk_buff *skb,
-                                       fq_flow_get_default_t get_default_func)
+-                                      struct sk_buff *skb,
+-                                      fq_flow_get_default_t get_default_func)
++static u32 fq_flow_idx(struct fq *fq, struct sk_buff *skb)
  {
-       struct fq_flow *flow;
+-      struct fq_flow *flow;
 -      u32 hash;
 -      u32 idx;
-       lockdep_assert_held(&fq->lock);
+-
+-      lockdep_assert_held(&fq->lock);
+-
+ #if LINUX_VERSION_IS_GEQ(5,3,10) || \
+     LINUX_VERSION_IN_RANGE(4,19,83, 4,20,0) || \
+     LINUX_VERSION_IN_RANGE(4,14,153, 4,15,0) || \
+     LINUX_VERSION_IN_RANGE(4,9,200, 4,10,0) || \
+     LINUX_VERSION_IN_RANGE(4,4,200, 4,5,0)
+-      hash = skb_get_hash_perturb(skb, &fq->perturbation);
++      u32 hash = skb_get_hash_perturb(skb, &fq->perturbation);
+ #else
 -      hash = skb_get_hash_perturb(skb, fq->perturbation);
++      u32 hash = skb_get_hash_perturb(skb, fq->perturbation);
+ #endif
 -      idx = reciprocal_scale(hash, fq->flows_cnt);
-       flow = &fq->flows[idx];
--
+-      flow = &fq->flows[idx];
++      return reciprocal_scale(hash, fq->flows_cnt);
++}
++
++static struct fq_flow *fq_flow_classify(struct fq *fq,
++                                      struct fq_tin *tin, u32 idx,
++                                      struct sk_buff *skb,
++                                      fq_flow_get_default_t get_default_func)
++{
++      struct fq_flow *flow;
++
++      lockdep_assert_held(&fq->lock);
++
++      flow = &fq->flows[idx];
        if (flow->tin && flow->tin != tin) {
                flow = get_default_func(fq, tin, idx, skb);
                tin->collisions++;
-@@ -153,7 +155,7 @@ static void fq_recalc_backlog(struct fq
+@@ -161,7 +163,7 @@ static void fq_recalc_backlog(struct fq
  }
  
  static void fq_tin_enqueue(struct fq *fq,
@@ -49,7 +65,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                           struct sk_buff *skb,
                           fq_skb_free_t free_func,
                           fq_flow_get_default_t get_default_func)
-@@ -163,7 +165,7 @@ static void fq_tin_enqueue(struct fq *fq
+@@ -171,7 +173,7 @@ static void fq_tin_enqueue(struct fq *fq
  
        lockdep_assert_held(&fq->lock);
  
index 5b5acded9a6e9611def06ea3b1e32b35dca96ab5..61b6d2b8d4e39c914264ffae81fe604fe5978ce3 100644 (file)
@@ -78,7 +78,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
        }
  
        /* flush out frame - make sure the deauth was actually sent */
-@@ -4371,7 +4372,7 @@ void ieee80211_mgd_quiesce(struct ieee80
+@@ -4369,7 +4370,7 @@ void ieee80211_mgd_quiesce(struct ieee80
                 * cfg80211 won't know and won't actually abort those attempts,
                 * thus we need to do that ourselves.
                 */
@@ -87,7 +87,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
                                               IEEE80211_STYPE_DEAUTH,
                                               WLAN_REASON_DEAUTH_LEAVING,
                                               false, frame_buf);
-@@ -5351,7 +5352,7 @@ int ieee80211_mgd_deauth(struct ieee8021
+@@ -5349,7 +5350,7 @@ int ieee80211_mgd_deauth(struct ieee8021
                           ieee80211_get_reason_code_string(req->reason_code));
  
                drv_mgd_prepare_tx(sdata->local, sdata, 0);
@@ -96,7 +96,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
                                               IEEE80211_STYPE_DEAUTH,
                                               req->reason_code, tx,
                                               frame_buf);
-@@ -5371,7 +5372,7 @@ int ieee80211_mgd_deauth(struct ieee8021
+@@ -5369,7 +5370,7 @@ int ieee80211_mgd_deauth(struct ieee8021
                           ieee80211_get_reason_code_string(req->reason_code));
  
                drv_mgd_prepare_tx(sdata->local, sdata, 0);
diff --git a/package/kernel/mac80211/patches/subsys/370-backports-Adapt-to-changes-to-skb_get_hash_perturb.patch b/package/kernel/mac80211/patches/subsys/370-backports-Adapt-to-changes-to-skb_get_hash_perturb.patch
deleted file mode 100644 (file)
index c138055..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-From e3c57dd949835419cee8d3b45db38de58bf6ebd5 Mon Sep 17 00:00:00 2001
-From: Hauke Mehrtens <hauke@hauke-m.de>
-Date: Mon, 18 Nov 2019 01:13:37 +0100
-Subject: [PATCH] backports: Adapt to changes to skb_get_hash_perturb()
-
-The skb_get_hash_perturb() function now takes a siphash_key_t instead of
-an u32. This was changed in commit 55667441c84f ("net/flow_dissector:
-switch to siphash"). Use the correct type in the fq header file
-depending on the kernel version.
-
-Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
----
- include/net/fq.h      | 8 ++++++++
- include/net/fq_impl.h | 8 ++++++++
- 2 files changed, 16 insertions(+)
-
---- a/include/net/fq.h
-+++ b/include/net/fq.h
-@@ -70,7 +70,15 @@ struct fq {
-       struct list_head backlogs;
-       spinlock_t lock;
-       u32 flows_cnt;
-+#if LINUX_VERSION_IS_GEQ(5,3,10) || \
-+    LINUX_VERSION_IN_RANGE(4,19,83, 4,20,0) || \
-+    LINUX_VERSION_IN_RANGE(4,14,153, 4,15,0) || \
-+    LINUX_VERSION_IN_RANGE(4,9,200, 4,10,0) || \
-+    LINUX_VERSION_IN_RANGE(4,4,200, 4,5,0)
-+      siphash_key_t   perturbation;
-+#else
-       u32 perturbation;
-+#endif
-       u32 limit;
-       u32 memory_limit;
-       u32 memory_usage;
---- a/include/net/fq_impl.h
-+++ b/include/net/fq_impl.h
-@@ -109,7 +109,15 @@ begin:
- static u32 fq_flow_idx(struct fq *fq, struct sk_buff *skb)
- {
-+#if LINUX_VERSION_IS_GEQ(5,3,10) || \
-+    LINUX_VERSION_IN_RANGE(4,19,83, 4,20,0) || \
-+    LINUX_VERSION_IN_RANGE(4,14,153, 4,15,0) || \
-+    LINUX_VERSION_IN_RANGE(4,9,200, 4,10,0) || \
-+    LINUX_VERSION_IN_RANGE(4,4,200, 4,5,0)
-+      u32 hash = skb_get_hash_perturb(skb, &fq->perturbation);
-+#else
-       u32 hash = skb_get_hash_perturb(skb, fq->perturbation);
-+#endif
-       return reciprocal_scale(hash, fq->flows_cnt);
- }
-@@ -309,7 +317,15 @@ static int fq_init(struct fq *fq, int fl
-       INIT_LIST_HEAD(&fq->backlogs);
-       spin_lock_init(&fq->lock);
-       fq->flows_cnt = max_t(u32, flows_cnt, 1);
-+#if LINUX_VERSION_IS_GEQ(5,3,10) || \
-+    LINUX_VERSION_IN_RANGE(4,19,83, 4,20,0) || \
-+    LINUX_VERSION_IN_RANGE(4,14,153, 4,15,0) || \
-+    LINUX_VERSION_IN_RANGE(4,9,200, 4,10,0) || \
-+    LINUX_VERSION_IN_RANGE(4,4,200, 4,5,0)
-+      get_random_bytes(&fq->perturbation, sizeof(fq->perturbation));
-+#else
-       fq->perturbation = prandom_u32();
-+#endif
-       fq->quantum = 300;
-       fq->limit = 8192;
-       fq->memory_limit = 16 << 20; /* 16 MBytes */
index e0c3d24f7437fc34a9d1243801bd3f8a7da00f5a..4c4eb7917e9a32b06bc7cb159fcfdf5ddf99b263 100644 (file)
        local->user_power_level = IEEE80211_UNSET_POWER_LEVEL;
 --- a/net/wireless/nl80211.c
 +++ b/net/wireless/nl80211.c
-@@ -463,6 +463,7 @@ static const struct nla_policy nl80211_p
+@@ -464,6 +464,7 @@ static const struct nla_policy nl80211_p
        [NL80211_ATTR_HE_CAPABILITY] = { .type = NLA_BINARY,
                                         .len = NL80211_HE_MAX_CAPABILITY_LEN },
        [NL80211_ATTR_AIRTIME_WEIGHT] = NLA_POLICY_MIN(NLA_U16, 1),
  };
  
  /* policy for the key attributes */
-@@ -2622,6 +2623,20 @@ static int nl80211_set_wiphy(struct sk_b
+@@ -2623,6 +2624,20 @@ static int nl80211_set_wiphy(struct sk_b
                if (result)
                        return result;
        }