Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.26
Linus Torvalds [Sat, 19 Apr 2008 01:02:35 +0000 (18:02 -0700)]
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.26: (1090 commits)
  [NET]: Fix and allocate less memory for ->priv'less netdevices
  [IPV6]: Fix dangling references on error in fib6_add().
  [NETLABEL]: Fix NULL deref in netlbl_unlabel_staticlist_gen() if ifindex not found
  [PKT_SCHED]: Fix datalen check in tcf_simp_init().
  [INET]: Uninline the __inet_inherit_port call.
  [INET]: Drop the inet_inherit_port() call.
  SCTP: Initialize partial_bytes_acked to 0, when all of the data is acked.
  [netdrvr] forcedeth: internal simplifications; changelog removal
  phylib: factor out get_phy_id from within get_phy_device
  PHY: add BCM5464 support to broadcom PHY driver
  cxgb3: Fix __must_check warning with dev_dbg.
  tc35815: Statistics cleanup
  natsemi: fix MMIO for PPC 44x platforms
  [TIPC]: Cleanup of TIPC reference table code
  [TIPC]: Optimized initialization of TIPC reference table
  [TIPC]: Remove inlining of reference table locking routines
  e1000: convert uint16_t style integers to u16
  ixgb: convert uint16_t style integers to u16
  sb1000.c: make const arrays static
  sb1000.c: stop inlining largish static functions
  ...

