mac80211: Update to 5.15.153-1

Update mac80211 to version based on kernel 5.15.153.
This contains multiple bugfixes.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
Hauke Mehrtens 2024-04-03 01:39:35 +02:00
parent bc7585b93c
commit 06ea586508
29 changed files with 80 additions and 80 deletions

View File

@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=mac80211
PKG_VERSION:=5.15.148-1
PKG_VERSION:=5.15.153-1
PKG_RELEASE:=1
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v5.15.148
PKG_HASH:=3ec31964844cbb8f7c7af4da8ae765446572934a334926102ed2f3baebb87c06
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v5.15.153
PKG_HASH:=eaa24df968c79385c57707068a209fb1ea43271b573f24885805ae96a58ee3a8
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)

View File

@ -456,7 +456,7 @@ v13:
{
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
@@ -4594,6 +4594,8 @@ static const struct wmi_ops wmi_tlv_ops
@@ -4598,6 +4598,8 @@ static const struct wmi_ops wmi_tlv_ops
.gen_echo = ath10k_wmi_tlv_op_gen_echo,
.gen_vdev_spectral_conf = ath10k_wmi_tlv_op_gen_vdev_spectral_conf,
.gen_vdev_spectral_enable = ath10k_wmi_tlv_op_gen_vdev_spectral_enable,

View File

@ -22,7 +22,7 @@
static int modparam_bad_frames_preempt;
module_param_named(bad_frames_preempt, modparam_bad_frames_preempt, int, 0444);
MODULE_PARM_DESC(bad_frames_preempt,
@@ -2869,10 +2874,10 @@ static int b43_gpio_init(struct b43_wlde
@@ -2870,10 +2875,10 @@ static int b43_gpio_init(struct b43_wlde
u32 mask, set;
b43_maskset32(dev, B43_MMIO_MACCTL, ~B43_MACCTL_GPOUTSMSK, 0);

View File

@ -9,7 +9,7 @@
antenna = b43_antenna_to_phyctl(antenna);
ctl = b43_shm_read16(dev, B43_SHM_SHARED, B43_SHM_SH_BEACPHYCTL);
/* We can't send beacons with short preamble. Would get PHY errors. */
@@ -3284,8 +3284,8 @@ static int b43_chip_init(struct b43_wlde
@@ -3285,8 +3285,8 @@ static int b43_chip_init(struct b43_wlde
/* Select the antennae */
if (phy->ops->set_rx_antenna)
@ -20,7 +20,7 @@
if (phy->type == B43_PHYTYPE_B) {
value16 = b43_read16(dev, 0x005E);
@@ -3985,7 +3985,6 @@ static int b43_op_config(struct ieee8021
@@ -3987,7 +3987,6 @@ static int b43_op_config(struct ieee8021
struct b43_wldev *dev = wl->current_dev;
struct b43_phy *phy = &dev->phy;
struct ieee80211_conf *conf = &hw->conf;
@ -28,7 +28,7 @@
int err = 0;
mutex_lock(&wl->mutex);
@@ -4028,11 +4027,9 @@ static int b43_op_config(struct ieee8021
@@ -4030,11 +4029,9 @@ static int b43_op_config(struct ieee8021
}
/* Antennas for RX and management frame TX. */
@ -42,7 +42,7 @@
if (wl->radio_enabled != phy->radio_on) {
if (wl->radio_enabled) {
@@ -5175,6 +5172,47 @@ static int b43_op_get_survey(struct ieee
@@ -5177,6 +5174,47 @@ static int b43_op_get_survey(struct ieee
return 0;
}
@ -90,7 +90,7 @@
static const struct ieee80211_ops b43_hw_ops = {
.tx = b43_op_tx,
.conf_tx = b43_op_conf_tx,
@@ -5196,6 +5234,8 @@ static const struct ieee80211_ops b43_hw
@@ -5198,6 +5236,8 @@ static const struct ieee80211_ops b43_hw
.sw_scan_complete = b43_op_sw_scan_complete_notifier,
.get_survey = b43_op_get_survey,
.rfkill_poll = b43_rfkill_poll,
@ -99,7 +99,7 @@
};
/* Hard-reset the chip. Do not call this directly.
@@ -5497,6 +5537,8 @@ static int b43_one_core_attach(struct b4
@@ -5499,6 +5539,8 @@ static int b43_one_core_attach(struct b4
if (!wldev)
goto out;
@ -108,7 +108,7 @@
wldev->use_pio = b43_modparam_pio;
wldev->dev = dev;
wldev->wl = wl;
@@ -5588,6 +5630,9 @@ static struct b43_wl *b43_wireless_init(
@@ -5590,6 +5632,9 @@ static struct b43_wl *b43_wireless_init(
wiphy_ext_feature_set(hw->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST);

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/broadcom/b43/main.c
+++ b/drivers/net/wireless/broadcom/b43/main.c
@@ -2886,6 +2886,14 @@ static int b43_gpio_init(struct b43_wlde
@@ -2887,6 +2887,14 @@ static int b43_gpio_init(struct b43_wlde
} else if (dev->dev->chip_id == 0x5354) {
/* Don't allow overtaking buttons GPIOs */
set &= 0x2; /* 0x2 is LED GPIO on BCM5354 */

View File

@ -90,7 +90,7 @@
config B43_PHY_G
--- a/drivers/net/wireless/broadcom/b43/main.c
+++ b/drivers/net/wireless/broadcom/b43/main.c
@@ -2853,7 +2853,7 @@ static struct ssb_device *b43_ssb_gpio_d
@@ -2854,7 +2854,7 @@ static struct ssb_device *b43_ssb_gpio_d
{
struct ssb_bus *bus = dev->dev->sdev->bus;
@ -99,7 +99,7 @@
return (bus->chipco.dev ? bus->chipco.dev : bus->pcicore.dev);
#else
return bus->chipco.dev;
@@ -4870,7 +4870,7 @@ static int b43_wireless_core_init(struct
@@ -4872,7 +4872,7 @@ static int b43_wireless_core_init(struct
}
if (sprom->boardflags_lo & B43_BFL_XTAL_NOSLOW)
hf |= B43_HF_DSCRQ; /* Disable slowclock requests from ucode. */

View File

@ -42,7 +42,7 @@ Acked-by: Stanislaw Gruszka <stf_xl@wp.pl>
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
@@ -1094,6 +1094,19 @@ static void rt2x00lib_remove_hw(struct r
@@ -1095,6 +1095,19 @@ static void rt2x00lib_remove_hw(struct r
kfree(rt2x00dev->chan_survey);
}
@ -62,7 +62,7 @@ Acked-by: Stanislaw Gruszka <stf_xl@wp.pl>
static int rt2x00lib_probe_hw(struct rt2x00_dev *rt2x00dev)
{
struct hw_mode_spec *spec = &rt2x00dev->spec;
@@ -1175,6 +1188,11 @@ static int rt2x00lib_probe_hw(struct rt2
@@ -1176,6 +1189,11 @@ static int rt2x00lib_probe_hw(struct rt2
#undef RT2X00_TASKLET_INIT

View File

@ -127,7 +127,7 @@
DECLARE_KFIFO_PTR(txstatus_fifo, u32);
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
@@ -1420,6 +1420,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de
@@ -1423,6 +1423,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de
INIT_DELAYED_WORK(&rt2x00dev->autowakeup_work, rt2x00lib_autowakeup);
INIT_WORK(&rt2x00dev->sleep_work, rt2x00lib_sleep);
@ -138,7 +138,7 @@
/*
* Let the driver probe the device to detect the capabilities.
*/
@@ -1560,6 +1564,11 @@ void rt2x00lib_remove_dev(struct rt2x00_
@@ -1563,6 +1567,11 @@ void rt2x00lib_remove_dev(struct rt2x00_
* Free the driver data.
*/
kfree(rt2x00dev->drv_data);

View File

@ -12,7 +12,7 @@
#endif /* _RT2X00_PLATFORM_H */
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
@@ -1007,6 +1007,22 @@ static int rt2x00lib_probe_hw_modes(stru
@@ -1008,6 +1008,22 @@ static int rt2x00lib_probe_hw_modes(stru
unsigned int num_rates;
unsigned int i;

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
@@ -989,6 +989,12 @@ static void rt2x00lib_rate(struct ieee80
@@ -990,6 +990,12 @@ static void rt2x00lib_rate(struct ieee80
void rt2x00lib_set_mac_address(struct rt2x00_dev *rt2x00dev, u8 *eeprom_mac_addr)
{

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
@@ -1012,6 +1012,16 @@ static int rt2x00lib_probe_hw_modes(stru
@@ -1013,6 +1013,16 @@ static int rt2x00lib_probe_hw_modes(stru
struct ieee80211_rate *rates;
unsigned int num_rates;
unsigned int i;

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
@@ -1359,7 +1359,7 @@ static inline void rt2x00lib_set_if_comb
@@ -1362,7 +1362,7 @@ static inline void rt2x00lib_set_if_comb
*/
if_limit = &rt2x00dev->if_limits_ap;
if_limit->max = rt2x00dev->ops->max_ap_intf;

View File

@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -3821,7 +3821,7 @@ struct ieee80211_txq *ieee80211_next_txq
@@ -3822,7 +3822,7 @@ struct ieee80211_txq *ieee80211_next_txq
{
struct ieee80211_local *local = hw_to_local(hw);
struct airtime_sched_info *air_sched;
@ -22,7 +22,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
struct ieee80211_txq *ret = NULL;
struct airtime_info *air_info;
struct txq_info *txqi = NULL;
@@ -3948,7 +3948,7 @@ void ieee80211_update_airtime_weight(str
@@ -3949,7 +3949,7 @@ void ieee80211_update_airtime_weight(str
u64 weight_sum = 0;
if (unlikely(!now))
@ -31,7 +31,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
lockdep_assert_held(&air_sched->lock);
@@ -3974,7 +3974,7 @@ void ieee80211_schedule_txq(struct ieee8
@@ -3975,7 +3975,7 @@ void ieee80211_schedule_txq(struct ieee8
struct ieee80211_local *local = hw_to_local(hw);
struct txq_info *txqi = to_txq_info(txq);
struct airtime_sched_info *air_sched;
@ -40,7 +40,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
struct airtime_info *air_info;
u8 ac = txq->ac;
bool was_active;
@@ -4032,7 +4032,7 @@ static void __ieee80211_unschedule_txq(s
@@ -4033,7 +4033,7 @@ static void __ieee80211_unschedule_txq(s
if (!purge)
airtime_set_active(air_sched, air_info,
@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
rb_erase_cached(&txqi->schedule_order,
&air_sched->active_txqs);
@@ -4120,7 +4120,7 @@ bool ieee80211_txq_may_transmit(struct i
@@ -4121,7 +4121,7 @@ bool ieee80211_txq_may_transmit(struct i
if (RB_EMPTY_NODE(&txqi->schedule_order))
goto out;

View File

@ -14,7 +14,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -4988,6 +4988,115 @@ static int ieee80211_beacon_protect(stru
@@ -4989,6 +4989,115 @@ static int ieee80211_beacon_protect(stru
return 0;
}
@ -130,7 +130,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
static struct sk_buff *
__ieee80211_beacon_get(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
@@ -4997,12 +5106,8 @@ __ieee80211_beacon_get(struct ieee80211_
@@ -4998,12 +5107,8 @@ __ieee80211_beacon_get(struct ieee80211_
struct ieee80211_local *local = hw_to_local(hw);
struct beacon_data *beacon = NULL;
struct sk_buff *skb = NULL;
@ -143,7 +143,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
rcu_read_lock();
@@ -5019,48 +5124,11 @@ __ieee80211_beacon_get(struct ieee80211_
@@ -5020,48 +5125,11 @@ __ieee80211_beacon_get(struct ieee80211_
struct ieee80211_if_ap *ap = &sdata->u.ap;
beacon = rcu_dereference(ap->beacon);
@ -196,7 +196,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
} else if (sdata->vif.type == NL80211_IFTYPE_ADHOC) {
struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
struct ieee80211_hdr *hdr;
@@ -5086,6 +5154,9 @@ __ieee80211_beacon_get(struct ieee80211_
@@ -5087,6 +5155,9 @@ __ieee80211_beacon_get(struct ieee80211_
hdr = (struct ieee80211_hdr *) skb->data;
hdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
IEEE80211_STYPE_BEACON);
@ -206,7 +206,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
} else if (ieee80211_vif_is_mesh(&sdata->vif)) {
struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
@@ -5125,51 +5196,13 @@ __ieee80211_beacon_get(struct ieee80211_
@@ -5126,51 +5197,13 @@ __ieee80211_beacon_get(struct ieee80211_
}
skb_put_data(skb, beacon->tail, beacon->tail_len);

View File

@ -294,7 +294,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
/* done */
state->split_start = 0;
break;
@@ -5021,6 +5066,96 @@ static int validate_beacon_tx_rate(struc
@@ -5024,6 +5069,96 @@ static int validate_beacon_tx_rate(struc
return 0;
}
@ -391,7 +391,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
static int nl80211_parse_beacon(struct cfg80211_registered_device *rdev,
struct nlattr *attrs[],
struct cfg80211_beacon_data *bcn)
@@ -5101,6 +5236,17 @@ static int nl80211_parse_beacon(struct c
@@ -5104,6 +5239,17 @@ static int nl80211_parse_beacon(struct c
bcn->ftm_responder = -1;
}
@ -409,7 +409,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
return 0;
}
@@ -5557,6 +5703,17 @@ static int nl80211_start_ap(struct sk_bu
@@ -5560,6 +5706,17 @@ static int nl80211_start_ap(struct sk_bu
goto out;
}
@ -427,7 +427,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
nl80211_calculate_ap_params(&params);
if (info->attrs[NL80211_ATTR_EXTERNAL_AUTH_SUPPORT])
@@ -5578,6 +5735,11 @@ static int nl80211_start_ap(struct sk_bu
@@ -5581,6 +5738,11 @@ static int nl80211_start_ap(struct sk_bu
out:
kfree(params.acl);
@ -439,7 +439,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
return err;
}
@@ -5602,12 +5764,14 @@ static int nl80211_set_beacon(struct sk_
@@ -5605,12 +5767,14 @@ static int nl80211_set_beacon(struct sk_
err = nl80211_parse_beacon(rdev, info->attrs, &params);
if (err)
@ -455,7 +455,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
return err;
}
@@ -9284,12 +9448,14 @@ static int nl80211_channel_switch(struct
@@ -9287,12 +9451,14 @@ static int nl80211_channel_switch(struct
err = nl80211_parse_beacon(rdev, info->attrs, &params.beacon_after);
if (err)
@ -473,7 +473,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
err = nla_parse_nested_deprecated(csa_attrs, NL80211_ATTR_MAX,
info->attrs[NL80211_ATTR_CSA_IES],
@@ -9408,6 +9574,8 @@ skip_beacons:
@@ -9411,6 +9577,8 @@ skip_beacons:
wdev_unlock(wdev);
free:
@ -482,7 +482,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
kfree(csa_attrs);
return err;
}
@@ -14960,6 +15128,8 @@ static int nl80211_color_change(struct s
@@ -14963,6 +15131,8 @@ static int nl80211_color_change(struct s
wdev_unlock(wdev);
out:

View File

@ -294,7 +294,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
};
/* policy for the key attributes */
@@ -9288,12 +9289,6 @@ static int nl80211_start_radar_detection
@@ -9291,12 +9292,6 @@ static int nl80211_start_radar_detection
if (err)
return err;
@ -307,7 +307,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
err = cfg80211_chandef_dfs_required(wiphy, &chandef, wdev->iftype);
if (err < 0)
return err;
@@ -9304,6 +9299,16 @@ static int nl80211_start_radar_detection
@@ -9307,6 +9302,16 @@ static int nl80211_start_radar_detection
if (!cfg80211_chandef_dfs_usable(wiphy, &chandef))
return -EINVAL;

View File

@ -118,7 +118,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
NL80211_RADAR_CAC_ABORTED);
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -9279,42 +9279,60 @@ static int nl80211_start_radar_detection
@@ -9282,42 +9282,60 @@ static int nl80211_start_radar_detection
struct cfg80211_chan_def chandef;
enum nl80211_dfs_regions dfs_region;
unsigned int cac_time_ms;
@ -198,7 +198,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
cac_time_ms = cfg80211_chandef_dfs_cac_time(&rdev->wiphy, &chandef);
if (WARN_ON(!cac_time_ms))
@@ -9327,6 +9345,9 @@ static int nl80211_start_radar_detection
@@ -9330,6 +9348,9 @@ static int nl80211_start_radar_detection
wdev->cac_start_time = jiffies;
wdev->cac_time_ms = cac_time_ms;
}
@ -208,7 +208,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
return err;
}
@@ -15962,7 +15983,8 @@ static const struct genl_small_ops nl802
@@ -15965,7 +15986,8 @@ static const struct genl_small_ops nl802
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
.doit = nl80211_start_radar_detection,
.flags = GENL_UNS_ADMIN_PERM,

View File

@ -481,7 +481,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
};
/* policy for the key attributes */
@@ -9307,9 +9307,9 @@ static int nl80211_start_radar_detection
@@ -9310,9 +9310,9 @@ static int nl80211_start_radar_detection
goto unlock;
}

View File

@ -269,7 +269,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
IEEE80211_TX_STATUS_MSG = 2,
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -5042,6 +5042,19 @@ ieee80211_beacon_get_finish(struct ieee8
@@ -5043,6 +5043,19 @@ ieee80211_beacon_get_finish(struct ieee8
IEEE80211_TX_CTL_FIRST_FRAGMENT;
}
@ -289,7 +289,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
static struct sk_buff *
ieee80211_beacon_get_ap(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
@@ -5055,6 +5068,7 @@ ieee80211_beacon_get_ap(struct ieee80211
@@ -5056,6 +5069,7 @@ ieee80211_beacon_get_ap(struct ieee80211
struct ieee80211_if_ap *ap = &sdata->u.ap;
struct sk_buff *skb = NULL;
u16 csa_off_base = 0;
@ -297,7 +297,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
if (beacon->cntdwn_counter_offsets[0]) {
if (!is_template)
@@ -5064,11 +5078,12 @@ ieee80211_beacon_get_ap(struct ieee80211
@@ -5065,11 +5079,12 @@ ieee80211_beacon_get_ap(struct ieee80211
}
/* headroom, head length,
@ -312,7 +312,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
if (!skb)
return NULL;
@@ -5082,6 +5097,11 @@ ieee80211_beacon_get_ap(struct ieee80211
@@ -5083,6 +5098,11 @@ ieee80211_beacon_get_ap(struct ieee80211
offs->tim_length = skb->len - beacon->head_len;
offs->cntdwn_counter_offs[0] = beacon->cntdwn_counter_offsets[0];

View File

@ -627,7 +627,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
}
for (i = 0; i < IEEE80211_NUM_TIDS; i++)
@@ -1890,59 +1894,24 @@ void ieee80211_sta_set_buffered(struct i
@@ -1892,59 +1896,24 @@ void ieee80211_sta_set_buffered(struct i
}
EXPORT_SYMBOL(ieee80211_sta_set_buffered);
@ -699,7 +699,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
}
EXPORT_SYMBOL(ieee80211_sta_register_airtime);
@@ -2386,7 +2355,7 @@ void sta_set_sinfo(struct sta_info *sta,
@@ -2388,7 +2357,7 @@ void sta_set_sinfo(struct sta_info *sta,
}
if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_AIRTIME_WEIGHT))) {
@ -811,7 +811,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
}
void ieee80211_txq_set_params(struct ieee80211_local *local)
@@ -3820,259 +3821,102 @@ EXPORT_SYMBOL(ieee80211_tx_dequeue);
@@ -3821,259 +3822,102 @@ EXPORT_SYMBOL(ieee80211_tx_dequeue);
struct ieee80211_txq *ieee80211_next_txq(struct ieee80211_hw *hw, u8 ac)
{
struct ieee80211_local *local = hw_to_local(hw);
@ -1133,7 +1133,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
struct ieee80211_local *local = hw_to_local(hw);
if (!wiphy_ext_feature_isset(local->hw.wiphy, NL80211_EXT_FEATURE_AQL))
@@ -4087,12 +3931,15 @@ bool ieee80211_txq_airtime_check(struct
@@ -4088,12 +3932,15 @@ bool ieee80211_txq_airtime_check(struct
if (unlikely(txq->tid == IEEE80211_NUM_TIDS))
return true;
@ -1151,7 +1151,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
return true;
return false;
@@ -4102,59 +3949,60 @@ EXPORT_SYMBOL(ieee80211_txq_airtime_chec
@@ -4103,59 +3950,60 @@ EXPORT_SYMBOL(ieee80211_txq_airtime_chec
bool ieee80211_txq_may_transmit(struct ieee80211_hw *hw,
struct ieee80211_txq *txq)
{

View File

@ -41,7 +41,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
u32 aql_limit_high;
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -3848,7 +3848,7 @@ struct ieee80211_txq *ieee80211_next_txq
@@ -3849,7 +3849,7 @@ struct ieee80211_txq *ieee80211_next_txq
struct sta_info *sta = container_of(txqi->txq.sta,
struct sta_info, sta);
bool aql_check = ieee80211_txq_airtime_check(hw, &txqi->txq);

View File

@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -3818,6 +3818,13 @@ out:
@@ -3819,6 +3819,13 @@ out:
}
EXPORT_SYMBOL(ieee80211_tx_dequeue);
@ -28,7 +28,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
struct ieee80211_txq *ieee80211_next_txq(struct ieee80211_hw *hw, u8 ac)
{
struct ieee80211_local *local = hw_to_local(hw);
@@ -3848,7 +3855,7 @@ struct ieee80211_txq *ieee80211_next_txq
@@ -3849,7 +3856,7 @@ struct ieee80211_txq *ieee80211_next_txq
struct sta_info *sta = container_of(txqi->txq.sta,
struct sta_info, sta);
bool aql_check = ieee80211_txq_airtime_check(hw, &txqi->txq);
@ -37,7 +37,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (aql_check)
found_eligible_txq = true;
@@ -3973,7 +3980,7 @@ bool ieee80211_txq_may_transmit(struct i
@@ -3974,7 +3981,7 @@ bool ieee80211_txq_may_transmit(struct i
continue;
}
sta = container_of(iter->txq.sta, struct sta_info, sta);

View File

@ -37,7 +37,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
u32 aql_limit_low;
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -3825,6 +3825,36 @@ static inline s32 ieee80211_sta_deficit(
@@ -3826,6 +3826,36 @@ static inline s32 ieee80211_sta_deficit(
return air_info->deficit - atomic_read(&air_info->aql_tx_pending);
}
@ -74,7 +74,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
struct ieee80211_txq *ieee80211_next_txq(struct ieee80211_hw *hw, u8 ac)
{
struct ieee80211_local *local = hw_to_local(hw);
@@ -3871,7 +3901,6 @@ struct ieee80211_txq *ieee80211_next_txq
@@ -3872,7 +3902,6 @@ struct ieee80211_txq *ieee80211_next_txq
}
}
@ -82,7 +82,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (txqi->schedule_round == local->schedule_round[ac])
goto out;
@@ -3891,12 +3920,13 @@ void __ieee80211_schedule_txq(struct iee
@@ -3892,12 +3921,13 @@ void __ieee80211_schedule_txq(struct iee
{
struct ieee80211_local *local = hw_to_local(hw);
struct txq_info *txqi = to_txq_info(txq);
@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/* If airtime accounting is active, always enqueue STAs at the
* head of the list to ensure that they only get moved to the
* back by the airtime DRR scheduler once they have a negative
@@ -3904,7 +3934,7 @@ void __ieee80211_schedule_txq(struct iee
@@ -3905,7 +3935,7 @@ void __ieee80211_schedule_txq(struct iee
* get immediately moved to the back of the list on the next
* call to ieee80211_next_txq().
*/
@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
wiphy_ext_feature_isset(local->hw.wiphy,
NL80211_EXT_FEATURE_AIRTIME_FAIRNESS))
list_add(&txqi->schedule_order,
@@ -3912,6 +3942,8 @@ void __ieee80211_schedule_txq(struct iee
@@ -3913,6 +3943,8 @@ void __ieee80211_schedule_txq(struct iee
else
list_add_tail(&txqi->schedule_order,
&local->active_txqs[txq->ac]);

View File

@ -35,7 +35,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
local->airtime_flags = AIRTIME_USE_TX | AIRTIME_USE_RX;
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -1930,6 +1930,7 @@ void ieee80211_sta_update_pending_airtim
@@ -1932,6 +1932,7 @@ void ieee80211_sta_update_pending_airtim
&sta->airtime[ac].aql_tx_pending);
atomic_add(tx_airtime, &local->aql_total_pending_airtime);
@ -43,7 +43,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
return;
}
@@ -1941,14 +1942,17 @@ void ieee80211_sta_update_pending_airtim
@@ -1943,14 +1944,17 @@ void ieee80211_sta_update_pending_airtim
tx_pending, 0);
}
@ -66,7 +66,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
int sta_info_move_state(struct sta_info *sta,
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -3864,6 +3864,9 @@ struct ieee80211_txq *ieee80211_next_txq
@@ -3865,6 +3865,9 @@ struct ieee80211_txq *ieee80211_next_txq
spin_lock_bh(&local->active_txq_lock[ac]);
@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
begin:
txqi = list_first_entry_or_null(&local->active_txqs[ac],
struct txq_info,
@@ -3985,6 +3988,25 @@ bool ieee80211_txq_airtime_check(struct
@@ -3986,6 +3989,25 @@ bool ieee80211_txq_airtime_check(struct
}
EXPORT_SYMBOL(ieee80211_txq_airtime_check);
@ -102,7 +102,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
bool ieee80211_txq_may_transmit(struct ieee80211_hw *hw,
struct ieee80211_txq *txq)
{
@@ -4001,6 +4023,9 @@ bool ieee80211_txq_may_transmit(struct i
@@ -4002,6 +4024,9 @@ bool ieee80211_txq_may_transmit(struct i
if (list_empty(&txqi->schedule_order))
goto out;
@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
list_for_each_entry_safe(iter, tmp, &local->active_txqs[ac],
schedule_order) {
if (iter == txqi)
@@ -4040,7 +4065,15 @@ void ieee80211_txq_schedule_start(struct
@@ -4041,7 +4066,15 @@ void ieee80211_txq_schedule_start(struct
struct ieee80211_local *local = hw_to_local(hw);
spin_lock_bh(&local->active_txq_lock[ac]);

View File

@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -1901,6 +1901,7 @@ void ieee80211_sta_register_airtime(stru
@@ -1903,6 +1903,7 @@ void ieee80211_sta_register_airtime(stru
struct ieee80211_local *local = sta->sdata->local;
u8 ac = ieee80211_ac_from_tid(tid);
u32 airtime = 0;
@ -21,7 +21,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (sta->local->airtime_flags & AIRTIME_USE_TX)
airtime += tx_airtime;
@@ -1910,7 +1911,11 @@ void ieee80211_sta_register_airtime(stru
@@ -1912,7 +1913,11 @@ void ieee80211_sta_register_airtime(stru
spin_lock_bh(&local->active_txq_lock[ac]);
sta->airtime[ac].tx_airtime += tx_airtime;
sta->airtime[ac].rx_airtime += rx_airtime;

View File

@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -3895,7 +3895,7 @@ struct ieee80211_txq *ieee80211_next_txq
@@ -3896,7 +3896,7 @@ struct ieee80211_txq *ieee80211_next_txq
if (deficit < 0)
sta->airtime[txqi->txq.ac].deficit +=
@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (deficit < 0 || !aql_check) {
list_move_tail(&txqi->schedule_order,
@@ -4038,7 +4038,8 @@ bool ieee80211_txq_may_transmit(struct i
@@ -4039,7 +4039,8 @@ bool ieee80211_txq_may_transmit(struct i
}
sta = container_of(iter->txq.sta, struct sta_info, sta);
if (ieee80211_sta_deficit(sta, ac) < 0)
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
list_move_tail(&iter->schedule_order, &local->active_txqs[ac]);
}
@@ -4046,7 +4047,7 @@ bool ieee80211_txq_may_transmit(struct i
@@ -4047,7 +4048,7 @@ bool ieee80211_txq_may_transmit(struct i
if (sta->airtime[ac].deficit >= 0)
goto out;

View File

@ -19,9 +19,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -3793,7 +3793,7 @@ begin:
@@ -3794,7 +3794,7 @@ begin:
encap_out:
IEEE80211_SKB_CB(skb)->control.vif = vif;
info->control.vif = vif;
- if (vif &&
+ if (tx.sta &&

View File

@ -19,7 +19,7 @@ Reviewed-by: Greenman, Gregory <gregory.greenman@intel.com>
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -1071,6 +1071,14 @@ static void __sta_info_destroy_part2(str
@@ -1073,6 +1073,14 @@ static void __sta_info_destroy_part2(str
WARN_ON_ONCE(ret);
}

View File

@ -58,7 +58,7 @@ Reviewed-by: Greenman, Gregory <gregory.greenman@intel.com>
struct ieee80211_channel_switch *ch_switch)
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -1076,8 +1076,12 @@ static void __sta_info_destroy_part2(str
@@ -1078,8 +1078,12 @@ static void __sta_info_destroy_part2(str
* frames sitting on hardware queues might be sent out without
* any encryption at all.
*/