The last few weeks I ran into some really nasty problems with wifi on my laptop: It started cutting out and dropping me offline for several minutes at a time and was slow and pretty unusable.
Of course the first thing I thought of was a bug in the rawhide Linux kernels (I run rawhide full time on my primary laptop), but going back to previous kernels or even Fedora 23 or 22 stable kernels showed the same behavior. Looking at the disconnects and re-associations I was pointed to it possibly being just very congested. So, I moved the channel my AP was on (man are there a lot of access points in this area now) and played around with the settings (My access point is a WNDR3700v2 running OpenWrt). That seemed to help a bit, but not all that much. I also noticed that all the other devices in the house seemed fine (sadly, most of them don’t have a good way to show signal strength or status, but they didn’t seem to be reconnecting).
Along this journey I got to play with the ‘iw’ and ‘nmcli’ commands a lot. I would recommend you all take a look at iw, it can sure tell you a ton of information about your wireless connection and how it’s working or not working. nmcli has also come a long way. ‘nmcli d wifi’ is something I am now using all the time rather than looking a the pull down menu of networks.
Finally, I swapped out the wireless card in my laptop. I had gotten a replacement one years ago when I got my laptop when I read reports of poor wireless performance, but never swapped it in when the existing card seemed to work. The new card worked TONS better. I can only conclude that the old one was going bad in some way.
Of course being a computer geek I took this as a great time to look into setting up WDS (Wireless Distribution System, basically a way for one AP to become a client of another and bridge all the connections to/from it, extending your range) in my house. My main access point is upstairs on one end of the house, and I am downstairs a fair bit of the time. I picked up some little NEXX WT3020’s for travel (also running OpenWRT), so it seemed it would be easy to setup one of them downstairs as a WDS client connected to the main AP. OpenWRT makes it pretty easy to set this up these days, but there were a few gotchas I ran into: Make sure you set the frequency width to 40 on both the main and client WDS client, and make sure you set the static ip for the client ap right (or else you won’t be able to easily get to it to configure it). Otherwise the instructions at http://wiki.openwrt.org/doc/howto/clientmode worked fine. I’m not sure how much better it really makes things, but it’s kind of nice to have if I ever need it.