A module called alx, which drives my Qualcomm AR8161 Ethernet, loads up on boot and is visible with lsmod.
This module is buggy. I found the patches, download the source code for my running kernel, patched the alx/ files, and after finding out how, rebuilt the alx.ko module file. After rmmod'ing the old alx, and modprobe -v my new version, ethernet started to work perfectly. Hurrah! Problem solved.
The annoyance is that if I do a straight swap of the original alx.ko with my new alx.ko, it still loads the old one at boot?? Further, if I remove all alx.ko files completely from /lib/modules, the alx module STILL loads at boot time??? So question is: where is it getting it from, and how do I get the system to load my replacement version instead (exact same filename)?
At the moment, I issue rmmod alx; modprobe -v alx at boot time, but I'd rather it happen automatically.