From db90c243a0b9bd72fc691cd09e58a96ac2a452cf Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sun, 23 Sep 2018 18:02:35 +0200 Subject: mac80211: update to version based on 4.19-rc4 This updates mac80211 to backports based on kernel 4.19-rc4. I plan to integrate all the patches which are in this tar into upstream backports soon. I used the backports generated from this code: https://github.com/hauke/backports/commits/wip2 Signed-off-by: Hauke Mehrtens --- .../subsys/100-remove-cryptoapi-dependencies.patch | 24 +++---- .../subsys/110-mac80211_keep_keys_on_stop_ap.patch | 2 +- .../mac80211/patches/subsys/130-disable-fils.patch | 4 +- .../patches/subsys/140-tweak-TSQ-setting.patch | 2 +- .../patches/subsys/150-disable_addr_notifier.patch | 18 ++--- .../mac80211/patches/subsys/210-ap_scan.patch | 2 +- ...-mac80211-add-hdrlen-to-ieee80211_tx_data.patch | 24 +++---- ...8-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch | 74 ++++++++----------- ...nstrel-Enable-STBC-and-LDPC-for-VHT-Rates.patch | 2 +- ...nstrel-remove-unnecessary-debugfs-cleanup.patch | 36 ++++------ ...nstrel-merge-with-minstrel_ht-always-enab.patch | 69 +++++++----------- ...nstrel-fix-using-short-preamble-CCK-rates.patch | 6 +- ...x-memory-accounting-with-A-MSDU-aggregati.patch | 14 ++-- ...-initialize-sinfo-in-cfg80211_get_station.patch | 42 ----------- .../522-mac80211_configure_antenna_gain.patch | 82 +++++++++------------- 15 files changed, 147 insertions(+), 254 deletions(-) delete mode 100644 package/kernel/mac80211/patches/subsys/379-cfg80211-initialize-sinfo-in-cfg80211_get_station.patch (limited to 'package/kernel/mac80211/patches/subsys') diff --git a/package/kernel/mac80211/patches/subsys/100-remove-cryptoapi-dependencies.patch b/package/kernel/mac80211/patches/subsys/100-remove-cryptoapi-dependencies.patch index 8d7a39a6df..0fe6ee196c 100644 --- a/package/kernel/mac80211/patches/subsys/100-remove-cryptoapi-dependencies.patch +++ b/package/kernel/mac80211/patches/subsys/100-remove-cryptoapi-dependencies.patch @@ -1,6 +1,6 @@ --- a/net/mac80211/Makefile +++ b/net/mac80211/Makefile -@@ -6,7 +6,6 @@ mac80211-y := \ +@@ -7,7 +7,6 @@ mac80211-y := \ driver-ops.o \ sta_info.o \ wep.o \ @@ -8,7 +8,7 @@ wpa.o \ scan.o offchannel.o \ ht.o agg-tx.o agg-rx.o \ -@@ -16,8 +15,8 @@ mac80211-y := \ +@@ -18,8 +17,8 @@ mac80211-y := \ rate.o \ michael.o \ tkip.o \ @@ -385,7 +385,7 @@ #endif /* AES_GCM_H */ --- a/net/mac80211/wpa.c +++ b/net/mac80211/wpa.c -@@ -306,7 +306,8 @@ ieee80211_crypto_tkip_decrypt(struct iee +@@ -314,7 +314,8 @@ ieee80211_crypto_tkip_decrypt(struct iee } @@ -395,7 +395,7 @@ { __le16 mask_fc; int a4_included, mgmt; -@@ -336,14 +337,8 @@ static void ccmp_special_blocks(struct s +@@ -344,14 +345,8 @@ static void ccmp_special_blocks(struct s else qos_tid = 0; @@ -412,7 +412,7 @@ /* Nonce: Nonce Flags | A2 | PN * Nonce Flags: Priority (b0..b3) | Management (b4) | Reserved (b5..b7) -@@ -351,6 +346,8 @@ static void ccmp_special_blocks(struct s +@@ -359,6 +354,8 @@ static void ccmp_special_blocks(struct s b_0[1] = qos_tid | (mgmt << 4); memcpy(&b_0[2], hdr->addr2, ETH_ALEN); memcpy(&b_0[8], pn, IEEE80211_CCMP_PN_LEN); @@ -421,7 +421,7 @@ /* AAD (extra authenticate-only data) / masked 802.11 header * FC | A1 | A2 | A3 | SC | [A4] | [QC] */ -@@ -407,7 +404,7 @@ static int ccmp_encrypt_skb(struct ieee8 +@@ -415,7 +412,7 @@ static int ccmp_encrypt_skb(struct ieee8 u8 *pos; u8 pn[6]; u64 pn64; @@ -430,7 +430,7 @@ u8 b_0[AES_BLOCK_SIZE]; if (info->control.hw_key && -@@ -462,9 +459,11 @@ static int ccmp_encrypt_skb(struct ieee8 +@@ -470,9 +467,11 @@ static int ccmp_encrypt_skb(struct ieee8 return 0; pos += IEEE80211_CCMP_HDR_LEN; @@ -445,7 +445,7 @@ } -@@ -537,13 +536,13 @@ ieee80211_crypto_ccmp_decrypt(struct iee +@@ -545,13 +544,13 @@ ieee80211_crypto_ccmp_decrypt(struct iee u8 aad[2 * AES_BLOCK_SIZE]; u8 b_0[AES_BLOCK_SIZE]; /* hardware didn't decrypt/verify MIC */ @@ -461,7 +461,7 @@ return RX_DROP_UNUSABLE; } -@@ -639,7 +638,7 @@ static int gcmp_encrypt_skb(struct ieee8 +@@ -646,7 +645,7 @@ static int gcmp_encrypt_skb(struct ieee8 u8 *pos; u8 pn[6]; u64 pn64; @@ -470,7 +470,7 @@ u8 j_0[AES_BLOCK_SIZE]; if (info->control.hw_key && -@@ -696,8 +695,10 @@ static int gcmp_encrypt_skb(struct ieee8 +@@ -703,8 +702,10 @@ static int gcmp_encrypt_skb(struct ieee8 pos += IEEE80211_GCMP_HDR_LEN; gcmp_special_blocks(skb, pn, j_0, aad); @@ -483,7 +483,7 @@ } ieee80211_tx_result -@@ -1121,9 +1122,9 @@ ieee80211_crypto_aes_gmac_encrypt(struct +@@ -1127,9 +1128,9 @@ ieee80211_crypto_aes_gmac_encrypt(struct struct ieee80211_key *key = tx->key; struct ieee80211_mmie_16 *mmie; struct ieee80211_hdr *hdr; @@ -495,7 +495,7 @@ if (WARN_ON(skb_queue_len(&tx->skbs) != 1)) return TX_DROP; -@@ -1169,7 +1170,7 @@ ieee80211_crypto_aes_gmac_decrypt(struct +@@ -1175,7 +1176,7 @@ ieee80211_crypto_aes_gmac_decrypt(struct struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); struct ieee80211_key *key = rx->key; struct ieee80211_mmie_16 *mmie; diff --git a/package/kernel/mac80211/patches/subsys/110-mac80211_keep_keys_on_stop_ap.patch b/package/kernel/mac80211/patches/subsys/110-mac80211_keep_keys_on_stop_ap.patch index 3b1fcdf9c8..4630274cb4 100644 --- a/package/kernel/mac80211/patches/subsys/110-mac80211_keep_keys_on_stop_ap.patch +++ b/package/kernel/mac80211/patches/subsys/110-mac80211_keep_keys_on_stop_ap.patch @@ -2,7 +2,7 @@ Used for AP+STA support in OpenWrt - preserve AP mode keys across STA reconnects --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c -@@ -1058,7 +1058,6 @@ static int ieee80211_stop_ap(struct wiph +@@ -1063,7 +1063,6 @@ static int ieee80211_stop_ap(struct wiph sdata->u.ap.driver_smps_mode = IEEE80211_SMPS_OFF; __sta_info_flush(sdata, true); diff --git a/package/kernel/mac80211/patches/subsys/130-disable-fils.patch b/package/kernel/mac80211/patches/subsys/130-disable-fils.patch index 1f03589878..f1163764a0 100644 --- a/package/kernel/mac80211/patches/subsys/130-disable-fils.patch +++ b/package/kernel/mac80211/patches/subsys/130-disable-fils.patch @@ -21,7 +21,7 @@ Disable FILS support, since it pulls in crypto hash support * Copyright 2016, Qualcomm Atheros, Inc. --- a/net/mac80211/main.c +++ b/net/mac80211/main.c -@@ -550,7 +550,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_ +@@ -570,7 +570,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_ NL80211_FEATURE_MAC_ON_CREATE | NL80211_FEATURE_USERSPACE_MPM | NL80211_FEATURE_FULL_AP_CLIENT_STATE; @@ -29,4 +29,4 @@ Disable FILS support, since it pulls in crypto hash support +#if 0 /* LINUX_VERSION_IS_GEQ(4,3,0) */ wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_FILS_STA); #endif - + wiphy_ext_feature_set(wiphy, diff --git a/package/kernel/mac80211/patches/subsys/140-tweak-TSQ-setting.patch b/package/kernel/mac80211/patches/subsys/140-tweak-TSQ-setting.patch index 6e9a07a927..e0fe5a1b79 100644 --- a/package/kernel/mac80211/patches/subsys/140-tweak-TSQ-setting.patch +++ b/package/kernel/mac80211/patches/subsys/140-tweak-TSQ-setting.patch @@ -1,6 +1,6 @@ --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c -@@ -3750,6 +3750,12 @@ out: +@@ -3787,6 +3787,12 @@ out: netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb, struct net_device *dev) { diff --git a/package/kernel/mac80211/patches/subsys/150-disable_addr_notifier.patch b/package/kernel/mac80211/patches/subsys/150-disable_addr_notifier.patch index 781dd3c1bc..db3c693fd4 100644 --- a/package/kernel/mac80211/patches/subsys/150-disable_addr_notifier.patch +++ b/package/kernel/mac80211/patches/subsys/150-disable_addr_notifier.patch @@ -1,6 +1,6 @@ --- a/net/mac80211/main.c +++ b/net/mac80211/main.c -@@ -292,7 +292,7 @@ void ieee80211_restart_hw(struct ieee802 +@@ -315,7 +315,7 @@ void ieee80211_restart_hw(struct ieee802 } EXPORT_SYMBOL(ieee80211_restart_hw); @@ -9,7 +9,7 @@ static int ieee80211_ifa_changed(struct notifier_block *nb, unsigned long data, void *arg) { -@@ -351,7 +351,7 @@ static int ieee80211_ifa_changed(struct +@@ -374,7 +374,7 @@ static int ieee80211_ifa_changed(struct } #endif @@ -18,9 +18,9 @@ static int ieee80211_ifa6_changed(struct notifier_block *nb, unsigned long data, void *arg) { -@@ -1114,14 +1114,14 @@ int ieee80211_register_hw(struct ieee802 - if (result) - goto fail_flows; +@@ -1168,14 +1168,14 @@ int ieee80211_register_hw(struct ieee802 + + rtnl_unlock(); -#ifdef CONFIG_INET +#ifdef __disabled__CONFIG_INET @@ -35,7 +35,7 @@ local->ifa6_notifier.notifier_call = ieee80211_ifa6_changed; result = register_inet6addr_notifier(&local->ifa6_notifier); if (result) -@@ -1130,13 +1130,13 @@ int ieee80211_register_hw(struct ieee802 +@@ -1184,13 +1184,13 @@ int ieee80211_register_hw(struct ieee802 return 0; @@ -51,8 +51,8 @@ +#if defined(__disabled__CONFIG_INET) || defined(__disabled__CONFIG_IPV6) fail_ifa: #endif - ieee80211_txq_teardown_flows(local); -@@ -1166,10 +1166,10 @@ void ieee80211_unregister_hw(struct ieee + rtnl_lock(); +@@ -1220,10 +1220,10 @@ void ieee80211_unregister_hw(struct ieee tasklet_kill(&local->tx_pending_tasklet); tasklet_kill(&local->tasklet); @@ -64,4 +64,4 @@ +#if IS_ENABLED(__disabled__CONFIG_IPV6) unregister_inet6addr_notifier(&local->ifa6_notifier); #endif - + ieee80211_txq_teardown_flows(local); diff --git a/package/kernel/mac80211/patches/subsys/210-ap_scan.patch b/package/kernel/mac80211/patches/subsys/210-ap_scan.patch index 8ade963c9f..174096f5ea 100644 --- a/package/kernel/mac80211/patches/subsys/210-ap_scan.patch +++ b/package/kernel/mac80211/patches/subsys/210-ap_scan.patch @@ -1,6 +1,6 @@ --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c -@@ -2215,7 +2215,7 @@ static int ieee80211_scan(struct wiphy * +@@ -2229,7 +2229,7 @@ static int ieee80211_scan(struct wiphy * * the frames sent while scanning on other channel will be * lost) */ diff --git a/package/kernel/mac80211/patches/subsys/357-mac80211-add-hdrlen-to-ieee80211_tx_data.patch b/package/kernel/mac80211/patches/subsys/357-mac80211-add-hdrlen-to-ieee80211_tx_data.patch index 83c613434d..f4fc431f35 100644 --- a/package/kernel/mac80211/patches/subsys/357-mac80211-add-hdrlen-to-ieee80211_tx_data.patch +++ b/package/kernel/mac80211/patches/subsys/357-mac80211-add-hdrlen-to-ieee80211_tx_data.patch @@ -11,7 +11,7 @@ Signed-off-by: Janusz Dziedzic --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h -@@ -177,6 +177,7 @@ struct ieee80211_tx_data { +@@ -179,6 +179,7 @@ struct ieee80211_tx_data { struct ieee80211_tx_rate rate; unsigned int flags; @@ -39,7 +39,7 @@ Signed-off-by: Janusz Dziedzic /* internal error, why isn't DONTFRAG set? */ if (WARN_ON(skb->len + FCS_LEN <= frag_threshold)) return TX_DROP; -@@ -1175,6 +1173,8 @@ ieee80211_tx_prepare(struct ieee80211_su +@@ -1174,6 +1172,8 @@ ieee80211_tx_prepare(struct ieee80211_su hdr = (struct ieee80211_hdr *) skb->data; @@ -48,7 +48,7 @@ Signed-off-by: Janusz Dziedzic if (likely(sta)) { if (!IS_ERR(sta)) tx->sta = sta; -@@ -3468,6 +3468,7 @@ begin: +@@ -3497,6 +3497,7 @@ begin: tx.local = local; tx.skb = skb; tx.sdata = vif_to_sdata(info->control.vif); @@ -56,7 +56,7 @@ Signed-off-by: Janusz Dziedzic if (txq->sta) tx.sta = container_of(txq->sta, struct sta_info, sta); -@@ -3796,6 +3797,7 @@ ieee80211_build_data_template(struct iee +@@ -3833,6 +3834,7 @@ ieee80211_build_data_template(struct iee hdr = (void *)skb->data; tx.sta = sta_info_get(sdata, hdr->addr1); tx.skb = skb; @@ -66,7 +66,7 @@ Signed-off-by: Janusz Dziedzic rcu_read_unlock(); --- a/net/mac80211/util.c +++ b/net/mac80211/util.c -@@ -1232,6 +1232,7 @@ void ieee80211_send_auth(struct ieee8021 +@@ -1290,6 +1290,7 @@ void ieee80211_send_auth(struct ieee8021 struct ieee80211_local *local = sdata->local; struct sk_buff *skb; struct ieee80211_mgmt *mgmt; @@ -74,7 +74,7 @@ Signed-off-by: Janusz Dziedzic int err; /* 24 + 6 = header + auth_algo + auth_transaction + status_code */ -@@ -1255,8 +1256,10 @@ void ieee80211_send_auth(struct ieee8021 +@@ -1313,8 +1314,10 @@ void ieee80211_send_auth(struct ieee8021 skb_put_data(skb, extra, extra_len); if (auth_alg == WLAN_AUTH_SHARED_KEY && transaction == 3) { @@ -164,7 +164,7 @@ Signed-off-by: Janusz Dziedzic if (skb->len < hdrlen) return TX_DROP; -@@ -187,7 +187,6 @@ mic_fail_no_key: +@@ -195,7 +195,6 @@ mic_fail_no_key: static int tkip_encrypt_skb(struct ieee80211_tx_data *tx, struct sk_buff *skb) { @@ -172,7 +172,7 @@ Signed-off-by: Janusz Dziedzic struct ieee80211_key *key = tx->key; struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); unsigned int hdrlen; -@@ -202,7 +201,7 @@ static int tkip_encrypt_skb(struct ieee8 +@@ -210,7 +209,7 @@ static int tkip_encrypt_skb(struct ieee8 return 0; } @@ -181,7 +181,7 @@ Signed-off-by: Janusz Dziedzic len = skb->len - hdrlen; if (info->control.hw_key) -@@ -420,7 +419,7 @@ static int ccmp_encrypt_skb(struct ieee8 +@@ -428,7 +427,7 @@ static int ccmp_encrypt_skb(struct ieee8 return 0; } @@ -190,7 +190,7 @@ Signed-off-by: Janusz Dziedzic len = skb->len - hdrlen; if (info->control.hw_key) -@@ -653,7 +652,7 @@ static int gcmp_encrypt_skb(struct ieee8 +@@ -660,7 +659,7 @@ static int gcmp_encrypt_skb(struct ieee8 return 0; } @@ -199,7 +199,7 @@ Signed-off-by: Janusz Dziedzic len = skb->len - hdrlen; if (info->control.hw_key) -@@ -793,7 +792,6 @@ static ieee80211_tx_result +@@ -800,7 +799,6 @@ static ieee80211_tx_result ieee80211_crypto_cs_encrypt(struct ieee80211_tx_data *tx, struct sk_buff *skb) { @@ -207,7 +207,7 @@ Signed-off-by: Janusz Dziedzic struct ieee80211_key *key = tx->key; struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); int hdrlen; -@@ -809,8 +807,7 @@ ieee80211_crypto_cs_encrypt(struct ieee8 +@@ -816,8 +814,7 @@ ieee80211_crypto_cs_encrypt(struct ieee8 pskb_expand_head(skb, iv_len, 0, GFP_ATOMIC))) return TX_DROP; diff --git a/package/kernel/mac80211/patches/subsys/358-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch b/package/kernel/mac80211/patches/subsys/358-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch index 417013890b..c52a4f61a9 100644 --- a/package/kernel/mac80211/patches/subsys/358-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch +++ b/package/kernel/mac80211/patches/subsys/358-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch @@ -21,11 +21,9 @@ wep/tkip/ccmp. Signed-off-by: Janusz Dziedzic --- -Index: backports-v4.18-rc7/include/net/mac80211.h -=================================================================== ---- backports-v4.18-rc7.orig/include/net/mac80211.h -+++ backports-v4.18-rc7/include/net/mac80211.h -@@ -2084,6 +2084,9 @@ struct ieee80211_txq { +--- a/include/net/mac80211.h ++++ b/include/net/mac80211.h +@@ -2127,6 +2127,9 @@ struct ieee80211_txq { * @IEEE80211_HW_DOESNT_SUPPORT_QOS_NDP: The driver (or firmware) doesn't * support QoS NDP for AP probing - that's most likely a driver bug. * @@ -35,7 +33,7 @@ Index: backports-v4.18-rc7/include/net/mac80211.h * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays */ enum ieee80211_hw_flags { -@@ -2129,6 +2132,7 @@ enum ieee80211_hw_flags { +@@ -2172,6 +2175,7 @@ enum ieee80211_hw_flags { IEEE80211_HW_SUPPORTS_TDLS_BUFFER_STA, IEEE80211_HW_DEAUTH_NEED_MGD_TX_PREP, IEEE80211_HW_DOESNT_SUPPORT_QOS_NDP, @@ -43,10 +41,8 @@ Index: backports-v4.18-rc7/include/net/mac80211.h /* keep last, obviously */ NUM_IEEE80211_HW_FLAGS -Index: backports-v4.18-rc7/net/mac80211/debugfs.c -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/debugfs.c -+++ backports-v4.18-rc7/net/mac80211/debugfs.c +--- a/net/mac80211/debugfs.c ++++ b/net/mac80211/debugfs.c @@ -214,6 +214,7 @@ static const char *hw_flag_names[] = { FLAG(SUPPORTS_TDLS_BUFFER_STA), FLAG(DEAUTH_NEED_MGD_TX_PREP), @@ -55,11 +51,9 @@ Index: backports-v4.18-rc7/net/mac80211/debugfs.c #undef FLAG }; -Index: backports-v4.18-rc7/net/mac80211/ieee80211_i.h -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/ieee80211_i.h -+++ backports-v4.18-rc7/net/mac80211/ieee80211_i.h -@@ -1550,6 +1550,29 @@ ieee80211_vif_get_num_mcast_if(struct ie +--- a/net/mac80211/ieee80211_i.h ++++ b/net/mac80211/ieee80211_i.h +@@ -1557,6 +1557,29 @@ ieee80211_vif_get_num_mcast_if(struct ie return -1; } @@ -89,10 +83,8 @@ Index: backports-v4.18-rc7/net/mac80211/ieee80211_i.h u64 ieee80211_calculate_rx_timestamp(struct ieee80211_local *local, struct ieee80211_rx_status *status, unsigned int mpdu_len, -Index: backports-v4.18-rc7/net/mac80211/sta_info.h -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/sta_info.h -+++ backports-v4.18-rc7/net/mac80211/sta_info.h +--- a/net/mac80211/sta_info.h ++++ b/net/mac80211/sta_info.h @@ -301,7 +301,7 @@ struct ieee80211_fast_tx { u8 hdr_len; u8 sa_offs, da_offs, pn_offs; @@ -102,10 +94,8 @@ Index: backports-v4.18-rc7/net/mac80211/sta_info.h sizeof(rfc1042_header)] __aligned(2); struct rcu_head rcu_head; -Index: backports-v4.18-rc7/net/mac80211/status.c -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/status.c -+++ backports-v4.18-rc7/net/mac80211/status.c +--- a/net/mac80211/status.c ++++ b/net/mac80211/status.c @@ -653,9 +653,22 @@ void ieee80211_tx_monitor(struct ieee802 struct sk_buff *skb2; struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); @@ -129,10 +119,8 @@ Index: backports-v4.18-rc7/net/mac80211/status.c /* send frame to monitor interfaces now */ rtap_len = ieee80211_tx_radiotap_len(info); if (WARN_ON_ONCE(skb_headroom(skb) < rtap_len)) { -Index: backports-v4.18-rc7/net/mac80211/tkip.c -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/tkip.c -+++ backports-v4.18-rc7/net/mac80211/tkip.c +--- a/net/mac80211/tkip.c ++++ b/net/mac80211/tkip.c @@ -201,10 +201,12 @@ void ieee80211_get_tkip_p2k(struct ieee8 { struct ieee80211_key *key = (struct ieee80211_key *) @@ -147,11 +135,9 @@ Index: backports-v4.18-rc7/net/mac80211/tkip.c u32 iv32 = get_unaligned_le32(&data[4]); u16 iv16 = data[2] | (data[0] << 8); -Index: backports-v4.18-rc7/net/mac80211/tx.c -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/tx.c -+++ backports-v4.18-rc7/net/mac80211/tx.c -@@ -1169,8 +1169,7 @@ ieee80211_tx_prepare(struct ieee80211_su +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -1171,8 +1171,7 @@ ieee80211_tx_prepare(struct ieee80211_su info->flags &= ~IEEE80211_TX_INTFL_NEED_TXPROCESSING; hdr = (struct ieee80211_hdr *) skb->data; @@ -161,7 +147,7 @@ Index: backports-v4.18-rc7/net/mac80211/tx.c if (likely(sta)) { if (!IS_ERR(sta)) -@@ -2200,7 +2199,7 @@ netdev_tx_t ieee80211_monitor_start_xmit +@@ -2205,7 +2204,7 @@ netdev_tx_t ieee80211_monitor_start_xmit goto fail; hdr = (struct ieee80211_hdr *)(skb->data + len_rthdr); @@ -170,7 +156,7 @@ Index: backports-v4.18-rc7/net/mac80211/tx.c if (skb->len < len_rthdr + hdrlen) goto fail; -@@ -2418,7 +2417,7 @@ static struct sk_buff *ieee80211_build_h +@@ -2423,7 +2422,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; @@ -179,7 +165,7 @@ Index: backports-v4.18-rc7/net/mac80211/tx.c if (IS_ERR(sta)) sta = NULL; -@@ -2638,6 +2637,9 @@ static struct sk_buff *ieee80211_build_h +@@ -2643,6 +2642,9 @@ static struct sk_buff *ieee80211_build_h hdrlen += 2; } @@ -189,7 +175,7 @@ Index: backports-v4.18-rc7/net/mac80211/tx.c /* * Drop unicast frames to unauthorised stations unless they are * EAPOL frames from the local station. -@@ -2718,6 +2720,7 @@ static struct sk_buff *ieee80211_build_h +@@ -2723,6 +2725,7 @@ static struct sk_buff *ieee80211_build_h skb_pull(skb, skip_header_bytes); head_need = hdrlen + encaps_len + meshhdrlen - skb_headroom(skb); @@ -197,7 +183,7 @@ Index: backports-v4.18-rc7/net/mac80211/tx.c /* * So we need to modify the skb header and hence need a copy of -@@ -2750,6 +2753,9 @@ static struct sk_buff *ieee80211_build_h +@@ -2755,6 +2758,9 @@ static struct sk_buff *ieee80211_build_h memcpy(skb_push(skb, meshhdrlen), &mesh_hdr, meshhdrlen); #endif @@ -207,7 +193,7 @@ Index: backports-v4.18-rc7/net/mac80211/tx.c if (ieee80211_is_data_qos(fc)) { __le16 *qos_control; -@@ -2925,6 +2931,9 @@ void ieee80211_check_fast_xmit(struct st +@@ -2930,6 +2936,9 @@ void ieee80211_check_fast_xmit(struct st fc |= cpu_to_le16(IEEE80211_STYPE_QOS_DATA); } @@ -217,7 +203,7 @@ Index: backports-v4.18-rc7/net/mac80211/tx.c /* 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, -@@ -3513,7 +3522,7 @@ begin: +@@ -3524,7 +3533,7 @@ begin: if (tx.key && (tx.key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_IV)) @@ -226,11 +212,9 @@ Index: backports-v4.18-rc7/net/mac80211/tx.c ieee80211_xmit_fast_finish(sta->sdata, sta, pn_offs, tx.key, skb); -Index: backports-v4.18-rc7/net/mac80211/util.c -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/util.c -+++ backports-v4.18-rc7/net/mac80211/util.c -@@ -1274,6 +1274,7 @@ void ieee80211_send_auth(struct ieee8021 +--- a/net/mac80211/util.c ++++ b/net/mac80211/util.c +@@ -1288,6 +1288,7 @@ void ieee80211_send_auth(struct ieee8021 u32 tx_flags) { struct ieee80211_local *local = sdata->local; @@ -238,7 +222,7 @@ Index: backports-v4.18-rc7/net/mac80211/util.c struct sk_buff *skb; struct ieee80211_mgmt *mgmt; unsigned int hdrlen; -@@ -1300,7 +1301,7 @@ void ieee80211_send_auth(struct ieee8021 +@@ -1314,7 +1315,7 @@ void ieee80211_send_auth(struct ieee8021 skb_put_data(skb, extra, extra_len); if (auth_alg == WLAN_AUTH_SHARED_KEY && transaction == 3) { diff --git a/package/kernel/mac80211/patches/subsys/359-mac80211-minstrel-Enable-STBC-and-LDPC-for-VHT-Rates.patch b/package/kernel/mac80211/patches/subsys/359-mac80211-minstrel-Enable-STBC-and-LDPC-for-VHT-Rates.patch index 609b15b832..661fb46ea4 100644 --- a/package/kernel/mac80211/patches/subsys/359-mac80211-minstrel-Enable-STBC-and-LDPC-for-VHT-Rates.patch +++ b/package/kernel/mac80211/patches/subsys/359-mac80211-minstrel-Enable-STBC-and-LDPC-for-VHT-Rates.patch @@ -10,7 +10,7 @@ Signed-off-by: Chaitanya TK --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h -@@ -1556,6 +1556,7 @@ struct ieee80211_vht_operation { +@@ -1659,6 +1659,7 @@ struct ieee80211_mu_edca_param_set { #define IEEE80211_VHT_CAP_RXSTBC_3 0x00000300 #define IEEE80211_VHT_CAP_RXSTBC_4 0x00000400 #define IEEE80211_VHT_CAP_RXSTBC_MASK 0x00000700 diff --git a/package/kernel/mac80211/patches/subsys/370-mac80211-minstrel-remove-unnecessary-debugfs-cleanup.patch b/package/kernel/mac80211/patches/subsys/370-mac80211-minstrel-remove-unnecessary-debugfs-cleanup.patch index c871655a38..95d4f294aa 100644 --- a/package/kernel/mac80211/patches/subsys/370-mac80211-minstrel-remove-unnecessary-debugfs-cleanup.patch +++ b/package/kernel/mac80211/patches/subsys/370-mac80211-minstrel-remove-unnecessary-debugfs-cleanup.patch @@ -8,10 +8,8 @@ debugfs entries are cleaned up by debugfs_remove_recursive already. Signed-off-by: Felix Fietkau --- -Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel.c -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/rc80211_minstrel.c -+++ backports-v4.18-rc7/net/mac80211/rc80211_minstrel.c +--- a/net/mac80211/rc80211_minstrel.c ++++ b/net/mac80211/rc80211_minstrel.c @@ -689,8 +689,8 @@ minstrel_alloc(struct ieee80211_hw *hw, #ifdef CPTCFG_MAC80211_DEBUGFS @@ -41,10 +39,8 @@ Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel.c #endif .get_expected_throughput = minstrel_get_expected_throughput, }; -Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel.h -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/rc80211_minstrel.h -+++ backports-v4.18-rc7/net/mac80211/rc80211_minstrel.h +--- a/net/mac80211/rc80211_minstrel.h ++++ b/net/mac80211/rc80211_minstrel.h @@ -109,11 +109,6 @@ struct minstrel_sta_info { /* sampling table */ @@ -73,10 +69,8 @@ Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel.h /* Recalculate success probabilities and counters for a given rate using EWMA */ void minstrel_calc_rate_stats(struct minstrel_rate_stats *mrs); -Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_debugfs.c -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/rc80211_minstrel_debugfs.c -+++ backports-v4.18-rc7/net/mac80211/rc80211_minstrel_debugfs.c +--- a/net/mac80211/rc80211_minstrel_debugfs.c ++++ b/net/mac80211/rc80211_minstrel_debugfs.c @@ -214,19 +214,7 @@ minstrel_add_sta_debugfs(void *priv, voi { struct minstrel_sta_info *mi = priv_sta; @@ -100,10 +94,8 @@ Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_debugfs.c + debugfs_create_file("rc_stats_csv", S_IRUGO, dir, mi, + &minstrel_stat_csv_fops); } -Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.c -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/rc80211_minstrel_ht.c -+++ backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.c +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c @@ -1393,7 +1393,6 @@ static const struct rate_control_ops mac .free = minstrel_ht_free, #ifdef CPTCFG_MAC80211_DEBUGFS @@ -112,10 +104,8 @@ Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.c #endif .get_expected_throughput = minstrel_ht_get_expected_throughput, }; -Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.h -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/rc80211_minstrel_ht.h -+++ backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.h +--- a/net/mac80211/rc80211_minstrel_ht.h ++++ b/net/mac80211/rc80211_minstrel_ht.h @@ -110,17 +110,12 @@ struct minstrel_ht_sta_priv { struct minstrel_ht_sta ht; struct minstrel_sta_info legacy; @@ -134,10 +124,8 @@ Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.h int minstrel_ht_get_tp_avg(struct minstrel_ht_sta *mi, int group, int rate, int prob_ewma); -Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht_debugfs.c -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/rc80211_minstrel_ht_debugfs.c -+++ backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht_debugfs.c +--- a/net/mac80211/rc80211_minstrel_ht_debugfs.c ++++ b/net/mac80211/rc80211_minstrel_ht_debugfs.c @@ -303,17 +303,8 @@ minstrel_ht_add_sta_debugfs(void *priv, { struct minstrel_ht_sta_priv *msp = priv_sta; diff --git a/package/kernel/mac80211/patches/subsys/371-mac80211-minstrel-merge-with-minstrel_ht-always-enab.patch b/package/kernel/mac80211/patches/subsys/371-mac80211-minstrel-merge-with-minstrel_ht-always-enab.patch index 1c36a070ca..055472206e 100644 --- a/package/kernel/mac80211/patches/subsys/371-mac80211-minstrel-merge-with-minstrel_ht-always-enab.patch +++ b/package/kernel/mac80211/patches/subsys/371-mac80211-minstrel-merge-with-minstrel_ht-always-enab.patch @@ -10,10 +10,8 @@ lines of code to make it optional. Signed-off-by: Felix Fietkau --- -Index: backports-v4.18-rc7/net/mac80211/Kconfig -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/Kconfig -+++ backports-v4.18-rc7/net/mac80211/Kconfig +--- a/net/mac80211/Kconfig ++++ b/net/mac80211/Kconfig @@ -25,20 +25,6 @@ config MAC80211_RC_MINSTREL ---help--- This option enables the 'minstrel' TX rate control algorithm @@ -45,11 +43,9 @@ Index: backports-v4.18-rc7/net/mac80211/Kconfig default "" endif -Index: backports-v4.18-rc7/net/mac80211/Makefile -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/Makefile -+++ backports-v4.18-rc7/net/mac80211/Makefile -@@ -51,13 +51,14 @@ mac80211-$(CONFIG_PM) += pm.o +--- a/net/mac80211/Makefile ++++ b/net/mac80211/Makefile +@@ -52,13 +52,14 @@ mac80211-$(CONFIG_PM) += pm.o CFLAGS_trace.o := -I$(src) @@ -69,11 +65,9 @@ Index: backports-v4.18-rc7/net/mac80211/Makefile -mac80211-$(CPTCFG_MAC80211_RC_MINSTREL_HT) += $(rc80211_minstrel_ht-y) ccflags-y += -DDEBUG -Index: backports-v4.18-rc7/net/mac80211/main.c -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/main.c -+++ backports-v4.18-rc7/net/mac80211/main.c -@@ -1264,18 +1264,12 @@ static int __init ieee80211_init(void) +--- a/net/mac80211/main.c ++++ b/net/mac80211/main.c +@@ -1306,18 +1306,12 @@ static int __init ieee80211_init(void) if (ret) return ret; @@ -92,7 +86,7 @@ Index: backports-v4.18-rc7/net/mac80211/main.c rc80211_minstrel_exit(); return ret; -@@ -1283,7 +1277,6 @@ static int __init ieee80211_init(void) +@@ -1325,7 +1319,6 @@ static int __init ieee80211_init(void) static void __exit ieee80211_exit(void) { @@ -100,10 +94,8 @@ Index: backports-v4.18-rc7/net/mac80211/main.c rc80211_minstrel_exit(); ieee80211s_stop(); -Index: backports-v4.18-rc7/net/mac80211/rate.h -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/rate.h -+++ backports-v4.18-rc7/net/mac80211/rate.h +--- a/net/mac80211/rate.h ++++ b/net/mac80211/rate.h @@ -95,18 +95,5 @@ static inline void rc80211_minstrel_exit } #endif @@ -123,10 +115,8 @@ Index: backports-v4.18-rc7/net/mac80211/rate.h - #endif /* IEEE80211_RATE_H */ -Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel.c -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/rc80211_minstrel.c -+++ backports-v4.18-rc7/net/mac80211/rc80211_minstrel.c +--- a/net/mac80211/rc80211_minstrel.c ++++ b/net/mac80211/rc80211_minstrel.c @@ -572,138 +572,6 @@ minstrel_rate_init(void *priv, struct ie minstrel_update_rates(mp, mi); } @@ -266,7 +256,7 @@ Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel.c static u32 minstrel_get_expected_throughput(void *priv_sta) { struct minstrel_sta_info *mi = priv_sta; -@@ -722,29 +590,8 @@ static u32 minstrel_get_expected_through +@@ -722,28 +590,8 @@ static u32 minstrel_get_expected_through } const struct rate_control_ops mac80211_minstrel = { @@ -295,11 +285,8 @@ Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel.c -{ - ieee80211_rate_control_unregister(&mac80211_minstrel); -} -- -Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel.h -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/rc80211_minstrel.h -+++ backports-v4.18-rc7/net/mac80211/rc80211_minstrel.h +--- a/net/mac80211/rc80211_minstrel.h ++++ b/net/mac80211/rc80211_minstrel.h @@ -158,7 +158,5 @@ int minstrel_get_tp_avg(struct minstrel_ /* debugfs */ int minstrel_stats_open(struct inode *inode, struct file *file); @@ -308,10 +295,8 @@ Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel.h -int minstrel_stats_release(struct inode *inode, struct file *file); #endif -Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_debugfs.c -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/rc80211_minstrel_debugfs.c -+++ backports-v4.18-rc7/net/mac80211/rc80211_minstrel_debugfs.c +--- a/net/mac80211/rc80211_minstrel_debugfs.c ++++ b/net/mac80211/rc80211_minstrel_debugfs.c @@ -54,22 +54,6 @@ #include #include "rc80211_minstrel.h" @@ -372,10 +357,8 @@ Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_debugfs.c - debugfs_create_file("rc_stats_csv", S_IRUGO, dir, mi, - &minstrel_stat_csv_fops); -} -Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.c -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/rc80211_minstrel_ht.c -+++ backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.c +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c @@ -137,12 +137,10 @@ } \ } @@ -539,10 +522,8 @@ Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.c { ieee80211_rate_control_unregister(&mac80211_minstrel_ht); } -Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.h -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/rc80211_minstrel_ht.h -+++ backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.h +--- a/net/mac80211/rc80211_minstrel_ht.h ++++ b/net/mac80211/rc80211_minstrel_ht.h @@ -15,11 +15,7 @@ */ #define MINSTREL_MAX_STREAMS 3 @@ -567,10 +548,8 @@ Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.h struct mcs_group { u32 flags; -Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht_debugfs.c -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/rc80211_minstrel_ht_debugfs.c -+++ backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht_debugfs.c +--- a/net/mac80211/rc80211_minstrel_ht_debugfs.c ++++ b/net/mac80211/rc80211_minstrel_ht_debugfs.c @@ -15,6 +15,22 @@ #include "rc80211_minstrel.h" #include "rc80211_minstrel_ht.h" diff --git a/package/kernel/mac80211/patches/subsys/373-mac80211-minstrel-fix-using-short-preamble-CCK-rates.patch b/package/kernel/mac80211/patches/subsys/373-mac80211-minstrel-fix-using-short-preamble-CCK-rates.patch index 6478e9ec5a..502d8c7768 100644 --- a/package/kernel/mac80211/patches/subsys/373-mac80211-minstrel-fix-using-short-preamble-CCK-rates.patch +++ b/package/kernel/mac80211/patches/subsys/373-mac80211-minstrel-fix-using-short-preamble-CCK-rates.patch @@ -9,10 +9,8 @@ Fixes: 782dda00ab8e ("mac80211: minstrel_ht: move short preamble check out of ge Signed-off-by: Felix Fietkau --- -Index: backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.c -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/rc80211_minstrel_ht.c -+++ backports-v4.18-rc7/net/mac80211/rc80211_minstrel_ht.c +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c @@ -1135,7 +1135,6 @@ minstrel_ht_update_caps(void *priv, stru struct ieee80211_mcs_info *mcs = &sta->ht_cap.mcs; u16 ht_cap = sta->ht_cap.cap; diff --git a/package/kernel/mac80211/patches/subsys/378-mac80211-fix-memory-accounting-with-A-MSDU-aggregati.patch b/package/kernel/mac80211/patches/subsys/378-mac80211-fix-memory-accounting-with-A-MSDU-aggregati.patch index c64457a17f..54bb114f65 100644 --- a/package/kernel/mac80211/patches/subsys/378-mac80211-fix-memory-accounting-with-A-MSDU-aggregati.patch +++ b/package/kernel/mac80211/patches/subsys/378-mac80211-fix-memory-accounting-with-A-MSDU-aggregati.patch @@ -22,7 +22,7 @@ Signed-off-by: Felix Fietkau --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c -@@ -3171,6 +3171,7 @@ static bool ieee80211_amsdu_aggregate(st +@@ -3184,6 +3184,7 @@ static bool ieee80211_amsdu_aggregate(st u8 max_subframes = sta->sta.max_amsdu_subframes; int max_frags = local->hw.max_tx_fragments; int max_amsdu_len = sta->sta.max_amsdu_len; @@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau __be16 len; void *data; bool ret = false; -@@ -3201,12 +3202,13 @@ static bool ieee80211_amsdu_aggregate(st +@@ -3215,12 +3216,13 @@ static bool ieee80211_amsdu_aggregate(st flow = fq_flow_classify(fq, tin, skb, fq_flow_get_default_func); head = skb_peek_tail(&flow->queue); if (!head) @@ -44,11 +44,11 @@ Signed-off-by: Felix Fietkau - goto out; + goto unlock; - if (!ieee80211_amsdu_prepare_head(sdata, fast_tx, head)) - goto out; -@@ -3249,6 +3251,9 @@ static bool ieee80211_amsdu_aggregate(st - fq_recalc_backlog(fq, tin, flow); - + nfrags = 1 + skb_shinfo(skb)->nr_frags; + nfrags += 1 + skb_shinfo(head)->nr_frags; +@@ -3278,6 +3280,9 @@ out_recalc: + fq_recalc_backlog(fq, tin, flow); + } out: + fq->memory_usage += head->truesize - orig_truesize; + diff --git a/package/kernel/mac80211/patches/subsys/379-cfg80211-initialize-sinfo-in-cfg80211_get_station.patch b/package/kernel/mac80211/patches/subsys/379-cfg80211-initialize-sinfo-in-cfg80211_get_station.patch deleted file mode 100644 index 37323c1f7d..0000000000 --- a/package/kernel/mac80211/patches/subsys/379-cfg80211-initialize-sinfo-in-cfg80211_get_station.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 4f717a2589be649afddbbd3ac58b67ebfa7426f7 Mon Sep 17 00:00:00 2001 -From: Sven Eckelmann -Date: Wed, 6 Jun 2018 10:18:31 +0200 -Subject: [PATCH v2] cfg80211: initialize sinfo in cfg80211_get_station - -Most of the implementations behind cfg80211_get_station will not initialize -sinfo to zero before manipulating it. For example, the member "filled", -which indicates the filled in parts of this struct, is often only modified -by enabling certain bits in the bitfield while keeping the remaining bits -in their original state. A caller without a preinitialized sinfo.filled can -then no longer decide which parts of sinfo were filled in by -cfg80211_get_station (or actually the underlying implementations). - -cfg80211_get_station must therefore take care that sinfo is initialized to -zero. Otherwise, the caller may tries to read information which was not -filled in and which must therefore also be considered uninitialized. In -batadv_v_elp_get_throughput's case, an invalid "random" expected throughput -may be stored for this neighbor and thus the B.A.T.M.A.N V algorithm may -switch to non-optimal neighbors for certain destinations. - -Fixes: 7406353d43c8 ("cfg80211: implement cfg80211_get_station cfg80211 API") -Reported-by: Thomas Lauer -Reported-by: Marcel Schmidt -Cc: b.a.t.m.a.n@lists.open-mesh.org -Signed-off-by: Sven Eckelmann - -Forwarded: https://patchwork.kernel.org/patch/10449857/ ---- - net/wireless/util.c | 2 ++ - 1 file changed, 2 insertions(+) - ---- a/net/wireless/util.c -+++ b/net/wireless/util.c -@@ -1749,6 +1749,8 @@ int cfg80211_get_station(struct net_devi - if (!rdev->ops->get_station) - return -EOPNOTSUPP; - -+ memset(sinfo, 0, sizeof(*sinfo)); -+ - return rdev_get_station(rdev, dev, mac_addr, sinfo); - } - EXPORT_SYMBOL(cfg80211_get_station); diff --git a/package/kernel/mac80211/patches/subsys/522-mac80211_configure_antenna_gain.patch b/package/kernel/mac80211/patches/subsys/522-mac80211_configure_antenna_gain.patch index 3546b1d439..86bd2905ae 100644 --- a/package/kernel/mac80211/patches/subsys/522-mac80211_configure_antenna_gain.patch +++ b/package/kernel/mac80211/patches/subsys/522-mac80211_configure_antenna_gain.patch @@ -1,8 +1,6 @@ -Index: backports-v4.18-rc7/include/net/cfg80211.h -=================================================================== ---- backports-v4.18-rc7.orig/include/net/cfg80211.h -+++ backports-v4.18-rc7/include/net/cfg80211.h -@@ -2857,6 +2857,7 @@ struct cfg80211_external_auth_params { +--- a/include/net/cfg80211.h ++++ b/include/net/cfg80211.h +@@ -2959,6 +2959,7 @@ struct cfg80211_external_auth_params { * (as advertised by the nl80211 feature flag.) * @get_tx_power: store the current TX power into the dbm variable; * return 0 if successful @@ -10,7 +8,7 @@ Index: backports-v4.18-rc7/include/net/cfg80211.h * * @set_wds_peer: set the WDS peer for a WDS interface * -@@ -3157,6 +3158,7 @@ struct cfg80211_ops { +@@ -3259,6 +3260,7 @@ struct cfg80211_ops { enum nl80211_tx_power_setting type, int mbm); int (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev, int *dbm); @@ -18,11 +16,9 @@ Index: backports-v4.18-rc7/include/net/cfg80211.h int (*set_wds_peer)(struct wiphy *wiphy, struct net_device *dev, const u8 *addr); -Index: backports-v4.18-rc7/include/net/mac80211.h -=================================================================== ---- backports-v4.18-rc7.orig/include/net/mac80211.h -+++ backports-v4.18-rc7/include/net/mac80211.h -@@ -1348,6 +1348,7 @@ enum ieee80211_smps_mode { +--- a/include/net/mac80211.h ++++ b/include/net/mac80211.h +@@ -1389,6 +1389,7 @@ enum ieee80211_smps_mode { * * @power_level: requested transmit power (in dBm), backward compatibility * value only that is set to the minimum of all interfaces @@ -30,7 +26,7 @@ Index: backports-v4.18-rc7/include/net/mac80211.h * * @chandef: the channel definition to tune to * @radar_enabled: whether radar detection is enabled -@@ -1368,6 +1369,7 @@ enum ieee80211_smps_mode { +@@ -1409,6 +1410,7 @@ enum ieee80211_smps_mode { struct ieee80211_conf { u32 flags; int power_level, dynamic_ps_timeout; @@ -38,13 +34,11 @@ Index: backports-v4.18-rc7/include/net/mac80211.h u16 listen_interval; u8 ps_dtim_period; -Index: backports-v4.18-rc7/include/uapi/linux/nl80211.h -=================================================================== ---- backports-v4.18-rc7.orig/include/uapi/linux/nl80211.h -+++ backports-v4.18-rc7/include/uapi/linux/nl80211.h -@@ -2238,6 +2238,9 @@ enum nl80211_commands { - * @NL80211_ATTR_TXQ_QUANTUM: TXQ scheduler quantum (bytes). Number of bytes - * a flow is assigned on each round of the DRR scheduler. +--- a/include/uapi/linux/nl80211.h ++++ b/include/uapi/linux/nl80211.h +@@ -2241,6 +2241,9 @@ enum nl80211_commands { + * association request when used with NL80211_CMD_NEW_STATION). Can be set + * only if %NL80211_STA_FLAG_WME is set. * + * @NL80211_ATTR_WIPHY_ANTENNA_GAIN: Configured antenna gain. Used to reduce + * transmit power to stay within regulatory limits. u32, dBi. @@ -52,20 +46,18 @@ Index: backports-v4.18-rc7/include/uapi/linux/nl80211.h * @NUM_NL80211_ATTR: total number of nl80211_attrs available * @NL80211_ATTR_MAX: highest attribute number currently defined * @__NL80211_ATTR_AFTER_LAST: internal use -@@ -2677,6 +2680,8 @@ enum nl80211_attrs { - NL80211_ATTR_TXQ_MEMORY_LIMIT, - NL80211_ATTR_TXQ_QUANTUM, +@@ -2682,6 +2685,8 @@ enum nl80211_attrs { + + NL80211_ATTR_HE_CAPABILITY, + NL80211_ATTR_WIPHY_ANTENNA_GAIN, + /* add attributes here, update the policy in nl80211.c */ __NL80211_ATTR_AFTER_LAST, -Index: backports-v4.18-rc7/net/mac80211/cfg.c -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/cfg.c -+++ backports-v4.18-rc7/net/mac80211/cfg.c -@@ -2489,6 +2489,19 @@ static int ieee80211_get_tx_power(struct +--- a/net/mac80211/cfg.c ++++ b/net/mac80211/cfg.c +@@ -2494,6 +2494,19 @@ static int ieee80211_get_tx_power(struct return 0; } @@ -85,7 +77,7 @@ Index: backports-v4.18-rc7/net/mac80211/cfg.c static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev, const u8 *addr) { -@@ -3856,6 +3869,7 @@ const struct cfg80211_ops mac80211_confi +@@ -3861,6 +3874,7 @@ const struct cfg80211_ops mac80211_confi .set_wiphy_params = ieee80211_set_wiphy_params, .set_tx_power = ieee80211_set_tx_power, .get_tx_power = ieee80211_get_tx_power, @@ -93,11 +85,9 @@ Index: backports-v4.18-rc7/net/mac80211/cfg.c .set_wds_peer = ieee80211_set_wds_peer, .rfkill_poll = ieee80211_rfkill_poll, CFG80211_TESTMODE_CMD(ieee80211_testmode_cmd) -Index: backports-v4.18-rc7/net/mac80211/ieee80211_i.h -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/ieee80211_i.h -+++ backports-v4.18-rc7/net/mac80211/ieee80211_i.h -@@ -1350,6 +1350,7 @@ struct ieee80211_local { +--- a/net/mac80211/ieee80211_i.h ++++ b/net/mac80211/ieee80211_i.h +@@ -1352,6 +1352,7 @@ struct ieee80211_local { int dynamic_ps_forced_timeout; int user_power_level; /* in dBm, for all interfaces */ @@ -105,11 +95,9 @@ Index: backports-v4.18-rc7/net/mac80211/ieee80211_i.h enum ieee80211_smps_mode smps_mode; -Index: backports-v4.18-rc7/net/mac80211/main.c -=================================================================== ---- backports-v4.18-rc7.orig/net/mac80211/main.c -+++ backports-v4.18-rc7/net/mac80211/main.c -@@ -93,7 +93,7 @@ static u32 ieee80211_hw_conf_chan(struct +--- a/net/mac80211/main.c ++++ b/net/mac80211/main.c +@@ -94,7 +94,7 @@ static u32 ieee80211_hw_conf_chan(struct struct ieee80211_sub_if_data *sdata; struct cfg80211_chan_def chandef = {}; u32 changed = 0; @@ -118,7 +106,7 @@ Index: backports-v4.18-rc7/net/mac80211/main.c u32 offchannel_flag; offchannel_flag = local->hw.conf.flags & IEEE80211_CONF_OFFCHANNEL; -@@ -150,6 +150,12 @@ static u32 ieee80211_hw_conf_chan(struct +@@ -151,6 +151,12 @@ static u32 ieee80211_hw_conf_chan(struct } rcu_read_unlock(); @@ -131,7 +119,7 @@ Index: backports-v4.18-rc7/net/mac80211/main.c if (local->hw.conf.power_level != power) { changed |= IEEE80211_CONF_CHANGE_POWER; local->hw.conf.power_level = power; -@@ -611,6 +617,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_ +@@ -626,6 +632,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_ IEEE80211_RADIOTAP_MCS_HAVE_BW; local->hw.radiotap_vht_details = IEEE80211_RADIOTAP_VHT_KNOWN_GI | IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH; @@ -139,19 +127,17 @@ Index: backports-v4.18-rc7/net/mac80211/main.c local->hw.uapsd_queues = IEEE80211_DEFAULT_UAPSD_QUEUES; local->hw.uapsd_max_sp_len = IEEE80211_DEFAULT_MAX_SP_LEN; local->user_power_level = IEEE80211_UNSET_POWER_LEVEL; -Index: backports-v4.18-rc7/net/wireless/nl80211.c -=================================================================== ---- backports-v4.18-rc7.orig/net/wireless/nl80211.c -+++ backports-v4.18-rc7/net/wireless/nl80211.c -@@ -428,6 +428,7 @@ static const struct nla_policy nl80211_p - [NL80211_ATTR_TXQ_LIMIT] = { .type = NLA_U32 }, - [NL80211_ATTR_TXQ_MEMORY_LIMIT] = { .type = NLA_U32 }, +--- a/net/wireless/nl80211.c ++++ b/net/wireless/nl80211.c +@@ -430,6 +430,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 }, + [NL80211_ATTR_WIPHY_ANTENNA_GAIN] = { .type = NLA_U32 }, }; /* policy for the key attributes */ -@@ -2531,6 +2532,20 @@ static int nl80211_set_wiphy(struct sk_b +@@ -2587,6 +2588,20 @@ static int nl80211_set_wiphy(struct sk_b if (result) return result; } -- cgit v1.2.3