aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Harvey <harvey.tim@gmail.com>2010-12-09 13:15:45 -0800
committerJohn W. Linville <linville@tuxdriver.com>2010-12-13 15:23:29 -0500
commit91f44b02992f632ac6c070f985cd58d5acee4199 (patch)
tree2227e620b444c41398e88d2570fd0838dd856bd3
parent42ab135fe78025910bed8ff56e00a375f2b04db1 (diff)
downloadkernel_samsung_espresso10-91f44b02992f632ac6c070f985cd58d5acee4199.zip
kernel_samsung_espresso10-91f44b02992f632ac6c070f985cd58d5acee4199.tar.gz
kernel_samsung_espresso10-91f44b02992f632ac6c070f985cd58d5acee4199.tar.bz2
mac80211 default tx_last_beacon false (congestion)
The 802.11 spec states that the STA that generated the last Beacon frame shall be the STA that response to a probe request. This is important for congestion reduction when a probe request is received - only 1 node in an adhoc BSS will transmit a response. While mac80211 drivers should provide the tx_last_beacon function to report if they transmitted the last beacon many do not. As an attempt to reduce probe response congestion default this to 0 such that a node not implementing this capability does not contribute to unnecessary congestion. In a modern medium sized office environment I see upwards of 100 probe requests per second received at a given node from various hardware/OS/drivers doing zeroconf 'active probing' as opposed to passively listening for beacons. With a modest 10-node adhoc network consisting of drivers that do not implement this tx_last_beacon feature, I have seen this result in the simultaneous xmit of probe responses accumulating to 500 probe responses per second because of collisions which brings the adhoc network to its knees as well as causes needless congestion. Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--net/mac80211/driver-ops.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h
index 4244554..af0c439 100644
--- a/net/mac80211/driver-ops.h
+++ b/net/mac80211/driver-ops.h
@@ -367,7 +367,7 @@ static inline void drv_reset_tsf(struct ieee80211_local *local)
static inline int drv_tx_last_beacon(struct ieee80211_local *local)
{
- int ret = 1;
+ int ret = 0; /* default unsuported op for less congestion */
might_sleep();