In net80211, enable RTS for frames above a particular size (currently 512
authorstsp <stsp@openbsd.org>
Wed, 20 Jul 2016 15:40:27 +0000 (15:40 +0000)
committerstsp <stsp@openbsd.org>
Wed, 20 Jul 2016 15:40:27 +0000 (15:40 +0000)
bytes). This is what other OS have been doing for years. In our stack this
feature was present but disabled at compile-time by an #ifdef.

This is a low risk change because drivers were already required to use RTS
whenever the AP set the USE_PROTECTION flag in ERP elements of its beacons.

This change allows for reasonable throughput on loaded 11g networks
whereas before they were practically unusable.

tests and ok phessler@

sys/net80211/ieee80211_proto.c

index 0941831..9aa63d8 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ieee80211_proto.c,v 1.67 2016/05/18 08:15:28 stsp Exp $       */
+/*     $OpenBSD: ieee80211_proto.c,v 1.68 2016/07/20 15:40:27 stsp Exp $       */
 /*     $NetBSD: ieee80211_proto.c,v 1.8 2004/04/30 23:58:20 dyoung Exp $       */
 
 /*-
@@ -88,11 +88,7 @@ ieee80211_proto_attach(struct ifnet *ifp)
 
        ifp->if_hdrlen = sizeof(struct ieee80211_frame);
 
-#ifdef notdef
        ic->ic_rtsthreshold = IEEE80211_RTS_DEFAULT;
-#else
-       ic->ic_rtsthreshold = IEEE80211_RTS_MAX;
-#endif
        ic->ic_fragthreshold = 2346;            /* XXX not used yet */
        ic->ic_fixed_rate = -1;                 /* no fixed rate */
        ic->ic_fixed_mcs = -1;                  /* no fixed mcs */