Monday, August 23, 2010

Atheros AR8131 Support Under OpenSolaris?

I recently bought parts to create an on-the-cheap storage server for myself, which will hopefully do things like web serving, DNS, lots and lots of file storage, and much more. Due to the benefits of OpenSolaris (zones, ZFS, crossbow networking, etc.) I decided to use it for my base system. However, due to the end of life of OpenSolaris through Oracle, I shifted elsewhere to Nexenta 3, which builds on OpenSolaris (snv_134) to be a command-line-driven ZFS storage server – exactly what I need.

My server is built around my MSI 785GM-P45 mATX Motherboard and AMD Athlon II X4 620 Processor. Per Murphy’s Law, the network driver on the motherboard – the Atheros AR8131 chipset – is not included in OpenSolaris or built by anyone (as of this writing). The closest on the Internet is a set of directions to build the driver for the AR8121 chipset, available here; I used version 2.6.5. Using the AR8121 directions, a semi-working driver for OpenSolaris is able to be built by modifying the adddrv.sh file and adding the line ‘set DEVLIST = ($DEVLIST '"pci1969,1063"') ‘ under the current DEVLIST items, as this is what the network adapter identifies itself as. Using this slight modification, I was able to get the driver added and the module listed (`modinfo|grep atge`). However, even though I can bring the interface up and assign an IP and everything shows that it works, dmesg shows a different story with warnings constantly being thrown:
Aug 23 19:27:48 washington atge: [ID 397352 kern.warning] WARNING: atge0: gem_tx_timeout: tx timeout: tx_active: 0[0] 3[3] (+3), intr 0[0], tx_softq: 3[3] 3[3] (+0), tx_free: 3[3] 64[0] (+61), tx_desc: 0[0] 3[3] (+3), intr: 2[2] (+2),
Aug 23 19:57:43 washington atge: [ID 397352 kern.warning] WARNING: atge0: gem_tx_timeout: tx timeout: tx_active: 0[0] 3[3] (+3), intr 0[0], tx_softq: 3[3] 3[3] (+0), tx_free: 3[3] 64[0] (+61), tx_desc: 0[0] 3[3] (+3), intr: 2[2] (+2),
Aug 23 19:57:47 washington atge: [ID 397352 kern.warning] WARNING: atge0: gem_tx_timeout: tx timeout: tx_active: 0[0] 2[2] (+2), intr 0[0], tx_softq: 2[2] 2[2] (+0), tx_free: 2[2] 64[0] (+62), tx_desc: 0[0] 2[2] (+2), intr: 2[2] (+2),
Aug 23 19:57:55 washington atge: [ID 397352 kern.warning] WARNING: atge0: gem_tx_timeout: tx timeout: tx_active: 0[0] 1[1] (+1), intr 0[0], tx_softq: 1[1] 1[1] (+0), tx_free: 1[1] 64[0] (+63), tx_desc: 0[0] 1[1] (+1), intr: 0[0] (+0),
This bit of fun gets repeated about every 5 seconds while the interface is activated, and stops when unplumbed. Hopefully this might be fixed in the next version(s) of Masayuki’s driver, which I would love to have support the AR8131 chipset :D