The rtwn(4) driver ignores the rts threshold value set by the stack.
This fixes it:

Index: if_rtwn.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/if_rtwn.c,v
retrieving revision 1.22
diff -u -p -r1.22 if_rtwn.c
--- if_rtwn.c   17 Jun 2016 10:53:55 -0000      1.22
+++ if_rtwn.c   20 Jul 2016 19:10:38 -0000
@@ -985,7 +985,10 @@ rtwn_tx(void *cookie, struct mbuf *m, st
                    SM(R92C_TXDW1_RAID, raid) |
                    R92C_TXDW1_AGGBK);
 
-               if (ic->ic_flags & IEEE80211_F_USEPROT) {
+               if (m->m_pkthdr.len + IEEE80211_CRC_LEN > ic->ic_rtsthreshold) {
+                       txd->txdw4 |= htole32(R92C_TXDW4_RTSEN |
+                           R92C_TXDW4_HWRTSEN);
+               } else if (ic->ic_flags & IEEE80211_F_USEPROT) {
                        if (ic->ic_protmode == IEEE80211_PROT_CTSONLY) {
                                txd->txdw4 |= htole32(R92C_TXDW4_CTS2SELF |
                                    R92C_TXDW4_HWRTSEN);

Reply via email to