944 files changed:
Documentation/DocBook/Makefile
Documentation/DocBook/mac80211.tmpl [new file with mode: 0644]
Documentation/feature-removal-schedule.txt
Documentation/laptops/acer-wmi.txt
Documentation/networking/00-INDEX
Documentation/networking/bcm43xx.txt [deleted file]
Documentation/networking/wan-router.txt [deleted file]
MAINTAINERS
arch/ia64/hp/sim/simeth.c
arch/powerpc/platforms/82xx/ep8248e.c
arch/powerpc/platforms/pasemi/gpio_mdio.c
arch/powerpc/sysdev/fsl_soc.c
arch/s390/defconfig
drivers/atm/ambassador.c
drivers/atm/horizon.c
drivers/block/aoe/aoenet.c
drivers/net/3c509.c
drivers/net/8139too.c
drivers/net/8390.c
drivers/net/Kconfig
drivers/net/Makefile
drivers/net/appletalk/cops.c
drivers/net/arcnet/arcnet.c
drivers/net/arcnet/com20020.c
drivers/net/at1700.c
drivers/net/atarilance.c
drivers/net/atl1/Makefile [deleted file]
drivers/net/atl1/atl1.h [deleted file]
drivers/net/atl1/atl1_ethtool.c [deleted file]
drivers/net/atl1/atl1_hw.c [deleted file]
drivers/net/atl1/atl1_hw.h [deleted file]
drivers/net/atl1/atl1_param.c [deleted file]
drivers/net/atlx/Makefile [new file with mode: 0644]
drivers/net/atlx/atl1.c [moved from drivers/net/atl1/atl1_main.c with 57% similarity]
drivers/net/atlx/atl1.h [new file with mode: 0644]
drivers/net/atlx/atlx.c [new file with mode: 0644]
drivers/net/atlx/atlx.h [new file with mode: 0644]
drivers/net/atp.c
drivers/net/au1000_eth.c
drivers/net/bfin_mac.c
drivers/net/bonding/bond_3ad.c
drivers/net/bonding/bond_alb.c
drivers/net/bonding/bond_main.c
drivers/net/cassini.c
drivers/net/cpmac.c
drivers/net/cxgb3/cxgb3_main.c
drivers/net/cxgb3/cxgb3_offload.c
drivers/net/cxgb3/l2t.c
drivers/net/defxx.c
drivers/net/e1000/e1000.h
drivers/net/e1000/e1000_ethtool.c
drivers/net/e1000/e1000_hw.c
drivers/net/e1000/e1000_hw.h
drivers/net/e1000/e1000_main.c
drivers/net/e1000/e1000_osdep.h
drivers/net/e1000e/82571.c
drivers/net/e1000e/Makefile
drivers/net/e1000e/defines.h
drivers/net/e1000e/e1000.h
drivers/net/e1000e/es2lan.c
drivers/net/e1000e/ethtool.c
drivers/net/e1000e/hw.h
drivers/net/e1000e/ich8lan.c
drivers/net/e1000e/lib.c
drivers/net/e1000e/netdev.c
drivers/net/e1000e/param.c
drivers/net/e1000e/phy.c
drivers/net/ehea/ehea.h
drivers/net/ehea/ehea_main.c
drivers/net/fec_mpc52xx.c
drivers/net/fec_mpc52xx_phy.c
drivers/net/forcedeth.c
drivers/net/fs_enet/fs_enet-main.c
drivers/net/fs_enet/mii-bitbang.c
drivers/net/fs_enet/mii-fec.c
drivers/net/gianfar.c
drivers/net/gianfar.h
drivers/net/gianfar_mii.c
drivers/net/hamradio/bpqether.c
drivers/net/ibmveth.c
drivers/net/ixgb/ixgb.h
drivers/net/ixgb/ixgb_ee.c
drivers/net/ixgb/ixgb_ee.h
drivers/net/ixgb/ixgb_ethtool.c
drivers/net/ixgb/ixgb_hw.c
drivers/net/ixgb/ixgb_hw.h
drivers/net/ixgb/ixgb_main.c
drivers/net/ixgb/ixgb_osdep.h
drivers/net/ixgbe/ixgbe.h
drivers/net/ixgbe/ixgbe_ethtool.c
drivers/net/ixgbe/ixgbe_main.c
drivers/net/korina.c [new file with mode: 0644]
drivers/net/loopback.c
drivers/net/macb.c
drivers/net/macvlan.c
drivers/net/mv643xx_eth.c
drivers/net/natsemi.c
drivers/net/netxen/netxen_nic.h
drivers/net/netxen/netxen_nic_isr.c
drivers/net/netxen/netxen_nic_main.c
drivers/net/ni52.c
drivers/net/ni52.h
drivers/net/niu.c
drivers/net/niu.h
drivers/net/pasemi_mac.c
drivers/net/phy/broadcom.c
drivers/net/phy/fixed.c
drivers/net/phy/phy_device.c
drivers/net/pppoe.c
drivers/net/ps3_gelic_wireless.c
drivers/net/qla3xxx.c
drivers/net/s2io.c
drivers/net/s2io.h
drivers/net/sb1000.c
drivers/net/sb1250-mac.c
drivers/net/sc92031.c
drivers/net/sk98lin/Makefile [deleted file]
drivers/net/sk98lin/h/lm80.h [deleted file]
drivers/net/sk98lin/h/skaddr.h [deleted file]
drivers/net/sk98lin/h/skcsum.h [deleted file]
drivers/net/sk98lin/h/skdebug.h [deleted file]
drivers/net/sk98lin/h/skdrv1st.h [deleted file]
drivers/net/sk98lin/h/skdrv2nd.h [deleted file]
drivers/net/sk98lin/h/skerror.h [deleted file]
drivers/net/sk98lin/h/skgedrv.h [deleted file]
drivers/net/sk98lin/h/skgehw.h [deleted file]
drivers/net/sk98lin/h/skgehwt.h [deleted file]
drivers/net/sk98lin/h/skgei2c.h [deleted file]
drivers/net/sk98lin/h/skgeinit.h [deleted file]
drivers/net/sk98lin/h/skgepnm2.h [deleted file]
drivers/net/sk98lin/h/skgepnmi.h [deleted file]
drivers/net/sk98lin/h/skgesirq.h [deleted file]
drivers/net/sk98lin/h/ski2c.h [deleted file]
drivers/net/sk98lin/h/skqueue.h [deleted file]
drivers/net/sk98lin/h/skrlmt.h [deleted file]
drivers/net/sk98lin/h/sktimer.h [deleted file]
drivers/net/sk98lin/h/sktypes.h [deleted file]
drivers/net/sk98lin/h/skversion.h [deleted file]
drivers/net/sk98lin/h/skvpd.h [deleted file]
drivers/net/sk98lin/h/xmac_ii.h [deleted file]
drivers/net/sk98lin/skaddr.c [deleted file]
drivers/net/sk98lin/skdim.c [deleted file]
drivers/net/sk98lin/skethtool.c [deleted file]
drivers/net/sk98lin/skge.c [deleted file]
drivers/net/sk98lin/skgehwt.c [deleted file]
drivers/net/sk98lin/skgeinit.c [deleted file]
drivers/net/sk98lin/skgemib.c [deleted file]
drivers/net/sk98lin/skgepnmi.c [deleted file]
drivers/net/sk98lin/skgesirq.c [deleted file]
drivers/net/sk98lin/ski2c.c [deleted file]
drivers/net/sk98lin/sklm80.c [deleted file]
drivers/net/sk98lin/skqueue.c [deleted file]
drivers/net/sk98lin/skrlmt.c [deleted file]
drivers/net/sk98lin/sktimer.c [deleted file]
drivers/net/sk98lin/skvpd.c [deleted file]
drivers/net/sk98lin/skxmac2.c [deleted file]
drivers/net/skfp/fplustm.c
drivers/net/skfp/h/fplustm.h
drivers/net/skfp/hwmtm.c
drivers/net/skfp/skfddi.c
drivers/net/smc91x.c
drivers/net/smc91x.h
drivers/net/spider_net.c
drivers/net/spider_net.h
drivers/net/tc35815.c
drivers/net/tokenring/3c359.c
drivers/net/tulip/Kconfig
drivers/net/tulip/Makefile
drivers/net/tulip/tulip.h
drivers/net/tulip/tulip_core.c
drivers/net/tulip/winbond-840.c
drivers/net/tulip/xircom_tulip_cb.c [deleted file]
drivers/net/tun.c
drivers/net/ucc_geth.c
drivers/net/ucc_geth.h
drivers/net/ucc_geth_mii.c
drivers/net/usb/dm9601.c
drivers/net/usb/rndis_host.c
drivers/net/veth.c
drivers/net/via-velocity.c
drivers/net/wan/cosa.c
drivers/net/wan/dlci.c
drivers/net/wan/hdlc.c
drivers/net/wan/lapbether.c
drivers/net/wan/syncppp.c
drivers/net/wireless/Kconfig
drivers/net/wireless/Makefile
drivers/net/wireless/adm8211.c
drivers/net/wireless/adm8211.h
drivers/net/wireless/ath5k/Kconfig [new file with mode: 0644]
drivers/net/wireless/ath5k/Makefile
drivers/net/wireless/ath5k/ath5k.h
drivers/net/wireless/ath5k/base.c
drivers/net/wireless/ath5k/base.h
drivers/net/wireless/ath5k/debug.c
drivers/net/wireless/ath5k/debug.h
drivers/net/wireless/ath5k/hw.c
drivers/net/wireless/ath5k/hw.h
drivers/net/wireless/ath5k/initvals.c
drivers/net/wireless/ath5k/phy.c
drivers/net/wireless/ath5k/reg.h
drivers/net/wireless/ath5k/regdom.c [deleted file]
drivers/net/wireless/ath5k/regdom.h [deleted file]
drivers/net/wireless/atmel.c
drivers/net/wireless/b43/Kconfig
drivers/net/wireless/b43/Makefile
drivers/net/wireless/b43/b43.h
drivers/net/wireless/b43/dma.c
drivers/net/wireless/b43/dma.h
drivers/net/wireless/b43/main.c
drivers/net/wireless/b43/main.h
drivers/net/wireless/b43/nphy.c
drivers/net/wireless/b43/nphy.h
drivers/net/wireless/b43/pcmcia.c
drivers/net/wireless/b43/pio.c [new file with mode: 0644]
drivers/net/wireless/b43/pio.h [new file with mode: 0644]
drivers/net/wireless/b43/sysfs.c
drivers/net/wireless/b43/wa.c
drivers/net/wireless/b43/xmit.c
drivers/net/wireless/b43/xmit.h
drivers/net/wireless/b43legacy/b43legacy.h
drivers/net/wireless/b43legacy/main.c
drivers/net/wireless/b43legacy/xmit.c
drivers/net/wireless/bcm43xx/Kconfig [deleted file]
drivers/net/wireless/bcm43xx/Makefile [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx.h [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_debugfs.c [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_debugfs.h [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_dma.c [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_dma.h [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_ethtool.c [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_ethtool.h [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_ilt.c [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_ilt.h [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_leds.c [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_leds.h [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_main.c [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_main.h [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_phy.c [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_phy.h [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_pio.c [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_pio.h [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_power.c [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_power.h [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_radio.c [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_radio.h [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_sysfs.c [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_sysfs.h [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_wx.c [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_wx.h [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_xmit.c [deleted file]
drivers/net/wireless/bcm43xx/bcm43xx_xmit.h [deleted file]
drivers/net/wireless/ipw2200.c
drivers/net/wireless/ipw2200.h
drivers/net/wireless/iwlwifi/Kconfig
drivers/net/wireless/iwlwifi/Makefile
drivers/net/wireless/iwlwifi/iwl-3945-commands.h
drivers/net/wireless/iwlwifi/iwl-3945-core.h [new file with mode: 0644]
drivers/net/wireless/iwlwifi/iwl-3945-debug.h
drivers/net/wireless/iwlwifi/iwl-3945-hw.h
drivers/net/wireless/iwlwifi/iwl-3945-io.h
drivers/net/wireless/iwlwifi/iwl-3945-led.c [new file with mode: 0644]
drivers/net/wireless/iwlwifi/iwl-3945-led.h [new file with mode: 0644]
drivers/net/wireless/iwlwifi/iwl-3945-rs.c
drivers/net/wireless/iwlwifi/iwl-3945-rs.h
drivers/net/wireless/iwlwifi/iwl-3945.c
drivers/net/wireless/iwlwifi/iwl-3945.h
drivers/net/wireless/iwlwifi/iwl-4965-commands.h
drivers/net/wireless/iwlwifi/iwl-4965-hw.h
drivers/net/wireless/iwlwifi/iwl-4965-io.h [deleted file]
drivers/net/wireless/iwlwifi/iwl-4965-rs.c
drivers/net/wireless/iwlwifi/iwl-4965-rs.h
drivers/net/wireless/iwlwifi/iwl-4965.c
drivers/net/wireless/iwlwifi/iwl-4965.h
drivers/net/wireless/iwlwifi/iwl-core.c [new file with mode: 0644]
drivers/net/wireless/iwlwifi/iwl-core.h [new file with mode: 0644]
drivers/net/wireless/iwlwifi/iwl-csr.h [new file with mode: 0644]
drivers/net/wireless/iwlwifi/iwl-debug.h [moved from drivers/net/wireless/iwlwifi/iwl-4965-debug.h with 79% similarity]
drivers/net/wireless/iwlwifi/iwl-debugfs.c [new file with mode: 0644]
drivers/net/wireless/iwlwifi/iwl-eeprom.c [new file with mode: 0644]
drivers/net/wireless/iwlwifi/iwl-eeprom.h [new file with mode: 0644]
drivers/net/wireless/iwlwifi/iwl-hcmd.c [new file with mode: 0644]
drivers/net/wireless/iwlwifi/iwl-helpers.h
drivers/net/wireless/iwlwifi/iwl-io.h [new file with mode: 0644]
drivers/net/wireless/iwlwifi/iwl-led.c [new file with mode: 0644]
drivers/net/wireless/iwlwifi/iwl-led.h [new file with mode: 0644]
drivers/net/wireless/iwlwifi/iwl-prph.h
drivers/net/wireless/iwlwifi/iwl-rfkill.c [new file with mode: 0644]
drivers/net/wireless/iwlwifi/iwl-rfkill.h [new file with mode: 0644]
drivers/net/wireless/iwlwifi/iwl-spectrum.h
drivers/net/wireless/iwlwifi/iwl-sta.c [new file with mode: 0644]
drivers/net/wireless/iwlwifi/iwl-sta.h [new file with mode: 0644]
drivers/net/wireless/iwlwifi/iwl3945-base.c
drivers/net/wireless/iwlwifi/iwl4965-base.c
drivers/net/wireless/libertas/11d.c
drivers/net/wireless/libertas/11d.h
drivers/net/wireless/libertas/Makefile
drivers/net/wireless/libertas/assoc.c
drivers/net/wireless/libertas/assoc.h
drivers/net/wireless/libertas/cmd.c
drivers/net/wireless/libertas/cmd.h
drivers/net/wireless/libertas/cmdresp.c
drivers/net/wireless/libertas/debugfs.c
drivers/net/wireless/libertas/decl.h
drivers/net/wireless/libertas/defs.h
drivers/net/wireless/libertas/dev.h
drivers/net/wireless/libertas/ethtool.c
drivers/net/wireless/libertas/host.h
drivers/net/wireless/libertas/hostcmd.h
drivers/net/wireless/libertas/if_cs.c
drivers/net/wireless/libertas/if_sdio.c
drivers/net/wireless/libertas/if_usb.c
drivers/net/wireless/libertas/if_usb.h
drivers/net/wireless/libertas/join.c [deleted file]
drivers/net/wireless/libertas/join.h [deleted file]
drivers/net/wireless/libertas/main.c
drivers/net/wireless/libertas/rx.c
drivers/net/wireless/libertas/scan.c
drivers/net/wireless/libertas/scan.h
drivers/net/wireless/libertas/tx.c
drivers/net/wireless/libertas/types.h
drivers/net/wireless/libertas/wext.c
drivers/net/wireless/libertas/wext.h
drivers/net/wireless/net2280.h [deleted file]
drivers/net/wireless/p54/Kconfig [new file with mode: 0644]
drivers/net/wireless/p54/Makefile [new file with mode: 0644]
drivers/net/wireless/p54/net2280.h [new file with mode: 0644]
drivers/net/wireless/p54/p54.h [moved from drivers/net/wireless/p54.h with 93% similarity]
drivers/net/wireless/p54/p54common.c [moved from drivers/net/wireless/p54common.c with 91% similarity]
drivers/net/wireless/p54/p54common.h [moved from drivers/net/wireless/p54common.h with 80% similarity]
drivers/net/wireless/p54/p54pci.c [moved from drivers/net/wireless/p54pci.c with 100% similarity]
drivers/net/wireless/p54/p54pci.h [moved from drivers/net/wireless/p54pci.h with 100% similarity]
drivers/net/wireless/p54/p54usb.c [moved from drivers/net/wireless/p54usb.c with 100% similarity]
drivers/net/wireless/p54/p54usb.h [moved from drivers/net/wireless/p54usb.h with 100% similarity]
drivers/net/wireless/prism54/isl_ioctl.c
drivers/net/wireless/prism54/islpci_dev.c
drivers/net/wireless/prism54/islpci_dev.h
drivers/net/wireless/ray_cs.c
drivers/net/wireless/rndis_wlan.c
drivers/net/wireless/rt2x00/Kconfig
drivers/net/wireless/rt2x00/Makefile
drivers/net/wireless/rt2x00/rt2400pci.c
drivers/net/wireless/rt2x00/rt2400pci.h
drivers/net/wireless/rt2x00/rt2500pci.c
drivers/net/wireless/rt2x00/rt2500pci.h
drivers/net/wireless/rt2x00/rt2500usb.c
drivers/net/wireless/rt2x00/rt2500usb.h
drivers/net/wireless/rt2x00/rt2x00.h
drivers/net/wireless/rt2x00/rt2x00config.c
drivers/net/wireless/rt2x00/rt2x00debug.c
drivers/net/wireless/rt2x00/rt2x00debug.h
drivers/net/wireless/rt2x00/rt2x00dev.c
drivers/net/wireless/rt2x00/rt2x00dump.h
drivers/net/wireless/rt2x00/rt2x00firmware.c
drivers/net/wireless/rt2x00/rt2x00leds.c [new file with mode: 0644]
drivers/net/wireless/rt2x00/rt2x00leds.h [new file with mode: 0644]
drivers/net/wireless/rt2x00/rt2x00lib.h
drivers/net/wireless/rt2x00/rt2x00mac.c
drivers/net/wireless/rt2x00/rt2x00pci.c
drivers/net/wireless/rt2x00/rt2x00pci.h
drivers/net/wireless/rt2x00/rt2x00queue.c [new file with mode: 0644]
drivers/net/wireless/rt2x00/rt2x00queue.h [new file with mode: 0644]
drivers/net/wireless/rt2x00/rt2x00reg.h
drivers/net/wireless/rt2x00/rt2x00rfkill.c
drivers/net/wireless/rt2x00/rt2x00ring.h [deleted file]
drivers/net/wireless/rt2x00/rt2x00usb.c
drivers/net/wireless/rt2x00/rt2x00usb.h
drivers/net/wireless/rt2x00/rt61pci.c
drivers/net/wireless/rt2x00/rt61pci.h
drivers/net/wireless/rt2x00/rt73usb.c
drivers/net/wireless/rt2x00/rt73usb.h
drivers/net/wireless/rtl8180.h
drivers/net/wireless/rtl8180_dev.c
drivers/net/wireless/rtl8180_grf5101.c
drivers/net/wireless/rtl8180_max2820.c
drivers/net/wireless/rtl8180_rtl8225.c
drivers/net/wireless/rtl8180_sa2400.c
drivers/net/wireless/rtl8187.h
drivers/net/wireless/rtl8187_dev.c
drivers/net/wireless/rtl8187_rtl8225.c
drivers/net/wireless/rtl818x.h
drivers/net/wireless/strip.c
drivers/net/wireless/wavelan_cs.c
drivers/net/wireless/wavelan_cs.p.h
drivers/net/wireless/zd1211rw/zd_chip.c
drivers/net/wireless/zd1211rw/zd_chip.h
drivers/net/wireless/zd1211rw/zd_ieee80211.c
drivers/net/wireless/zd1211rw/zd_mac.c
drivers/net/wireless/zd1211rw/zd_mac.h
drivers/net/wireless/zd1211rw/zd_usb.c
drivers/net/yellowfin.c
drivers/s390/net/Kconfig
drivers/s390/net/Makefile
drivers/s390/net/ctcdbug.c [deleted file]
drivers/s390/net/ctcdbug.h [deleted file]
drivers/s390/net/ctcm_dbug.c [new file with mode: 0644]
drivers/s390/net/ctcm_dbug.h [new file with mode: 0644]
drivers/s390/net/ctcm_fsms.c [new file with mode: 0644]
drivers/s390/net/ctcm_fsms.h [new file with mode: 0644]
drivers/s390/net/ctcm_main.c [new file with mode: 0644]
drivers/s390/net/ctcm_main.h [new file with mode: 0644]
drivers/s390/net/ctcm_mpc.c [new file with mode: 0644]
drivers/s390/net/ctcm_mpc.h [new file with mode: 0644]
drivers/s390/net/ctcm_sysfs.c [new file with mode: 0644]
drivers/s390/net/ctcmain.c [deleted file]
drivers/s390/net/ctcmain.h [deleted file]
drivers/s390/net/qeth.h [deleted file]
drivers/s390/net/qeth_core.h [new file with mode: 0644]
drivers/s390/net/qeth_core_main.c [new file with mode: 0644]
drivers/s390/net/qeth_core_mpc.c [new file with mode: 0644]
drivers/s390/net/qeth_core_mpc.h [moved from drivers/s390/net/qeth_mpc.h with 78% similarity]
drivers/s390/net/qeth_core_offl.c [moved from drivers/s390/net/qeth_eddp.c with 62% similarity]
drivers/s390/net/qeth_core_offl.h [moved from drivers/s390/net/qeth_eddp.h with 55% similarity]
drivers/s390/net/qeth_core_sys.c [new file with mode: 0644]
drivers/s390/net/qeth_fs.h [deleted file]
drivers/s390/net/qeth_l2_main.c [new file with mode: 0644]
drivers/s390/net/qeth_l3.h [new file with mode: 0644]
drivers/s390/net/qeth_l3_main.c [new file with mode: 0644]
drivers/s390/net/qeth_l3_sys.c [new file with mode: 0644]
drivers/s390/net/qeth_main.c [deleted file]
drivers/s390/net/qeth_mpc.c [deleted file]
drivers/s390/net/qeth_proc.c [deleted file]
drivers/s390/net/qeth_sys.c [deleted file]
drivers/s390/net/qeth_tso.h [deleted file]
drivers/ssb/Kconfig
drivers/ssb/Makefile
drivers/ssb/driver_chipcommon.c
drivers/ssb/driver_gige.c [new file with mode: 0644]
drivers/ssb/driver_mipscore.c
drivers/ssb/driver_pcicore.c
drivers/ssb/embedded.c
drivers/ssb/main.c
drivers/ssb/pci.c
drivers/ssb/pcihost_wrapper.c
drivers/ssb/pcmcia.c
drivers/ssb/sprom.c [new file with mode: 0644]
drivers/ssb/ssb_private.h
fs/proc/proc_net.c
include/linux/Kbuild
include/linux/arcdevice.h
include/linux/atalk.h
include/linux/filter.h
include/linux/fsl_devices.h
include/linux/icmpv6.h
include/linux/ieee80211.h
include/linux/if_arp.h
include/linux/if_tunnel.h
include/linux/if_vlan.h
include/linux/if_wanpipe.h [deleted file]
include/linux/igmp.h
include/linux/in6.h
include/linux/inetdevice.h
include/linux/ipv6.h
include/linux/isdn.h
include/linux/mroute.h
include/linux/mroute6.h [new file with mode: 0644]
include/linux/net.h
include/linux/netdevice.h
include/linux/netfilter.h
include/linux/netfilter/nf_conntrack_dccp.h [new file with mode: 0644]
include/linux/netfilter/nf_conntrack_sip.h
include/linux/netfilter/nfnetlink_conntrack.h
include/linux/netfilter/x_tables.h
include/linux/netfilter/xt_sctp.h
include/linux/netfilter_arp/arp_tables.h
include/linux/netfilter_bridge/ebt_nflog.h [new file with mode: 0644]
include/linux/netfilter_ipv4.h
include/linux/nl80211.h
include/linux/pcounter.h [deleted file]
include/linux/phy.h
include/linux/pim.h [new file with mode: 0644]
include/linux/security.h
include/linux/seq_file.h
include/linux/seq_file_net.h [new file with mode: 0644]
include/linux/skbuff.h
include/linux/smc91x.h [new file with mode: 0644]
include/linux/ssb/ssb.h
include/linux/ssb/ssb_driver_chipcommon.h
include/linux/ssb/ssb_driver_gige.h [new file with mode: 0644]
include/linux/ssb/ssb_driver_pci.h
include/linux/tcp.h
include/linux/udp.h
include/linux/wireless.h
include/linux/xfrm.h
include/net/addrconf.h
include/net/cfg80211.h
include/net/dst.h
include/net/fib_rules.h
include/net/icmp.h
include/net/ieee80211.h
include/net/ieee80211softmac.h [deleted file]
include/net/ieee80211softmac_wx.h [deleted file]
include/net/inet_common.h
include/net/inet_connection_sock.h
include/net/inet_frag.h
include/net/inet_hashtables.h
include/net/inet_sock.h
include/net/inet_timewait_sock.h
include/net/ip.h
include/net/ip6_fib.h
include/net/ip6_route.h
include/net/ipip.h
include/net/ipv6.h
include/net/irda/irlan_eth.h
include/net/llc_if.h
include/net/mac80211.h
include/net/mip6.h
include/net/ndisc.h
include/net/neighbour.h
include/net/net_namespace.h
include/net/netfilter/nf_conntrack.h
include/net/netfilter/nf_conntrack_core.h
include/net/netfilter/nf_conntrack_expect.h
include/net/netfilter/nf_conntrack_helper.h
include/net/netfilter/nf_conntrack_l3proto.h
include/net/netfilter/nf_conntrack_l4proto.h
include/net/netfilter/nf_conntrack_tuple.h
include/net/netfilter/nf_nat_helper.h
include/net/netfilter/nf_nat_protocol.h
include/net/netfilter/nf_nat_rule.h
include/net/netlabel.h
include/net/netns/core.h [new file with mode: 0644]
include/net/netns/dccp.h [new file with mode: 0644]
include/net/netns/generic.h [new file with mode: 0644]
include/net/netns/ipv4.h
include/net/netns/ipv6.h
include/net/pkt_cls.h
include/net/protocol.h
include/net/raw.h
include/net/request_sock.h
include/net/route.h
include/net/rtnetlink.h
include/net/sctp/command.h
include/net/sctp/sctp.h
include/net/sctp/sm.h
include/net/sctp/structs.h
include/net/sock.h
include/net/tcp.h
include/net/tipc/tipc_bearer.h
include/net/tipc/tipc_port.h
include/net/udp.h
include/net/wireless.h
include/net/xfrm.h
lib/Makefile
lib/kobject_uevent.c
lib/pcounter.c [deleted file]
net/8021q/vlan.c
net/8021q/vlan.h
net/8021q/vlan_dev.c
net/8021q/vlan_netlink.c
net/8021q/vlanproc.c
net/8021q/vlanproc.h
net/9p/error.c
net/Kconfig
net/appletalk/aarp.c
net/appletalk/ddp.c
net/atm/clip.c
net/atm/lec.c
net/atm/mpc.c
net/atm/proc.c
net/atm/resources.c
net/atm/svc.c
net/ax25/af_ax25.c
net/ax25/ax25_in.c
net/bluetooth/l2cap.c
net/bluetooth/rfcomm/sock.c
net/bluetooth/sco.c
net/bridge/br_netfilter.c
net/bridge/br_netlink.c
net/bridge/br_notify.c
net/bridge/br_stp_bpdu.c
net/bridge/br_sysfs_br.c
net/bridge/netfilter/Kconfig
net/bridge/netfilter/Makefile
net/bridge/netfilter/ebt_nflog.c [new file with mode: 0644]
net/bridge/netfilter/ebtable_broute.c
net/bridge/netfilter/ebtable_filter.c
net/bridge/netfilter/ebtable_nat.c
net/can/af_can.c
net/can/bcm.c
net/can/raw.c
net/core/dev.c
net/core/dev_mcast.c
net/core/dst.c
net/core/ethtool.c
net/core/fib_rules.c
net/core/filter.c
net/core/neighbour.c
net/core/net_namespace.c
net/core/netpoll.c
net/core/pktgen.c
net/core/rtnetlink.c
net/core/skbuff.c
net/core/sock.c
net/core/sysctl_net_core.c
net/dccp/dccp.h
net/dccp/ipv4.c
net/dccp/ipv6.c
net/dccp/minisocks.c
net/dccp/output.c
net/dccp/proto.c
net/decnet/af_decnet.c
net/decnet/dn_dev.c
net/decnet/dn_fib.c
net/decnet/dn_route.c
net/decnet/dn_table.c
net/econet/af_econet.c
net/ieee80211/Kconfig
net/ieee80211/Makefile
net/ieee80211/softmac/Kconfig [deleted file]
net/ieee80211/softmac/Makefile [deleted file]
net/ieee80211/softmac/ieee80211softmac_assoc.c [deleted file]
net/ieee80211/softmac/ieee80211softmac_auth.c [deleted file]
net/ieee80211/softmac/ieee80211softmac_event.c [deleted file]
net/ieee80211/softmac/ieee80211softmac_io.c [deleted file]
net/ieee80211/softmac/ieee80211softmac_module.c [deleted file]
net/ieee80211/softmac/ieee80211softmac_priv.h [deleted file]
net/ieee80211/softmac/ieee80211softmac_scan.c [deleted file]
net/ieee80211/softmac/ieee80211softmac_wx.c [deleted file]
net/ipv4/af_inet.c
net/ipv4/arp.c
net/ipv4/cipso_ipv4.c
net/ipv4/devinet.c
net/ipv4/fib_frontend.c
net/ipv4/fib_hash.c
net/ipv4/fib_rules.c
net/ipv4/fib_semantics.c
net/ipv4/fib_trie.c
net/ipv4/icmp.c
net/ipv4/igmp.c
net/ipv4/inet_connection_sock.c
net/ipv4/inet_fragment.c
net/ipv4/inet_hashtables.c
net/ipv4/inet_timewait_sock.c
net/ipv4/ip_forward.c
net/ipv4/ip_fragment.c
net/ipv4/ip_gre.c
net/ipv4/ip_input.c
net/ipv4/ip_options.c
net/ipv4/ip_output.c
net/ipv4/ip_sockglue.c
net/ipv4/ipcomp.c
net/ipv4/ipconfig.c
net/ipv4/ipip.c
net/ipv4/ipmr.c
net/ipv4/ipvs/ip_vs_proto_tcp.c
net/ipv4/ipvs/ip_vs_proto_udp.c
net/ipv4/ipvs/ip_vs_sync.c
net/ipv4/netfilter.c
net/ipv4/netfilter/Kconfig
net/ipv4/netfilter/Makefile
net/ipv4/netfilter/arp_tables.c
net/ipv4/netfilter/arpt_mangle.c
net/ipv4/netfilter/arptable_filter.c
net/ipv4/netfilter/ip_queue.c
net/ipv4/netfilter/ip_tables.c
net/ipv4/netfilter/ipt_CLUSTERIP.c
net/ipv4/netfilter/ipt_ECN.c
net/ipv4/netfilter/ipt_LOG.c
net/ipv4/netfilter/ipt_MASQUERADE.c
net/ipv4/netfilter/ipt_REJECT.c
net/ipv4/netfilter/ipt_recent.c
net/ipv4/netfilter/iptable_filter.c
net/ipv4/netfilter/iptable_mangle.c
net/ipv4/netfilter/iptable_raw.c
net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c
net/ipv4/netfilter/nf_conntrack_proto_icmp.c
net/ipv4/netfilter/nf_nat_core.c
net/ipv4/netfilter/nf_nat_helper.c
net/ipv4/netfilter/nf_nat_pptp.c
net/ipv4/netfilter/nf_nat_proto_common.c [new file with mode: 0644]
net/ipv4/netfilter/nf_nat_proto_dccp.c [new file with mode: 0644]
net/ipv4/netfilter/nf_nat_proto_gre.c
net/ipv4/netfilter/nf_nat_proto_icmp.c
net/ipv4/netfilter/nf_nat_proto_sctp.c [new file with mode: 0644]
net/ipv4/netfilter/nf_nat_proto_tcp.c
net/ipv4/netfilter/nf_nat_proto_udp.c
net/ipv4/netfilter/nf_nat_proto_udplite.c [new file with mode: 0644]
net/ipv4/netfilter/nf_nat_proto_unknown.c
net/ipv4/netfilter/nf_nat_rule.c
net/ipv4/netfilter/nf_nat_sip.c
net/ipv4/netfilter/nf_nat_snmp_basic.c
net/ipv4/netfilter/nf_nat_standalone.c
net/ipv4/proc.c
net/ipv4/raw.c
net/ipv4/route.c
net/ipv4/syncookies.c
net/ipv4/sysctl_net_ipv4.c
net/ipv4/tcp.c
net/ipv4/tcp_cubic.c
net/ipv4/tcp_input.c
net/ipv4/tcp_ipv4.c
net/ipv4/tcp_minisocks.c
net/ipv4/tcp_output.c
net/ipv4/tcp_probe.c
net/ipv4/tcp_timer.c
net/ipv4/tunnel4.c
net/ipv4/udp.c
net/ipv4/udp_impl.h
net/ipv4/udplite.c
net/ipv4/xfrm4_policy.c
net/ipv6/Kconfig
net/ipv6/Makefile
net/ipv6/addrconf.c
net/ipv6/addrlabel.c
net/ipv6/af_inet6.c
net/ipv6/anycast.c
net/ipv6/fib6_rules.c
net/ipv6/icmp.c
net/ipv6/inet6_connection_sock.c
net/ipv6/inet6_hashtables.c
net/ipv6/ip6_fib.c
net/ipv6/ip6_flowlabel.c
net/ipv6/ip6_input.c
net/ipv6/ip6_output.c
net/ipv6/ip6_tunnel.c
net/ipv6/ip6mr.c [new file with mode: 0644]
net/ipv6/ipv6_sockglue.c
net/ipv6/mcast.c
net/ipv6/mip6.c
net/ipv6/ndisc.c
net/ipv6/netfilter.c
net/ipv6/netfilter/ip6_queue.c
net/ipv6/netfilter/ip6_tables.c
net/ipv6/netfilter/ip6t_LOG.c
net/ipv6/netfilter/ip6t_REJECT.c
net/ipv6/netfilter/ip6t_ipv6header.c
net/ipv6/netfilter/ip6t_rt.c
net/ipv6/netfilter/ip6table_filter.c
net/ipv6/netfilter/ip6table_mangle.c
net/ipv6/netfilter/ip6table_raw.c
net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c
net/ipv6/netfilter/nf_conntrack_reasm.c
net/ipv6/proc.c
net/ipv6/raw.c
net/ipv6/reassembly.c
net/ipv6/route.c
net/ipv6/sit.c
net/ipv6/syncookies.c [new file with mode: 0644]
net/ipv6/sysctl_net_ipv6.c
net/ipv6/tcp_ipv6.c
net/ipv6/udp.c
net/ipv6/udp_impl.h
net/ipv6/udplite.c
net/ipv6/xfrm6_input.c
net/ipv6/xfrm6_policy.c
net/ipv6/xfrm6_state.c
net/ipv6/xfrm6_tunnel.c
net/ipx/af_ipx.c
net/irda/af_irda.c
net/irda/discovery.c
net/irda/ircomm/ircomm_core.c
net/irda/ircomm/ircomm_event.c
net/irda/ircomm/ircomm_lmp.c
net/irda/ircomm/ircomm_param.c
net/irda/ircomm/ircomm_ttp.c
net/irda/ircomm/ircomm_tty.c
net/irda/ircomm/ircomm_tty_attach.c
net/irda/ircomm/ircomm_tty_ioctl.c
net/irda/irda_device.c
net/irda/iriap.c
net/irda/iriap_event.c
net/irda/irias_object.c
net/irda/irlan/irlan_client.c
net/irda/irlan/irlan_client_event.c
net/irda/irlan/irlan_common.c
net/irda/irlan/irlan_eth.c
net/irda/irlan/irlan_event.c
net/irda/irlan/irlan_filter.c
net/irda/irlan/irlan_provider.c
net/irda/irlan/irlan_provider_event.c
net/irda/irlap.c
net/irda/irlap_event.c
net/irda/irlap_frame.c
net/irda/irlmp.c
net/irda/irlmp_event.c
net/irda/irlmp_frame.c
net/irda/irmod.c
net/irda/irnet/irnet.h
net/irda/irnetlink.c
net/irda/irqueue.c
net/irda/irttp.c
net/irda/parameters.c
net/irda/qos.c
net/irda/wrapper.c
net/iucv/af_iucv.c
net/iucv/iucv.c
net/key/af_key.c
net/llc/af_llc.c
net/llc/llc_c_ac.c
net/llc/llc_c_ev.c
net/llc/llc_conn.c
net/llc/llc_input.c
net/mac80211/Kconfig
net/mac80211/Makefile
net/mac80211/aes_ccm.c
net/mac80211/cfg.c
net/mac80211/debugfs.c
net/mac80211/debugfs_key.c
net/mac80211/debugfs_key.h
net/mac80211/debugfs_netdev.c
net/mac80211/debugfs_sta.c
net/mac80211/debugfs_sta.h
net/mac80211/ieee80211_i.h
net/mac80211/iface.c [moved from net/mac80211/ieee80211_iface.c with 88% similarity]
net/mac80211/key.c
net/mac80211/key.h [moved from net/mac80211/ieee80211_key.h with 68% similarity]
net/mac80211/led.c [moved from net/mac80211/ieee80211_led.c with 99% similarity]
net/mac80211/led.h [moved from net/mac80211/ieee80211_led.h with 100% similarity]
net/mac80211/main.c [moved from net/mac80211/ieee80211.c with 59% similarity]
net/mac80211/mesh.c [new file with mode: 0644]
net/mac80211/mesh.h [new file with mode: 0644]
net/mac80211/mesh_hwmp.c [new file with mode: 0644]
net/mac80211/mesh_pathtbl.c [new file with mode: 0644]
net/mac80211/mesh_plink.c [new file with mode: 0644]
net/mac80211/mlme.c [moved from net/mac80211/ieee80211_sta.c with 72% similarity]
net/mac80211/rate.c [moved from net/mac80211/ieee80211_rate.c with 91% similarity]
net/mac80211/rate.h [moved from net/mac80211/ieee80211_rate.h with 82% similarity]
net/mac80211/rc80211_pid_algo.c
net/mac80211/rc80211_pid_debugfs.c
net/mac80211/rc80211_simple.c [deleted file]
net/mac80211/regdomain.c [deleted file]
net/mac80211/rx.c
net/mac80211/sta_info.c
net/mac80211/sta_info.h
net/mac80211/tkip.c
net/mac80211/tkip.h
net/mac80211/tx.c
net/mac80211/util.c
net/mac80211/wep.c
net/mac80211/wep.h
net/mac80211/wext.c [moved from net/mac80211/ieee80211_ioctl.c with 87% similarity]
net/mac80211/wme.c
net/mac80211/wme.h
net/mac80211/wpa.c
net/mac80211/wpa.h
net/netfilter/Kconfig
net/netfilter/Makefile
net/netfilter/core.c
net/netfilter/nf_conntrack_amanda.c
net/netfilter/nf_conntrack_core.c
net/netfilter/nf_conntrack_expect.c
net/netfilter/nf_conntrack_extend.c
net/netfilter/nf_conntrack_ftp.c
net/netfilter/nf_conntrack_h323_main.c
net/netfilter/nf_conntrack_helper.c
net/netfilter/nf_conntrack_irc.c
net/netfilter/nf_conntrack_l3proto_generic.c
net/netfilter/nf_conntrack_netbios_ns.c
net/netfilter/nf_conntrack_netlink.c
net/netfilter/nf_conntrack_pptp.c
net/netfilter/nf_conntrack_proto.c
net/netfilter/nf_conntrack_proto_dccp.c [new file with mode: 0644]
net/netfilter/nf_conntrack_proto_generic.c
net/netfilter/nf_conntrack_proto_gre.c
net/netfilter/nf_conntrack_proto_sctp.c
net/netfilter/nf_conntrack_proto_tcp.c
net/netfilter/nf_conntrack_proto_udp.c
net/netfilter/nf_conntrack_proto_udplite.c
net/netfilter/nf_conntrack_sane.c
net/netfilter/nf_conntrack_sip.c
net/netfilter/nf_conntrack_standalone.c
net/netfilter/nf_conntrack_tftp.c
net/netfilter/nf_sockopt.c
net/netfilter/nfnetlink_queue.c
net/netfilter/x_tables.c
net/netfilter/xt_CONNSECMARK.c
net/netfilter/xt_RATEEST.c
net/netfilter/xt_connlimit.c
net/netfilter/xt_conntrack.c
net/netfilter/xt_dccp.c
net/netfilter/xt_esp.c
net/netfilter/xt_multiport.c
net/netfilter/xt_policy.c
net/netfilter/xt_rateest.c
net/netfilter/xt_sctp.c
net/netfilter/xt_tcpmss.c
net/netfilter/xt_tcpudp.c
net/netfilter/xt_time.c
net/netlabel/netlabel_unlabeled.c
net/netlink/af_netlink.c
net/netrom/af_netrom.c
net/packet/af_packet.c
net/rose/af_rose.c
net/rxrpc/ar-internal.h
net/rxrpc/ar-proc.c
net/sched/act_api.c
net/sched/act_simple.c
net/sched/cls_api.c
net/sched/em_meta.c
net/sched/sch_api.c
net/sctp/associola.c
net/sctp/bind_addr.c
net/sctp/chunk.c
net/sctp/command.c
net/sctp/input.c
net/sctp/ipv6.c
net/sctp/output.c
net/sctp/outqueue.c
net/sctp/proc.c
net/sctp/protocol.c
net/sctp/sm_make_chunk.c
net/sctp/sm_sideeffect.c
net/sctp/sm_statefuns.c
net/sctp/socket.c
net/sctp/transport.c
net/socket.c
net/sunrpc/auth_gss/auth_gss.c
net/sunrpc/clnt.c
net/sunrpc/rpc_pipe.c
net/sunrpc/rpcb_clnt.c
net/sunrpc/xprtsock.c
net/tipc/core.c
net/tipc/core.h
net/tipc/eth_media.c
net/tipc/link.c
net/tipc/msg.c
net/tipc/msg.h
net/tipc/port.c
net/tipc/ref.c
net/tipc/ref.h
net/tipc/socket.c
net/unix/af_unix.c
net/wireless/Makefile
net/wireless/core.c
net/wireless/core.h
net/wireless/nl80211.c
net/wireless/reg.c [new file with mode: 0644]
net/wireless/util.c [new file with mode: 0644]
net/wireless/wext.c
net/x25/af_x25.c
net/x25/x25_dev.c
net/xfrm/xfrm_policy.c
net/xfrm/xfrm_state.c
net/xfrm/xfrm_user.c
security/dummy.c
security/security.c
security/selinux/include/xfrm.h
security/selinux/netif.c
security/selinux/ss/services.c
security/selinux/xfrm.c
security/smack/smack_lsm.c

index e471bc4..b2b6366 100644 (file)
@@ -11,7 +11,8 @@ DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \
            procfs-guide.xml writing_usb_driver.xml networking.xml \
            kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \
            gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
-           genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml
+           genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \
+           mac80211.xml
 
 ###
 # The build process is as follows (targets):
diff --git a/Documentation/DocBook/mac80211.tmpl b/Documentation/DocBook/mac80211.tmpl
new file mode 100644 (file)
index 0000000..b651e0a
--- /dev/null
@@ -0,0 +1,335 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+       "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
+
+<book id="mac80211-developers-guide">
+  <bookinfo>
+    <title>The mac80211 subsystem for kernel developers</title>
+
+    <authorgroup>
+      <author>
+        <firstname>Johannes</firstname>
+        <surname>Berg</surname>
+        <affiliation>
+          <address><email>johannes@sipsolutions.net</email></address>
+        </affiliation>
+      </author>
+    </authorgroup>
+
+    <copyright>
+      <year>2007</year>
+      <year>2008</year>
+      <holder>Johannes Berg</holder>
+    </copyright>
+
+    <legalnotice>
+      <para>
+        This documentation is free software; you can redistribute
+        it and/or modify it under the terms of the GNU General Public
+        License version 2 as published by the Free Software Foundation.
+      </para>
+
+      <para>
+        This documentation is distributed in the hope that it will be
+        useful, but WITHOUT ANY WARRANTY; without even the implied
+        warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+        See the GNU General Public License for more details.
+      </para>
+
+      <para>
+        You should have received a copy of the GNU General Public
+        License along with this documentation; if not, write to the Free
+        Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+        MA 02111-1307 USA
+      </para>
+
+      <para>
+        For more details see the file COPYING in the source
+        distribution of Linux.
+      </para>
+    </legalnotice>
+
+    <abstract>
+!Pinclude/net/mac80211.h Introduction
+!Pinclude/net/mac80211.h Warning
+    </abstract>
+  </bookinfo>
+
+  <toc></toc>
+
+<!--
+Generally, this document shall be ordered by increasing complexity.
+It is important to note that readers should be able to read only
+the first few sections to get a working driver and only advanced
+usage should require reading the full document.
+-->
+
+  <part>
+    <title>The basic mac80211 driver interface</title>
+    <partintro>
+      <para>
+        You should read and understand the information contained
+        within this part of the book while implementing a driver.
+        In some chapters, advanced usage is noted, that may be
+        skipped at first.
+      </para>
+      <para>
+        This part of the book only covers station and monitor mode
+        functionality, additional information required to implement
+        the other modes is covered in the second part of the book.
+      </para>
+    </partintro>
+
+    <chapter id="basics">
+      <title>Basic hardware handling</title>
+      <para>TBD</para>
+      <para>
+        This chapter shall contain information on getting a hw
+        struct allocated and registered with mac80211.
+      </para>
+      <para>
+        Since it is required to allocate rates/modes before registering
+        a hw struct, this chapter shall also contain information on setting
+        up the rate/mode structs.
+      </para>
+      <para>
+        Additionally, some discussion about the callbacks and
+        the general programming model should be in here, including
+        the definition of ieee80211_ops which will be referred to
+        a lot.
+      </para>
+      <para>
+        Finally, a discussion of hardware capabilities should be done
+        with references to other parts of the book.
+      </para>
+<!-- intentionally multiple !F lines to get proper order -->
+!Finclude/net/mac80211.h ieee80211_hw
+!Finclude/net/mac80211.h ieee80211_hw_flags
+!Finclude/net/mac80211.h SET_IEEE80211_DEV
+!Finclude/net/mac80211.h SET_IEEE80211_PERM_ADDR
+!Finclude/net/mac80211.h ieee80211_ops
+!Finclude/net/mac80211.h ieee80211_alloc_hw
+!Finclude/net/mac80211.h ieee80211_register_hw
+!Finclude/net/mac80211.h ieee80211_get_tx_led_name
+!Finclude/net/mac80211.h ieee80211_get_rx_led_name
+!Finclude/net/mac80211.h ieee80211_get_assoc_led_name
+!Finclude/net/mac80211.h ieee80211_get_radio_led_name
+!Finclude/net/mac80211.h ieee80211_unregister_hw
+!Finclude/net/mac80211.h ieee80211_free_hw
+    </chapter>
+
+    <chapter id="phy-handling">
+      <title>PHY configuration</title>
+      <para>TBD</para>
+      <para>
+        This chapter should describe PHY handling including
+        start/stop callbacks and the various structures used.
+      </para>
+!Finclude/net/mac80211.h ieee80211_conf
+!Finclude/net/mac80211.h ieee80211_conf_flags
+    </chapter>
+
+    <chapter id="iface-handling">
+      <title>Virtual interfaces</title>
+      <para>TBD</para>
+      <para>
+        This chapter should describe virtual interface basics
+        that are relevant to the driver (VLANs, MGMT etc are not.)
+        It should explain the use of the add_iface/remove_iface
+        callbacks as well as the interface configuration callbacks.
+      </para>
+      <para>Things related to AP mode should be discussed there.</para>
+      <para>
+        Things related to supporting multiple interfaces should be
+        in the appropriate chapter, a BIG FAT note should be here about
+        this though and the recommendation to allow only a single
+        interface in STA mode at first!
+      </para>
+!Finclude/net/mac80211.h ieee80211_if_types
+!Finclude/net/mac80211.h ieee80211_if_init_conf
+!Finclude/net/mac80211.h ieee80211_if_conf
+    </chapter>
+
+    <chapter id="rx-tx">
+      <title>Receive and transmit processing</title>
+      <sect1>
+        <title>what should be here</title>
+        <para>TBD</para>
+        <para>
+          This should describe the receive and transmit
+          paths in mac80211/the drivers as well as
+          transmit status handling.
+        </para>
+      </sect1>
+      <sect1>
+        <title>Frame format</title>
+!Pinclude/net/mac80211.h Frame format
+      </sect1>
+      <sect1>
+        <title>Alignment issues</title>
+        <para>TBD</para>
+      </sect1>
+      <sect1>
+        <title>Calling into mac80211 from interrupts</title>
+!Pinclude/net/mac80211.h Calling mac80211 from interrupts
+      </sect1>
+      <sect1>
+        <title>functions/definitions</title>
+!Finclude/net/mac80211.h ieee80211_rx_status
+!Finclude/net/mac80211.h mac80211_rx_flags
+!Finclude/net/mac80211.h ieee80211_tx_control
+!Finclude/net/mac80211.h ieee80211_tx_status_flags
+!Finclude/net/mac80211.h ieee80211_rx
+!Finclude/net/mac80211.h ieee80211_rx_irqsafe
+!Finclude/net/mac80211.h ieee80211_tx_status
+!Finclude/net/mac80211.h ieee80211_tx_status_irqsafe
+!Finclude/net/mac80211.h ieee80211_rts_get
+!Finclude/net/mac80211.h ieee80211_rts_duration
+!Finclude/net/mac80211.h ieee80211_ctstoself_get
+!Finclude/net/mac80211.h ieee80211_ctstoself_duration
+!Finclude/net/mac80211.h ieee80211_generic_frame_duration
+!Finclude/net/mac80211.h ieee80211_get_hdrlen_from_skb
+!Finclude/net/mac80211.h ieee80211_get_hdrlen
+!Finclude/net/mac80211.h ieee80211_wake_queue
+!Finclude/net/mac80211.h ieee80211_stop_queue
+!Finclude/net/mac80211.h ieee80211_start_queues
+!Finclude/net/mac80211.h ieee80211_stop_queues
+!Finclude/net/mac80211.h ieee80211_wake_queues
+      </sect1>
+    </chapter>
+
+    <chapter id="filters">
+      <title>Frame filtering</title>
+!Pinclude/net/mac80211.h Frame filtering
+!Finclude/net/mac80211.h ieee80211_filter_flags
+    </chapter>
+  </part>
+
+  <part id="advanced">
+    <title>Advanced driver interface</title>
+    <partintro>
+      <para>
+       Information contained within this part of the book is
+       of interest only for advanced interaction of mac80211
+       with drivers to exploit more hardware capabilities and
+       improve performance.
+      </para>
+    </partintro>
+
+    <chapter id="hardware-crypto-offload">
+      <title>Hardware crypto acceleration</title>
+!Pinclude/net/mac80211.h Hardware crypto acceleration
+<!-- intentionally multiple !F lines to get proper order -->
+!Finclude/net/mac80211.h set_key_cmd
+!Finclude/net/mac80211.h ieee80211_key_conf
+!Finclude/net/mac80211.h ieee80211_key_alg
+!Finclude/net/mac80211.h ieee80211_key_flags
+    </chapter>
+
+    <chapter id="qos">
+      <title>Multiple queues and QoS support</title>
+      <para>TBD</para>
+!Finclude/net/mac80211.h ieee80211_tx_queue_params
+!Finclude/net/mac80211.h ieee80211_tx_queue_stats_data
+!Finclude/net/mac80211.h ieee80211_tx_queue
+    </chapter>
+
+    <chapter id="AP">
+      <title>Access point mode support</title>
+      <para>TBD</para>
+      <para>Some parts of the if_conf should be discussed here instead</para>
+      <para>
+        Insert notes about VLAN interfaces with hw crypto here or
+        in the hw crypto chapter.
+      </para>
+!Finclude/net/mac80211.h ieee80211_get_buffered_bc
+!Finclude/net/mac80211.h ieee80211_beacon_get
+    </chapter>
+
+    <chapter id="multi-iface">
+      <title>Supporting multiple virtual interfaces</title>
+      <para>TBD</para>
+      <para>
+        Note: WDS with identical MAC address should almost always be OK
+      </para>
+      <para>
+        Insert notes about having multiple virtual interfaces with
+        different MAC addresses here, note which configurations are
+        supported by mac80211, add notes about supporting hw crypto
+        with it.
+      </para>
+    </chapter>
+
+    <chapter id="hardware-scan-offload">
+      <title>Hardware scan offload</title>
+      <para>TBD</para>
+!Finclude/net/mac80211.h ieee80211_scan_completed
+    </chapter>
+  </part>
+
+  <part id="rate-control">
+    <title>Rate control interface</title>
+    <partintro>
+      <para>TBD</para>
+      <para>
+       This part of the book describes the rate control algorithm
+       interface and how it relates to mac80211 and drivers.
+      </para>
+    </partintro>
+    <chapter id="dummy">
+      <title>dummy chapter</title>
+      <para>TBD</para>
+    </chapter>
+  </part>
+
+  <part id="internal">
+    <title>Internals</title>
+    <partintro>
+      <para>TBD</para>
+      <para>
+       This part of the book describes mac80211 internals.
+      </para>
+    </partintro>
+
+    <chapter id="key-handling">
+      <title>Key handling</title>
+      <sect1>
+        <title>Key handling basics</title>
+!Pnet/mac80211/key.c Key handling basics
+      </sect1>
+      <sect1>
+        <title>MORE TBD</title>
+        <para>TBD</para>
+      </sect1>
+    </chapter>
+
+    <chapter id="rx-processing">
+      <title>Receive processing</title>
+      <para>TBD</para>
+    </chapter>
+
+    <chapter id="tx-processing">
+      <title>Transmit processing</title>
+      <para>TBD</para>
+    </chapter>
+
+    <chapter id="sta-info">
+      <title>Station info handling</title>
+      <sect1>
+        <title>Programming information</title>
+!Fnet/mac80211/sta_info.h sta_info
+!Fnet/mac80211/sta_info.h ieee80211_sta_info_flags
+      </sect1>
+      <sect1>
+        <title>STA information lifetime rules</title>
+!Pnet/mac80211/sta_info.c STA information lifetime rules
+      </sect1>
+    </chapter>
+
+    <chapter id="synchronisation">
+      <title>Synchronisation</title>
+      <para>TBD</para>
+      <para>Locking, lots of RCU</para>
+    </chapter>
+  </part>
+</book>
index 4b70622..af0e939 100644 (file)
@@ -203,14 +203,6 @@ Who:  linuxppc-dev@ozlabs.org
 
 ---------------------------
 
-What:   sk98lin network driver
-When:   Feburary 2008
-Why:    In kernel tree version of driver is unmaintained. Sk98lin driver
-       replaced by the skge driver. 
-Who:    Stephen Hemminger <shemminger@linux-foundation.org>
-
----------------------------
-
 What:  i386/x86_64 bzImage symlinks
 When:  April 2010
 
@@ -221,8 +213,6 @@ Who:        Thomas Gleixner <tglx@linutronix.de>
 
 ---------------------------
 
----------------------------
-
 What:  i2c-i810, i2c-prosavage and i2c-savage4
 When:  May 2008
 Why:   These drivers are superseded by i810fb, intelfb and savagefb.
@@ -230,33 +220,6 @@ Who:       Jean Delvare <khali@linux-fr.org>
 
 ---------------------------
 
-What:  bcm43xx wireless network driver
-When:  2.6.26
-Files: drivers/net/wireless/bcm43xx
-Why:   This driver's functionality has been replaced by the
-       mac80211-based b43 and b43legacy drivers.
-Who:   John W. Linville <linville@tuxdriver.com>
-
----------------------------
-
-What:  ieee80211 softmac wireless networking component
-When:  2.6.26 (or after removal of bcm43xx and port of zd1211rw to mac80211)
-Files: net/ieee80211/softmac
-Why:   No in-kernel drivers will depend on it any longer.
-Who:   John W. Linville <linville@tuxdriver.com>
-
----------------------------
-
-What:  rc80211-simple rate control algorithm for mac80211
-When:  2.6.26
-Files: net/mac80211/rc80211-simple.c
-Why:   This algorithm was provided for reference but always exhibited bad
-       responsiveness and performance and has some serious flaws. It has been
-       replaced by rc80211-pid.
-Who:   Stefano Brivio <stefano.brivio@polimi.it>
-
----------------------------
-
 What (Why):
        - include/linux/netfilter_ipv4/ipt_TOS.h ipt_tos.h header files
          (superseded by xt_TOS/xt_tos target & match)
index 23df051..79b7dbd 100644 (file)
@@ -80,7 +80,7 @@ once you enable the radio, will depend on your hardware and driver combination.
 e.g. With the BCM4318 on the Acer Aspire 5020 series:
 
 ndiswrapper: Light blinks on when transmitting
-bcm43xx/b43: Solid light, blinks off when transmitting
+b43: Solid light, blinks off when transmitting
 
 Wireless radio control is unconditionally enabled - all Acer laptops that support
 acer-wmi come with built-in wireless. However, should you feel so inclined to
index c485ee0..1634c6d 100644 (file)
@@ -100,8 +100,6 @@ tuntap.txt
        - TUN/TAP device driver, allowing user space Rx/Tx of packets.
 vortex.txt
        - info on using 3Com Vortex (3c590, 3c592, 3c595, 3c597) Ethernet cards.
-wan-router.txt
-       - WAN router documentation
 wavelan.txt
        - AT&T GIS (nee NCR) WaveLAN card: An Ethernet-like radio transceiver
 x25.txt
diff --git a/Documentation/networking/bcm43xx.txt b/Documentation/networking/bcm43xx.txt
deleted file mode 100644 (file)
index d602c8d..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-
-                       BCM43xx Linux Driver Project
-                       ============================
-
-Introduction
-------------
-
-Many of the wireless devices found in modern notebook computers are
-based on the wireless chips produced by Broadcom. These devices have
-been a problem for Linux users as there is no open-source driver
-available. In addition, Broadcom has not released specifications
-for the device, and driver availability has been limited to the
-binary-only form used in the GPL versions of AP hardware such as the
-Linksys WRT54G, and the Windows and OS X drivers.  Before this project
-began, the only way to use these devices were to use the Windows or
-OS X drivers with either the Linuxant or ndiswrapper modules. There
-is a strong penalty if this method is used as loading the binary-only
-module "taints" the kernel, and no kernel developer will help diagnose
-any kernel problems.
-
-Development
------------
-
-This driver has been developed using
-a clean-room technique that is described at
-http://bcm-specs.sipsolutions.net/ReverseEngineeringProcess. For legal
-reasons, none of the clean-room crew works on the on the Linux driver,
-and none of the Linux developers sees anything but the specifications,
-which are the ultimate product of the reverse-engineering group.
-
-Software
---------
-
-Since the release of the 2.6.17 kernel, the bcm43xx driver has been
-distributed with the kernel source, and is prebuilt in most, if not
-all, distributions.  There is, however, additional software that is
-required. The firmware used by the chip is the intellectual property
-of Broadcom and they have not given the bcm43xx team redistribution
-rights to this firmware.  Since we cannot legally redistribute
-the firmware we cannot include it with the driver. Furthermore, it
-cannot be placed in the downloadable archives of any distributing
-organization; therefore, the user is responsible for obtaining the
-firmware and placing it in the appropriate location so that the driver
-can find it when initializing.
-
-To help with this process, the bcm43xx developers provide a separate
-program named bcm43xx-fwcutter to "cut" the firmware out of a
-Windows or OS X driver and write the extracted files to the proper
-location. This program is usually provided with the distribution;
-however, it may be downloaded from
-
-http://developer.berlios.de/project/showfiles.php?group_id=4547
-
-The firmware is available in two versions. V3 firmware is used with
-the in-kernel bcm43xx driver that uses a software MAC layer called
-SoftMAC, and will have a microcode revision of 0x127 or smaller. The
-V4 firmware is used by an out-of-kernel driver employing a variation of
-the Devicescape MAC layer known as d80211. Once bcm43xx-d80211 reaches
-a satisfactory level of development, it will replace bcm43xx-softmac
-in the kernel as it is much more flexible and powerful.
-
-A source for the latest V3 firmware is
-
-http://downloads.openwrt.org/sources/wl_apsta-3.130.20.0.o
-
-Once this file is downloaded, the command
-'bcm43xx-fwcutter -w <dir> <filename>'
-will extract the microcode and write it to directory
-<dir>. The correct directory will depend on your distribution;
-however, most use '/lib/firmware'. Once this step is completed,
-the bcm3xx driver should load when the system is booted. To see
-any messages relating to the driver, issue the command 'dmesg |
-grep bcm43xx' from a terminal window. If there are any problems,
-please send that output to Bcm43xx-dev@lists.berlios.de.
-
-Although the driver has been in-kernel since 2.6.17, the earliest
-version is quite limited in its capability. Patches that include
-all features of later versions are available for the stable kernel
-versions from 2.6.18. These will be needed if you use a BCM4318,
-or a PCI Express version (BCM4311 and BCM4312). In addition, if you
-have an early BCM4306 and more than 1 GB RAM, your kernel will need
-to be patched. These patches, which are being updated regularly,
-are available at ftp://lwfinger.dynalias.org/patches. Look for
-combined_2.6.YY.patch. Of course you will need kernel source downloaded
-from kernel.org, or the source from your distribution.
-
-If you build your own kernel, please enable CONFIG_BCM43XX_DEBUG
-and CONFIG_IEEE80211_SOFTMAC_DEBUG. The log information provided is
-essential for solving any problems.
diff --git a/Documentation/networking/wan-router.txt b/Documentation/networking/wan-router.txt
deleted file mode 100644 (file)
index bc2ab41..0000000
+++ /dev/null
@@ -1,621 +0,0 @@
-------------------------------------------------------------------------------
-Linux WAN Router Utilities Package
-------------------------------------------------------------------------------
-Version 2.2.1 
-Mar 28, 2001
-Author: Nenad Corbic <ncorbic@sangoma.com>
-Copyright (c) 1995-2001 Sangoma Technologies Inc.
-------------------------------------------------------------------------------
-
-INTRODUCTION
-
-Wide Area Networks (WANs) are used to interconnect Local Area Networks (LANs)
-and/or stand-alone hosts over vast distances with data transfer rates
-significantly higher than those achievable with commonly used dial-up
-connections.
-
-Usually an external device called `WAN router' sitting on your local network
-or connected to your machine's serial port provides physical connection to
-WAN.  Although router's job may be as simple as taking your local network
-traffic, converting it to WAN format and piping it through the WAN link, these
-devices are notoriously expensive, with prices as much as 2 - 5 times higher
-then the price of a typical PC box.
-
-Alternatively, considering robustness and multitasking capabilities of Linux,
-an internal router can be built (most routers use some sort of stripped down
-Unix-like operating system anyway). With a number of relatively inexpensive WAN
-interface cards available on the market, a perfectly usable router can be
-built for less than half a price of an external router.  Yet a Linux box
-acting as a router can still be used for other purposes, such as fire-walling,
-running FTP, WWW or DNS server, etc.
-
-This kernel module introduces the notion of a WAN Link Driver (WLD) to Linux
-operating system and provides generic hardware-independent services for such
-drivers.  Why can existing Linux network device interface not be used for
-this purpose?  Well, it can.  However, there are a few key differences between
-a typical network interface (e.g. Ethernet) and a WAN link.
-
-Many WAN protocols, such as X.25 and frame relay, allow for multiple logical
-connections (known as `virtual circuits' in X.25 terminology) over a single
-physical link.  Each such virtual circuit may (and almost always does) lead
-to a different geographical location and, therefore, different network.  As a
-result, it is the virtual circuit, not the physical link, that represents a
-route and, therefore, a network interface in Linux terms.
-
-To further complicate things, virtual circuits are usually volatile in nature
-(excluding so called `permanent' virtual circuits or PVCs).  With almost no
-time required to set up and tear down a virtual circuit, it is highly desirable
-to implement on-demand connections in order to minimize network charges.  So
-unlike a typical network driver, the WAN driver must be able to handle multiple
-network interfaces and cope as multiple virtual circuits come into existence
-and go away dynamically.
-Last, but not least, WAN configuration is much more complex than that of say
-Ethernet and may well amount to several dozens of parameters.  Some of them
-are "link-wide"  while others are virtual circuit-specific.  The same holds
-true for WAN statistics which is by far more extensive and extremely useful
-when troubleshooting WAN connections.  Extending the ifconfig utility to suit
-these needs may be possible, but does not seem quite reasonable.  Therefore, a
-WAN configuration utility and corresponding application programmer's interface
-is needed for this purpose.
-
-Most of these problems are taken care of by this module.  Its goal is to
-provide a user with more-or-less standard look and feel for all WAN devices and
-assist a WAN device driver writer by providing common services, such as:
-
- o User-level interface via /proc file system
- o Centralized configuration
- o Device management (setup, shutdown, etc.)
- o Network interface management (dynamic creation/destruction)
- o Protocol encapsulation/decapsulation
-
-To ba able to use the Linux WAN Router you will also need a WAN Tools package
-available from
-
-       ftp.sangoma.com/pub/linux/current_wanpipe/wanpipe-X.Y.Z.tgz
-
-where vX.Y.Z represent the wanpipe version number.
-
-For technical questions and/or comments please e-mail to ncorbic@sangoma.com.
-For general inquiries please contact Sangoma Technologies Inc. by
-
-       Hotline:        1-800-388-2475  (USA and Canada, toll free)
-       Phone:          (905) 474-1990  ext: 106
-       Fax:            (905) 474-9223
-       E-mail:         dm@sangoma.com  (David Mandelstam)
-       WWW:            http://www.sangoma.com
-
-
-INSTALLATION
-
-Please read the WanpipeForLinux.pdf manual on how to 
-install the WANPIPE tools and drivers properly. 
-
-
-After installing wanpipe package: /usr/local/wanrouter/doc. 
-On the ftp.sangoma.com : /linux/current_wanpipe/doc
-
-
-COPYRIGHT AND LICENSING INFORMATION
-
-This program is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation; either version 2, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program; if not, write to the Free Software Foundation, Inc., 675 Mass
-Ave, Cambridge, MA 02139, USA.
-
-
-
-ACKNOWLEDGEMENTS
-
-This product is based on the WANPIPE(tm) Multiprotocol WAN Router developed
-by Sangoma Technologies Inc. for Linux 2.0.x and 2.2.x.  Success of the WANPIPE
-together with the next major release of Linux kernel in summer 1996 commanded
-adequate changes to the WANPIPE code to take full advantage of new Linux
-features.
-
-Instead of continuing developing proprietary interface tied to Sangoma WAN
-cards, we decided to separate all hardware-independent code into a separate
-module and defined two levels of interfaces - one for user-level applications
-and another for kernel-level WAN drivers.  WANPIPE is now implemented as a
-WAN driver compliant with the WAN Link Driver interface.  Also a general
-purpose WAN configuration utility and a set of shell scripts was developed to 
-support WAN router at the user level.
-
-Many useful ideas concerning hardware-independent interface implementation
-were given by Mike McLagan <mike.mclagan@linux.org> and his implementation
-of the Frame Relay router and drivers for Sangoma cards (dlci/sdla).
-
-With the new implementation of the APIs being incorporated into the WANPIPE,
-a special thank goes to Alan Cox in providing insight into BSD sockets.
-
-Special thanks to all the WANPIPE users who performed field-testing, reported
-bugs and made valuable comments and suggestions that help us to improve this
-product.
-
-
-
-NEW IN THIS RELEASE
-
-       o Updated the WANCFG utility
-               Calls the pppconfig to configure the PPPD
-               for async connections.
-
-       o Added the PPPCONFIG utility
-               Used to configure the PPPD daemon for the
-               WANPIPE Async PPP and standard serial port.
-               The wancfg calls the pppconfig to configure
-               the pppd.
-
-       o Fixed the PCI autodetect feature.  
-               The SLOT 0 was used as an autodetect option
-               however, some high end PC's slot numbers start
-               from 0. 
-
-       o This release has been tested with the new backupd
-         daemon release.
-       
-
-PRODUCT COMPONENTS AND RELATED FILES
-
-/etc: (or user defined)
-       wanpipe1.conf   default router configuration file
-
-/lib/modules/X.Y.Z/misc:
-       wanrouter.o     router kernel loadable module
-       af_wanpipe.o    wanpipe api socket module
-
-/lib/modules/X.Y.Z/net:
-       sdladrv.o       Sangoma SDLA support module
-       wanpipe.o       Sangoma WANPIPE(tm) driver module
-
-/proc/net/wanrouter
-       Config          reads current router configuration
-       Status          reads current router status
-       {name}          reads WAN driver statistics
-
-/usr/sbin:
-       wanrouter       wanrouter start-up script
-       wanconfig       wanrouter configuration utility
-       sdladump        WANPIPE adapter memory dump utility
-        fpipemon        Monitor for Frame Relay
-        cpipemon        Monitor for Cisco HDLC
-       ppipemon        Monitor for PPP
-       xpipemon        Monitor for X25
-       wpkbdmon        WANPIPE keyboard led monitor/debugger
-
-/usr/local/wanrouter:
-       README          this file
-       COPYING         GNU General Public License
-       Setup           installation script
-       Filelist        distribution definition file
-       wanrouter.rc    meta-configuration file 
-                       (used by the Setup and wanrouter script)
-
-/usr/local/wanrouter/doc:
-       wanpipeForLinux.pdf     WAN Router User's Manual
-
-/usr/local/wanrouter/patches:
-       wanrouter-v2213.gz      patch for Linux kernels 2.2.11 up to 2.2.13.
-       wanrouter-v2214.gz      patch for Linux kernel 2.2.14. 
-       wanrouter-v2215.gz      patch for Linux kernels 2.2.15 to 2.2.17.
-       wanrouter-v2218.gz      patch for Linux kernels 2.2.18 and up.
-       wanrouter-v240.gz       patch for Linux kernel 2.4.0.  
-       wanrouter-v242.gz       patch for Linux kernel 2.4.2 and up.
-       wanrouter-v2034.gz      patch for Linux kernel 2.0.34
-       wanrouter-v2036.gz      patch for Linux kernel 2.0.36 and up. 
-
-/usr/local/wanrouter/patches/kdrivers:
-       Sources of the latest WANPIPE device drivers.
-       These are used to UPGRADE the linux kernel to the newest
-       version if the kernel source has already been patched with
-       WANPIPE drivers.
-
-/usr/local/wanrouter/samples:
-       interface       sample interface configuration file
-       wanpipe1.cpri   CHDLC primary port
-       wanpipe2.csec   CHDLC secondary port
-       wanpipe1.fr     Frame Relay protocol
-       wanpipe1.ppp    PPP protocol ) 
-       wanpipe1.asy    CHDLC ASYNC protocol
-       wanpipe1.x25    X25 protocol
-       wanpipe1.stty   Sync TTY driver (Used by Kernel PPPD daemon)
-       wanpipe1.atty   Async TTY driver (Used by Kernel PPPD daemon)
-       wanrouter.rc    sample meta-configuration file
-
-/usr/local/wanrouter/util:
-       *               wan-tools utilities source code
-
-/usr/local/wanrouter/api/x25:
-       *               x25 api sample programs.
-/usr/local/wanrouter/api/chdlc:
-       *               chdlc api sample programs.
-/usr/local/wanrouter/api/fr:
-       *               fr api sample programs.
-/usr/local/wanrouter/config/wancfg:
-       wancfg          WANPIPE GUI configuration program.
-                        Creates wanpipe#.conf files. 
-/usr/local/wanrouter/config/cfgft1:
-       cfgft1          GUI CSU/DSU configuration program.
-
-/usr/include/linux:
-       wanrouter.h     router API definitions
-       wanpipe.h       WANPIPE API definitions
-       sdladrv.h       SDLA support module API definitions
-       sdlasfm.h       SDLA firmware module definitions
-       if_wanpipe.h    WANPIPE Socket definitions
-       sdlapci.h       WANPIPE PCI definitions
-       
-
-/usr/src/linux/net/wanrouter:
-       *               wanrouter source code
-
-/var/log:
-       wanrouter       wanrouter start-up log (created by the Setup script)
-
-/var/lock:  (or /var/lock/subsys for RedHat)
-       wanrouter       wanrouter lock file (created by the Setup script)
-
-/usr/local/wanrouter/firmware:
-       fr514.sfm       Frame relay firmware for Sangoma S508/S514 card
-       cdual514.sfm    Dual Port Cisco HDLC firmware for Sangoma S508/S514 card
-       ppp514.sfm      PPP Firmware for Sangoma S508 and S514 cards
-       x25_508.sfm     X25 Firmware for Sangoma S508 card.
-
-
-REVISION HISTORY
-
-1.0.0  December 31, 1996       Initial version
-
-1.0.1  January 30, 1997        Status and statistics can be read via /proc
-                               filesystem entries.
-
-1.0.2   April 30, 1997          Added UDP management via monitors.
-
-1.0.3  June 3, 1997            UDP management for multiple boards using Frame
-                               Relay and PPP
-                               Enabled continuous transmission of Configure 
-                               Request Packet for PPP (for 508 only)
-                               Connection Timeout for PPP changed from 900 to 0
-                               Flow Control Problem fixed for Frame Relay
-
-1.0.4  July 10, 1997           S508/FT1 monitoring capability in fpipemon and
-                               ppipemon utilities.
-                               Configurable TTL for UDP packets.
-                               Multicast and Broadcast IP source addresses are
-                               silently discarded.
-
-1.0.5  July 28, 1997           Configurable T391,T392,N391,N392,N393 for Frame
-                               Relay in router.conf.
-                               Configurable Memory Address through router.conf 
-                               for Frame Relay, PPP and X.25. (commenting this
-                               out enables auto-detection).
-                               Fixed freeing up received buffers using kfree()
-                               for Frame Relay and X.25.
-                               Protect sdla_peek() by calling save_flags(),
-                               cli() and restore_flags().
-                               Changed number of Trace elements from 32 to 20
-                               Added DLCI specific data monitoring in FPIPEMON. 
-2.0.0  Nov 07, 1997            Implemented protection of RACE conditions by 
-                               critical flags for FRAME RELAY and PPP.
-                               DLCI List interrupt mode implemented.
-                               IPX support in FRAME RELAY and PPP.
-                               IPX Server Support (MARS)
-                               More driver specific stats included in FPIPEMON
-                               and PIPEMON.
-
-2.0.1  Nov 28, 1997            Bug Fixes for version 2.0.0.
-                               Protection of "enable_irq()" while 
-                               "disable_irq()" has been enabled from any other
-                               routine (for Frame Relay, PPP and X25).
-                               Added additional Stats for Fpipemon and Ppipemon
-                               Improved Load Sharing for multiple boards
-
-2.0.2  Dec 09, 1997            Support for PAP and CHAP for ppp has been
-                               implemented.
-
-2.0.3  Aug 15, 1998            New release supporting Cisco HDLC, CIR for Frame
-                               relay, Dynamic IP assignment for PPP and Inverse
-                               Arp support for Frame-relay.  Man Pages are 
-                               included for better support and a new utility
-                               for configuring FT1 cards.
-
-2.0.4  Dec 09, 1998            Dual Port support for Cisco HDLC.
-                               Support for HDLC (LAPB) API.
-                               Supports BiSync Streaming code for S502E 
-                               and S503 cards.
-                               Support for Streaming HDLC API.
-                               Provides a BSD socket interface for 
-                               creating applications using BiSync
-                               streaming.        
-
-2.0.5   Aug 04, 1999           CHDLC initialization bug fix.
-                               PPP interrupt driven driver: 
-                               Fix to the PPP line hangup problem.
-                               New PPP firmware
-                               Added comments to the startup SYSTEM ERROR messages
-                               Xpipemon debugging application for the X25 protocol
-                               New USER_MANUAL.txt
-                               Fixed the odd boundary 4byte writes to the board.
-                               BiSync Streaming code has been taken out.  
-                                Available as a patch.
-                               Streaming HDLC API has been taken out.  
-                                Available as a patch.                 
-
-2.0.6   Aug 17, 1999           Increased debugging in statup scripts
-                               Fixed installation bugs from 2.0.5
-                               Kernel patch works for both 2.2.10 and 2.2.11 kernels.
-                               There is no functional difference between the two packages         
-
-2.0.7   Aug 26, 1999           o  Merged X25API code into WANPIPE.
-                               o  Fixed a memory leak for X25API
-                               o  Updated the X25API code for 2.2.X kernels.
-                               o  Improved NEM handling.   
-
-2.1.0  Oct 25, 1999            o New code for S514 PCI Card
-                               o New CHDLC and Frame Relay drivers
-                               o PPP and X25 are not supported in this release    
-
-2.1.1  Nov 30, 1999            o PPP support for S514 PCI Cards
-
-2.1.3   Apr 06, 2000           o Socket based x25api 
-                               o Socket based chdlc api
-                               o Socket based fr api
-                               o Dual Port Receive only CHDLC support.
-                               o Asynchronous CHDLC support (Secondary Port)
-                               o cfgft1 GUI csu/dsu configurator
-                               o wancfg GUI configuration file 
-                                 configurator.
-                               o Architectural directory changes.
-
-beta-2.1.4 Jul 2000            o Dynamic interface configuration:
-                                       Network interfaces reflect the state
-                                       of protocol layer.  If the protocol becomes
-                                       disconnected, driver will bring down
-                                       the interface.  Once the protocol reconnects
-                                       the interface will be brought up. 
-                                       
-                                       Note: This option is turned off by default.
-
-                               o Dynamic wanrouter setup using 'wanconfig':
-                                       wanconfig utility can be used to
-                                       shutdown,restart,start or reconfigure 
-                                       a virtual circuit dynamically.
-                                    
-                                       Frame Relay:  Each DLCI can be: 
-                                                     created,stopped,restarted and reconfigured
-                                                     dynamically using wanconfig.
-                                       
-                                                     ex: wanconfig card wanpipe1 dev wp1_fr16 up
-                                 
-                               o Wanrouter startup via command line arguments:
-                                       wanconfig also supports wanrouter startup via command line
-                                       arguments.  Thus, there is no need to create a wanpipe#.conf
-                                       configuration file.  
-
-                               o Socket based x25api update/bug fixes.
-                                       Added support for LCN numbers greater than 255.
-                                       Option to pass up modem messages.
-                                       Provided a PCI IRQ check, so a single S514
-                                       card is guaranteed to have a non-sharing interrupt.
-
-                               o Fixes to the wancfg utility.
-                               o New FT1 debugging support via *pipemon utilities.
-                               o Frame Relay ARP support Enabled.
-
-beta3-2.1.4 Jul 2000           o X25 M_BIT Problem fix.
-                               o Added the Multi-Port PPP
-                                 Updated utilities for the Multi-Port PPP.
-
-2.1.4  Aut 2000
-                               o In X25API:
-                                       Maximum packet an application can send
-                                       to the driver has been extended to 4096 bytes.
-
-                                       Fixed the x25 startup bug. Enable 
-                                       communications only after all interfaces
-                                       come up.  HIGH SVC/PVC is used to calculate
-                                       the number of channels.
-                                       Enable protocol only after all interfaces
-                                       are enabled.
-
-                               o Added an extra state to the FT1 config, kernel module.
-                               o Updated the pipemon debuggers.
-
-                               o Blocked the Multi-Port PPP from running on kernels
-                                 2.2.16 or greater, due to syncppp kernel module
-                                 change. 
-         
-beta1-2.1.5    Nov 15 2000
-                               o Fixed the MultiPort PPP Support for kernels 2.2.16 and above.
-                                 2.2.X kernels only
-
-                               o Secured the driver UDP debugging calls
-                                       - All illegal network debugging calls are reported to
-                                         the log.
-                                       - Defined a set of allowed commands, all other denied.
-                                       
-                               o Cpipemon
-                                       - Added set FT1 commands to the cpipemon. Thus CSU/DSU
-                                         configuration can be performed using cpipemon.
-                                         All systems that cannot run cfgft1 GUI utility should
-                                         use cpipemon to configure the on board CSU/DSU.
-
-
-                               o Keyboard Led Monitor/Debugger
-                                       - A new utility /usr/sbin/wpkbdmon uses keyboard leds
-                                         to convey operational statistic information of the 
-                                         Sangoma WANPIPE cards.
-                                       NUM_LOCK    = Line State  (On=connected,    Off=disconnected)
-                                       CAPS_LOCK   = Tx data     (On=transmitting, Off=no tx data)
-                                       SCROLL_LOCK = Rx data     (On=receiving,    Off=no rx data
-                                       
-                               o Hardware probe on module load and dynamic device allocation
-                                       - During WANPIPE module load, all Sangoma cards are probed
-                                         and found information is printed in the /var/log/messages.
-                                       - If no cards are found, the module load fails.
-                                       - Appropriate number of devices are dynamically loaded 
-                                         based on the number of Sangoma cards found.
-
-                                         Note: The kernel configuration option 
-                                               CONFIG_WANPIPE_CARDS has been taken out.
-                                       
-                               o Fixed the Frame Relay and Chdlc network interfaces so they are
-                                 compatible with libpcap libraries.  Meaning, tcpdump, snort,
-                                 ethereal, and all other packet sniffers and debuggers work on
-                                 all WANPIPE network interfaces.
-                                       - Set the network interface encoding type to ARPHRD_PPP.
-                                         This tell the sniffers that data obtained from the
-                                         network interface is in pure IP format.
-                                 Fix for 2.2.X kernels only.
-                               
-                               o True interface encoding option for Frame Relay and CHDLC
-                                       - The above fix sets the network interface encoding
-                                         type to ARPHRD_PPP, however some customers use
-                                         the encoding interface type to determine the
-                                         protocol running.  Therefore, the TURE ENCODING
-                                         option will set the interface type back to the
-                                         original value.  
-
-                                         NOTE: If this option is used with Frame Relay and CHDLC
-                                               libpcap library support will be broken.  
-                                               i.e. tcpdump will not work.
-                                       Fix for 2.2.x Kernels only.
-                                               
-                               o Ethernet Bridgind over Frame Relay
-                                       - The Frame Relay bridging has been developed by 
-                                         Kristian Hoffmann and Mark Wells.  
-                                       - The Linux kernel bridge is used to send ethernet 
-                                         data over the frame relay links.
-                                       For 2.2.X Kernels only.
-
-                               o Added extensive 2.0.X support. Most new features of
-                                 2.1.5 for protocols Frame Relay, PPP and CHDLC are
-                                 supported under 2.0.X kernels. 
-
-beta1-2.2.0    Dec 30 2000
-                               o Updated drivers for 2.4.X kernels.
-                               o Updated drivers for SMP support.
-                               o X25API is now able to share PCI interrupts.
-                               o Took out a general polling routine that was used
-                                 only by X25API. 
-                               o Added appropriate locks to the dynamic reconfiguration
-                                 code.
-                               o Fixed a bug in the keyboard debug monitor.
-
-beta2-2.2.0    Jan 8 2001
-                               o Patches for 2.4.0 kernel
-                               o Patches for 2.2.18 kernel
-                               o Minor updates to PPP and CHLDC drivers.
-                                 Note: No functional difference.
-
-beta3-2.2.9    Jan 10 2001
-                               o I missed the 2.2.18 kernel patches in beta2-2.2.0
-                                 release.  They are included in this release.
-
-Stable Release
-2.2.0          Feb 01 2001
-                               o Bug fix in wancfg GUI configurator.
-                                       The edit function didn't work properly.
-
-
-bata1-2.2.1    Feb 09 2001
-                       o WANPIPE TTY Driver emulation. 
-                         Two modes of operation Sync and Async.
-                               Sync: Using the PPPD daemon, kernel SyncPPP layer
-                                     and the Wanpipe sync TTY driver: a PPP protocol 
-                                     connection can be established via Sangoma adapter, over
-                                     a T1 leased line.
-                       
-                                     The 2.4.0 kernel PPP layer supports MULTILINK
-                                     protocol, that can be used to bundle any number of Sangoma
-                                     adapters (T1 lines) into one, under a single IP address.
-                                     Thus, efficiently obtaining multiple T1 throughput. 
-
-                                     NOTE: The remote side must also implement MULTILINK PPP
-                                           protocol.
-
-                               Async:Using the PPPD daemon, kernel AsyncPPP layer
-                                     and the WANPIPE async TTY driver: a PPP protocol
-                                     connection can be established via Sangoma adapter and
-                                     a modem, over a telephone line.
-
-                                     Thus, the WANPIPE async TTY driver simulates a serial
-                                     TTY driver that would normally be used to interface the 
-                                     MODEM to the linux kernel.
-                               
-                       o WANPIPE PPP Backup Utility
-                               This utility will monitor the state of the PPP T1 line.
-                               In case of failure, a dial up connection will be established
-                               via pppd daemon, ether via a serial tty driver (serial port), 
-                               or a WANPIPE async TTY driver (in case serial port is unavailable).
-                               
-                               Furthermore, while in dial up mode, the primary PPP T1 link
-                               will be monitored for signs of life.  
-
-                               If the PPP T1 link comes back to life, the dial up connection
-                               will be shutdown and T1 line re-established.
-                       
-
-                       o New Setup installation script.
-                               Option to UPGRADE device drivers if the kernel source has
-                               already been patched with WANPIPE.
-
-                               Option to COMPILE WANPIPE modules against the currently 
-                               running kernel, thus no need for manual kernel and module
-                               re-compilation.
-                       
-                       o Updates and Bug Fixes to wancfg utility.
-
-bata2-2.2.1    Feb 20 2001
-
-                       o Bug fixes to the CHDLC device drivers.
-                               The driver had compilation problems under kernels
-                               2.2.14 or lower.
-
-                       o Bug fixes to the Setup installation script.
-                               The device drivers compilation options didn't work
-                               properly.
-
-                       o Update to the wpbackupd daemon.  
-                               Optimized the cross-over times, between the primary
-                               link and the backup dialup.
-
-beta3-2.2.1    Mar 02 2001
-                       o Patches for 2.4.2 kernel.
-
-                       o Bug fixes to util/ make files.
-                       o Bug fixes to the Setup installation script.
-
-                       o Took out the backupd support and made it into
-                         as separate package.
-                         
-beta4-2.2.1     Mar 12 2001
-
-               o Fix to the Frame Relay Device driver.
-                       IPSAC sends a packet of zero length
-                       header to the frame relay driver.  The
-                       driver tries to push its own 2 byte header
-                       into the packet, which causes the driver to
-                       crash.
-
-               o Fix the WANPIPE re-configuration code.
-                       Bug was found by trying to run  the cfgft1 while the
-                       interface was already running.  
-
-               o Updates to cfgft1.
-                       Writes a wanpipe#.cfgft1 configuration file
-                       once the CSU/DSU is configured. This file can
-                       holds the current CSU/DSU configuration.
-
-
-
->>>>>> END OF README <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-
-
index 974ee8d..45b86ab 100644 (file)
@@ -840,15 +840,6 @@ L: linux-wireless@vger.kernel.org
 W:     http://linuxwireless.org/en/users/Drivers/b43
 S:     Maintained
 
-BCM43XX WIRELESS DRIVER (SOFTMAC BASED VERSION)
-P:     Larry Finger
-M:     Larry.Finger@lwfinger.net
-P:     Stefano Brivio
-M:     stefano.brivio@polimi.it
-L:     linux-wireless@vger.kernel.org
-W:     http://bcm43xx.berlios.de/
-S:     Obsolete
-
 BEFS FILE SYSTEM
 P:     Sergey S. Kostyliov
 M:     rathamahata@php4.ru
@@ -3479,7 +3470,7 @@ P:        Vlad Yasevich
 M:     vladislav.yasevich@hp.com
 P:     Sridhar Samudrala
 M:     sri@us.ibm.com
-L:     lksctp-developers@lists.sourceforge.net
+L:     linux-sctp@vger.kernel.org
 W:     http://lksctp.sourceforge.net
 S:     Supported
 
@@ -3613,12 +3604,6 @@ M:       mhoffman@lightlink.com
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
 
-SOFTMAC LAYER (IEEE 802.11)
-P:     Daniel Drake
-M:     dsd@gentoo.org
-L:     linux-wireless@vger.kernel.org
-S:     Obsolete
-
 SOFTWARE RAID (Multiple Disks) SUPPORT
 P:     Ingo Molnar
 M:     mingo@redhat.com
index 969fe9f..3d47839 100644 (file)
@@ -294,7 +294,7 @@ simeth_device_event(struct notifier_block *this,unsigned long event, void *ptr)
                return NOTIFY_DONE;
        }
 
-       if (dev->nd_net != &init_net)
+       if (dev_net(dev) != &init_net)
                return NOTIFY_DONE;
 
        if ( event != NETDEV_UP && event != NETDEV_DOWN ) return NOTIFY_DONE;
index ba93d8a..d5770fd 100644 (file)
@@ -138,7 +138,7 @@ static int __devinit ep8248e_mdio_probe(struct of_device *ofdev,
 
        bus->name = "ep8248e-mdio-bitbang";
        bus->dev = &ofdev->dev;
-       bus->id = res.start;
+       snprintf(bus->id, MII_BUS_ID_SIZE, "%x", res.start);
 
        return mdiobus_register(bus);
 }
index b465429..ab69554 100644 (file)
@@ -241,7 +241,7 @@ static int __devinit gpio_mdio_probe(struct of_device *ofdev,
        new_bus->reset = &gpio_mdio_reset;
 
        prop = of_get_property(np, "reg", NULL);
-       new_bus->id = *prop;
+       snprintf(new_bus->id, MII_BUS_ID_SIZE, "%x", *prop);
        new_bus->priv = priv;
 
        new_bus->phy_mask = 0;
index 2c5388c..3581416 100644 (file)
@@ -341,7 +341,7 @@ static int __init gfar_of_init(void)
                                goto unreg;
                        }
 
-                       gfar_data.bus_id = 0;
+                       snprintf(gfar_data.bus_id, MII_BUS_ID_SIZE, "0");
                        gfar_data.phy_id = fixed_link[0];
                } else {
                        phy = of_find_node_by_phandle(*ph);
@@ -362,7 +362,8 @@ static int __init gfar_of_init(void)
                        }
 
                        gfar_data.phy_id = *id;
-                       gfar_data.bus_id = res.start;
+                       snprintf(gfar_data.bus_id, MII_BUS_ID_SIZE, "%x",
+                                       res.start);
 
                        of_node_put(phy);
                        of_node_put(mdio);
index dcc3ec2..a72f208 100644 (file)
@@ -538,11 +538,9 @@ CONFIG_CTC=m
 # CONFIG_SMSGIUCV is not set
 # CONFIG_CLAW is not set
 CONFIG_QETH=y
-
-#
-# Gigabit Ethernet default settings
-#
-# CONFIG_QETH_IPV6 is not set
+CONFIG_QETH_L2=y
+CONFIG_QETH_L3=y
+CONFIG_QETH_IPV6=y
 CONFIG_CCWGROUP=y
 # CONFIG_PPP is not set
 # CONFIG_SLIP is not set
index 7b44a59..5aa12b0 100644 (file)
@@ -437,7 +437,7 @@ static inline void dump_skb (char * prefix, unsigned int vc, struct sk_buff * sk
 
 /* see limitations under Hardware Features */
 
-static inline int check_area (void * start, size_t length) {
+static int check_area (void * start, size_t length) {
   // assumes length > 0
   const u32 fourmegmask = -1 << 22;
   const u32 twofivesixmask = -1 << 8;
@@ -456,7 +456,7 @@ static inline int check_area (void * start, size_t length) {
 
 /********** free an skb (as per ATM device driver documentation) **********/
 
-static inline void amb_kfree_skb (struct sk_buff * skb) {
+static void amb_kfree_skb (struct sk_buff * skb) {
   if (ATM_SKB(skb)->vcc->pop) {
     ATM_SKB(skb)->vcc->pop (ATM_SKB(skb)->vcc, skb);
   } else {
@@ -466,7 +466,7 @@ static inline void amb_kfree_skb (struct sk_buff * skb) {
 
 /********** TX completion **********/
 
-static inline void tx_complete (amb_dev * dev, tx_out * tx) {
+static void tx_complete (amb_dev * dev, tx_out * tx) {
   tx_simple * tx_descr = bus_to_virt (tx->handle);
   struct sk_buff * skb = tx_descr->skb;
   
@@ -643,7 +643,7 @@ static int command_do (amb_dev * dev, command * cmd) {
 
 /********** TX queue pair **********/
 
-static inline int tx_give (amb_dev * dev, tx_in * tx) {
+static int tx_give (amb_dev * dev, tx_in * tx) {
   amb_txq * txq = &dev->txq;
   unsigned long flags;
   
@@ -675,7 +675,7 @@ static inline int tx_give (amb_dev * dev, tx_in * tx) {
   }
 }
 
-static inline int tx_take (amb_dev * dev) {
+static int tx_take (amb_dev * dev) {
   amb_txq * txq = &dev->txq;
   unsigned long flags;
   
@@ -703,7 +703,7 @@ static inline int tx_take (amb_dev * dev) {
 
 /********** RX queue pairs **********/
 
-static inline int rx_give (amb_dev * dev, rx_in * rx, unsigned char pool) {
+static int rx_give (amb_dev * dev, rx_in * rx, unsigned char pool) {
   amb_rxq * rxq = &dev->rxq[pool];
   unsigned long flags;
   
@@ -728,7 +728,7 @@ static inline int rx_give (amb_dev * dev, rx_in * rx, unsigned char pool) {
   }
 }
 
-static inline int rx_take (amb_dev * dev, unsigned char pool) {
+static int rx_take (amb_dev * dev, unsigned char pool) {
   amb_rxq * rxq = &dev->rxq[pool];
   unsigned long flags;
   
@@ -761,7 +761,7 @@ static inline int rx_take (amb_dev * dev, unsigned char pool) {
 /********** RX Pool handling **********/
 
 /* pre: buffers_wanted = 0, post: pending = 0 */
-static inline void drain_rx_pool (amb_dev * dev, unsigned char pool) {
+static void drain_rx_pool (amb_dev * dev, unsigned char pool) {
   amb_rxq * rxq = &dev->rxq[pool];
   
   PRINTD (DBG_FLOW|DBG_POOL, "drain_rx_pool %p %hu", dev, pool);
@@ -796,7 +796,7 @@ static void drain_rx_pools (amb_dev * dev) {
     drain_rx_pool (dev, pool);
 }
 
-static inline void fill_rx_pool (amb_dev * dev, unsigned char pool,
+static void fill_rx_pool (amb_dev * dev, unsigned char pool,
                                  gfp_t priority)
 {
   rx_in rx;
@@ -846,7 +846,7 @@ static void fill_rx_pools (amb_dev * dev) {
 
 /********** enable host interrupts **********/
 
-static inline void interrupts_on (amb_dev * dev) {
+static void interrupts_on (amb_dev * dev) {
   wr_plain (dev, offsetof(amb_mem, interrupt_control),
            rd_plain (dev, offsetof(amb_mem, interrupt_control))
            | AMB_INTERRUPT_BITS);
@@ -854,7 +854,7 @@ static inline void interrupts_on (amb_dev * dev) {
 
 /********** disable host interrupts **********/
 
-static inline void interrupts_off (amb_dev * dev) {
+static void interrupts_off (amb_dev * dev) {
   wr_plain (dev, offsetof(amb_mem, interrupt_control),
            rd_plain (dev, offsetof(amb_mem, interrupt_control))
            &~ AMB_INTERRUPT_BITS);
index 9b2cf25..c0ac728 100644 (file)
@@ -424,7 +424,7 @@ static inline void FLUSH_RX_CHANNEL (hrz_dev * dev, u16 channel) {
   return;
 }
 
-static inline void WAIT_FLUSH_RX_COMPLETE (hrz_dev * dev) {
+static void WAIT_FLUSH_RX_COMPLETE (hrz_dev * dev) {
   while (rd_regw (dev, RX_CHANNEL_PORT_OFF) & FLUSH_CHANNEL)
     ;
   return;
@@ -435,7 +435,7 @@ static inline void SELECT_RX_CHANNEL (hrz_dev * dev, u16 channel) {
   return;
 }
 
-static inline void WAIT_UPDATE_COMPLETE (hrz_dev * dev) {
+static void WAIT_UPDATE_COMPLETE (hrz_dev * dev) {
   while (rd_regw (dev, RX_CHANNEL_PORT_OFF) & RX_CHANNEL_UPDATE_IN_PROGRESS)
     ;
   return;
@@ -796,7 +796,7 @@ static void hrz_change_vc_qos (ATM_RXER * rxer, MAAL_QOS * qos) {
 
 /********** free an skb (as per ATM device driver documentation) **********/
 
-static inline void hrz_kfree_skb (struct sk_buff * skb) {
+static void hrz_kfree_skb (struct sk_buff * skb) {
   if (ATM_SKB(skb)->vcc->pop) {
     ATM_SKB(skb)->vcc->pop (ATM_SKB(skb)->vcc, skb);
   } else {
@@ -1076,7 +1076,7 @@ static void rx_schedule (hrz_dev * dev, int irq) {
 
 /********** handle RX bus master complete events **********/
 
-static inline void rx_bus_master_complete_handler (hrz_dev * dev) {
+static void rx_bus_master_complete_handler (hrz_dev * dev) {
   if (test_bit (rx_busy, &dev->flags)) {
     rx_schedule (dev, 1);
   } else {
@@ -1089,7 +1089,7 @@ static inline void rx_bus_master_complete_handler (hrz_dev * dev) {
 
 /********** (queue to) become the next TX thread **********/
 
-static inline int tx_hold (hrz_dev * dev) {
+static int tx_hold (hrz_dev * dev) {
   PRINTD (DBG_TX, "sleeping at tx lock %p %lu", dev, dev->flags);
   wait_event_interruptible(dev->tx_queue, (!test_and_set_bit(tx_busy, &dev->flags)));
   PRINTD (DBG_TX, "woken at tx lock %p %lu", dev, dev->flags);
@@ -1232,7 +1232,7 @@ static void tx_schedule (hrz_dev * const dev, int irq) {
 
 /********** handle TX bus master complete events **********/
 
-static inline void tx_bus_master_complete_handler (hrz_dev * dev) {
+static void tx_bus_master_complete_handler (hrz_dev * dev) {
   if (test_bit (tx_busy, &dev->flags)) {
     tx_schedule (dev, 1);
   } else {
@@ -1246,7 +1246,7 @@ static inline void tx_bus_master_complete_handler (hrz_dev * dev) {
 /********** move RX Q pointer to next item in circular buffer **********/
 
 // called only from IRQ sub-handler
-static inline u32 rx_queue_entry_next (hrz_dev * dev) {
+static u32 rx_queue_entry_next (hrz_dev * dev) {
   u32 rx_queue_entry;
   spin_lock (&dev->mem_lock);
   rx_queue_entry = rd_mem (dev, &dev->rx_q_entry->entry);
@@ -1270,7 +1270,7 @@ static inline void rx_disabled_handler (hrz_dev * dev) {
 /********** handle RX data received by device **********/
 
 // called from IRQ handler
-static inline void rx_data_av_handler (hrz_dev * dev) {
+static void rx_data_av_handler (hrz_dev * dev) {
   u32 rx_queue_entry;
   u32 rx_queue_entry_flags;
   u16 rx_len;
@@ -1394,7 +1394,7 @@ static irqreturn_t interrupt_handler(int irq, void *dev_id)
   irq_ok = 0;
   while ((int_source = rd_regl (dev, INT_SOURCE_REG_OFF)
          & INTERESTING_INTERRUPTS)) {
-    // In the interests of fairness, the (inline) handlers below are
+    // In the interests of fairness, the handlers below are
     // called in sequence and without immediate return to the head of
     // the while loop. This is only of issue for slow hosts (or when
     // debugging messages are on). Really slow hosts may find a fast
@@ -1458,7 +1458,7 @@ static void do_housekeeping (unsigned long arg) {
 /********** find an idle channel for TX and set it up **********/
 
 // called with tx_busy set
-static inline short setup_idle_tx_channel (hrz_dev * dev, hrz_vcc * vcc) {
+static short setup_idle_tx_channel (hrz_dev * dev, hrz_vcc * vcc) {
   unsigned short idle_channels;
   short tx_channel = -1;
   unsigned int spin_count;
@@ -1777,13 +1777,13 @@ static void hrz_reset (const hrz_dev * dev) {
 
 /********** read the burnt in address **********/
 
-static inline void WRITE_IT_WAIT (const hrz_dev *dev, u32 ctrl)
+static void WRITE_IT_WAIT (const hrz_dev *dev, u32 ctrl)
 {
        wr_regl (dev, CONTROL_0_REG, ctrl);
        udelay (5);
 }
   
-static inline void CLOCK_IT (const hrz_dev *dev, u32 ctrl)
+static void CLOCK_IT (const hrz_dev *dev, u32 ctrl)
 {
        // DI must be valid around rising SK edge
        WRITE_IT_WAIT(dev, ctrl & ~SEEPROM_SK);
index 8460ef7..18d243c 100644 (file)
@@ -115,7 +115,7 @@ aoenet_rcv(struct sk_buff *skb, struct net_device *ifp, struct packet_type *pt,
        struct aoe_hdr *h;
        u32 n;
 
-       if (ifp->nd_net != &init_net)
+       if (dev_net(ifp) != &init_net)
                goto exit;
 
        skb = skb_share_check(skb, GFP_ATOMIC);
index 8fafac9..54dac06 100644 (file)
                v1.19a 28Oct2002 Davud Ruggiero <jdr@farfalle.com>
                        - Increase *read_eeprom udelay to workaround oops with 2 cards.
                v1.19b 08Nov2002 Marc Zyngier <maz@wild-wind.fr.eu.org>
-                   - Introduce driver model for EISA cards.
+                       - Introduce driver model for EISA cards.
+               v1.20  04Feb2008 Ondrej Zary <linux@rainbow-software.org>
+                       - convert to isa_driver and pnp_driver and some cleanups
 */
 
 #define DRV_NAME       "3c509"
-#define DRV_VERSION    "1.19b"
-#define DRV_RELDATE    "08Nov2002"
+#define DRV_VERSION    "1.20"
+#define DRV_RELDATE    "04Feb2008"
 
 /* A few values that may be tweaked. */
 
 /* Time in jiffies before concluding the transmitter is hung. */
 #define TX_TIMEOUT  (400*HZ/1000)
-/* Maximum events (Rx packets, etc.) to handle at each interrupt. */
-static int max_interrupt_work = 10;
 
 #include <linux/module.h>
-#ifdef CONFIG_MCA
 #include <linux/mca.h>
-#endif
-#include <linux/isapnp.h>
+#include <linux/isa.h>
+#include <linux/pnp.h>
 #include <linux/string.h>
 #include <linux/interrupt.h>
 #include <linux/errno.h>
@@ -97,10 +96,6 @@ static int max_interrupt_work = 10;
 
 static char version[] __initdata = DRV_NAME ".c:" DRV_VERSION " " DRV_RELDATE " becker@scyld.com\n";
 
-#if defined(CONFIG_PM) && (defined(CONFIG_MCA) || defined(CONFIG_EISA))
-#define EL3_SUSPEND
-#endif
-
 #ifdef EL3_DEBUG
 static int el3_debug = EL3_DEBUG;
 #else
@@ -111,6 +106,7 @@ static int el3_debug = 2;
  * a global variable so that the mca/eisa probe routines can increment
  * it */
 static int el3_cards = 0;
+#define EL3_MAX_CARDS 8
 
 /* To minimize the size of the driver source I only define operating
    constants if they are used several times.  You'll need the manual
@@ -119,7 +115,7 @@ static int el3_cards = 0;
 #define EL3_DATA 0x00
 #define EL3_CMD 0x0e
 #define EL3_STATUS 0x0e
-#define         EEPROM_READ 0x80
+#define        EEPROM_READ 0x80
 
 #define EL3_IO_EXTENT  16
 
@@ -168,23 +164,31 @@ enum RxFilter {
  */
 #define SKB_QUEUE_SIZE 64
 
+enum el3_cardtype { EL3_ISA, EL3_PNP, EL3_MCA, EL3_EISA };
+
 struct el3_private {
        struct net_device_stats stats;
-       struct net_device *next_dev;
        spinlock_t lock;
        /* skb send-queue */
        int head, size;
        struct sk_buff *queue[SKB_QUEUE_SIZE];
-       enum {
-               EL3_MCA,
-               EL3_PNP,
-               EL3_EISA,
-       } type;                                         /* type of device */
-       struct device *dev;
+       enum el3_cardtype type;
 };
-static int id_port __initdata = 0x110; /* Start with 0x110 to avoid new sound cards.*/
-static struct net_device *el3_root_dev;
+static int id_port;
+static int current_tag;
+static struct net_device *el3_devs[EL3_MAX_CARDS];
+
+/* Parameters that may be passed into the module. */
+static int debug = -1;
+static int irq[] = {-1, -1, -1, -1, -1, -1, -1, -1};
+/* Maximum events (Rx packets, etc.) to handle at each interrupt. */
+static int max_interrupt_work = 10;
+#ifdef CONFIG_PNP
+static int nopnp;
+#endif
 
+static int __init el3_common_init(struct net_device *dev);
+static void el3_common_remove(struct net_device *dev);
 static ushort id_read_eeprom(int index);
 static ushort read_eeprom(int ioaddr, int index);
 static int el3_open(struct net_device *dev);
@@ -199,7 +203,7 @@ static void el3_tx_timeout (struct net_device *dev);
 static void el3_down(struct net_device *dev);
 static void el3_up(struct net_device *dev);
 static const struct ethtool_ops ethtool_ops;
-#ifdef EL3_SUSPEND
+#ifdef CONFIG_PM
 static int el3_suspend(struct device *, pm_message_t);
 static int el3_resume(struct device *);
 #else
@@ -209,13 +213,272 @@ static int el3_resume(struct device *);
 
 
 /* generic device remove for all device types */
-#if defined(CONFIG_EISA) || defined(CONFIG_MCA)
 static int el3_device_remove (struct device *device);
-#endif
 #ifdef CONFIG_NET_POLL_CONTROLLER
 static void el3_poll_controller(struct net_device *dev);
 #endif
 
+/* Return 0 on success, 1 on error, 2 when found already detected PnP card */
+static int el3_isa_id_sequence(__be16 *phys_addr)
+{
+       short lrs_state = 0xff;
+       int i;
+
+       /* ISA boards are detected by sending the ID sequence to the
+          ID_PORT.  We find cards past the first by setting the 'current_tag'
+          on cards as they are found.  Cards with their tag set will not
+          respond to subsequent ID sequences. */
+
+       outb(0x00, id_port);
+       outb(0x00, id_port);
+       for (i = 0; i < 255; i++) {
+               outb(lrs_state, id_port);
+               lrs_state <<= 1;
+               lrs_state = lrs_state & 0x100 ? lrs_state ^ 0xcf : lrs_state;
+       }
+       /* For the first probe, clear all board's tag registers. */
+       if (current_tag == 0)
+               outb(0xd0, id_port);
+       else                    /* Otherwise kill off already-found boards. */
+               outb(0xd8, id_port);
+       if (id_read_eeprom(7) != 0x6d50)
+               return 1;
+       /* Read in EEPROM data, which does contention-select.
+          Only the lowest address board will stay "on-line".
+          3Com got the byte order backwards. */
+       for (i = 0; i < 3; i++)
+               phys_addr[i] = htons(id_read_eeprom(i));
+#ifdef CONFIG_PNP
+       if (!nopnp) {
+               /* The ISA PnP 3c509 cards respond to the ID sequence too.
+                  This check is needed in order not to register them twice. */
+               for (i = 0; i < el3_cards; i++) {
+                       struct el3_private *lp = netdev_priv(el3_devs[i]);
+                       if (lp->type == EL3_PNP
+                           && !memcmp(phys_addr, el3_devs[i]->dev_addr,
+                                      ETH_ALEN)) {
+                               if (el3_debug > 3)
+                                       printk(KERN_DEBUG "3c509 with address %02x %02x %02x %02x %02x %02x was found by ISAPnP\n",
+                                               phys_addr[0] & 0xff, phys_addr[0] >> 8,
+                                               phys_addr[1] & 0xff, phys_addr[1] >> 8,
+                                               phys_addr[2] & 0xff, phys_addr[2] >> 8);
+                               /* Set the adaptor tag so that the next card can be found. */
+                               outb(0xd0 + ++current_tag, id_port);
+                               return 2;
+                       }
+               }
+       }
+#endif /* CONFIG_PNP */
+       return 0;
+
+}
+
+static void __devinit el3_dev_fill(struct net_device *dev, __be16 *phys_addr,
+                                  int ioaddr, int irq, int if_port,
+                                  enum el3_cardtype type)
+{
+       struct el3_private *lp = netdev_priv(dev);
+
+       memcpy(dev->dev_addr, phys_addr, ETH_ALEN);
+       dev->base_addr = ioaddr;
+       dev->irq = irq;
+       dev->if_port = if_port;
+       lp->type = type;
+}
+
+static int __devinit el3_isa_match(struct device *pdev,
+                                  unsigned int ndev)
+{
+       struct net_device *dev;
+       int ioaddr, isa_irq, if_port, err;
+       unsigned int iobase;
+       __be16 phys_addr[3];
+
+       while ((err = el3_isa_id_sequence(phys_addr)) == 2)
+               ;       /* Skip to next card when PnP card found */
+       if (err == 1)
+               return 0;
+
+       iobase = id_read_eeprom(8);
+       if_port = iobase >> 14;
+       ioaddr = 0x200 + ((iobase & 0x1f) << 4);
+       if (irq[el3_cards] > 1 && irq[el3_cards] < 16)
+               isa_irq = irq[el3_cards];
+       else
+               isa_irq = id_read_eeprom(9) >> 12;
+
+       dev = alloc_etherdev(sizeof(struct el3_private));
+       if (!dev)
+               return -ENOMEM;
+
+       netdev_boot_setup_check(dev);
+
+       if (!request_region(ioaddr, EL3_IO_EXTENT, "3c509-isa")) {
+               free_netdev(dev);
+               return 0;
+       }
+
+       /* Set the adaptor tag so that the next card can be found. */
+       outb(0xd0 + ++current_tag, id_port);
+
+       /* Activate the adaptor at the EEPROM location. */
+       outb((ioaddr >> 4) | 0xe0, id_port);
+
+       EL3WINDOW(0);
+       if (inw(ioaddr) != 0x6d50) {
+               free_netdev(dev);
+               return 0;
+       }
+
+       /* Free the interrupt so that some other card can use it. */
+       outw(0x0f00, ioaddr + WN0_IRQ);
+
+       el3_dev_fill(dev, phys_addr, ioaddr, isa_irq, if_port, EL3_ISA);
+       dev_set_drvdata(pdev, dev);
+       if (el3_common_init(dev)) {
+               free_netdev(dev);
+               return 0;
+       }
+
+       el3_devs[el3_cards++] = dev;
+       return 1;
+}
+
+static int __devexit el3_isa_remove(struct device *pdev,
+                                   unsigned int ndev)
+{
+       el3_device_remove(pdev);
+       dev_set_drvdata(pdev, NULL);
+       return 0;
+}
+
+#ifdef CONFIG_PM
+static int el3_isa_suspend(struct device *dev, unsigned int n,
+                          pm_message_t state)
+{
+       current_tag = 0;
+       return el3_suspend(dev, state);
+}
+
+static int el3_isa_resume(struct device *dev, unsigned int n)
+{
+       struct net_device *ndev = dev_get_drvdata(dev);
+       int ioaddr = ndev->base_addr, err;
+       __be16 phys_addr[3];
+
+       while ((err = el3_isa_id_sequence(phys_addr)) == 2)
+               ;       /* Skip to next card when PnP card found */
+       if (err == 1)
+               return 0;
+       /* Set the adaptor tag so that the next card can be found. */
+       outb(0xd0 + ++current_tag, id_port);
+       /* Enable the card */
+       outb((ioaddr >> 4) | 0xe0, id_port);
+       EL3WINDOW(0);
+       if (inw(ioaddr) != 0x6d50)
+               return 1;
+       /* Free the interrupt so that some other card can use it. */
+       outw(0x0f00, ioaddr + WN0_IRQ);
+       return el3_resume(dev);
+}
+#endif
+
+static struct isa_driver el3_isa_driver = {
+       .match          = el3_isa_match,
+       .remove         = __devexit_p(el3_isa_remove),
+#ifdef CONFIG_PM
+       .suspend        = el3_isa_suspend,
+       .resume         = el3_isa_resume,
+#endif
+       .driver         = {
+               .name   = "3c509"
+       },
+};
+static int isa_registered;
+
+#ifdef CONFIG_PNP
+static struct pnp_device_id el3_pnp_ids[] = {
+       { .id = "TCM5090" }, /* 3Com Etherlink III (TP) */
+       { .id = "TCM5091" }, /* 3Com Etherlink III */
+       { .id = "TCM5094" }, /* 3Com Etherlink III (combo) */
+       { .id = "TCM5095" }, /* 3Com Etherlink III (TPO) */
+       { .id = "TCM5098" }, /* 3Com Etherlink III (TPC) */
+       { .id = "PNP80f7" }, /* 3Com Etherlink III compatible */
+       { .id = "PNP80f8" }, /* 3Com Etherlink III compatible */
+       { .id = "" }
+};
+MODULE_DEVICE_TABLE(pnp, el3_pnp_ids);
+
+static int __devinit el3_pnp_probe(struct pnp_dev *pdev,
+                                   const struct pnp_device_id *id)
+{
+       short i;
+       int ioaddr, irq, if_port;
+       u16 phys_addr[3];
+       struct net_device *dev = NULL;
+       int err;
+
+       ioaddr = pnp_port_start(pdev, 0);
+       if (!request_region(ioaddr, EL3_IO_EXTENT, "3c509-pnp"))
+               return -EBUSY;
+       irq = pnp_irq(pdev, 0);
+       EL3WINDOW(0);
+       for (i = 0; i < 3; i++)
+               phys_addr[i] = htons(read_eeprom(ioaddr, i));
+       if_port = read_eeprom(ioaddr, 8) >> 14;
+       dev = alloc_etherdev(sizeof(struct el3_private));
+       if (!dev) {
+               release_region(ioaddr, EL3_IO_EXTENT);
+               return -ENOMEM;
+       }
+       SET_NETDEV_DEV(dev, &pdev->dev);
+       netdev_boot_setup_check(dev);
+
+       el3_dev_fill(dev, phys_addr, ioaddr, irq, if_port, EL3_PNP);
+       pnp_set_drvdata(pdev, dev);
+       err = el3_common_init(dev);
+
+       if (err) {
+               pnp_set_drvdata(pdev, NULL);
+               free_netdev(dev);
+               return err;
+       }
+
+       el3_devs[el3_cards++] = dev;
+       return 0;
+}
+
+static void __devexit el3_pnp_remove(struct pnp_dev *pdev)
+{
+       el3_common_remove(pnp_get_drvdata(pdev));
+       pnp_set_drvdata(pdev, NULL);
+}
+
+#ifdef CONFIG_PM
+static int el3_pnp_suspend(struct pnp_dev *pdev, pm_message_t state)
+{
+       return el3_suspend(&pdev->dev, state);
+}
+
+static int el3_pnp_resume(struct pnp_dev *pdev)
+{
+       return el3_resume(&pdev->dev);
+}
+#endif
+
+static struct pnp_driver el3_pnp_driver = {
+       .name           = "3c509",
+       .id_table       = el3_pnp_ids,
+       .probe          = el3_pnp_probe,
+       .remove         = __devexit_p(el3_pnp_remove),
+#ifdef CONFIG_PM
+       .suspend        = el3_pnp_suspend,
+       .resume         = el3_pnp_resume,
+#endif
+};
+static int pnp_registered;
+#endif /* CONFIG_PNP */
+
 #ifdef CONFIG_EISA
 static struct eisa_device_id el3_eisa_ids[] = {
                { "TCM5092" },
@@ -230,13 +493,14 @@ static int el3_eisa_probe (struct device *device);
 static struct eisa_driver el3_eisa_driver = {
                .id_table = el3_eisa_ids,
                .driver   = {
-                               .name    = "3c509",
+                               .name    = "3c579",
                                .probe   = el3_eisa_probe,
                                .remove  = __devexit_p (el3_device_remove),
                                .suspend = el3_suspend,
                                .resume  = el3_resume,
                }
 };
+static int eisa_registered;
 #endif
 
 #ifdef CONFIG_MCA
@@ -271,45 +535,9 @@ static struct mca_driver el3_mca_driver = {
                                .resume  = el3_resume,
                },
 };
+static int mca_registered;
 #endif /* CONFIG_MCA */
 
-#if defined(__ISAPNP__)
-static struct isapnp_device_id el3_isapnp_adapters[] __initdata = {
-       {       ISAPNP_ANY_ID, ISAPNP_ANY_ID,
-               ISAPNP_VENDOR('T', 'C', 'M'), ISAPNP_FUNCTION(0x5090),
-               (long) "3Com Etherlink III (TP)" },
-       {       ISAPNP_ANY_ID, ISAPNP_ANY_ID,
-               ISAPNP_VENDOR('T', 'C', 'M'), ISAPNP_FUNCTION(0x5091),
-               (long) "3Com Etherlink III" },
-       {       ISAPNP_ANY_ID, ISAPNP_ANY_ID,
-               ISAPNP_VENDOR('T', 'C', 'M'), ISAPNP_FUNCTION(0x5094),
-               (long) "3Com Etherlink III (combo)" },
-       {       ISAPNP_ANY_ID, ISAPNP_ANY_ID,
-               ISAPNP_VENDOR('T', 'C', 'M'), ISAPNP_FUNCTION(0x5095),
-               (long) "3Com Etherlink III (TPO)" },
-       {       ISAPNP_ANY_ID, ISAPNP_ANY_ID,
-               ISAPNP_VENDOR('T', 'C', 'M'), ISAPNP_FUNCTION(0x5098),
-               (long) "3Com Etherlink III (TPC)" },
-       {       ISAPNP_ANY_ID, ISAPNP_ANY_ID,
-               ISAPNP_VENDOR('P', 'N', 'P'), ISAPNP_FUNCTION(0x80f7),
-               (long) "3Com Etherlink III compatible" },
-       {       ISAPNP_ANY_ID, ISAPNP_ANY_ID,
-               ISAPNP_VENDOR('P', 'N', 'P'), ISAPNP_FUNCTION(0x80f8),
-               (long) "3Com Etherlink III compatible" },
-       { }     /* terminate list */
-};
-
-static __be16 el3_isapnp_phys_addr[8][3];
-static int nopnp;
-#endif /* __ISAPNP__ */
-
-/* With the driver model introduction for EISA devices, both init
- * and cleanup have been split :
- * - EISA devices probe/remove starts in el3_eisa_probe/el3_device_remove
- * - MCA/ISA still use el3_probe
- *
- * Both call el3_common_init/el3_common_remove. */
-
 static int __init el3_common_init(struct net_device *dev)
 {
        struct el3_private *lp = netdev_priv(dev);
@@ -360,231 +588,11 @@ static int __init el3_common_init(struct net_device *dev)
 
 static void el3_common_remove (struct net_device *dev)
 {
-       struct el3_private *lp = netdev_priv(dev);
-
-       (void) lp;                              /* Keep gcc quiet... */
-#if defined(__ISAPNP__)
-       if (lp->type == EL3_PNP)
-               pnp_device_detach(to_pnp_dev(lp->dev));
-#endif
-
        unregister_netdev (dev);
        release_region(dev->base_addr, EL3_IO_EXTENT);
        free_netdev (dev);
 }
 
-static int __init el3_probe(int card_idx)
-{
-       struct net_device *dev;
-       struct el3_private *lp;
-       short lrs_state = 0xff, i;
-       int ioaddr, irq, if_port;
-       __be16 phys_addr[3];
-       static int current_tag;
-       int err = -ENODEV;
-#if defined(__ISAPNP__)
-       static int pnp_cards;
-       struct pnp_dev *idev = NULL;
-       int pnp_found = 0;
-
-       if (nopnp == 1)
-               goto no_pnp;
-
-       for (i=0; el3_isapnp_adapters[i].vendor != 0; i++) {
-               int j;
-               while ((idev = pnp_find_dev(NULL,
-                                           el3_isapnp_adapters[i].vendor,
-                                           el3_isapnp_adapters[i].function,
-                                           idev))) {
-                       if (pnp_device_attach(idev) < 0)
-                               continue;
-                       if (pnp_activate_dev(idev) < 0) {
-__again:
-                               pnp_device_detach(idev);
-                               continue;
-                       }
-                       if (!pnp_port_valid(idev, 0) || !pnp_irq_valid(idev, 0))
-                               goto __again;
-                       ioaddr = pnp_port_start(idev, 0);
-                       if (!request_region(ioaddr, EL3_IO_EXTENT, "3c509 PnP")) {
-                               pnp_device_detach(idev);
-                               return -EBUSY;
-                       }
-                       irq = pnp_irq(idev, 0);
-                       if (el3_debug > 3)
-                               printk ("ISAPnP reports %s at i/o 0x%x, irq %d\n",
-                                       (char*) el3_isapnp_adapters[i].driver_data, ioaddr, irq);
-                       EL3WINDOW(0);
-                       for (j = 0; j < 3; j++)
-                               el3_isapnp_phys_addr[pnp_cards][j] =
-                                       phys_addr[j] =
-                                               htons(read_eeprom(ioaddr, j));
-                       if_port = read_eeprom(ioaddr, 8) >> 14;
-                       dev = alloc_etherdev(sizeof (struct el3_private));
-                       if (!dev) {
-                                       release_region(ioaddr, EL3_IO_EXTENT);
-                                       pnp_device_detach(idev);
-                                       return -ENOMEM;
-                       }
-
-                       SET_NETDEV_DEV(dev, &idev->dev);
-                       pnp_cards++;
-
-                       netdev_boot_setup_check(dev);
-                       pnp_found = 1;
-                       goto found;
-               }
-       }
-no_pnp:
-#endif /* __ISAPNP__ */
-
-       /* Select an open I/O location at 0x1*0 to do contention select. */
-       for ( ; id_port < 0x200; id_port += 0x10) {
-               if (!request_region(id_port, 1, "3c509"))
-                       continue;
-               outb(0x00, id_port);
-               outb(0xff, id_port);
-               if (inb(id_port) & 0x01){
-                       release_region(id_port, 1);
-                       break;
-               } else
-                       release_region(id_port, 1);
-       }
-       if (id_port >= 0x200) {
-               /* Rare -- do we really need a warning? */
-               printk(" WARNING: No I/O port available for 3c509 activation.\n");
-               return -ENODEV;
-       }
-
-       /* Next check for all ISA bus boards by sending the ID sequence to the
-          ID_PORT.  We find cards past the first by setting the 'current_tag'
-          on cards as they are found.  Cards with their tag set will not
-          respond to subsequent ID sequences. */
-
-       outb(0x00, id_port);
-       outb(0x00, id_port);
-       for(i = 0; i < 255; i++) {
-               outb(lrs_state, id_port);
-               lrs_state <<= 1;
-               lrs_state = lrs_state & 0x100 ? lrs_state ^ 0xcf : lrs_state;
-       }
-
-       /* For the first probe, clear all board's tag registers. */
-       if (current_tag == 0)
-               outb(0xd0, id_port);
-       else                            /* Otherwise kill off already-found boards. */
-               outb(0xd8, id_port);
-
-       if (id_read_eeprom(7) != 0x6d50) {
-               return -ENODEV;
-       }
-
-       /* Read in EEPROM data, which does contention-select.
-          Only the lowest address board will stay "on-line".
-          3Com got the byte order backwards. */
-       for (i = 0; i < 3; i++) {
-               phys_addr[i] = htons(id_read_eeprom(i));
-       }
-
-#if defined(__ISAPNP__)
-       if (nopnp == 0) {
-               /* The ISA PnP 3c509 cards respond to the ID sequence.
-                  This check is needed in order not to register them twice. */
-               for (i = 0; i < pnp_cards; i++) {
-                       if (phys_addr[0] == el3_isapnp_phys_addr[i][0] &&
-                           phys_addr[1] == el3_isapnp_phys_addr[i][1] &&
-                           phys_addr[2] == el3_isapnp_phys_addr[i][2])
-                       {
-                               if (el3_debug > 3)
-                                       printk("3c509 with address %02x %02x %02x %02x %02x %02x was found by ISAPnP\n",
-                                               phys_addr[0] & 0xff, phys_addr[0] >> 8,
-                                               phys_addr[1] & 0xff, phys_addr[1] >> 8,
-                                               phys_addr[2] & 0xff, phys_addr[2] >> 8);
-                               /* Set the adaptor tag so that the next card can be found. */
-                               outb(0xd0 + ++current_tag, id_port);
-                               goto no_pnp;
-                       }
-               }
-       }
-#endif /* __ISAPNP__ */
-
-       {
-               unsigned int iobase = id_read_eeprom(8);
-               if_port = iobase >> 14;
-               ioaddr = 0x200 + ((iobase & 0x1f) << 4);
-       }
-       irq = id_read_eeprom(9) >> 12;
-
-       dev = alloc_etherdev(sizeof (struct el3_private));
-       if (!dev)
-               return -ENOMEM;
-
-       netdev_boot_setup_check(dev);
-
-       /* Set passed-in IRQ or I/O Addr. */
-       if (dev->irq > 1  &&  dev->irq < 16)
-                       irq = dev->irq;
-
-       if (dev->base_addr) {
-               if (dev->mem_end == 0x3c509     /* Magic key */
-                   && dev->base_addr >= 0x200  &&  dev->base_addr <= 0x3e0)
-                       ioaddr = dev->base_addr & 0x3f0;
-               else if (dev->base_addr != ioaddr)
-                       goto out;
-       }
-
-       if (!request_region(ioaddr, EL3_IO_EXTENT, "3c509")) {
-               err = -EBUSY;
-               goto out;
-       }
-
-       /* Set the adaptor tag so that the next card can be found. */
-       outb(0xd0 + ++current_tag, id_port);
-
-       /* Activate the adaptor at the EEPROM location. */
-       outb((ioaddr >> 4) | 0xe0, id_port);
-
-       EL3WINDOW(0);
-       if (inw(ioaddr) != 0x6d50)
-               goto out1;
-
-       /* Free the interrupt so that some other card can use it. */
-       outw(0x0f00, ioaddr + WN0_IRQ);
-
-#if defined(__ISAPNP__)
- found:                                                        /* PNP jumps here... */
-#endif /* __ISAPNP__ */
-
-       memcpy(dev->dev_addr, phys_addr, sizeof(phys_addr));
-       dev->base_addr = ioaddr;
-       dev->irq = irq;
-       dev->if_port = if_port;
-       lp = netdev_priv(dev);
-#if defined(__ISAPNP__)
-       lp->dev = &idev->dev;
-       if (pnp_found)
-               lp->type = EL3_PNP;
-#endif
-       err = el3_common_init(dev);
-
-       if (err)
-               goto out1;
-
-       el3_cards++;
-       lp->next_dev = el3_root_dev;
-       el3_root_dev = dev;
-       return 0;
-
-out1:
-#if defined(__ISAPNP__)
-       if (idev)
-               pnp_device_detach(idev);
-#endif
-out:
-       free_netdev(dev);
-       return err;
-}
-
 #ifdef CONFIG_MCA
 static int __init el3_mca_probe(struct device *device)
 {
@@ -596,7 +604,6 @@ static int __init el3_mca_probe(struct device *device)
         * redone for multi-card detection by ZP Gu (zpg@castle.net)
         * now works as a module */
 
-       struct el3_private *lp;
        short i;
        int ioaddr, irq, if_port;
        u16 phys_addr[3];
@@ -613,7 +620,7 @@ static int __init el3_mca_probe(struct device *device)
        irq = pos5 & 0x0f;
 
 
-       printk("3c529: found %s at slot %d\n",
+       printk(KERN_INFO "3c529: found %s at slot %d\n",
                   el3_mca_adapter_names[mdev->index], slot + 1);
 
        /* claim the slot */
@@ -626,7 +633,7 @@ static int __init el3_mca_probe(struct device *device)
        irq = mca_device_transform_irq(mdev, irq);
        ioaddr = mca_device_transform_ioport(mdev, ioaddr);
        if (el3_debug > 2) {
-                       printk("3c529: irq %d  ioaddr 0x%x  ifport %d\n", irq, ioaddr, if_port);
+                       printk(KERN_DEBUG "3c529: irq %d  ioaddr 0x%x  ifport %d\n", irq, ioaddr, if_port);
        }
        EL3WINDOW(0);
        for (i = 0; i < 3; i++) {
@@ -641,13 +648,7 @@ static int __init el3_mca_probe(struct device *device)
 
        netdev_boot_setup_check(dev);
 
-       memcpy(dev->dev_addr, phys_addr, sizeof(phys_addr));
-       dev->base_addr = ioaddr;
-       dev->irq = irq;
-       dev->if_port = if_port;
-       lp = netdev_priv(dev);
-       lp->dev = device;
-       lp->type = EL3_MCA;
+       el3_dev_fill(dev, phys_addr, ioaddr, irq, if_port, EL3_MCA);
        device->driver_data = dev;
        err = el3_common_init(dev);
 
@@ -657,7 +658,7 @@ static int __init el3_mca_probe(struct device *device)
                return -ENOMEM;
        }
 
-       el3_cards++;
+       el3_devs[el3_cards++] = dev;
        return 0;
 }
 
@@ -666,7 +667,6 @@ static int __init el3_mca_probe(struct device *device)
 #ifdef CONFIG_EISA
 static int __init el3_eisa_probe (struct device *device)
 {
-       struct el3_private *lp;
        short i;
        int ioaddr, irq, if_port;
        u16 phys_addr[3];
@@ -678,7 +678,7 @@ static int __init el3_eisa_probe (struct device *device)
        edev = to_eisa_device (device);
        ioaddr = edev->base_addr;
 
-       if (!request_region(ioaddr, EL3_IO_EXTENT, "3c509"))
+       if (!request_region(ioaddr, EL3_IO_EXTENT, "3c579-eisa"))
                return -EBUSY;
 
        /* Change the register set to the configuration window 0. */
@@ -700,13 +700,7 @@ static int __init el3_eisa_probe (struct device *device)
 
        netdev_boot_setup_check(dev);
 
-       memcpy(dev->dev_addr, phys_addr, sizeof(phys_addr));
-       dev->base_addr = ioaddr;
-       dev->irq = irq;
-       dev->if_port = if_port;
-       lp = netdev_priv(dev);
-       lp->dev = device;
-       lp->type = EL3_EISA;
+       el3_dev_fill(dev, phys_addr, ioaddr, irq, if_port, EL3_EISA);
        eisa_set_drvdata (edev, dev);
        err = el3_common_init(dev);
 
@@ -716,12 +710,11 @@ static int __init el3_eisa_probe (struct device *device)
                return err;
        }
 
-       el3_cards++;
+       el3_devs[el3_cards++] = dev;
        return 0;
 }
 #endif
 
-#if defined(CONFIG_EISA) || defined(CONFIG_MCA)
 /* This remove works for all device types.
  *
  * The net dev must be stored in the driver_data field */
@@ -734,7 +727,6 @@ static int __devexit el3_device_remove (struct device *device)
        el3_common_remove (dev);
        return 0;
 }
-#endif
 
 /* Read a word from the EEPROM using the regular EEPROM access register.
    Assume that we are in register window zero.
@@ -749,7 +741,7 @@ static ushort read_eeprom(int ioaddr, int index)
 }
 
 /* Read a word from the EEPROM when in the ISA ID probe state. */
-static ushort __init id_read_eeprom(int index)
+static ushort id_read_eeprom(int index)
 {
        int bit, word = 0;
 
@@ -765,7 +757,7 @@ static ushort __init id_read_eeprom(int index)
                word = (word << 1) + (inb(id_port) & 0x01);
 
        if (el3_debug > 3)
-               printk("  3c509 EEPROM word %d %#4.4x.\n", index, word);
+               printk(KERN_DEBUG "  3c509 EEPROM word %d %#4.4x.\n", index, word);
 
        return word;
 }
@@ -787,13 +779,13 @@ el3_open(struct net_device *dev)
 
        EL3WINDOW(0);
        if (el3_debug > 3)
-               printk("%s: Opening, IRQ %d      status@%x %4.4x.\n", dev->name,
+               printk(KERN_DEBUG "%s: Opening, IRQ %d   status@%x %4.4x.\n", dev->name,
                           dev->irq, ioaddr + EL3_STATUS, inw(ioaddr + EL3_STATUS));
 
        el3_up(dev);
 
        if (el3_debug > 3)
-               printk("%s: Opened 3c509  IRQ %d  status %4.4x.\n",
+               printk(KERN_DEBUG "%s: Opened 3c509  IRQ %d  status %4.4x.\n",
                           dev->name, dev->irq, inw(ioaddr + EL3_STATUS));
 
        return 0;
@@ -806,7 +798,7 @@ el3_tx_timeout (struct net_device *dev)
        int ioaddr = dev->base_addr;
 
        /* Transmitter timeout, serious problems. */
-       printk("%s: transmit timed out, Tx_status %2.2x status %4.4x "
+       printk(KERN_WARNING "%s: transmit timed out, Tx_status %2.2x status %4.4x "
                   "Tx FIFO room %d.\n",
                   dev->name, inb(ioaddr + TX_STATUS), inw(ioaddr + EL3_STATUS),
                   inw(ioaddr + TX_FREE));
@@ -831,7 +823,7 @@ el3_start_xmit(struct sk_buff *skb, struct net_device *dev)
        lp->stats.tx_bytes += skb->len;
 
        if (el3_debug > 4) {
-               printk("%s: el3_start_xmit(length = %u) called, status %4.4x.\n",
+               printk(KERN_DEBUG "%s: el3_start_xmit(length = %u) called, status %4.4x.\n",
                           dev->name, skb->len, inw(ioaddr + EL3_STATUS));
        }
 #if 0
@@ -840,7 +832,7 @@ el3_start_xmit(struct sk_buff *skb, struct net_device *dev)
                ushort status = inw(ioaddr + EL3_STATUS);
                if (status & 0x0001             /* IRQ line active, missed one. */
                        && inw(ioaddr + EL3_STATUS) & 1) {                      /* Make sure. */
-                       printk("%s: Missed interrupt, status then %04x now %04x"
+                       printk(KERN_DEBUG "%s: Missed interrupt, status then %04x now %04x"
                                   "  Tx %2.2x Rx %4.4x.\n", dev->name, status,
                                   inw(ioaddr + EL3_STATUS), inb(ioaddr + TX_STATUS),
                                   inw(ioaddr + RX_STATUS));
@@ -914,7 +906,7 @@ el3_interrupt(int irq, void *dev_id)
 
        if (el3_debug > 4) {
                status = inw(ioaddr + EL3_STATUS);
-               printk("%s: interrupt, status %4.4x.\n", dev->name, status);
+               printk(KERN_DEBUG "%s: interrupt, status %4.4x.\n", dev->name, status);
        }
 
        while ((status = inw(ioaddr + EL3_STATUS)) &
@@ -925,7 +917,7 @@ el3_interrupt(int irq, void *dev_id)
 
                if (status & TxAvailable) {
                        if (el3_debug > 5)
-                               printk("        TX room bit was handled.\n");
+                               printk(KERN_DEBUG "     TX room bit was handled.\n");
                        /* There's room in the FIFO for a full-sized packet. */
                        outw(AckIntr | TxAvailable, ioaddr + EL3_CMD);
                        netif_wake_queue (dev);
@@ -964,7 +956,7 @@ el3_interrupt(int irq, void *dev_id)
                }
 
                if (--i < 0) {
-                       printk("%s: Infinite loop in interrupt, status %4.4x.\n",
+                       printk(KERN_ERR "%s: Infinite loop in interrupt, status %4.4x.\n",
                                   dev->name, status);
                        /* Clear all interrupts. */
                        outw(AckIntr | 0xFF, ioaddr + EL3_CMD);
@@ -975,7 +967,7 @@ el3_interrupt(int irq, void *dev_id)
        }
 
        if (el3_debug > 4) {
-               printk("%s: exiting interrupt, status %4.4x.\n", dev->name,
+               printk(KERN_DEBUG "%s: exiting interrupt, status %4.4x.\n", dev->name,
                           inw(ioaddr + EL3_STATUS));
        }
        spin_unlock(&lp->lock);
@@ -1450,7 +1442,7 @@ el3_up(struct net_device *dev)
 }
 
 /* Power Management support functions */
-#ifdef EL3_SUSPEND
+#ifdef CONFIG_PM
 
 static int
 el3_suspend(struct device *pdev, pm_message_t state)
@@ -1500,79 +1492,102 @@ el3_resume(struct device *pdev)
        return 0;
 }
 
-#endif /* EL3_SUSPEND */
-
-/* Parameters that may be passed into the module. */
-static int debug = -1;
-static int irq[] = {-1, -1, -1, -1, -1, -1, -1, -1};
-static int xcvr[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
+#endif /* CONFIG_PM */
 
 module_param(debug,int, 0);
 module_param_array(irq, int, NULL, 0);
-module_param_array(xcvr, int, NULL, 0);
 module_param(max_interrupt_work, int, 0);
 MODULE_PARM_DESC(debug, "debug level (0-6)");
 MODULE_PARM_DESC(irq, "IRQ number(s) (assigned)");
-MODULE_PARM_DESC(xcvr,"transceiver(s) (0=internal, 1=external)");
 MODULE_PARM_DESC(max_interrupt_work, "maximum events handled per interrupt");
-#if defined(__ISAPNP__)
+#ifdef CONFIG_PNP
 module_param(nopnp, int, 0);
 MODULE_PARM_DESC(nopnp, "disable ISA PnP support (0-1)");
-MODULE_DEVICE_TABLE(isapnp, el3_isapnp_adapters);
-#endif /* __ISAPNP__ */
-MODULE_DESCRIPTION("3Com Etherlink III (3c509, 3c509B) ISA/PnP ethernet driver");
+#endif /* CONFIG_PNP */
+MODULE_DESCRIPTION("3Com Etherlink III (3c509, 3c509B, 3c529, 3c579) ethernet driver");
 MODULE_LICENSE("GPL");
 
 static int __init el3_init_module(void)
 {
        int ret = 0;
-       el3_cards = 0;
 
        if (debug >= 0)
                el3_debug = debug;
 
-       el3_root_dev = NULL;
-       while (el3_probe(el3_cards) == 0) {
-               if (irq[el3_cards] > 1)
-                       el3_root_dev->irq = irq[el3_cards];
-               if (xcvr[el3_cards] >= 0)
-                       el3_root_dev->if_port = xcvr[el3_cards];
-               el3_cards++;
+#ifdef CONFIG_PNP
+       if (!nopnp) {
+               ret = pnp_register_driver(&el3_pnp_driver);
+               if (!ret)
+                       pnp_registered = 1;
+       }
+#endif
+       /* Select an open I/O location at 0x1*0 to do ISA contention select. */
+       /* Start with 0x110 to avoid some sound cards.*/
+       for (id_port = 0x110 ; id_port < 0x200; id_port += 0x10) {
+               if (!request_region(id_port, 1, "3c509-control"))
+                       continue;
+               outb(0x00, id_port);
+               outb(0xff, id_port);
+               if (inb(id_port) & 0x01)
+                       break;
+               else
+                       release_region(id_port, 1);
+       }
+       if (id_port >= 0x200) {
+               id_port = 0;
+               printk(KERN_ERR "No I/O port available for 3c509 activation.\n");
+       } else {
+               ret = isa_register_driver(&el3_isa_driver, EL3_MAX_CARDS);
+               if (!ret)
+                       isa_registered = 1;
        }
-
 #ifdef CONFIG_EISA
        ret = eisa_driver_register(&el3_eisa_driver);
+       if (!ret)
+               eisa_registered = 1;
 #endif
 #ifdef CONFIG_MCA
-       {
-               int err = mca_register_driver(&el3_mca_driver);
-               if (ret == 0)
-                       ret = err;
-       }
+       ret = mca_register_driver(&el3_mca_driver);
+       if (!ret)
+               mca_registered = 1;
+#endif
+
+#ifdef CONFIG_PNP
+       if (pnp_registered)
+               ret = 0;
+#endif
+       if (isa_registered)
+               ret = 0;
+#ifdef CONFIG_EISA
+       if (eisa_registered)
+               ret = 0;
+#endif
+#ifdef CONFIG_MCA
+       if (mca_registered)
+               ret = 0;
 #endif
        return ret;
 }
 
 static void __exit el3_cleanup_module(void)
 {
-       struct net_device *next_dev;
-
-       while (el3_root_dev) {
-               struct el3_private *lp = netdev_priv(el3_root_dev);
-
-               next_dev = lp->next_dev;
-               el3_common_remove (el3_root_dev);
-               el3_root_dev = next_dev;
-       }
-
+#ifdef CONFIG_PNP
+       if (pnp_registered)
+               pnp_unregister_driver(&el3_pnp_driver);
+#endif
+       if (isa_registered)
+               isa_unregister_driver(&el3_isa_driver);
+       if (id_port)
+               release_region(id_port, 1);
 #ifdef CONFIG_EISA
-       eisa_driver_unregister (&el3_eisa_driver);
+       if (eisa_registered)
+               eisa_driver_unregister(&el3_eisa_driver);
 #endif
 #ifdef CONFIG_MCA
-       mca_unregister_driver(&el3_mca_driver);
+       if (mca_registered)
+               mca_unregister_driver(&el3_mca_driver);
 #endif
 }
 
 module_init (el3_init_module);
 module_exit (el3_cleanup_module);
-
index be6e918..53bd903 100644 (file)
@@ -966,8 +966,8 @@ static int __devinit rtl8139_init_one (struct pci_dev *pdev,
 
        addr_len = read_eeprom (ioaddr, 0, 8) == 0x8129 ? 8 : 6;
        for (i = 0; i < 3; i++)
-               ((u16 *) (dev->dev_addr))[i] =
-                   le16_to_cpu (read_eeprom (ioaddr, i + 7, addr_len));
+               ((__le16 *) (dev->dev_addr))[i] =
+                   cpu_to_le16(read_eeprom (ioaddr, i + 7, addr_len));
        memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
 
        /* The Rtl8139-specific entries in the device structure. */
@@ -1373,8 +1373,8 @@ static void rtl8139_hw_start (struct net_device *dev)
        /* unlock Config[01234] and BMCR register writes */
        RTL_W8_F (Cfg9346, Cfg9346_Unlock);
        /* Restore our idea of the MAC address. */
-       RTL_W32_F (MAC0 + 0, cpu_to_le32 (*(u32 *) (dev->dev_addr + 0)));
-       RTL_W32_F (MAC0 + 4, cpu_to_le32 (*(u32 *) (dev->dev_addr + 4)));
+       RTL_W32_F (MAC0 + 0, le32_to_cpu (*(__le32 *) (dev->dev_addr + 0)));
+       RTL_W32_F (MAC0 + 4, le16_to_cpu (*(__le16 *) (dev->dev_addr + 4)));
 
        /* Must enable Tx/Rx before setting transfer thresholds! */
        RTL_W8 (ChipCmd, CmdRxEnb | CmdTxEnb);
@@ -1945,7 +1945,7 @@ static int rtl8139_rx(struct net_device *dev, struct rtl8139_private *tp,
                rmb();
 
                /* read size+status of next frame from DMA ring buffer */
-               rx_status = le32_to_cpu (*(u32 *) (rx_ring + ring_offset));
+               rx_status = le32_to_cpu (*(__le32 *) (rx_ring + ring_offset));
                rx_size = rx_status >> 16;
                pkt_size = rx_size - 4;
 
index a828076..a499e86 100644 (file)
@@ -48,14 +48,16 @@ EXPORT_SYMBOL(__alloc_ei_netdev);
 
 #if defined(MODULE)
 
-int init_module(void)
+static int __init ns8390_module_init(void)
 {
        return 0;
 }
 
-void cleanup_module(void)
+static void __exit ns8390_module_exit(void)
 {
 }
 
+module_init(ns8390_module_init);
+module_exit(ns8390_module_exit);
 #endif /* MODULE */
 MODULE_LICENSE("GPL");
index 3a0b20a..45c3a20 100644 (file)
@@ -467,6 +467,13 @@ config SNI_82596
          Say Y here to support the on-board Intel 82596 ethernet controller
          built into SNI RM machines.
 
+config KORINA
+       tristate "Korina (IDT RC32434) Ethernet support"
+       depends on NET_ETHERNET && MIKROTIK_RB500
+       help
+         If you have a Mikrotik RouterBoard 500 or IDT RC32434
+         based system say Y. Otherwise say N.
+
 config MIPS_JAZZ_SONIC
        tristate "MIPS JAZZ onboard SONIC Ethernet support"
        depends on MACH_JAZZ
@@ -1431,7 +1438,7 @@ config CS89x0
 config TC35815
        tristate "TOSHIBA TC35815 Ethernet support"
        depends on NET_PCI && PCI && MIPS
-       select MII
+       select PHYLIB
 
 config EEPRO100
        tristate "EtherExpressPro/100 support (eepro100, original Becker driver)"
@@ -2220,93 +2227,6 @@ config SKY2_DEBUG
 
         If unsure, say N.
 
-config SK98LIN
-       tristate "Marvell Yukon Chipset / SysKonnect SK-98xx Support (DEPRECATED)"
-       depends on PCI
-       ---help---
-         Say Y here if you have a Marvell Yukon or SysKonnect SK-98xx/SK-95xx
-         compliant Gigabit Ethernet Adapter.
-
-         This driver supports the original Yukon chipset. This driver is
-         deprecated and will be removed from the kernel in the near future,
-         it has been replaced by the skge driver. skge is cleaner and
-         seems to work better.
-
-         This driver does not support the newer Yukon2 chipset. A separate
-         driver, sky2, is provided to support Yukon2-based adapters.
-
-         The following adapters are supported by this driver:
-           - 3Com 3C940 Gigabit LOM Ethernet Adapter
-           - 3Com 3C941 Gigabit LOM Ethernet Adapter
-           - Allied Telesyn AT-2970LX Gigabit Ethernet Adapter
-           - Allied Telesyn AT-2970LX/2SC Gigabit Ethernet Adapter
-           - Allied Telesyn AT-2970SX Gigabit Ethernet Adapter
-           - Allied Telesyn AT-2970SX/2SC Gigabit Ethernet Adapter
-           - Allied Telesyn AT-2970TX Gigabit Ethernet Adapter
-           - Allied Telesyn AT-2970TX/2TX Gigabit Ethernet Adapter
-           - Allied Telesyn AT-2971SX Gigabit Ethernet Adapter
-           - Allied Telesyn AT-2971T Gigabit Ethernet Adapter
-           - Belkin Gigabit Desktop Card 10/100/1000Base-T Adapter, Copper RJ-45
-           - EG1032 v2 Instant Gigabit Network Adapter
-           - EG1064 v2 Instant Gigabit Network Adapter
-           - Marvell 88E8001 Gigabit LOM Ethernet Adapter (Abit)
-           - Marvell 88E8001 Gigabit LOM Ethernet Adapter (Albatron)
-           - Marvell 88E8001 Gigabit LOM Ethernet Adapter (Asus)
-           - Marvell 88E8001 Gigabit LOM Ethernet Adapter (ECS)
-           - Marvell 88E8001 Gigabit LOM Ethernet Adapter (Epox)
-           - Marvell 88E8001 Gigabit LOM Ethernet Adapter (Foxconn)
-           - Marvell 88E8001 Gigabit LOM Ethernet Adapter (Gigabyte)
-           - Marvell 88E8001 Gigabit LOM Ethernet Adapter (Iwill)
-           - Marvell 88E8050 Gigabit LOM Ethernet Adapter (Intel)
-           - Marvell RDK-8001 Adapter
-           - Marvell RDK-8002 Adapter
-           - Marvell RDK-8003 Adapter
-           - Marvell RDK-8004 Adapter
-           - Marvell RDK-8006 Adapter
-           - Marvell RDK-8007 Adapter
-           - Marvell RDK-8008 Adapter
-           - Marvell RDK-8009 Adapter
-           - Marvell RDK-8010 Adapter
-           - Marvell RDK-8011 Adapter
-           - Marvell RDK-8012 Adapter
-           - Marvell RDK-8052 Adapter
-           - Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Adapter (32 bit)
-           - Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Adapter (64 bit)
-           - N-Way PCI-Bus Giga-Card 1000/100/10Mbps(L)
-           - SK-9521 10/100/1000Base-T Adapter
-           - SK-9521 V2.0 10/100/1000Base-T Adapter
-           - SK-9821 Gigabit Ethernet Server Adapter (SK-NET GE-T)
-           - SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter
-           - SK-9822 Gigabit Ethernet Server Adapter (SK-NET GE-T dual link)
-           - SK-9841 Gigabit Ethernet Server Adapter (SK-NET GE-LX)
-           - SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter
-           - SK-9842 Gigabit Ethernet Server Adapter (SK-NET GE-LX dual link)
-           - SK-9843 Gigabit Ethernet Server Adapter (SK-NET GE-SX)
-           - SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter
-           - SK-9844 Gigabit Ethernet Server Adapter (SK-NET GE-SX dual link)
-           - SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter
-           - SK-9861 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition)
-           - SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter
-           - SK-9862 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition dual link)
-           - SK-9871 Gigabit Ethernet Server Adapter (SK-NET GE-ZX)
-           - SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter
-           - SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link)
-           - SMC EZ Card 1000 (SMC9452TXV.2)
-         
-         The adapters support Jumbo Frames.
-         The dual link adapters support link-failover and dual port features.
-         Both Marvell Yukon and SysKonnect SK-98xx/SK-95xx adapters support 
-         the scatter-gather functionality with sendfile(). Please refer to 
-         <file:Documentation/networking/sk98lin.txt> for more information about
-         optional driver parameters.
-         Questions concerning this driver may be addressed to:
-             <linux@syskonnect.de>
-         
-         If you want to compile this driver as a module ( = code which can be
-         inserted in and removed from the running kernel whenever you want),
-         say M here and read <file:Documentation/kbuild/modules.txt>. The module will
-         be called sk98lin. This is recommended.
-
 config VIA_VELOCITY
        tristate "VIA Velocity support"
        depends on PCI
index 3b1ea32..4d71729 100644 (file)
@@ -15,7 +15,7 @@ obj-$(CONFIG_CHELSIO_T3) += cxgb3/
 obj-$(CONFIG_EHEA) += ehea/
 obj-$(CONFIG_CAN) += can/
 obj-$(CONFIG_BONDING) += bonding/
-obj-$(CONFIG_ATL1) += atl1/
+obj-$(CONFIG_ATL1) += atlx/
 obj-$(CONFIG_GIANFAR) += gianfar_driver.o
 obj-$(CONFIG_TEHUTI) += tehuti.o
 
@@ -75,7 +75,6 @@ ps3_gelic-objs += ps3_gelic_net.o $(gelic_wireless-y)
 obj-$(CONFIG_TC35815) += tc35815.o
 obj-$(CONFIG_SKGE) += skge.o
 obj-$(CONFIG_SKY2) += sky2.o
-obj-$(CONFIG_SK98LIN) += sk98lin/
 obj-$(CONFIG_SKFP) += skfp/
 obj-$(CONFIG_VIA_RHINE) += via-rhine.o
 obj-$(CONFIG_VIA_VELOCITY) += via-velocity.o
@@ -191,6 +190,7 @@ obj-$(CONFIG_ZORRO8390) += zorro8390.o
 obj-$(CONFIG_HPLANCE) += hplance.o 7990.o
 obj-$(CONFIG_MVME147_NET) += mvme147.o 7990.o
 obj-$(CONFIG_EQUALIZER) += eql.o
+obj-$(CONFIG_KORINA) += korina.o
 obj-$(CONFIG_MIPS_JAZZ_SONIC) += jazzsonic.o
 obj-$(CONFIG_MIPS_AU1X00_ENET) += au1000_eth.o
 obj-$(CONFIG_MIPS_SIM_NET) += mipsnet.o
index 92c3a4c..65b901e 100644 (file)
@@ -1010,7 +1010,7 @@ module_param(io, int, 0);
 module_param(irq, int, 0);
 module_param(board_type, int, 0);
 
-int __init init_module(void)
+static int __init cops_module_init(void)
 {
        if (io == 0)
                printk(KERN_WARNING "%s: You shouldn't autoprobe with insmod\n",
@@ -1021,12 +1021,14 @@ int __init init_module(void)
         return 0;
 }
 
-void __exit cleanup_module(void)
+static void __exit cops_module_exit(void)
 {
        unregister_netdev(cops_dev);
        cleanup_card(cops_dev);
        free_netdev(cops_dev);
 }
+module_init(cops_module_init);
+module_exit(cops_module_exit);
 #endif /* MODULE */
 
 /*
index c59c806..bdc4c0b 100644 (file)
@@ -940,7 +940,7 @@ irqreturn_t arcnet_interrupt(int irq, void *dev_id)
 
                        /* is the RECON info empty or old? */
                        if (!lp->first_recon || !lp->last_recon ||
-                           jiffies - lp->last_recon > HZ * 10) {
+                           time_after(jiffies, lp->last_recon + HZ * 10)) {
                                if (lp->network_down)
                                        BUGMSG(D_NORMAL, "reconfiguration detected: cabling restored?\n");
                                lp->first_recon = lp->last_recon = jiffies;
@@ -974,7 +974,8 @@ irqreturn_t arcnet_interrupt(int irq, void *dev_id)
                                        lp->num_recons = 1;
                                }
                        }
-               } else if (lp->network_down && jiffies - lp->last_recon > HZ * 10) {
+               } else if (lp->network_down &&
+                               time_after(jiffies, lp->last_recon + HZ * 10)) {
                        if (lp->network_down)
                                BUGMSG(D_NORMAL, "cabling restored?\n");
                        lp->first_recon = lp->last_recon = 0;
index 7cf0a25..8b51313 100644 (file)
@@ -348,14 +348,15 @@ MODULE_LICENSE("GPL");
 
 #ifdef MODULE
 
-int init_module(void)
+static int __init com20020_module_init(void)
 {
        BUGLVL(D_NORMAL) printk(VERSION);
        return 0;
 }
 
-void cleanup_module(void)
+static void __exit com20020_module_exit(void)
 {
 }
-
+module_init(com20020_module_init);
+module_exit(com20020_module_exit);
 #endif                         /* MODULE */
index 24d81f9..7e874d4 100644 (file)
@@ -881,7 +881,7 @@ MODULE_PARM_DESC(io, "AT1700/FMV18X I/O base address");
 MODULE_PARM_DESC(irq, "AT1700/FMV18X IRQ number");
 MODULE_PARM_DESC(net_debug, "AT1700/FMV18X debug level (0-6)");
 
-int __init init_module(void)
+static int __init at1700_module_init(void)
 {
        if (io == 0)
                printk("at1700: You should not use auto-probing with insmod!\n");
@@ -891,13 +891,14 @@ int __init init_module(void)
        return 0;
 }
 
-void __exit
-cleanup_module(void)
+static void __exit at1700_module_exit(void)
 {
        unregister_netdev(dev_at1700);
        cleanup_card(dev_at1700);
        free_netdev(dev_at1700);
 }
+module_init(at1700_module_init);
+module_exit(at1700_module_exit);
 #endif /* MODULE */
 MODULE_LICENSE("GPL");
 
index 13c293b..4cceaac 100644 (file)
@@ -1155,7 +1155,7 @@ static int lance_set_mac_address( struct net_device *dev, void *addr )
 #ifdef MODULE
 static struct net_device *atarilance_dev;
 
-int __init init_module(void)
+static int __init atarilance_module_init(void)
 {
        atarilance_dev = atarilance_probe(-1);
        if (IS_ERR(atarilance_dev))
@@ -1163,13 +1163,14 @@ int __init init_module(void)
        return 0;
 }
 
-void __exit cleanup_module(void)
+static void __exit atarilance_module_exit(void)
 {
        unregister_netdev(atarilance_dev);
        free_irq(atarilance_dev->irq, atarilance_dev);
        free_netdev(atarilance_dev);
 }
-
+module_init(atarilance_module_init);
+module_exit(atarilance_module_exit);
 #endif /* MODULE */
 
 
diff --git a/drivers/net/atl1/Makefile b/drivers/net/atl1/Makefile
deleted file mode 100644 (file)
index a6b707e..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-obj-$(CONFIG_ATL1)     += atl1.o
-atl1-y                 += atl1_main.o atl1_hw.o atl1_ethtool.o atl1_param.o
diff --git a/drivers/net/atl1/atl1.h b/drivers/net/atl1/atl1.h
deleted file mode 100644 (file)
index ff4765f..0000000
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * Copyright(c) 2005 - 2006 Attansic Corporation. All rights reserved.
- * Copyright(c) 2006 Chris Snook <csnook@redhat.com>
- * Copyright(c) 2006 Jay Cliburn <jcliburn@gmail.com>
- *
- * Derived from Intel e1000 driver
- * Copyright(c) 1999 - 2005 Intel Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- */
-
-#ifndef _ATL1_H_
-#define _ATL1_H_
-
-#include <linux/types.h>
-#include <linux/if_vlan.h>
-
-#include "atl1_hw.h"
-
-/* function prototypes needed by multiple files */
-s32 atl1_up(struct atl1_adapter *adapter);
-void atl1_down(struct atl1_adapter *adapter);
-int atl1_reset(struct atl1_adapter *adapter);
-s32 atl1_setup_ring_resources(struct atl1_adapter *adapter);
-void atl1_free_ring_resources(struct atl1_adapter *adapter);
-
-extern char atl1_driver_name[];
-extern char atl1_driver_version[];
-extern const struct ethtool_ops atl1_ethtool_ops;
-
-struct atl1_adapter;
-
-#define ATL1_MAX_INTR          3
-#define ATL1_MAX_TX_BUF_LEN    0x3000  /* 12288 bytes */
-
-#define ATL1_DEFAULT_TPD       256
-#define ATL1_MAX_TPD           1024
-#define ATL1_MIN_TPD           64
-#define ATL1_DEFAULT_RFD       512
-#define ATL1_MIN_RFD           128
-#define ATL1_MAX_RFD           2048
-
-#define ATL1_GET_DESC(R, i, type)      (&(((type *)((R)->desc))[i]))
-#define ATL1_RFD_DESC(R, i)    ATL1_GET_DESC(R, i, struct rx_free_desc)
-#define ATL1_TPD_DESC(R, i)    ATL1_GET_DESC(R, i, struct tx_packet_desc)
-#define ATL1_RRD_DESC(R, i)    ATL1_GET_DESC(R, i, struct rx_return_desc)
-
-/*
- * This detached comment is preserved for documentation purposes only.
- * It was originally attached to some code that got deleted, but seems
- * important enough to keep around...
- *
- * <begin detached comment>
- * Some workarounds require millisecond delays and are run during interrupt
- * context.  Most notably, when establishing link, the phy may need tweaking
- * but cannot process phy register reads/writes faster than millisecond
- * intervals...and we establish link due to a "link status change" interrupt.
- * <end detached comment>
- */
-
-/*
- * atl1_ring_header represents a single, contiguous block of DMA space
- * mapped for the three descriptor rings (tpd, rfd, rrd) and the two
- * message blocks (cmb, smb) described below
- */
-struct atl1_ring_header {
-       void *desc;             /* virtual address */
-       dma_addr_t dma;         /* physical address*/
-       unsigned int size;      /* length in bytes */
-};
-
-/*
- * atl1_buffer is wrapper around a pointer to a socket buffer
- * so a DMA handle can be stored along with the skb
- */
-struct atl1_buffer {
-       struct sk_buff *skb;    /* socket buffer */
-       u16 length;             /* rx buffer length */
-       u16 alloced;            /* 1 if skb allocated */
-       dma_addr_t dma;
-};
-
-/* transmit packet descriptor (tpd) ring */
-struct atl1_tpd_ring {
-       void *desc;             /* descriptor ring virtual address */
-       dma_addr_t dma;         /* descriptor ring physical address */
-       u16 size;               /* descriptor ring length in bytes */
-       u16 count;              /* number of descriptors in the ring */
-       u16 hw_idx;             /* hardware index */
-       atomic_t next_to_clean;
-       atomic_t next_to_use;
-       struct atl1_buffer *buffer_info;
-};
-
-/* receive free descriptor (rfd) ring */
-struct atl1_rfd_ring {
-       void *desc;             /* descriptor ring virtual address */
-       dma_addr_t dma;         /* descriptor ring physical address */
-       u16 size;               /* descriptor ring length in bytes */
-       u16 count;              /* number of descriptors in the ring */
-       atomic_t next_to_use;
-       u16 next_to_clean;
-       struct atl1_buffer *buffer_info;
-};
-
-/* receive return descriptor (rrd) ring */
-struct atl1_rrd_ring {
-       void *desc;             /* descriptor ring virtual address */
-       dma_addr_t dma;         /* descriptor ring physical address */
-       unsigned int size;      /* descriptor ring length in bytes */
-       u16 count;              /* number of descriptors in the ring */
-       u16 next_to_use;
-       atomic_t next_to_clean;
-};
-
-/* coalescing message block (cmb) */
-struct atl1_cmb {
-       struct coals_msg_block *cmb;
-       dma_addr_t dma;
-};
-
-/* statistics message block (smb) */
-struct atl1_smb {
-       struct stats_msg_block *smb;
-       dma_addr_t dma;
-};
-
-/* Statistics counters */
-struct atl1_sft_stats {
-       u64 rx_packets;
-       u64 tx_packets;
-       u64 rx_bytes;
-       u64 tx_bytes;
-       u64 multicast;
-       u64 collisions;
-       u64 rx_errors;
-       u64 rx_length_errors;
-       u64 rx_crc_errors;
-       u64 rx_frame_errors;
-       u64 rx_fifo_errors;
-       u64 rx_missed_errors;
-       u64 tx_errors;
-       u64 tx_fifo_errors;
-       u64 tx_aborted_errors;
-       u64 tx_window_errors;
-       u64 tx_carrier_errors;
-       u64 tx_pause;           /* num pause packets transmitted. */
-       u64 excecol;            /* num tx packets w/ excessive collisions. */
-       u64 deffer;             /* num tx packets deferred */
-       u64 scc;                /* num packets subsequently transmitted
-                                * successfully w/ single prior collision. */
-       u64 mcc;                /* num packets subsequently transmitted
-                                * successfully w/ multiple prior collisions. */
-       u64 latecol;            /* num tx packets  w/ late collisions. */
-       u64 tx_underun;         /* num tx packets aborted due to transmit
-                                * FIFO underrun, or TRD FIFO underrun */
-       u64 tx_trunc;           /* num tx packets truncated due to size
-                                * exceeding MTU, regardless whether truncated
-                                * by the chip or not. (The name doesn't really
-                                * reflect the meaning in this case.) */
-       u64 rx_pause;           /* num Pause packets received. */
-       u64 rx_rrd_ov;
-       u64 rx_trunc;
-};
-
-/* hardware structure */
-struct atl1_hw {
-       u8 __iomem *hw_addr;
-       struct atl1_adapter *back;
-       enum atl1_dma_order dma_ord;
-       enum atl1_dma_rcb rcb_value;
-       enum atl1_dma_req_block dmar_block;
-       enum atl1_dma_req_block dmaw_block;
-       u8 preamble_len;
-       u8 max_retry;           /* Retransmission maximum, after which the
-                                * packet will be discarded */
-       u8 jam_ipg;             /* IPG to start JAM for collision based flow
-                                * control in half-duplex mode. In units of
-                                * 8-bit time */
-       u8 ipgt;                /* Desired back to back inter-packet gap.
-                                * The default is 96-bit time */
-       u8 min_ifg;             /* Minimum number of IFG to enforce in between
-                                * receive frames. Frame gap below such IFP
-                                * is dropped */
-       u8 ipgr1;               /* 64bit Carrier-Sense window */
-       u8 ipgr2;               /* 96-bit IPG window */
-       u8 tpd_burst;           /* Number of TPD to prefetch in cache-aligned
-                                * burst. Each TPD is 16 bytes long */
-       u8 rfd_burst;           /* Number of RFD to prefetch in cache-aligned
-                                * burst. Each RFD is 12 bytes long */
-       u8 rfd_fetch_gap;
-       u8 rrd_burst;           /* Threshold number of RRDs that can be retired
-                                * in a burst. Each RRD is 16 bytes long */
-       u8 tpd_fetch_th;
-       u8 tpd_fetch_gap;
-       u16 tx_jumbo_task_th;
-       u16 txf_burst;          /* Number of data bytes to read in a cache-
-                                * aligned burst. Each SRAM entry is 8 bytes */
-       u16 rx_jumbo_th;        /* Jumbo packet size for non-VLAN packet. VLAN
-                                * packets should add 4 bytes */
-       u16 rx_jumbo_lkah;
-       u16 rrd_ret_timer;      /* RRD retirement timer. Decrement by 1 after
-                                * every 512ns passes. */
-       u16 lcol;               /* Collision Window */
-
-       u16 cmb_tpd;
-       u16 cmb_rrd;
-       u16 cmb_rx_timer;
-       u16 cmb_tx_timer;
-       u32 smb_timer;
-       u16 media_type;
-       u16 autoneg_advertised;
-
-       u16 mii_autoneg_adv_reg;
-       u16 mii_1000t_ctrl_reg;
-
-       u32 max_frame_size;
-       u32 min_frame_size;
-
-       u16 dev_rev;
-
-       /* spi flash */
-       u8 flash_vendor;
-
-       u8 mac_addr[ETH_ALEN];
-       u8 perm_mac_addr[ETH_ALEN];
-
-       bool phy_configured;
-};
-
-struct atl1_adapter {
-       struct net_device *netdev;
-       struct pci_dev *pdev;
-       struct net_device_stats net_stats;
-       struct atl1_sft_stats soft_stats;
-       struct vlan_group *vlgrp;
-       u32 rx_buffer_len;
-       u32 wol;
-       u16 link_speed;
-       u16 link_duplex;
-       spinlock_t lock;
-       struct work_struct tx_timeout_task;
-       struct work_struct link_chg_task;
-       struct work_struct pcie_dma_to_rst_task;
-       struct timer_list watchdog_timer;
-       struct timer_list phy_config_timer;
-       bool phy_timer_pending;
-