13Z077-90 - Linux native driver (MEN) for 16Z077_ETH and 16Z087_ETH
Linux native driver (MEN) for 16Z077_ETH and 16Z087_ETH
Download 13z07790.zip commit 2b15ba68456f0dcbf703a1fb875435dde64be4c7 (tag: 13Z077-90_02_00)
Author: thomas.schnuerer <thomas.schnuerer@men>
Date: Thu Jan 18 12:30:39 2018 +0100
R: 1. major rework due to code for many EOL cards and simplified MAC address retrieval
2. Driver version can't be identified quick and simple to help MEN support
M: 1a. changed MAC retrieval order: 1. MAC registers 2. MAC EEPROM. 3. board ID EEPROM. 4. fallback: random MAC.
1b. removed support for old Z077 Core, P511, several PPC cards. Code size reduced by ca. 50%.
1c. use current DMA API, not pci_xxx DMA functions as recommended in kernel documentation.
1d. update version to 2.0
2. MODULE_VERSION() with git version stamp added to driver, can be dumped with modinfo tool (modinfo men_lx_z77)
commit e1eeda02cd1bf8f1e08a77682a0224cd22a8c2a6 (tag: 13Z077-90_01_17)
Author: thomas.schnuerer <thomas.schnuerer@men>
Date: Thu Jul 23 13:44:22 2015 +0200
R: macros __DATE__ and __TIME__ are deprecated and lead to build warnings or errors
M: removed macros from init function
------- end of cvs maintenance -----------
-----[ Revision 1.16 ]-----
[ 2014-07-17 18:34:37 by ts ]
men_16z077_eth.c
R: 1. Compilerwarning: incompatible pointer type of .ndo_vlan_rx_add_vid
2. several compilerwarnings about typecasts with gcc 4.8, kernel 3.14
M: 1. corrected declaration of z77_vlan_rx_add_vid
2. changed variable types to appropriate ones, use unsigned long etc.
Tested with iperf under Archlinux kernel 3.14.6
-----[ Revision 1.15 ]-----
[ 2014-06-17 16:11:02 by ts ]
men_16z077_eth.c
R: 1. from kernel 3.10 on build failed because of undefined symbols
2. under Arch linux 3.10.10 the board ID EEPROM wasnt found on F011C
M: 1. replace NETIF_xxx flags for VLAN support with xxx_CTAG_ as in 3.10.0 and up
2. increased I2C_MAX_ADAP_CNT to 32
-----[ Revision 1.14 ]-----
[ 2013-10-02 14:53:16 by ts ]
R: 1. on F75P transfers were hanging under heavy load
2. during tests on F75P multiple instances of netio etc. stopped working
M: 1. corrected typo in z77_irq (all IRQs except RXE were ack'ed, not RXF)
2. in send_packet() free skb buffers also before return due to TX busy
-----[ Revision 1.13 ]-----
[ 2013-07-10 18:39:17 by ts ]
R: minimum Framelen 0x40 made problem in customer application due
to PACKLEN register interpreting the value without FCS
M: changed header file, reverted this files last work checking for
other CPU back to 1.38 to avoid other side effects
-----[ Revision 1.12 ]-----
[ 2013-03-23 14:19:05 by ts ]
R: checkin bug during last revision caused spin unlocking 2 times
M: removed doubled line in ethtool info get function
-----[ Revision 1.11 ]-----
[ 2013-03-08 17:48:25 by ts ]
R: 1. upon TX timeouts driver could hang
2. very high IRQ load (broadcast storm from looped switch) could cause hang
M: 1. moved .ndo_tx_timeout handler into process context (reset_task)
2. reworked IRQ masking/reenabling in z77_irq (Busy IRQ reenabling etc.)
-----[ Revision 1.10 ]-----
[ 2012-11-06 20:31:30 by ts ]
R: 1. support for Multicast reception requested by customer
2. MAC addresses for x86 boards were not generated according to ident EEprom
3. build failed for kernel versions > 3.0
M: 1. added hash CRC calculation and hash bin setting
2. added detection of board ident EEPROMs (currently F11S / P51x) and
MAC generation. Needs men_lx_z001 loaded for P51x.
3. added API changes (multicast, VLAN processing) for kernel up to 3.6
-----[ Revision 1.9 ]-----
[ 2012-09-07 18:13:24 by ts ]
R: 1. support for IEEE 802.1Q VLAN tagging requested by customer
2. driver did use builtin PHY access method only
M: 1a. added capability to send and receive VLAN tagged frames
1b. updated driver documentation for VLAN usage
2. added registration of driver with mii_bus so different PHYs can be used
-----[ Revision 1.8 ]-----
[ 2011-05-05 16:04:50 by cr ]
R: 1. support ethtool for PHYless communication
2. support usage of ifconfig to set MAC address
M: 1. set and read duplexity handed over by ethtool to registers;
other settings stay untouched
2. implemented z77_set_mac_address()
-----[ Revision 1.7 ]-----
[ 2011-03-16 19:18:08 by ts ]
R: 1) driver did not support promiscuous mode of Z087 core
2) old FPGA interrupt behaviour or complete full RXBDs could
cause driver to hang
M: 1) added support of IFF_PROMISC flag passed from network applications
2) new IRQ behaviour used by default, several assertions added
-----[ Revision 1.6 ]-----
[ 2010-11-25 17:51:39 by ts ]
R: 1) multiple ifconfig up/down or modprobes caused kernel oops
2) driver failed to compile with kernel 2.6.30 and up (API change)
3) new PHYs introduced in F218, F11S
4) MM1 MAC address wasnt fetched from EEPROM
M: 1) fixed missing call to napi_disable() in module exit
2) added struct net_device_ops to which some functions were moved
3) added PHY IDs of broadcom 54xx and MEN dummy PHY inside IP core
4) added I2C bit banging to read out MM1 MAC EEPROM
-----[ Revision 1.5 ]-----
[ 2010-03-08 14:57:26 by ts ]
R: 1) driver used deprecated interrupt routine flags, caused warnings
2) link status change information for ethtool was missing
M: 1) use updated driver file with new IRQ flags
2) driver performs periodic link state monitoring and change reporting
-----[ Revision 1.4 ]-----
[ 2009-02-18 14:24:02 by GLeonhardt ]
R:1. use for NIOS2
M.1. possibility of usage without PCI
2. possibility of usage without phy
-----[ Revision 1.3 ]-----
[ 2009-02-10 19:36:03 by ts ]
+ support for P511 Dual Ethernet PMC, multiple 16Z087 instances
+ support for non-PCI-DMA mode where predictable system behaviour is desired
+ men_16z077_eth.c:
NAPI interface changed in kernel 2.6.23
support for F302 and NIOS_II
+ men_16z077_doc.c:
additional usage- and detailed module parameter description added
TODO: retrieve MAC addresses for P511 from EEPROM located on PMC
-----[ Revision 1.2 ]-----
[ 2007-11-28 15:41:44 by ts ]
|
Fileset completed, Documentation revised by PU
-----[ Revision 1.1 ]-----
[ 2007-11-19 13:58:13 by ts ]
Initial Revision
Licensing Information
Author: thomas.schnuerer <thomas.schnuerer@men>
Date: Thu Jan 18 12:30:39 2018 +0100
R: 1. major rework due to code for many EOL cards and simplified MAC address retrieval
2. Driver version can't be identified quick and simple to help MEN support
M: 1a. changed MAC retrieval order: 1. MAC registers 2. MAC EEPROM. 3. board ID EEPROM. 4. fallback: random MAC.
1b. removed support for old Z077 Core, P511, several PPC cards. Code size reduced by ca. 50%.
1c. use current DMA API, not pci_xxx DMA functions as recommended in kernel documentation.
1d. update version to 2.0
2. MODULE_VERSION() with git version stamp added to driver, can be dumped with modinfo tool (modinfo men_lx_z77)
commit e1eeda02cd1bf8f1e08a77682a0224cd22a8c2a6 (tag: 13Z077-90_01_17)
Author: thomas.schnuerer <thomas.schnuerer@men>
Date: Thu Jul 23 13:44:22 2015 +0200
R: macros __DATE__ and __TIME__ are deprecated and lead to build warnings or errors
M: removed macros from init function
------- end of cvs maintenance -----------
-----[ Revision 1.16 ]-----
[ 2014-07-17 18:34:37 by ts ]
men_16z077_eth.c
R: 1. Compilerwarning: incompatible pointer type of .ndo_vlan_rx_add_vid
2. several compilerwarnings about typecasts with gcc 4.8, kernel 3.14
M: 1. corrected declaration of z77_vlan_rx_add_vid
2. changed variable types to appropriate ones, use unsigned long etc.
Tested with iperf under Archlinux kernel 3.14.6
-----[ Revision 1.15 ]-----
[ 2014-06-17 16:11:02 by ts ]
men_16z077_eth.c
R: 1. from kernel 3.10 on build failed because of undefined symbols
2. under Arch linux 3.10.10 the board ID EEPROM wasnt found on F011C
M: 1. replace NETIF_xxx flags for VLAN support with xxx_CTAG_ as in 3.10.0 and up
2. increased I2C_MAX_ADAP_CNT to 32
-----[ Revision 1.14 ]-----
[ 2013-10-02 14:53:16 by ts ]
R: 1. on F75P transfers were hanging under heavy load
2. during tests on F75P multiple instances of netio etc. stopped working
M: 1. corrected typo in z77_irq (all IRQs except RXE were ack'ed, not RXF)
2. in send_packet() free skb buffers also before return due to TX busy
-----[ Revision 1.13 ]-----
[ 2013-07-10 18:39:17 by ts ]
R: minimum Framelen 0x40 made problem in customer application due
to PACKLEN register interpreting the value without FCS
M: changed header file, reverted this files last work checking for
other CPU back to 1.38 to avoid other side effects
-----[ Revision 1.12 ]-----
[ 2013-03-23 14:19:05 by ts ]
R: checkin bug during last revision caused spin unlocking 2 times
M: removed doubled line in ethtool info get function
-----[ Revision 1.11 ]-----
[ 2013-03-08 17:48:25 by ts ]
R: 1. upon TX timeouts driver could hang
2. very high IRQ load (broadcast storm from looped switch) could cause hang
M: 1. moved .ndo_tx_timeout handler into process context (reset_task)
2. reworked IRQ masking/reenabling in z77_irq (Busy IRQ reenabling etc.)
-----[ Revision 1.10 ]-----
[ 2012-11-06 20:31:30 by ts ]
R: 1. support for Multicast reception requested by customer
2. MAC addresses for x86 boards were not generated according to ident EEprom
3. build failed for kernel versions > 3.0
M: 1. added hash CRC calculation and hash bin setting
2. added detection of board ident EEPROMs (currently F11S / P51x) and
MAC generation. Needs men_lx_z001 loaded for P51x.
3. added API changes (multicast, VLAN processing) for kernel up to 3.6
-----[ Revision 1.9 ]-----
[ 2012-09-07 18:13:24 by ts ]
R: 1. support for IEEE 802.1Q VLAN tagging requested by customer
2. driver did use builtin PHY access method only
M: 1a. added capability to send and receive VLAN tagged frames
1b. updated driver documentation for VLAN usage
2. added registration of driver with mii_bus so different PHYs can be used
-----[ Revision 1.8 ]-----
[ 2011-05-05 16:04:50 by cr ]
R: 1. support ethtool for PHYless communication
2. support usage of ifconfig to set MAC address
M: 1. set and read duplexity handed over by ethtool to registers;
other settings stay untouched
2. implemented z77_set_mac_address()
-----[ Revision 1.7 ]-----
[ 2011-03-16 19:18:08 by ts ]
R: 1) driver did not support promiscuous mode of Z087 core
2) old FPGA interrupt behaviour or complete full RXBDs could
cause driver to hang
M: 1) added support of IFF_PROMISC flag passed from network applications
2) new IRQ behaviour used by default, several assertions added
-----[ Revision 1.6 ]-----
[ 2010-11-25 17:51:39 by ts ]
R: 1) multiple ifconfig up/down or modprobes caused kernel oops
2) driver failed to compile with kernel 2.6.30 and up (API change)
3) new PHYs introduced in F218, F11S
4) MM1 MAC address wasnt fetched from EEPROM
M: 1) fixed missing call to napi_disable() in module exit
2) added struct net_device_ops to which some functions were moved
3) added PHY IDs of broadcom 54xx and MEN dummy PHY inside IP core
4) added I2C bit banging to read out MM1 MAC EEPROM
-----[ Revision 1.5 ]-----
[ 2010-03-08 14:57:26 by ts ]
R: 1) driver used deprecated interrupt routine flags, caused warnings
2) link status change information for ethtool was missing
M: 1) use updated driver file with new IRQ flags
2) driver performs periodic link state monitoring and change reporting
-----[ Revision 1.4 ]-----
[ 2009-02-18 14:24:02 by GLeonhardt ]
R:1. use for NIOS2
M.1. possibility of usage without PCI
2. possibility of usage without phy
-----[ Revision 1.3 ]-----
[ 2009-02-10 19:36:03 by ts ]
+ support for P511 Dual Ethernet PMC, multiple 16Z087 instances
+ support for non-PCI-DMA mode where predictable system behaviour is desired
+ men_16z077_eth.c:
NAPI interface changed in kernel 2.6.23
support for F302 and NIOS_II
+ men_16z077_doc.c:
additional usage- and detailed module parameter description added
TODO: retrieve MAC addresses for P511 from EEPROM located on PMC
-----[ Revision 1.2 ]-----
[ 2007-11-28 15:41:44 by ts ]
|
Fileset completed, Documentation revised by PU
-----[ Revision 1.1 ]-----
[ 2007-11-19 13:58:13 by ts ]
Initial Revision
Licensing Information
Supported MEN Standard Products
Supported Kernel Versions
Linux 2.6.38 to 4.10
Tested with
- ELinOS 4.2
- ELinOS 5
- Ubuntu 11.04
- Ubuntu 12.04
Features
- Supports standard Fast Ethernet capabilities 10 and 100 Mbit/s
- Half-duplex and full-duplex operation (fixed or autonegotiated)
- IEEE 802.1q VLAN tagging
- Receiving of multicast frames
Included Documentation
HTML documentation
Notes
Please note that you need the MDIS system package for Linux to use this driver.
Licensing Information
This article is free of charge.
Ordering Information & Downloads
Main Software
13Z077-90
Linux native driver (MEN) for 16Z077_ETH and 16Z087_ETH
Requires a compatible MDIS system package.