mac80211: Jitter HWMP MPATH reply frames to reduce collision, on dense networks.
PATCH 1/1 mac80211: Jitter HWMP MPATH reply frames to reduce collision, on dense networks.
From: Jesse Jones <[email protected]>
When more than one station hears a broadcast request, it is possible that multiple devices will reply at the same time, potentially causing collision. This patch helps reduce this issue.
Signed-off-by Alexis Green <[email protected]>
Signed-off-by Benjamin Morgan <[email protected]>
--- net/mac80211/ieee80211_i.h | 11 ++++ net/mac80211/iface.c | 58 +++++++++++++++++++++ net/mac80211/mesh.c | 2 + net/mac80211/mesh_hwmp.c | 124 +++++++++++++++++++++++++++++++++++---------- 4 files changed, 168 insertions(+), 27 deletions(-)
net/mac80211/ieee80211_i.h +11 -0
@@ -330,6 +330,11 @@ struct mesh_preq_queue {u8 flags; }; +struct mesh_tx_queue { +struct list_head list; +struct sk_buff *skb; +}; +struct ieee80211_roc_work {struct list_head list;
@@ -670,6 +675,11 @@ struct ieee80211_if_mesh {spinlock_t mesh_preq_queue_lock;struct mesh_preq_queue preq_queue;int preq_queue_len; +/* Spinlock for MPATH frame tx queue */ +spinlock_t mesh_tx_queue_lock; +struct mesh_tx_queue tx_queue; +int tx_queue_len; +struct mesh_stats mshstats;struct mesh_config mshcfg;atomic_t estab_plinks;
@@ -919,6 +929,7 @@ struct ieee80211_sub_if_data {struct work_struct work;struct sk_buff_head skb_queue; +struct delayed_work tx_work;u8 needed_rx_chains;enum ieee80211_smps_mode smps_mode;
net/mac80211/iface.c +58 -0
76 lines not on this page · raw message
net/mac80211/mesh.c +2 -0
@@ -1381,6 +1381,8 @@ void ieee80211_mesh_init_sdata(struct ieee80211_sub_if_data *sdata) ieee80211_mesh_path_root_timer, (unsigned long) sdata);INIT_LIST_HEAD (&ifmsh->preq_queue.list); +INIT_LIST_HEAD (&ifmsh->tx_queue.list); +spin_lock_init (&ifmsh->mesh_tx_queue_lock);skb_queue_head_init (&ifmsh->ps.bc_buf);spin_lock_init (&ifmsh->mesh_preq_queue_lock);spin_lock_init (&ifmsh->sync_offset_lock);
net/mac80211/mesh_hwmp.c +97 -27
180 lines not on this page · raw message