Linux And Flaky ATL1C Support

Linux Logo Here’s something I thought I’d never see — the day that wired networking in Linux could ever be considered anything less than “it just works.”

I recently purchased a laptop (Toshiba Satellite C655D-S5518 to be precise) and had trouble out of the gate after installing Arch Linux.  The computer would seem to hang whenever the network was involved.  (E.g., running netcfg, networkmanager, or the ip command.)  I assumed that it was wireless support that was causing the headaches, so I ran hwinfo --netcard | grep "Modules\|File" to find the kernel modules related to my networking devices.

Device Modules: "atl1c"
Device File: eth0
Driver Modules: "rtl8192ce"
Device File: wlan0

I blacklisted rtl8192ce but that didn’t solve my problem.  On a wild hunch I blacklisted atl1c as well and lo and behold the system hangs that had plagued the system from the beginning stopped.  On a hunch, I re-enabled rtl8192ce and left atl1c disabled.  Take a wild guess?  No system hangs.

So what chipset is atl1c driving?  It’s an Atheros Gigabit Ethernet chipset, and atl1c is  experimental.  I’m actually left speechless on this one.  Having a GigE port on a laptop is awesome, but not when it hangs the system.  If Toshiba went with Realtek for wireless, why didn’t they also use them for GigE?  While I’ve had issues with their chipsets and/or Linux drivers lying about supporting jumbo frames, at least they worked fine at the default 1500 MTU setting.

At least with Arch Linux, installation goes as expected since the setup routine doesn’t rely on ntcfg or networkmanager or the programs they rely on.  As far as I know, it relies on ifcfg which does not probe networking devices, which seems to be the cause of the hangs.  Unfortunately, ifcfg is only useful in completely static network environments.  As a laptop may not always have an ethernet cable or be in range of wireless network, you have to use either netcfg or networkmanager, which will probe the networking interfaces and hang on atl1c.

Other installers, like Ubuntu, make things worse by automatically probing and attempting to configure all network devices, even in text-based setup. The only viable solution for now is to go into the BIOS and disable PCI LAN.  This only disables the ethernet port. (Yes, it does beg the question on how to disable wireless since there’s no BIOS option for it and there’s no physical switch to do so, either.  But I’m done wrecking my brain on this thing for now.)