@@ -1,6 +1,6 @@
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
-@@ -4951,6 +4951,9 @@ struct wiphy {
+@@ -4961,6 +4961,9 @@ struct wiphy {
/* assign these fields before you register the wiphy */
@@ -11,7 +11,7 @@
device_initialize(&rdev->wiphy.dev);
rdev->wiphy.dev.class = &ieee80211_class;
rdev->wiphy.dev.platform_data = rdev;
-@@ -1312,6 +1308,10 @@ void cfg80211_init_wdev(struct wireless_
+@@ -1296,6 +1292,10 @@ void cfg80211_init_wdev(struct wireless_
INIT_WORK(&wdev->pmsr_free_wk, cfg80211_pmsr_free_wk);
#ifdef CONFIG_CFG80211_WEXT
@@ -18,9 +18,9 @@ the type is renamed.
#include <linux/netdevice.h>
#include <linux/debugfs.h>
#include <linux/list.h>
-@@ -23,6 +27,7 @@
- #include <linux/ieee80211.h>
+@@ -24,6 +28,7 @@
#include <linux/net.h>
+ #include <linux/rfkill.h>
#include <net/regulatory.h>
+#include <net/netlink.h>
@@ -2,7 +2,7 @@ linux/module.h include needed for kernel 3.18
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
-@@ -15,6 +15,7 @@
+@@ -17,6 +17,7 @@
#include "tx.h"
#include "debug.h"
#include "bf.h"
@@ -1,6 +1,6 @@
--- a/drivers/staging/rtl8188eu/os_dep/os_intfs.c
+++ b/drivers/staging/rtl8188eu/os_dep/os_intfs.c
-@@ -245,8 +245,18 @@ static unsigned int rtw_classify8021d(st
+@@ -243,8 +243,18 @@ static unsigned int rtw_classify8021d(st
return dscp >> 5;
}
@@ -1,6 +1,6 @@
--- a/drivers/staging/rtl8723bs/os_dep/os_intfs.c
+++ b/drivers/staging/rtl8723bs/os_dep/os_intfs.c
-@@ -364,8 +364,18 @@ static unsigned int rtw_classify8021d(st
+@@ -363,8 +363,18 @@ static unsigned int rtw_classify8021d(st
}
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
-@@ -4106,7 +4106,7 @@ static const struct genl_small_ops hwsim
+@@ -4103,7 +4103,7 @@ static const struct genl_small_ops hwsim
},
};
@@ -1,6 +1,6 @@
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
-@@ -15795,7 +15795,7 @@ static const struct genl_small_ops nl802
+@@ -15803,7 +15803,7 @@ static const struct genl_small_ops nl802
},
};
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
-@@ -633,6 +633,23 @@ static const struct net_device_ops brcmf
+@@ -638,6 +638,23 @@ static const struct net_device_ops brcmf
.ndo_set_rx_mode = brcmf_netdev_set_multicast_list
};
@@ -24,7 +24,7 @@
int brcmf_net_attach(struct brcmf_if *ifp, bool locked)
{
struct brcmf_pub *drvr = ifp->drvr;
-@@ -883,7 +900,11 @@ struct brcmf_if *brcmf_add_if(struct brc
+@@ -888,7 +905,11 @@ struct brcmf_if *brcmf_add_if(struct brc
if (!ndev)
return ERR_PTR(-ENOMEM);
@@ -9,8 +9,8 @@
obj-$(CONFIG_PRISM2_USB) += wlan-ng/
obj-$(CONFIG_FB_OLPC_DCON) += olpc_dcon/
obj-$(CONFIG_RTL8192U) += rtl8192u/
-@@ -42,4 +42,4 @@ obj-$(CONFIG_FIELDBUS_DEV) += fieldb
- obj-$(CONFIG_KPC2000) += kpc2000/
+@@ -41,4 +41,4 @@ obj-$(CONFIG_XIL_AXIS_FIFO) += axis-fifo
+ obj-$(CONFIG_FIELDBUS_DEV) += fieldbus/
obj-$(CONFIG_QLGE) += qlge/
obj-$(CONFIG_WFX) += wfx/
-obj-y += hikey9xx/
@@ -9,7 +9,7 @@ the older kernel instead. The list attributes where also backported to
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
-@@ -4476,7 +4476,11 @@ void ieee80211_restart_hw(struct ieee802
+@@ -4500,7 +4500,11 @@ void ieee80211_restart_hw(struct ieee802
* @list: the destination list
*/
void ieee80211_rx_list(struct ieee80211_hw *hw, struct ieee80211_sta *sta,
@@ -37,7 +37,7 @@ the older kernel instead. The list attributes where also backported to
struct ieee80211_sub_if_data *sdata;
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
-@@ -2592,7 +2592,11 @@ static void ieee80211_deliver_skb_to_loc
+@@ -2604,7 +2604,11 @@ static void ieee80211_deliver_skb_to_loc
/* deliver to local stack */
if (rx->list)
@@ -7,7 +7,7 @@ kernel versions.
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
-@@ -1135,7 +1135,11 @@ struct ieee80211_tx_status {
+@@ -1137,7 +1137,11 @@ struct ieee80211_tx_status {
struct ieee80211_tx_info *info;
struct sk_buff *skb;
struct rate_info *rate;
@@ -21,7 +21,7 @@ kernel versions.
/**
--- a/net/mac80211/status.c
+++ b/net/mac80211/status.c
-@@ -1029,7 +1029,11 @@ static void __ieee80211_tx_status(struct
+@@ -1047,7 +1047,11 @@ static void __ieee80211_tx_status(struct
*/
if (!local->monitors && (!send_to_cooked || !local->cooked_mntrs)) {
if (status->free_list)
@@ -33,7 +33,7 @@ kernel versions.
else
dev_kfree_skb(skb);
return;
-@@ -1179,7 +1183,11 @@ free:
+@@ -1197,7 +1201,11 @@ free:
ieee80211_report_used_skb(local, skb, false);
if (status->free_list)
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/mediatek/mt76/mac80211.c
+++ b/drivers/net/wireless/mediatek/mt76/mac80211.c
-@@ -998,7 +998,13 @@ void mt76_rx_complete(struct mt76_dev *d
+@@ -1024,7 +1024,13 @@ void mt76_rx_complete(struct mt76_dev *d
struct ieee80211_sta *sta;
struct ieee80211_hw *hw;
struct sk_buff *skb, *tmp;
@@ -14,7 +14,7 @@
spin_lock(&dev->rx_lock);
while ((skb = __skb_dequeue(frames)) != NULL) {
-@@ -1030,8 +1036,13 @@ void mt76_rx_complete(struct mt76_dev *d
+@@ -1056,8 +1062,13 @@ void mt76_rx_complete(struct mt76_dev *d
return;
}
@@ -28,21 +28,35 @@
napi_gro_receive(napi, skb);
}
}
+--- a/drivers/net/wireless/mediatek/mt76/mt76.h
++++ b/drivers/net/wireless/mediatek/mt76/mt76.h
+@@ -1089,7 +1089,11 @@ struct sk_buff *mt76_tx_status_skb_get(s
+ void mt76_tx_status_skb_done(struct mt76_dev *dev, struct sk_buff *skb,
+ struct sk_buff_head *list);
+ void __mt76_tx_complete_skb(struct mt76_dev *dev, u16 wcid, struct sk_buff *skb,
++#if LINUX_VERSION_IS_GEQ(4,19,0)
+ struct list_head *free_list);
++#else
++ struct sk_buff_head *free_list);
++#endif
+ static inline void
+ mt76_tx_complete_skb(struct mt76_dev *dev, u16 wcid, struct sk_buff *skb)
+ {
--- a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c
-@@ -1086,7 +1086,11 @@ mt7915_tx_check_aggr(struct ieee80211_st
+@@ -1104,7 +1104,11 @@ mt7915_txp_skb_unmap(struct mt76_dev *de
+
static void
- mt7915_tx_complete_status(struct mt76_dev *mdev, struct sk_buff *skb,
- struct ieee80211_sta *sta, u8 stat,
+ mt7915_txwi_free(struct mt7915_dev *dev, struct mt76_txwi_cache *t,
+#if LINUX_VERSION_IS_GEQ(4,19,0)
- struct list_head *free_list)
+ struct ieee80211_sta *sta, struct list_head *free_list)
+#else
-+ struct sk_buff_head *free_list)
++ struct ieee80211_sta *sta, struct sk_buff_head *free_list)
+#endif
{
- struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
- struct ieee80211_tx_status status = {
-@@ -1149,10 +1153,16 @@ void mt7915_mac_tx_free(struct mt7915_de
+ struct mt76_dev *mdev = &dev->mt76;
+ struct mt76_wcid *wcid;
+@@ -1141,10 +1145,16 @@ mt7915_mac_tx_free(struct mt7915_dev *de
struct mt76_phy *mphy_ext = mdev->phy2;
struct mt76_txwi_cache *txwi;
struct ieee80211_sta *sta = NULL;
@@ -60,7 +74,7 @@
/* clean DMA queues and unmap buffers first */
mt76_queue_tx_cleanup(dev, dev->mphy.q_tx[MT_TXQ_PSD], false);
-@@ -1240,8 +1250,13 @@ void mt7915_mac_tx_free(struct mt7915_de
+@@ -1211,8 +1221,13 @@ mt7915_mac_tx_free(struct mt7915_dev *de
napi_consume_skb(skb, 1);
@@ -76,7 +90,7 @@
}
--- a/drivers/net/wireless/mediatek/mt76/mt7921/mac.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7921/mac.c
-@@ -870,7 +870,11 @@ mt7921_tx_check_aggr(struct ieee80211_st
+@@ -929,7 +929,11 @@ mt7921_tx_check_aggr(struct ieee80211_st
static void
mt7921_tx_complete_status(struct mt76_dev *mdev, struct sk_buff *skb,
struct ieee80211_sta *sta, u8 stat,
@@ -88,7 +102,7 @@
{
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
struct ieee80211_tx_status status = {
-@@ -940,10 +944,16 @@ void mt7921_mac_tx_free(struct mt7921_de
+@@ -999,10 +1003,16 @@ void mt7921_mac_tx_free(struct mt7921_de
struct mt76_dev *mdev = &dev->mt76;
struct mt76_txwi_cache *txwi;
struct ieee80211_sta *sta = NULL;
@@ -106,7 +120,7 @@
/* clean DMA queues and unmap buffers first */
mt76_queue_tx_cleanup(dev, dev->mphy.q_tx[MT_TXQ_PSD], false);
-@@ -1021,8 +1031,13 @@ void mt7921_mac_tx_free(struct mt7921_de
+@@ -1080,8 +1090,13 @@ void mt7921_mac_tx_free(struct mt7921_de
napi_consume_skb(skb, 1);
@@ -120,3 +134,17 @@
napi_consume_skb(skb, 1);
}
+--- a/drivers/net/wireless/mediatek/mt76/tx.c
++++ b/drivers/net/wireless/mediatek/mt76/tx.c
+@@ -195,7 +195,11 @@ mt76_tx_check_non_aql(struct mt76_dev *d
+ }
+
+ void __mt76_tx_complete_skb(struct mt76_dev *dev, u16 wcid_idx, struct sk_buff *skb,
++#if LINUX_VERSION_IS_GEQ(4,19,0)
+ struct list_head *free_list)
++#else
++ struct sk_buff_head *free_list)
++#endif
+ {
+ struct ieee80211_tx_status status = {
+ .skb = skb,
@@ -1,6 +1,6 @@
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
-@@ -15039,9 +15039,11 @@ static const struct genl_ops nl80211_ops
+@@ -15047,9 +15047,11 @@ static const struct genl_ops nl80211_ops
/* can be retrieved by unprivileged users */
.internal_flags = NL80211_FLAG_NEED_WIPHY,
},
@@ -12,7 +12,7 @@
{
.cmd = NL80211_CMD_SET_WIPHY,
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
-@@ -15824,8 +15826,10 @@ static struct genl_family nl80211_fam __
+@@ -15832,8 +15834,10 @@ static struct genl_family nl80211_fam __
.module = THIS_MODULE,
.ops = nl80211_ops,
.n_ops = ARRAY_SIZE(nl80211_ops),
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
-@@ -4069,7 +4069,11 @@ done:
+@@ -4066,7 +4066,11 @@ done:
}
/* Generic Netlink operations array */
@@ -12,7 +12,7 @@
{
.cmd = HWSIM_CMD_REGISTER,
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
-@@ -4113,8 +4117,13 @@ static struct genl_family hwsim_genl_fam
+@@ -4110,8 +4114,13 @@ static struct genl_family hwsim_genl_fam
.policy = hwsim_genl_policy,
.netnsok = true,
.module = THIS_MODULE,
@@ -29,7 +29,7 @@
debugfs_create_blob("otp", 0400, dir, &dev->otp);
--- a/drivers/net/wireless/mediatek/mt76/dma.c
+++ b/drivers/net/wireless/mediatek/mt76/dma.c
-@@ -643,7 +643,9 @@ mt76_dma_init(struct mt76_dev *dev,
+@@ -644,7 +644,9 @@ mt76_dma_init(struct mt76_dev *dev,
init_dummy_netdev(&dev->tx_napi_dev);
snprintf(dev->napi_dev.name, sizeof(dev->napi_dev.name), "%s",
wiphy_name(dev->hw->wiphy));
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> --- .../include_net_cfg80211.patch | 2 +- .../net_wireless_core.patch | 2 +- .../0013-fix-makefile-includes/cfg80211.patch | 4 +- .../0013-fix-makefile-includes/rtw88.patch | 2 +- patches/0028-select_queue/rtl8188eu.patch | 2 +- patches/0028-select_queue/rtl8723bs.patch | 2 +- patches/0077-genl-ro-after-init/hwsim.patch | 2 +- patches/0077-genl-ro-after-init/nl80211.patch | 2 +- patches/0079-netdev-destructor/brcmfmac.patch | 4 +- patches/0084-disable-some-staging-dirs.patch | 4 +- patches/0097-skb-list/mac80211-rx.patch | 4 +- patches/0097-skb-list/mac80211-status.patch | 6 +- patches/0097-skb-list/mt76.patch | 56 ++++++++++++++----- patches/0100-revert-small_ops/mac80211.patch | 4 +- .../mac80211_hwsim.patch | 4 +- patches/0101-net_device-threaded/mt76.patch | 2 +- 16 files changed, 65 insertions(+), 37 deletions(-)