The RTS retry limit we inherited from Linux seems insanely high.
It seems to be the cause for "bursty" pings and high latency for
smaller packets while larger packets from TCP streams are stuck
in the Tx queue:
64 bytes from 192.168.1.12: icmp_seq=84 ttl=251 time=380.203 ms
64 bytes from 192.168.1.12: icmp_seq=85 ttl=251 time=710.714 ms
64 bytes from 192.168.1.12: icmp_seq=86 ttl=251 time=279.594 ms
64 bytes from 192.168.1.12: icmp_seq=87 ttl=251 time=893.879 ms
64 bytes from 192.168.1.12: icmp_seq=88 ttl=251 time=34800.236 ms
64 bytes from 192.168.1.12: icmp_seq=89 ttl=251 time=33815.364 ms
64 bytes from 192.168.1.12: icmp_seq=90 ttl=251 time=32824.247 ms
64 bytes from 192.168.1.12: icmp_seq=91 ttl=251 time=31822.355 ms
64 bytes from 192.168.1.12: icmp_seq=92 ttl=251 time=30817.395 ms
64 bytes from 192.168.1.12: icmp_seq=93 ttl=251 time=29822.478 ms
64 bytes from 192.168.1.12: icmp_seq=94 ttl=251 time=28817.508 ms
With this diff, while in bad channel conditions, instead of the above
I am seeing 22% lost ping packets, and reasonable latency for those
packets which make it through.
SSH into the machine is even possible (yet rather unusable), whereas
before it didn't work at all.
ok?
Index: if_iwmreg.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/if_iwmreg.h,v
retrieving revision 1.19
diff -u -p -r1.19 if_iwmreg.h
--- if_iwmreg.h 20 Sep 2016 11:46:09 -0000 1.19
+++ if_iwmreg.h 19 Nov 2016 16:36:21 -0000
@@ -4268,7 +4268,7 @@ struct iwm_lq_cmd {
*/
#define IWM_DEFAULT_TX_RETRY 15
#define IWM_MGMT_DFAULT_RETRY_LIMIT 3
-#define IWM_RTS_DFAULT_RETRY_LIMIT 60
+#define IWM_RTS_DFAULT_RETRY_LIMIT 3
#define IWM_BAR_DFAULT_RETRY_LIMIT 60
#define IWM_LOW_RETRY_LIMIT 7