EMAC

Allwinner's A10 and F20 SoCs include a MAC unit called EMAC but it's available on very few devices, most notably the Mele A1000, A2000 and A100 HTPC and the cubieboard. Due to driver similarities it's believed to be based on DM9000.

MAC
By default the EMAC driver uses a random MAC address but it can be fixed in three different ways.

Using user-space commands like: ifconfig eth0 hw ether XX:XX:XX:XX:XX:XX using the bootloader to append mac_addr=XX:XX:XX:XX:XX:XX and the Allwinner way, adding the value to your script.bin [dynamic] MAC = "XXXXXXXXXXXX"

Performance issues
It has been discovered that the EMAC device (or its current Linux kernel driver) have a number of performance issues: slow RX performance (only 40-60 Mbit, compared to 90+ Mbit TX), active TX affecting RX rate way too much.

It seems that in some cases performance degrades only if the A10 device has been warm-rebooted prior to that; and speeds restore to immensely better levels after a full power-off/power-on cycle.

See the following discussions for details:


 * Uploading affects Downloading. Ethernet performance issue?
 * Something is still wrong with WEMAC
 * Low ethernet speeds after reboot (a power cycle restores normal speeds)
 * Slow network (receive, cable)

Kernel driver
EMAC driver is included in the Debian kernel sources (3.10~rc7-1~exp1)