mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 13:26:48 +00:00
wifi: mt76: use atomic iface iteration for pre-TBTT work
In addition to the previous series I posted, over time I'd also like to get rid of the iflist_mtx in mac80211. That isn't easy now since lots of places use iteration and would have to be audited, but even a cursory look suggests that mt76 might be more problematic than most since holding the wiphy lock for the latency-sensitive pre-TBTT work could be an issue. Convert the pre-TBTT work to use atomic iteration and then sending the device commands outside of it. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
committed by
Felix Fietkau
parent
cd371fcc98
commit
d71f8d1b17
+3
-5
@@ -136,7 +136,8 @@ EXPORT_SYMBOL_GPL(mt76x02_resync_beacon_timer);
|
||||
void
|
||||
mt76x02_update_beacon_iter(void *priv, u8 *mac, struct ieee80211_vif *vif)
|
||||
{
|
||||
struct mt76x02_dev *dev = (struct mt76x02_dev *)priv;
|
||||
struct beacon_bc_data *data = priv;
|
||||
struct mt76x02_dev *dev = data->dev;
|
||||
struct mt76x02_vif *mvif = (struct mt76x02_vif *)vif->drv_priv;
|
||||
struct sk_buff *skb = NULL;
|
||||
|
||||
@@ -147,7 +148,7 @@ mt76x02_update_beacon_iter(void *priv, u8 *mac, struct ieee80211_vif *vif)
|
||||
if (!skb)
|
||||
return;
|
||||
|
||||
mt76x02_mac_set_beacon(dev, skb);
|
||||
__skb_queue_tail(&data->q, skb);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mt76x02_update_beacon_iter);
|
||||
|
||||
@@ -182,9 +183,6 @@ mt76x02_enqueue_buffered_bc(struct mt76x02_dev *dev,
|
||||
{
|
||||
int i, nframes;
|
||||
|
||||
data->dev = dev;
|
||||
__skb_queue_head_init(&data->q);
|
||||
|
||||
do {
|
||||
nframes = skb_queue_len(&data->q);
|
||||
ieee80211_iterate_active_interfaces_atomic(mt76_hw(dev),
|
||||
|
||||
Reference in New Issue
Block a user