+++ /dev/null
---- a/net/mac80211/tx.c
-+++ b/net/mac80211/tx.c
-@@ -4136,6 +4136,12 @@ out:
- netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
- struct net_device *dev)
- {
-+#if defined(sk_pacing_shift) || LINUX_VERSION_IS_GEQ(4,15,0)
-+ if (skb->sk && sk_fullsock(skb->sk) &&
-+ skb->sk->sk_pacing_shift != 6)
-+ skb->sk->sk_pacing_shift = 6;
-+#endif
-+
- if (unlikely(ieee80211_multicast_to_unicast(skb, dev))) {
- struct sk_buff_head queue;
-
unsigned long last_ack;
--- a/net/mac80211/status.c
+++ b/net/mac80211/status.c
-@@ -749,12 +749,16 @@ static void ieee80211_report_used_skb(st
+@@ -757,12 +757,16 @@ static void ieee80211_report_used_skb(st
* - current throughput (higher value for higher tpt)?
*/
#define STA_LOST_PKT_THRESHOLD 50
/* If driver relies on its own algorithm for station kickout, skip
* mac80211 packet loss mechanism.
*/
-@@ -767,21 +771,20 @@ static void ieee80211_lost_packet(struct
+@@ -775,21 +779,20 @@ static void ieee80211_lost_packet(struct
return;
sta->status_stats.lost_packets++;
return;
cfg80211_cqm_pktloss_notify(sta->sdata->dev, sta->sta.addr,
-@@ -1034,9 +1037,7 @@ static void __ieee80211_tx_status(struct
+@@ -1042,9 +1045,7 @@ static void __ieee80211_tx_status(struct
sta->status_stats.lost_packets = 0;
/* Track when last TDLS packet was ACKed */
} else if (noack_success) {
/* nothing to do here, do not account as lost */
} else {
-@@ -1169,9 +1170,8 @@ void ieee80211_tx_status_ext(struct ieee
+@@ -1177,9 +1178,8 @@ void ieee80211_tx_status_ext(struct ieee
if (sta->status_stats.lost_packets)
sta->status_stats.lost_packets = 0;
} else if (test_sta_flag(sta, WLAN_STA_PS_STA)) {
return;
} else if (noack_success) {
-@@ -1260,8 +1260,7 @@ void ieee80211_tx_status_8023(struct iee
+@@ -1268,8 +1268,7 @@ void ieee80211_tx_status_8023(struct iee
if (sta->status_stats.lost_packets)
sta->status_stats.lost_packets = 0;
#undef TRACE_INCLUDE_PATH
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
-@@ -4270,11 +4270,6 @@ netdev_tx_t ieee80211_subif_start_xmit_8
+@@ -4264,11 +4264,6 @@ netdev_tx_t ieee80211_subif_start_xmit_8
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
struct sta_info *sta;
goto encap_out;
if (info->control.flags & IEEE80211_TX_CTRL_FAST_XMIT) {
-@@ -4253,7 +4253,7 @@ static void ieee80211_8023_xmit(struct i
+@@ -4247,7 +4247,7 @@ static void ieee80211_8023_xmit(struct i
sdata = container_of(sdata->bss,
struct ieee80211_sub_if_data, u.ap);
info->control.vif = &sdata->vif;
ieee80211_tx_8023(sdata, skb, skb->len, sta, false);
-@@ -4357,7 +4357,7 @@ static bool ieee80211_tx_pending_skb(str
+@@ -4351,7 +4351,7 @@ static bool ieee80211_tx_pending_skb(str
sdata = vif_to_sdata(info->control.vif);
chanctx_conf = rcu_dereference(sdata->vif.chanctx_conf);
if (unlikely(!chanctx_conf)) {
dev_kfree_skb(skb);
-@@ -4365,7 +4365,7 @@ static bool ieee80211_tx_pending_skb(str
+@@ -4359,7 +4359,7 @@ static bool ieee80211_tx_pending_skb(str
}
info->band = chanctx_conf->def.chan->band;
result = ieee80211_tx(sdata, NULL, skb, true, 0);
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
-@@ -4206,6 +4206,12 @@ static void ieee80211_8023_xmit(struct i
+@@ -4200,6 +4200,12 @@ static void ieee80211_8023_xmit(struct i
if (is_zero_ether_addr(ra))
goto out_free;
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
-@@ -4195,6 +4195,8 @@ static void ieee80211_8023_xmit(struct i
+@@ -4189,6 +4189,8 @@ static void ieee80211_8023_xmit(struct i
bool authorized = false;
bool multicast;
unsigned char *ra = ehdr->h_dest;
if (IS_ERR(sta) || (sta && !sta->uploaded))
sta = NULL;
-@@ -4232,6 +4234,22 @@ static void ieee80211_8023_xmit(struct i
+@@ -4226,6 +4228,22 @@ static void ieee80211_8023_xmit(struct i
memset(info, 0, sizeof(*info));
enabled = false;
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
-@@ -4190,88 +4190,47 @@ static void ieee80211_8023_xmit(struct i
+@@ -4184,88 +4184,47 @@ static void ieee80211_8023_xmit(struct i
struct sk_buff *skb)
{
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
sdata = container_of(sdata->bss,
-@@ -4292,6 +4251,7 @@ netdev_tx_t ieee80211_subif_start_xmit_8
+@@ -4286,6 +4245,7 @@ netdev_tx_t ieee80211_subif_start_xmit_8
struct net_device *dev)
{
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
struct sta_info *sta;
if (unlikely(skb->len < ETH_HLEN)) {
-@@ -4303,6 +4263,10 @@ netdev_tx_t ieee80211_subif_start_xmit_8
+@@ -4297,6 +4257,10 @@ netdev_tx_t ieee80211_subif_start_xmit_8
if (ieee80211_lookup_ra_sta(sdata, skb, &sta))
kfree_skb(skb);
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
-@@ -4191,6 +4191,7 @@ static void ieee80211_8023_xmit(struct i
+@@ -4185,6 +4185,7 @@ static void ieee80211_8023_xmit(struct i
{
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
struct ieee80211_local *local = sdata->local;
struct tid_ampdu_tx *tid_tx;
u8 tid;
-@@ -4239,6 +4240,10 @@ static void ieee80211_8023_xmit(struct i
+@@ -4233,6 +4234,10 @@ static void ieee80211_8023_xmit(struct i
info->flags |= IEEE80211_TX_CTL_HW_80211_ENCAP;
info->control.vif = &sdata->vif;