This driver is supposed to support: Mojave cards (single port PCI Gigabit) both copper and fiber Oasis cards (single and dual port PCI-x Gigabit) copper and fiber Kalahari cards (dual and quad port PCI-e Gigabit) copper and fiber The driver was actually tested on Oasis and Kalahari cards. TODO: - move firmware loading to request_firmware() - remove direct memory access of structures - any remaining sparse and checkpatch.pl warnings - use net_device_ops - use dev->stats rather than adapter->stats - don't cast netdev_priv it is already void - use compare_ether_addr - GET RID OF MACROS - work on all architectures - without CONFIG_X86_64 confusion - do 64 bit correctly - don't depend on order of union - get rid of ASSERT(), use BUG() instead but only where necessary looks like most aren't really useful - no new SIOCDEVPRIVATE ioctl allowed - don't use module_param for configuring interrupt mitigation use ethtool instead - reorder code to elminate use of forward declarations - don't keep private linked list of drivers. - remove all the gratiutous debug infrastructure - use PCI_DEVICE() - do ethtool correctly using ethtool_ops - NAPI? - wasted overhead of extra stats - state variables for things that are easily available and shouldn't be kept in card structure, cardnum, ... slotnumber, events, ... - get rid of slic_spinlock wrapper - volatile == bad design => bad code - locking too fine grained, not designed just throw more locks at problem Please send patches to: Greg Kroah-Hartman and Cc: Lior Dotan and Christopher Harrer as well as they are also able to test out any changes.