> Date: Sat, 19 Nov 2016 18:11:23 +0100 > From: Stefan Sperling <s...@stsp.name> > > 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?
Is it really a good idea to deviate from what Linux does here? Perhaps for TCP this is slightly better, but how about other protocols? Anything that does broadcasts/multicasts will suffer from higher packet loss. In the end if you end up in a situation where the wireless connection is so unreliable, you'll have to fix the wireless setup... > 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 > > >