Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
David S. Miller [Wed, 3 Dec 2008 08:29:24 +0000 (00:29 -0800)]
1174 files changed:
Documentation/DocBook/Makefile
Documentation/DocBook/networking.tmpl
Documentation/DocBook/wanbook.tmpl [deleted file]
Documentation/RCU/rculist_nulls.txt [new file with mode: 0644]
Documentation/feature-removal-schedule.txt
Documentation/networking/README.ipw2200
Documentation/networking/bonding.txt
Documentation/networking/dccp.txt
Documentation/networking/generic-hdlc.txt
Documentation/networking/ip-sysctl.txt
Documentation/networking/mac80211_hwsim/README
Documentation/networking/regulatory.txt
Documentation/rfkill.txt
MAINTAINERS
arch/arm/mach-ixp4xx/fsg-setup.c
arch/arm/mach-ixp4xx/nas100d-setup.c
arch/arm/mach-ixp4xx/nslu2-setup.c
arch/s390/appldata/appldata_net_sum.c
arch/sparc64/kernel/idprom.c
arch/um/drivers/net_kern.c
arch/xtensa/platforms/iss/network.c
drivers/block/aoe/aoe.h
drivers/block/aoe/aoeblk.c
drivers/block/aoe/aoecmd.c
drivers/block/aoe/aoenet.c
drivers/bluetooth/Kconfig
drivers/bluetooth/Makefile
drivers/bluetooth/bcm203x.c
drivers/bluetooth/bfusb.c
drivers/bluetooth/bpa10x.c
drivers/bluetooth/bt3c_cs.c
drivers/bluetooth/btsdio.c
drivers/bluetooth/btusb.c
drivers/bluetooth/hci_bcsp.c
drivers/bluetooth/hci_h4.c
drivers/bluetooth/hci_ldisc.c
drivers/bluetooth/hci_usb.c [deleted file]
drivers/bluetooth/hci_usb.h [deleted file]
drivers/bluetooth/hci_vhci.c
drivers/firmware/iscsi_ibft.c
drivers/infiniband/core/sysfs.c
drivers/infiniband/hw/amso1100/c2_provider.c
drivers/infiniband/hw/mthca/mthca_mcg.c
drivers/infiniband/hw/nes/nes.c
drivers/infiniband/hw/nes/nes_cm.c
drivers/infiniband/hw/nes/nes_nic.c
drivers/infiniband/hw/nes/nes_utils.c
drivers/infiniband/ulp/ipoib/ipoib.h
drivers/infiniband/ulp/ipoib/ipoib_cm.c
drivers/infiniband/ulp/ipoib/ipoib_main.c
drivers/infiniband/ulp/ipoib/ipoib_multicast.c
drivers/infiniband/ulp/iser/iser_verbs.c
drivers/infiniband/ulp/srp/ib_srp.c
drivers/isdn/gigaset/bas-gigaset.c
drivers/isdn/gigaset/common.c
drivers/isdn/gigaset/gigaset.h
drivers/isdn/gigaset/interface.c
drivers/isdn/gigaset/ser-gigaset.c
drivers/isdn/gigaset/usb-gigaset.c
drivers/isdn/i4l/isdn_net.c
drivers/isdn/i4l/isdn_net.h
drivers/isdn/i4l/isdn_ppp.c
drivers/media/dvb/b2c2/flexcop.c
drivers/media/dvb/bt8xx/dst.c
drivers/media/dvb/dm1105/dm1105.c
drivers/media/dvb/dvb-usb/dvb-usb-dvb.c
drivers/media/dvb/pluto2/pluto2.c
drivers/message/fusion/mptlan.c
drivers/net/3c501.c
drivers/net/3c503.c
drivers/net/3c505.c
drivers/net/3c507.c
drivers/net/3c509.c
drivers/net/3c515.c
drivers/net/3c523.c
drivers/net/3c527.c
drivers/net/3c59x.c
drivers/net/7990.c
drivers/net/8139cp.c
drivers/net/8139too.c
drivers/net/82596.c
drivers/net/8390.c
drivers/net/8390.h
drivers/net/8390p.c
drivers/net/Kconfig
drivers/net/Makefile
drivers/net/a2065.c
drivers/net/ac3200.c
drivers/net/acenic.c
drivers/net/amd8111e.c
drivers/net/apne.c
drivers/net/appletalk/cops.c
drivers/net/appletalk/ipddp.c
drivers/net/appletalk/ltpc.c
drivers/net/arcnet/arc-rawmode.c
drivers/net/arcnet/arc-rimi.c
drivers/net/arcnet/arcnet.c
drivers/net/arcnet/capmode.c
drivers/net/arcnet/com20020-isa.c
drivers/net/arcnet/com20020-pci.c
drivers/net/arcnet/com20020.c
drivers/net/arcnet/com90io.c
drivers/net/arcnet/com90xx.c
drivers/net/arcnet/rfc1051.c
drivers/net/arcnet/rfc1201.c
drivers/net/ariadne.c
drivers/net/arm/Makefile
drivers/net/arm/am79c961a.c
drivers/net/arm/at91_ether.c
drivers/net/arm/ep93xx_eth.c
drivers/net/arm/ether1.c
drivers/net/arm/ether3.c
drivers/net/arm/etherh.c
drivers/net/arm/ixp4xx_eth.c
drivers/net/at1700.c
drivers/net/atarilance.c
drivers/net/atl1e/atl1e_main.c
drivers/net/atlx/atl1.c
drivers/net/atlx/atl1.h
drivers/net/atlx/atl2.c
drivers/net/atlx/atl2.h
drivers/net/atlx/atlx.c
drivers/net/atp.c
drivers/net/au1000_eth.c
drivers/net/ax88796.c
drivers/net/b44.c
drivers/net/bfin_mac.c
drivers/net/bmac.c
drivers/net/bnx2.c
drivers/net/bnx2.h
drivers/net/bnx2x_main.c
drivers/net/bonding/Makefile
drivers/net/bonding/bond_3ad.c
drivers/net/bonding/bond_3ad.h
drivers/net/bonding/bond_alb.c
drivers/net/bonding/bond_ipv6.c [new file with mode: 0644]
drivers/net/bonding/bond_main.c
drivers/net/bonding/bond_sysfs.c
drivers/net/bonding/bonding.h
drivers/net/cassini.c
drivers/net/chelsio/cxgb2.c
drivers/net/chelsio/sge.c
drivers/net/cpmac.c
drivers/net/cris/eth_v10.c
drivers/net/cs89x0.c
drivers/net/cxgb3/cxgb3_main.c
drivers/net/cxgb3/sge.c
drivers/net/de600.c
drivers/net/de620.c
drivers/net/declance.c
drivers/net/defxx.c
drivers/net/depca.c
drivers/net/dl2k.c
drivers/net/dm9000.c
drivers/net/dummy.c
drivers/net/e100.c
drivers/net/e1000/e1000_main.c
drivers/net/e1000e/82571.c
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/phy.c
drivers/net/e2100.c
drivers/net/eepro.c
drivers/net/eepro100.c [deleted file]
drivers/net/eexpress.c
drivers/net/ehea/ehea.h
drivers/net/ehea/ehea_main.c
drivers/net/ehea/ehea_qmr.c
drivers/net/enc28j60.c
drivers/net/enic/cq_desc.h
drivers/net/enic/enic.h
drivers/net/enic/enic_main.c
drivers/net/enic/enic_res.c
drivers/net/enic/enic_res.h
drivers/net/enic/vnic_dev.c
drivers/net/enic/vnic_devcmd.h
drivers/net/enic/vnic_intr.h
drivers/net/enic/vnic_resource.h
drivers/net/enic/vnic_rq.h
drivers/net/enic/vnic_rss.h
drivers/net/enic/vnic_wq.h
drivers/net/epic100.c
drivers/net/eql.c
drivers/net/es3210.c
drivers/net/eth16i.c
drivers/net/ewrk3.c
drivers/net/fealnx.c
drivers/net/fec.c
drivers/net/fec_mpc52xx.c
drivers/net/forcedeth.c
drivers/net/fs_enet/fs_enet-main.c
drivers/net/gianfar.c
drivers/net/hamachi.c
drivers/net/hamradio/6pack.c
drivers/net/hamradio/baycom_epp.c
drivers/net/hamradio/bpqether.c
drivers/net/hamradio/dmascc.c
drivers/net/hamradio/hdlcdrv.c
drivers/net/hamradio/mkiss.c
drivers/net/hamradio/scc.c
drivers/net/hamradio/yam.c
drivers/net/hp-plus.c
drivers/net/hp.c
drivers/net/hp100.c
drivers/net/hydra.c
drivers/net/ibm_newemac/core.c
drivers/net/ibmlana.c
drivers/net/ibmveth.c
drivers/net/ifb.c
drivers/net/igb/e1000_defines.h
drivers/net/igb/igb.h
drivers/net/igb/igb_ethtool.c
drivers/net/igb/igb_main.c
drivers/net/ioc3-eth.c
drivers/net/ipg.c
drivers/net/irda/ali-ircc.c
drivers/net/irda/au1k_ir.c
drivers/net/irda/donauboe.c
drivers/net/irda/irda-usb.c
drivers/net/irda/kingsun-sir.c
drivers/net/irda/ks959-sir.c
drivers/net/irda/ksdazzle-sir.c
drivers/net/irda/mcs7780.c
drivers/net/irda/nsc-ircc.c
drivers/net/irda/pxaficp_ir.c
drivers/net/irda/sa1100_ir.c
drivers/net/irda/sir_dev.c
drivers/net/irda/stir4200.c
drivers/net/irda/via-ircc.c
drivers/net/irda/vlsi_ir.c
drivers/net/irda/w83977af_ir.c
drivers/net/isa-skeleton.c
drivers/net/iseries_veth.c
drivers/net/ixgb/ixgb_main.c
drivers/net/ixgbe/Makefile
drivers/net/ixgbe/ixgbe.h
drivers/net/ixgbe/ixgbe_82598.c
drivers/net/ixgbe/ixgbe_dcb.c [new file with mode: 0644]
drivers/net/ixgbe/ixgbe_dcb.h [new file with mode: 0644]
drivers/net/ixgbe/ixgbe_dcb_82598.c [new file with mode: 0644]
drivers/net/ixgbe/ixgbe_dcb_82598.h [new file with mode: 0644]
drivers/net/ixgbe/ixgbe_dcb_nl.c [new file with mode: 0644]
drivers/net/ixgbe/ixgbe_ethtool.c
drivers/net/ixgbe/ixgbe_main.c
drivers/net/ixgbe/ixgbe_phy.c
drivers/net/ixgbe/ixgbe_phy.h
drivers/net/ixgbe/ixgbe_type.h
drivers/net/ixp2000/ixpdev.c
drivers/net/jazzsonic.c
drivers/net/jme.c
drivers/net/korina.c
drivers/net/lance.c
drivers/net/lib82596.c
drivers/net/lib8390.c
drivers/net/lne390.c
drivers/net/loopback.c
drivers/net/lp486e.c
drivers/net/mac8390.c
drivers/net/mac89x0.c
drivers/net/macb.c
drivers/net/mace.c
drivers/net/macmace.c
drivers/net/macsonic.c
drivers/net/macvlan.c
drivers/net/meth.c
drivers/net/mlx4/en_netdev.c
drivers/net/mlx4/en_rx.c
drivers/net/mlx4/mcg.c
drivers/net/mlx4/mlx4_en.h
drivers/net/mv643xx_eth.c
drivers/net/mvme147.c
drivers/net/myri10ge/myri10ge.c
drivers/net/myri10ge/myri10ge_mcp_gen_header.h
drivers/net/myri_sbus.c
drivers/net/natsemi.c
drivers/net/ne-h8300.c
drivers/net/ne.c
drivers/net/ne2.c
drivers/net/ne2k-pci.c
drivers/net/ne3210.c
drivers/net/netconsole.c
drivers/net/netx-eth.c
drivers/net/netxen/netxen_nic_ethtool.c
drivers/net/netxen/netxen_nic_hw.c
drivers/net/netxen/netxen_nic_init.c
drivers/net/netxen/netxen_nic_main.c
drivers/net/netxen/netxen_nic_niu.c
drivers/net/ni5010.c
drivers/net/ni52.c
drivers/net/ni65.c
drivers/net/niu.c
drivers/net/niu.h
drivers/net/ns83820.c
drivers/net/pasemi_mac.c
drivers/net/pasemi_mac_ethtool.c
drivers/net/pci-skeleton.c
drivers/net/pcmcia/3c574_cs.c
drivers/net/pcmcia/3c589_cs.c
drivers/net/pcmcia/axnet_cs.c
drivers/net/pcmcia/com20020_cs.c
drivers/net/pcmcia/fmvj18x_cs.c
drivers/net/pcmcia/nmclan_cs.c
drivers/net/pcmcia/pcnet_cs.c
drivers/net/pcmcia/smc91c92_cs.c
drivers/net/pcmcia/xirc2ps_cs.c
drivers/net/pcnet32.c
drivers/net/phy/Kconfig
drivers/net/phy/Makefile
drivers/net/phy/broadcom.c
drivers/net/phy/mdio-gpio.c [new file with mode: 0644]
drivers/net/phy/mdio-ofgpio.c [deleted file]
drivers/net/phy/mdio_bus.c
drivers/net/phy/national.c [new file with mode: 0644]
drivers/net/phy/phy.c
drivers/net/phy/phy_device.c
drivers/net/phy/smsc.c
drivers/net/phy/ste10Xp.c [new file with mode: 0644]
drivers/net/plip.c
drivers/net/ppp_generic.c
drivers/net/pppoe.c
drivers/net/ps3_gelic_net.c
drivers/net/ps3_gelic_wireless.c
drivers/net/ps3_gelic_wireless.h
drivers/net/qla3xxx.c
drivers/net/qlge/qlge_main.c
drivers/net/r6040.c
drivers/net/r8169.c
drivers/net/rionet.c
drivers/net/rrunner.c
drivers/net/s2io.c
drivers/net/sb1000.c
drivers/net/sb1250-mac.c
drivers/net/sc92031.c
drivers/net/seeq8005.c
drivers/net/sfc/Kconfig
drivers/net/sfc/Makefile
drivers/net/sfc/boards.c
drivers/net/sfc/efx.c
drivers/net/sfc/efx.h
drivers/net/sfc/enum.h
drivers/net/sfc/ethtool.c
drivers/net/sfc/falcon.c
drivers/net/sfc/falcon_hwdefs.h
drivers/net/sfc/mdio_10g.c
drivers/net/sfc/mdio_10g.h
drivers/net/sfc/mtd.c [new file with mode: 0644]
drivers/net/sfc/net_driver.h
drivers/net/sfc/rx.c
drivers/net/sfc/sfe4001.c
drivers/net/sfc/spi.h
drivers/net/sfc/tenxpress.c
drivers/net/sfc/workarounds.h
drivers/net/sfc/xfp_phy.c
drivers/net/sgiseeq.c
drivers/net/sh_eth.c
drivers/net/sis190.c
drivers/net/sis900.c
drivers/net/skfp/skfddi.c
drivers/net/skge.c
drivers/net/sky2.c
drivers/net/slip.c
drivers/net/smc-mca.c
drivers/net/smc-ultra.c
drivers/net/smc-ultra32.c
drivers/net/smc911x.c
drivers/net/smc9194.c
drivers/net/smc91x.c
drivers/net/smc91x.h
drivers/net/smsc911x.c [new file with mode: 0644]
drivers/net/smsc911x.h [new file with mode: 0644]
drivers/net/sonic.c
drivers/net/sonic.h
drivers/net/spider_net_ethtool.c
drivers/net/starfire.c
drivers/net/stnic.c
drivers/net/sun3_82586.c
drivers/net/sun3lance.c
drivers/net/sunbmac.c
drivers/net/sundance.c
drivers/net/sungem.c
drivers/net/sunhme.c
drivers/net/sunlance.c
drivers/net/sunqe.c
drivers/net/sunvnet.c
drivers/net/tc35815.c
drivers/net/tehuti.c
drivers/net/tg3.c
drivers/net/tg3.h
drivers/net/tlan.c
drivers/net/tokenring/3c359.c
drivers/net/tokenring/abyss.c
drivers/net/tokenring/ibmtr.c
drivers/net/tokenring/lanstreamer.c
drivers/net/tokenring/madgemc.c
drivers/net/tokenring/olympic.c
drivers/net/tokenring/proteon.c
drivers/net/tokenring/skisa.c
drivers/net/tokenring/smctr.c
drivers/net/tokenring/tms380tr.c
drivers/net/tokenring/tmspci.c
drivers/net/tsi108_eth.c
drivers/net/tulip/de2104x.c
drivers/net/tulip/de4x5.c
drivers/net/tulip/dmfe.c
drivers/net/tulip/eeprom.c
drivers/net/tulip/interrupt.c
drivers/net/tulip/tulip_core.c
drivers/net/tulip/uli526x.c
drivers/net/tulip/winbond-840.c
drivers/net/tulip/xircom_cb.c
drivers/net/tun.c
drivers/net/typhoon.c
drivers/net/ucc_geth.c
drivers/net/usb/catc.c
drivers/net/usb/hso.c
drivers/net/usb/mcs7830.c
drivers/net/usb/pegasus.c
drivers/net/usb/smsc95xx.c
drivers/net/usb/usbnet.c
drivers/net/veth.c
drivers/net/via-rhine.c
drivers/net/via-velocity.c
drivers/net/virtio_net.c
drivers/net/wan/Kconfig
drivers/net/wan/Makefile
drivers/net/wan/c101.c
drivers/net/wan/cosa.c
drivers/net/wan/cycx_x25.c
drivers/net/wan/dlci.c
drivers/net/wan/dscc4.c
drivers/net/wan/farsync.c
drivers/net/wan/hd64570.c [moved from drivers/net/wan/hd6457x.c with 78% similarity]
drivers/net/wan/hd64572.c [new file with mode: 0644]
drivers/net/wan/hdlc_fr.c
drivers/net/wan/hdlc_ppp.c
drivers/net/wan/hostess_sv11.c
drivers/net/wan/lapbether.c
drivers/net/wan/lmc/lmc_main.c
drivers/net/wan/lmc/lmc_proto.c
drivers/net/wan/n2.c
drivers/net/wan/pc300_drv.c
drivers/net/wan/pc300too.c
drivers/net/wan/pci200syn.c
drivers/net/wan/sbni.c
drivers/net/wan/sdla.c
drivers/net/wan/sealevel.c
drivers/net/wan/syncppp.c [deleted file]
drivers/net/wan/wanxl.c
drivers/net/wan/x25_asy.c
drivers/net/wan/z85230.c
drivers/net/wd.c
drivers/net/wireless/Kconfig
drivers/net/wireless/Makefile
drivers/net/wireless/adm8211.c
drivers/net/wireless/adm8211.h
drivers/net/wireless/airo.c
drivers/net/wireless/arlan-main.c
drivers/net/wireless/ath5k/ath5k.h
drivers/net/wireless/ath5k/attach.c
drivers/net/wireless/ath5k/base.c
drivers/net/wireless/ath5k/dma.c
drivers/net/wireless/ath5k/eeprom.c
drivers/net/wireless/ath5k/eeprom.h
drivers/net/wireless/ath5k/initvals.c
drivers/net/wireless/ath5k/pcu.c
drivers/net/wireless/ath5k/phy.c
drivers/net/wireless/ath5k/qcu.c
drivers/net/wireless/ath5k/reg.h
drivers/net/wireless/ath5k/reset.c
drivers/net/wireless/ath9k/Makefile
drivers/net/wireless/ath9k/ani.c [new file with mode: 0644]
drivers/net/wireless/ath9k/ath9k.h
drivers/net/wireless/ath9k/beacon.c
drivers/net/wireless/ath9k/calib.c [new file with mode: 0644]
drivers/net/wireless/ath9k/core.c [deleted file]
drivers/net/wireless/ath9k/core.h
drivers/net/wireless/ath9k/eeprom.c [new file with mode: 0644]
drivers/net/wireless/ath9k/hw.c
drivers/net/wireless/ath9k/hw.h
drivers/net/wireless/ath9k/initvals.h
drivers/net/wireless/ath9k/mac.c [new file with mode: 0644]
drivers/net/wireless/ath9k/main.c
drivers/net/wireless/ath9k/phy.c
drivers/net/wireless/ath9k/rc.c
drivers/net/wireless/ath9k/rc.h
drivers/net/wireless/ath9k/recv.c
drivers/net/wireless/ath9k/xmit.c
drivers/net/wireless/atmel.c
drivers/net/wireless/b43/b43.h
drivers/net/wireless/b43/dma.c
drivers/net/wireless/b43/main.c
drivers/net/wireless/b43/pio.c
drivers/net/wireless/b43/xmit.c
drivers/net/wireless/b43/xmit.h
drivers/net/wireless/b43legacy/b43legacy.h
drivers/net/wireless/b43legacy/dma.c
drivers/net/wireless/b43legacy/main.c
drivers/net/wireless/b43legacy/pio.c
drivers/net/wireless/b43legacy/xmit.c
drivers/net/wireless/b43legacy/xmit.h
drivers/net/wireless/hostap/Kconfig
drivers/net/wireless/hostap/hostap.h
drivers/net/wireless/hostap/hostap_80211.h
drivers/net/wireless/hostap/hostap_80211_rx.c
drivers/net/wireless/hostap/hostap_80211_tx.c
drivers/net/wireless/hostap/hostap_ap.c
drivers/net/wireless/hostap/hostap_ap.h
drivers/net/wireless/hostap/hostap_common.h
drivers/net/wireless/hostap/hostap_hw.c
drivers/net/wireless/hostap/hostap_info.c
drivers/net/wireless/hostap/hostap_ioctl.c
drivers/net/wireless/hostap/hostap_main.c
drivers/net/wireless/hostap/hostap_pci.c
drivers/net/wireless/hostap/hostap_proc.c
drivers/net/wireless/hostap/hostap_wlan.h
drivers/net/wireless/ipw2x00/Kconfig [new file with mode: 0644]
drivers/net/wireless/ipw2x00/Makefile [new file with mode: 0644]
drivers/net/wireless/ipw2x00/ipw2100.c [moved from drivers/net/wireless/ipw2100.c with 99% similarity]
drivers/net/wireless/ipw2x00/ipw2100.h [moved from drivers/net/wireless/ipw2100.h with 100% similarity]
drivers/net/wireless/ipw2x00/ipw2200.c [moved from drivers/net/wireless/ipw2200.c with 97% similarity]
drivers/net/wireless/ipw2x00/ipw2200.h [moved from drivers/net/wireless/ipw2200.h with 99% similarity]
drivers/net/wireless/ipw2x00/libipw_geo.c [moved from net/ieee80211/ieee80211_geo.c with 100% similarity]
drivers/net/wireless/ipw2x00/libipw_module.c [moved from net/ieee80211/ieee80211_module.c with 88% similarity]
drivers/net/wireless/ipw2x00/libipw_rx.c [moved from net/ieee80211/ieee80211_rx.c with 94% similarity]
drivers/net/wireless/ipw2x00/libipw_tx.c [moved from net/ieee80211/ieee80211_tx.c with 98% similarity]
drivers/net/wireless/ipw2x00/libipw_wx.c [moved from net/ieee80211/ieee80211_wx.c with 91% similarity]
drivers/net/wireless/iwlwifi/Kconfig
drivers/net/wireless/iwlwifi/Makefile
drivers/net/wireless/iwlwifi/iwl-3945-commands.h
drivers/net/wireless/iwlwifi/iwl-3945-io.h
drivers/net/wireless/iwlwifi/iwl-3945-rs.c
drivers/net/wireless/iwlwifi/iwl-3945.c
drivers/net/wireless/iwlwifi/iwl-3945.h
drivers/net/wireless/iwlwifi/iwl-4965-hw.h
drivers/net/wireless/iwlwifi/iwl-4965.c
drivers/net/wireless/iwlwifi/iwl-5000-hw.h
drivers/net/wireless/iwlwifi/iwl-5000.c
drivers/net/wireless/iwlwifi/iwl-agn-rs.c
drivers/net/wireless/iwlwifi/iwl-agn-rs.h
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl-calib.c
drivers/net/wireless/iwlwifi/iwl-commands.h
drivers/net/wireless/iwlwifi/iwl-core.c
drivers/net/wireless/iwlwifi/iwl-core.h
drivers/net/wireless/iwlwifi/iwl-csr.h
drivers/net/wireless/iwlwifi/iwl-debug.h
drivers/net/wireless/iwlwifi/iwl-debugfs.c
drivers/net/wireless/iwlwifi/iwl-dev.h
drivers/net/wireless/iwlwifi/iwl-eeprom.c
drivers/net/wireless/iwlwifi/iwl-eeprom.h
drivers/net/wireless/iwlwifi/iwl-fh.h
drivers/net/wireless/iwlwifi/iwl-hcmd.c
drivers/net/wireless/iwlwifi/iwl-helpers.h
drivers/net/wireless/iwlwifi/iwl-io.h
drivers/net/wireless/iwlwifi/iwl-led.c
drivers/net/wireless/iwlwifi/iwl-power.c
drivers/net/wireless/iwlwifi/iwl-prph.h
drivers/net/wireless/iwlwifi/iwl-rfkill.c
drivers/net/wireless/iwlwifi/iwl-rx.c
drivers/net/wireless/iwlwifi/iwl-scan.c
drivers/net/wireless/iwlwifi/iwl-spectrum.c [new file with mode: 0644]
drivers/net/wireless/iwlwifi/iwl-spectrum.h
drivers/net/wireless/iwlwifi/iwl-sta.c
drivers/net/wireless/iwlwifi/iwl-sta.h
drivers/net/wireless/iwlwifi/iwl-tx.c
drivers/net/wireless/iwlwifi/iwl3945-base.c
drivers/net/wireless/libertas/assoc.c
drivers/net/wireless/libertas/cmd.c
drivers/net/wireless/libertas/cmd.h
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_usb.c
drivers/net/wireless/libertas/main.c
drivers/net/wireless/libertas/persistcfg.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_tf/cmd.c
drivers/net/wireless/libertas_tf/main.c
drivers/net/wireless/mac80211_hwsim.c
drivers/net/wireless/netwave_cs.c
drivers/net/wireless/orinoco/Makefile [new file with mode: 0644]
drivers/net/wireless/orinoco/airport.c [moved from drivers/net/wireless/airport.c with 100% similarity]
drivers/net/wireless/orinoco/hermes.c [moved from drivers/net/wireless/hermes.c with 100% similarity]
drivers/net/wireless/orinoco/hermes.h [moved from drivers/net/wireless/hermes.h with 100% similarity]
drivers/net/wireless/orinoco/hermes_dld.c [moved from drivers/net/wireless/hermes_dld.c with 100% similarity]
drivers/net/wireless/orinoco/hermes_dld.h [moved from drivers/net/wireless/hermes_dld.h with 100% similarity]
drivers/net/wireless/orinoco/hermes_rid.h [moved from drivers/net/wireless/hermes_rid.h with 100% similarity]
drivers/net/wireless/orinoco/orinoco.c [moved from drivers/net/wireless/orinoco.c with 96% similarity]
drivers/net/wireless/orinoco/orinoco.h [moved from drivers/net/wireless/orinoco.h with 96% similarity]
drivers/net/wireless/orinoco/orinoco_cs.c [moved from drivers/net/wireless/orinoco_cs.c with 99% similarity]
drivers/net/wireless/orinoco/orinoco_nortel.c [moved from drivers/net/wireless/orinoco_nortel.c with 100% similarity]
drivers/net/wireless/orinoco/orinoco_pci.c [moved from drivers/net/wireless/orinoco_pci.c with 100% similarity]
drivers/net/wireless/orinoco/orinoco_pci.h [moved from drivers/net/wireless/orinoco_pci.h with 100% similarity]
drivers/net/wireless/orinoco/orinoco_plx.c [moved from drivers/net/wireless/orinoco_plx.c with 100% similarity]
drivers/net/wireless/orinoco/orinoco_tmd.c [moved from drivers/net/wireless/orinoco_tmd.c with 100% similarity]
drivers/net/wireless/orinoco/spectrum_cs.c [moved from drivers/net/wireless/spectrum_cs.c with 96% similarity]
drivers/net/wireless/p54/p54.h
drivers/net/wireless/p54/p54common.c
drivers/net/wireless/p54/p54common.h
drivers/net/wireless/p54/p54pci.c
drivers/net/wireless/p54/p54pci.h
drivers/net/wireless/p54/p54usb.c
drivers/net/wireless/prism54/isl_ioctl.c
drivers/net/wireless/ray_cs.c
drivers/net/wireless/rndis_wlan.c
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/rt2x00leds.c
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
drivers/net/wireless/rt2x00/rt2x00queue.h
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/rtl818x/Makefile [new file with mode: 0644]
drivers/net/wireless/rtl818x/rtl8180.h [moved from drivers/net/wireless/rtl8180.h with 100% similarity]
drivers/net/wireless/rtl818x/rtl8180_dev.c [moved from drivers/net/wireless/rtl8180_dev.c with 96% similarity]
drivers/net/wireless/rtl818x/rtl8180_grf5101.c [moved from drivers/net/wireless/rtl8180_grf5101.c with 100% similarity]
drivers/net/wireless/rtl818x/rtl8180_grf5101.h [moved from drivers/net/wireless/rtl8180_grf5101.h with 100% similarity]
drivers/net/wireless/rtl818x/rtl8180_max2820.c [moved from drivers/net/wireless/rtl8180_max2820.c with 100% similarity]
drivers/net/wireless/rtl818x/rtl8180_max2820.h [moved from drivers/net/wireless/rtl8180_max2820.h with 100% similarity]
drivers/net/wireless/rtl818x/rtl8180_rtl8225.c [moved from drivers/net/wireless/rtl8180_rtl8225.c with 98% similarity]
drivers/net/wireless/rtl818x/rtl8180_rtl8225.h [moved from drivers/net/wireless/rtl8180_rtl8225.h with 100% similarity]
drivers/net/wireless/rtl818x/rtl8180_sa2400.c [moved from drivers/net/wireless/rtl8180_sa2400.c with 100% similarity]
drivers/net/wireless/rtl818x/rtl8180_sa2400.h [moved from drivers/net/wireless/rtl8180_sa2400.h with 100% similarity]
drivers/net/wireless/rtl818x/rtl8187.h [moved from drivers/net/wireless/rtl8187.h with 97% similarity]
drivers/net/wireless/rtl818x/rtl8187_dev.c [moved from drivers/net/wireless/rtl8187_dev.c with 82% similarity]
drivers/net/wireless/rtl818x/rtl8187_rtl8225.c [moved from drivers/net/wireless/rtl8187_rtl8225.c with 69% similarity]
drivers/net/wireless/rtl818x/rtl8187_rtl8225.h [moved from drivers/net/wireless/rtl8187_rtl8225.h with 100% similarity]
drivers/net/wireless/rtl818x/rtl818x.h [moved from drivers/net/wireless/rtl818x.h with 98% similarity]
drivers/net/wireless/strip.c
drivers/net/wireless/wavelan.c
drivers/net/wireless/wavelan_cs.c
drivers/net/wireless/wl3501.h
drivers/net/wireless/wl3501_cs.c
drivers/net/wireless/zd1201.c
drivers/net/wireless/zd1211rw/zd_chip.c
drivers/net/wireless/zd1211rw/zd_mac.c
drivers/net/wireless/zd1211rw/zd_usb.c
drivers/net/xen-netfront.c
drivers/net/xtsonic.c
drivers/net/yellowfin.c
drivers/net/znet.c
drivers/net/zorro8390.c
drivers/parisc/led.c
drivers/s390/net/qeth_core_offl.c
drivers/s390/net/qeth_l2_main.c
drivers/scsi/iscsi_tcp.c
drivers/scsi/qla4xxx/ql4_os.c
drivers/ssb/main.c
drivers/ssb/pcihost_wrapper.c
drivers/usb/atm/cxacru.c
drivers/usb/atm/usbatm.c
drivers/usb/gadget/u_ether.c
drivers/uwb/wlp/eda.c
firmware/Makefile
firmware/WHENCE
firmware/cxgb3/t3b_psram-1.1.0.bin.ihex [new file with mode: 0644]
firmware/cxgb3/t3c_psram-1.1.0.bin.ihex [new file with mode: 0644]
firmware/cxgb3/t3fw-7.0.0.bin.ihex [new file with mode: 0644]
fs/afs/proc.c
fs/afs/server.c
fs/cifs/cifs_spnego.c
fs/cifs/connect.c
fs/dlm/netlink.c
fs/lockd/host.c
fs/lockd/mon.c
fs/nfs/nfsroot.c
fs/nfs/super.c
fs/nfsd/nfs4state.c
fs/nfsd/nfsctl.c
fs/ocfs2/cluster/netdebug.c
fs/ocfs2/cluster/nodemanager.c
fs/ocfs2/cluster/tcp.c
include/linux/cgroup_subsys.h
include/linux/dcbnl.h [new file with mode: 0644]
include/linux/dccp.h
include/linux/etherdevice.h
include/linux/fddidevice.h
include/linux/filter.h
include/linux/hdlc.h
include/linux/hippidevice.h
include/linux/ieee80211.h
include/linux/if.h
include/linux/in.h
include/linux/kernel.h
include/linux/list_nulls.h [new file with mode: 0644]
include/linux/mdio-gpio.h [new file with mode: 0644]
include/linux/netdevice.h
include/linux/netfilter_bridge/ebtables.h
include/linux/netfilter_ipv4/ipt_policy.h
include/linux/netfilter_ipv6/ip6t_policy.h
include/linux/netlink.h
include/linux/nl80211.h
include/linux/phy.h
include/linux/pkt_cls.h
include/linux/pkt_sched.h
include/linux/rculist_nulls.h [new file with mode: 0644]
include/linux/rfkill.h
include/linux/rtnetlink.h
include/linux/skbuff.h
include/linux/smsc911x.h [new file with mode: 0644]
include/linux/snmp.h
include/linux/sunrpc/svc_xprt.h
include/linux/virtio_net.h
include/linux/xfrm.h
include/net/bluetooth/bluetooth.h
include/net/bluetooth/hci.h
include/net/cfg80211.h
include/net/checksum.h
include/net/dcbnl.h [new file with mode: 0644]
include/net/dn.h
include/net/dn_fib.h
include/net/dst.h
include/net/flow.h
include/net/gen_stats.h
include/net/ieee80211.h
include/net/inet_hashtables.h
include/net/inet_timewait_sock.h
include/net/ip.h
include/net/ip_vs.h
include/net/lib80211.h [moved from include/net/ieee80211_crypt.h with 58% similarity]
include/net/mac80211.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_ecache.h
include/net/netfilter/nf_conntrack_expect.h
include/net/netfilter/nf_conntrack_helper.h
include/net/netfilter/nf_conntrack_l4proto.h
include/net/netfilter/nf_conntrack_tuple.h
include/net/netfilter/nfnetlink_log.h [new file with mode: 0644]
include/net/netlink.h
include/net/netns/ipv4.h
include/net/netns/mib.h
include/net/netns/x_tables.h
include/net/netns/xfrm.h [new file with mode: 0644]
include/net/pkt_cls.h
include/net/sch_generic.h
include/net/sctp/sctp.h
include/net/sock.h
include/net/syncppp.h [deleted file]
include/net/tcp.h
include/net/udp.h
include/net/udplite.h
include/net/wireless.h
include/net/xfrm.h
lib/vsprintf.c
net/802/fddi.c
net/802/hippi.c
net/802/tr.c
net/8021q/vlan.c
net/8021q/vlan.h
net/8021q/vlan_core.c
net/8021q/vlan_dev.c
net/9p/trans_rdma.c
net/Kconfig
net/Makefile
net/appletalk/aarp.c
net/appletalk/ddp.c
net/appletalk/sysctl_net_atalk.c
net/atm/atm_sysfs.c
net/atm/br2684.c
net/atm/clip.c
net/atm/lec.c
net/atm/mpc.c
net/atm/mpoa_caches.c
net/ax25/sysctl_net_ax25.c
net/bluetooth/af_bluetooth.c
net/bluetooth/bnep/bnep.h
net/bluetooth/bnep/core.c
net/bluetooth/bnep/netdev.c
net/bluetooth/bnep/sock.c
net/bluetooth/cmtp/capi.c
net/bluetooth/cmtp/core.c
net/bluetooth/cmtp/sock.c
net/bluetooth/hci_conn.c
net/bluetooth/hci_core.c
net/bluetooth/hci_event.c
net/bluetooth/hci_sock.c
net/bluetooth/hci_sysfs.c
net/bluetooth/hidp/core.c
net/bluetooth/hidp/sock.c
net/bluetooth/l2cap.c
net/bluetooth/rfcomm/core.c
net/bluetooth/rfcomm/sock.c
net/bluetooth/rfcomm/tty.c
net/bluetooth/sco.c
net/bridge/br_device.c
net/bridge/br_if.c
net/bridge/br_netfilter.c
net/bridge/br_sysfs_br.c
net/bridge/netfilter/ebt_log.c
net/bridge/netfilter/ebtable_broute.c
net/bridge/netfilter/ebtable_filter.c
net/bridge/netfilter/ebtable_nat.c
net/bridge/netfilter/ebtables.c
net/core/datagram.c
net/core/dev.c
net/core/dst.c
net/core/fib_rules.c
net/core/filter.c
net/core/flow.c
net/core/gen_estimator.c
net/core/neighbour.c
net/core/net-sysfs.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/dcb/Kconfig [new file with mode: 0644]
net/dcb/Makefile [new file with mode: 0644]
net/dcb/dcbnl.c [new file with mode: 0644]
net/dccp/ackvec.c
net/dccp/ackvec.h
net/dccp/ccid.c
net/dccp/ccid.h
net/dccp/ccids/ccid2.c
net/dccp/dccp.h
net/dccp/diag.c
net/dccp/feat.c
net/dccp/feat.h
net/dccp/input.c
net/dccp/ipv4.c
net/dccp/ipv6.c
net/dccp/minisocks.c
net/dccp/options.c
net/dccp/output.c
net/dccp/probe.c
net/dccp/proto.c
net/dccp/sysctl.c
net/dccp/timer.c
net/decnet/af_decnet.c
net/decnet/dn_dev.c
net/decnet/dn_neigh.c
net/decnet/dn_nsp_in.c
net/decnet/dn_nsp_out.c
net/decnet/dn_route.c
net/decnet/dn_table.c
net/decnet/sysctl_net_decnet.c
net/dsa/mv88e6060.c
net/dsa/mv88e6xxx.c
net/dsa/slave.c
net/dsa/tag_dsa.c
net/dsa/tag_edsa.c
net/dsa/tag_trailer.c
net/ethernet/eth.c
net/ieee80211/Kconfig [deleted file]
net/ieee80211/Makefile [deleted file]
net/ieee80211/ieee80211_crypt.c [deleted file]
net/ipv4/af_inet.c
net/ipv4/ah4.c
net/ipv4/arp.c
net/ipv4/cipso_ipv4.c
net/ipv4/devinet.c
net/ipv4/esp4.c
net/ipv4/fib_frontend.c
net/ipv4/fib_hash.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_diag.c
net/ipv4/inet_hashtables.c
net/ipv4/inet_lro.c
net/ipv4/inet_timewait_sock.c
net/ipv4/inetpeer.c
net/ipv4/ip_forward.c
net/ipv4/ip_fragment.c
net/ipv4/ip_gre.c
net/ipv4/ip_input.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/netfilter.c
net/ipv4/netfilter/arp_tables.c
net/ipv4/netfilter/arptable_filter.c
net/ipv4/netfilter/ip_tables.c
net/ipv4/netfilter/ipt_CLUSTERIP.c
net/ipv4/netfilter/ipt_LOG.c
net/ipv4/netfilter/ipt_addrtype.c
net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c
net/ipv4/netfilter/nf_conntrack_proto_icmp.c
net/ipv4/netfilter/nf_nat_h323.c
net/ipv4/netfilter/nf_nat_irc.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/proc.c
net/ipv4/raw.c
net/ipv4/route.c
net/ipv4/sysctl_net_ipv4.c
net/ipv4/tcp.c
net/ipv4/tcp_cubic.c
net/ipv4/tcp_diag.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/tcp_yeah.c
net/ipv4/udp.c
net/ipv4/udp_impl.h
net/ipv4/udplite.c
net/ipv4/xfrm4_policy.c
net/ipv4/xfrm4_state.c
net/ipv6/addrconf.c
net/ipv6/addrlabel.c
net/ipv6/af_inet6.c
net/ipv6/ah6.c
net/ipv6/anycast.c
net/ipv6/datagram.c
net/ipv6/esp6.c
net/ipv6/exthdrs.c
net/ipv6/icmp.c
net/ipv6/inet6_connection_sock.c
net/ipv6/inet6_hashtables.c
net/ipv6/ip6_flowlabel.c
net/ipv6/ip6_output.c
net/ipv6/ip6_tunnel.c
net/ipv6/ip6mr.c
net/ipv6/ipcomp6.c
net/ipv6/mcast.c
net/ipv6/mip6.c
net/ipv6/ndisc.c
net/ipv6/netfilter.c
net/ipv6/netfilter/ip6t_LOG.c
net/ipv6/netfilter/ip6t_REJECT.c
net/ipv6/netfilter/ip6table_filter.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/raw.c
net/ipv6/reassembly.c
net/ipv6/route.c
net/ipv6/sit.c
net/ipv6/syncookies.c
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/ipx/sysctl_net_ipx.c
net/irda/irlan/irlan_client.c
net/irda/irlan/irlan_common.c
net/irda/irsysctl.c
net/key/af_key.c
net/llc/af_llc.c
net/llc/llc_proc.c
net/llc/sysctl_net_llc.c
net/mac80211/Kconfig
net/mac80211/cfg.c
net/mac80211/debugfs.c
net/mac80211/debugfs_key.c
net/mac80211/debugfs_netdev.c
net/mac80211/debugfs_sta.c
net/mac80211/event.c
net/mac80211/ht.c
net/mac80211/ieee80211_i.h
net/mac80211/iface.c
net/mac80211/key.c
net/mac80211/main.c
net/mac80211/mesh.c
net/mac80211/mesh.h
net/mac80211/mesh_hwmp.c
net/mac80211/mesh_plink.c
net/mac80211/mlme.c
net/mac80211/rate.c
net/mac80211/rate.h
net/mac80211/rc80211_minstrel.c
net/mac80211/rc80211_minstrel.h
net/mac80211/rc80211_pid.h
net/mac80211/rc80211_pid_algo.c
net/mac80211/rc80211_pid_debugfs.c
net/mac80211/rx.c
net/mac80211/scan.c
net/mac80211/sta_info.c
net/mac80211/sta_info.h
net/mac80211/tkip.c
net/mac80211/tx.c
net/mac80211/util.c
net/mac80211/wep.c
net/mac80211/wep.h
net/mac80211/wext.c
net/mac80211/wme.c
net/mac80211/wpa.c
net/netfilter/ipvs/ip_vs_conn.c
net/netfilter/ipvs/ip_vs_core.c
net/netfilter/ipvs/ip_vs_ctl.c
net/netfilter/ipvs/ip_vs_dh.c
net/netfilter/ipvs/ip_vs_ftp.c
net/netfilter/ipvs/ip_vs_lblc.c
net/netfilter/ipvs/ip_vs_lblcr.c
net/netfilter/ipvs/ip_vs_lc.c
net/netfilter/ipvs/ip_vs_nq.c
net/netfilter/ipvs/ip_vs_proto.c
net/netfilter/ipvs/ip_vs_proto_ah_esp.c
net/netfilter/ipvs/ip_vs_proto_tcp.c
net/netfilter/ipvs/ip_vs_proto_udp.c
net/netfilter/ipvs/ip_vs_rr.c
net/netfilter/ipvs/ip_vs_sed.c
net/netfilter/ipvs/ip_vs_sh.c
net/netfilter/ipvs/ip_vs_sync.c
net/netfilter/ipvs/ip_vs_wlc.c
net/netfilter/ipvs/ip_vs_wrr.c
net/netfilter/ipvs/ip_vs_xmit.c
net/netfilter/nf_conntrack_acct.c
net/netfilter/nf_conntrack_amanda.c
net/netfilter/nf_conntrack_core.c
net/netfilter/nf_conntrack_ecache.c
net/netfilter/nf_conntrack_expect.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_netbios_ns.c
net/netfilter/nf_conntrack_netlink.c
net/netfilter/nf_conntrack_pptp.c
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/nfnetlink_log.c
net/netfilter/xt_NFLOG.c
net/netfilter/xt_hashlimit.c
net/netfilter/xt_iprange.c
net/netfilter/xt_recent.c
net/netlabel/netlabel_addrlist.c
net/netlabel/netlabel_mgmt.c
net/netlink/af_netlink.c
net/netlink/attr.c
net/netrom/sysctl_net_netrom.c
net/packet/af_packet.c
net/phonet/pep-gprs.c
net/phonet/sysctl.c
net/rfkill/rfkill-input.c
net/rfkill/rfkill-input.h
net/rfkill/rfkill.c
net/rose/sysctl_net_rose.c
net/rxrpc/af_rxrpc.c
net/rxrpc/ar-error.c
net/rxrpc/ar-local.c
net/rxrpc/ar-peer.c
net/rxrpc/ar-proc.c
net/rxrpc/ar-transport.c
net/rxrpc/rxkad.c
net/sched/Kconfig
net/sched/Makefile
net/sched/act_api.c
net/sched/act_gact.c
net/sched/act_ipt.c
net/sched/act_mirred.c
net/sched/act_nat.c
net/sched/act_pedit.c
net/sched/act_police.c
net/sched/act_simple.c
net/sched/act_skbedit.c
net/sched/cls_api.c
net/sched/cls_basic.c
net/sched/cls_cgroup.c [new file with mode: 0644]
net/sched/cls_fw.c
net/sched/cls_route.c
net/sched/cls_tcindex.c
net/sched/cls_u32.c
net/sched/ematch.c
net/sched/sch_api.c
net/sched/sch_atm.c
net/sched/sch_blackhole.c
net/sched/sch_cbq.c
net/sched/sch_drr.c [new file with mode: 0644]
net/sched/sch_dsmark.c
net/sched/sch_fifo.c
net/sched/sch_generic.c
net/sched/sch_gred.c
net/sched/sch_hfsc.c
net/sched/sch_htb.c
net/sched/sch_multiq.c
net/sched/sch_netem.c
net/sched/sch_prio.c
net/sched/sch_red.c
net/sched/sch_sfq.c
net/sched/sch_tbf.c
net/sched/sch_teql.c
net/sctp/ipv6.c
net/sctp/protocol.c
net/sctp/sm_statefuns.c
net/sctp/socket.c
net/sctp/sysctl.c
net/socket.c
net/sunrpc/clnt.c
net/sunrpc/rpcb_clnt.c
net/sunrpc/svcauth_unix.c
net/sunrpc/svcsock.c
net/sunrpc/xprtrdma/svc_rdma_transport.c
net/sunrpc/xprtrdma/transport.c
net/sunrpc/xprtrdma/verbs.c
net/sunrpc/xprtsock.c
net/tipc/eth_media.c
net/tipc/name_table.c
net/unix/af_unix.c
net/unix/garbage.c
net/unix/sysctl_net_unix.c
net/wanrouter/wanmain.c
net/wireless/Kconfig
net/wireless/Makefile
net/wireless/core.c
net/wireless/core.h
net/wireless/lib80211.c [new file with mode: 0644]
net/wireless/lib80211_crypt_ccmp.c [moved from net/ieee80211/ieee80211_crypt_ccmp.c with 74% similarity]
net/wireless/lib80211_crypt_tkip.c [moved from net/ieee80211/ieee80211_crypt_tkip.c with 79% similarity]
net/wireless/lib80211_crypt_wep.c [moved from net/ieee80211/ieee80211_crypt_wep.c with 74% similarity]
net/wireless/nl80211.c
net/wireless/reg.c
net/wireless/reg.h
net/wireless/sysfs.c
net/wireless/util.c
net/x25/sysctl_net_x25.c
net/xfrm/Makefile
net/xfrm/xfrm_input.c
net/xfrm/xfrm_output.c
net/xfrm/xfrm_policy.c
net/xfrm/xfrm_proc.c
net/xfrm/xfrm_state.c
net/xfrm/xfrm_sysctl.c [new file with mode: 0644]
net/xfrm/xfrm_user.c
security/selinux/avc.c
security/selinux/hooks.c

index 9b1f6ca..0a08126 100644 (file)
@@ -6,7 +6,7 @@
 # To add a new book the only step required is to add the book to the
 # list of DOCBOOKS.
 
-DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml \
+DOCBOOKS := z8530book.xml mcabook.xml \
            kernel-hacking.xml kernel-locking.xml deviceiobook.xml \
            procfs-guide.xml writing_usb_driver.xml networking.xml \
            kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \
index f24f9e8..627707a 100644 (file)
@@ -98,9 +98,6 @@
 X!Enet/core/wireless.c
      </sect1>
 -->
-     <sect1><title>Synchronous PPP</title>
-!Edrivers/net/wan/syncppp.c
-     </sect1>
   </chapter>
 
 </book>
diff --git a/Documentation/DocBook/wanbook.tmpl b/Documentation/DocBook/wanbook.tmpl
deleted file mode 100644 (file)
index 8c93db1..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-<?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="WANGuide">
- <bookinfo>
-  <title>Synchronous PPP and Cisco HDLC Programming Guide</title>
-  
-  <authorgroup>
-   <author>
-    <firstname>Alan</firstname>
-    <surname>Cox</surname>
-    <affiliation>
-     <address>
-      <email>alan@lxorguk.ukuu.org.uk</email>
-     </address>
-    </affiliation>
-   </author>
-  </authorgroup>
-
-  <copyright>
-   <year>2000</year>
-   <holder>Alan Cox</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 as published by the Free Software Foundation; either
-     version 2 of the License, or (at your option) any later
-     version.
-   </para>
-      
-   <para>
-     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.
-   </para>
-      
-   <para>
-     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
-   </para>
-      
-   <para>
-     For more details see the file COPYING in the source
-     distribution of Linux.
-   </para>
-  </legalnotice>
- </bookinfo>
-
-<toc></toc>
-
-  <chapter id="intro">
-      <title>Introduction</title>
-  <para>
-       The syncppp drivers in Linux provide a fairly complete 
-       implementation of Cisco HDLC and a minimal implementation of
-       PPP. The longer term goal is to switch the PPP layer to the
-       generic PPP interface that is new in Linux 2.3.x. The API should
-       remain unchanged when this is done, but support will then be
-       available for IPX, compression and other PPP features
-  </para>
-  </chapter>
-  <chapter id="bugs">
-     <title>Known Bugs And Assumptions</title>
-  <para>
-  <variablelist>
-    <varlistentry><term>PPP is minimal</term>
-    <listitem>
-    <para>
-       The current PPP implementation is very basic, although sufficient
-       for most wan usages.
-    </para>
-    </listitem></varlistentry>
-
-    <varlistentry><term>Cisco HDLC Quirks</term>
-    <listitem>
-    <para>
-       Currently we do not end all packets with the correct Cisco multicast
-       or unicast flags. Nothing appears to mind too much but this should
-       be corrected.
-    </para>
-    </listitem></varlistentry>
-  </variablelist>
-       
-  </para>
-  </chapter>
-
-  <chapter id="pubfunctions">
-     <title>Public Functions Provided</title>
-!Edrivers/net/wan/syncppp.c
-  </chapter>
-
-</book>
diff --git a/Documentation/RCU/rculist_nulls.txt b/Documentation/RCU/rculist_nulls.txt
new file mode 100644 (file)
index 0000000..239f542
--- /dev/null
@@ -0,0 +1,167 @@
+Using hlist_nulls to protect read-mostly linked lists and
+objects using SLAB_DESTROY_BY_RCU allocations.
+
+Please read the basics in Documentation/RCU/listRCU.txt
+
+Using special makers (called 'nulls') is a convenient way
+to solve following problem :
+
+A typical RCU linked list managing objects which are
+allocated with SLAB_DESTROY_BY_RCU kmem_cache can
+use following algos :
+
+1) Lookup algo
+--------------
+rcu_read_lock()
+begin:
+obj = lockless_lookup(key);
+if (obj) {
+  if (!try_get_ref(obj)) // might fail for free objects
+    goto begin;
+  /*
+   * Because a writer could delete object, and a writer could
+   * reuse these object before the RCU grace period, we
+   * must check key after geting the reference on object
+   */
+  if (obj->key != key) { // not the object we expected
+     put_ref(obj);
+     goto begin;
+   }
+}
+rcu_read_unlock();
+
+Beware that lockless_lookup(key) cannot use traditional hlist_for_each_entry_rcu()
+but a version with an additional memory barrier (smp_rmb())
+
+lockless_lookup(key)
+{
+   struct hlist_node *node, *next;
+   for (pos = rcu_dereference((head)->first);
+          pos && ({ next = pos->next; smp_rmb(); prefetch(next); 1; }) &&
+          ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; });
+          pos = rcu_dereference(next))
+      if (obj->key == key)
+         return obj;
+   return NULL;
+
+And note the traditional hlist_for_each_entry_rcu() misses this smp_rmb() :
+
+   struct hlist_node *node;
+   for (pos = rcu_dereference((head)->first);
+               pos && ({ prefetch(pos->next); 1; }) &&
+               ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; });
+               pos = rcu_dereference(pos->next))
+      if (obj->key == key)
+         return obj;
+   return NULL;
+}
+
+Quoting Corey Minyard :
+
+"If the object is moved from one list to another list in-between the
+ time the hash is calculated and the next field is accessed, and the
+ object has moved to the end of a new list, the traversal will not
+ complete properly on the list it should have, since the object will
+ be on the end of the new list and there's not a way to tell it's on a
+ new list and restart the list traversal.  I think that this can be
+ solved by pre-fetching the "next" field (with proper barriers) before
+ checking the key."
+
+2) Insert algo :
+----------------
+
+We need to make sure a reader cannot read the new 'obj->obj_next' value
+and previous value of 'obj->key'. Or else, an item could be deleted
+from a chain, and inserted into another chain. If new chain was empty
+before the move, 'next' pointer is NULL, and lockless reader can
+not detect it missed following items in original chain.
+
+/*
+ * Please note that new inserts are done at the head of list,
+ * not in the middle or end.
+ */
+obj = kmem_cache_alloc(...);
+lock_chain(); // typically a spin_lock()
+obj->key = key;
+atomic_inc(&obj->refcnt);
+/*
+ * we need to make sure obj->key is updated before obj->next
+ */
+smp_wmb();
+hlist_add_head_rcu(&obj->obj_node, list);
+unlock_chain(); // typically a spin_unlock()
+
+
+3) Remove algo
+--------------
+Nothing special here, we can use a standard RCU hlist deletion.
+But thanks to SLAB_DESTROY_BY_RCU, beware a deleted object can be reused
+very very fast (before the end of RCU grace period)
+
+if (put_last_reference_on(obj) {
+   lock_chain(); // typically a spin_lock()
+   hlist_del_init_rcu(&obj->obj_node);
+   unlock_chain(); // typically a spin_unlock()
+   kmem_cache_free(cachep, obj);
+}
+
+
+
+--------------------------------------------------------------------------
+With hlist_nulls we can avoid extra smp_rmb() in lockless_lookup()
+and extra smp_wmb() in insert function.
+
+For example, if we choose to store the slot number as the 'nulls'
+end-of-list marker for each slot of the hash table, we can detect
+a race (some writer did a delete and/or a move of an object
+to another chain) checking the final 'nulls' value if
+the lookup met the end of chain. If final 'nulls' value
+is not the slot number, then we must restart the lookup at
+the begining. If the object was moved to same chain,
+then the reader doesnt care : It might eventually
+scan the list again without harm.
+
+
+1) lookup algo
+
+ head = &table[slot];
+ rcu_read_lock();
+begin:
+ hlist_nulls_for_each_entry_rcu(obj, node, head, member) {
+   if (obj->key == key) {
+      if (!try_get_ref(obj)) // might fail for free objects
+         goto begin;
+      if (obj->key != key) { // not the object we expected
+         put_ref(obj);
+         goto begin;
+      }
+  goto out;
+ }
+/*
+ * if the nulls value we got at the end of this lookup is
+ * not the expected one, we must restart lookup.
+ * We probably met an item that was moved to another chain.
+ */
+ if (get_nulls_value(node) != slot)
+   goto begin;
+ obj = NULL;
+
+out:
+ rcu_read_unlock();
+
+2) Insert function :
+--------------------
+
+/*
+ * Please note that new inserts are done at the head of list,
+ * not in the middle or end.
+ */
+obj = kmem_cache_alloc(cachep);
+lock_chain(); // typically a spin_lock()
+obj->key = key;
+atomic_set(&obj->refcnt, 1);
+/*
+ * insert obj in RCU way (readers might be traversing chain)
+ */
+hlist_nulls_add_head_rcu(&obj->obj_node, list);
+unlock_chain(); // typically a spin_unlock()
index c28a2ac..77eb6b1 100644 (file)
@@ -120,13 +120,6 @@ Who:       Christoph Hellwig <hch@lst.de>
 
 ---------------------------
 
-What:   eepro100 network driver
-When:   January 2007
-Why:    replaced by the e100 driver
-Who:    Adrian Bunk <bunk@stusta.de>
-
----------------------------
-
 What:  Unused EXPORT_SYMBOL/EXPORT_SYMBOL_GPL exports
        (temporary transition config option provided until then)
        The transition config option will also be removed at the same time.
index 4f2a40f..80c7285 100644 (file)
@@ -147,7 +147,7 @@ Where the supported parameter are:
        driver.  If disabled, the driver will not attempt to scan 
        for and associate to a network until it has been configured with 
        one or more properties for the target network, for example configuring 
-       the network SSID.  Default is 1 (auto-associate)
+       the network SSID.  Default is 0 (do not auto-associate)
        
        Example: % modprobe ipw2200 associate=0
 
index 688dfe1..5ede747 100644 (file)
@@ -194,6 +194,48 @@ or, for backwards compatibility, the option value.  E.g.,
 
        The parameters are as follows:
 
+ad_select
+
+       Specifies the 802.3ad aggregation selection logic to use.  The
+       possible values and their effects are:
+
+       stable or 0
+
+               The active aggregator is chosen by largest aggregate
+               bandwidth.
+
+               Reselection of the active aggregator occurs only when all
+               slaves of the active aggregator are down or the active
+               aggregator has no slaves.
+
+               This is the default value.
+
+       bandwidth or 1
+
+               The active aggregator is chosen by largest aggregate
+               bandwidth.  Reselection occurs if:
+
+               - A slave is added to or removed from the bond
+
+               - Any slave's link state changes
+
+               - Any slave's 802.3ad association state changes
+
+               - The bond's adminstrative state changes to up
+
+       count or 2
+
+               The active aggregator is chosen by the largest number of
+               ports (slaves).  Reselection occurs as described under the
+               "bandwidth" setting, above.
+
+       The bandwidth and count selection policies permit failover of
+       802.3ad aggregations when partial failure of the active aggregator
+       occurs.  This keeps the aggregator with the highest availability
+       (either in bandwidth or in number of ports) active at all times.
+
+       This option was added in bonding version 3.4.0.
+
 arp_interval
 
        Specifies the ARP link monitoring frequency in milliseconds.
@@ -551,6 +593,16 @@ num_grat_arp
        affects only the active-backup mode.  This option was added for
        bonding version 3.3.0.
 
+num_unsol_na
+
+       Specifies the number of unsolicited IPv6 Neighbor Advertisements
+       to be issued after a failover event.  One unsolicited NA is issued
+       immediately after the failover.
+
+       The valid range is 0 - 255; the default value is 1.  This option
+       affects only the active-backup mode.  This option was added for
+       bonding version 3.4.0.
+
 primary
 
        A string (eth0, eth2, etc) specifying which slave is the
@@ -922,17 +974,19 @@ USERCTL=no
 NETMASK, NETWORK and BROADCAST) to match your network configuration.
 
        For later versions of initscripts, such as that found with Fedora
-7 and Red Hat Enterprise Linux version 5 (or later), it is possible, and,
-indeed, preferable, to specify the bonding options in the ifcfg-bond0
+7 (or later) and Red Hat Enterprise Linux version 5 (or later), it is possible,
+and, indeed, preferable, to specify the bonding options in the ifcfg-bond0
 file, e.g. a line of the format:
 
-BONDING_OPTS="mode=active-backup arp_interval=60 arp_ip_target=+192.168.1.254"
+BONDING_OPTS="mode=active-backup arp_interval=60 arp_ip_target=192.168.1.254"
 
        will configure the bond with the specified options.  The options
 specified in BONDING_OPTS are identical to the bonding module parameters
-except for the arp_ip_target field.  Each target should be included as a
-separate option and should be preceded by a '+' to indicate it should be
-added to the list of queried targets, e.g.,
+except for the arp_ip_target field when using versions of initscripts older
+than and 8.57 (Fedora 8) and 8.45.19 (Red Hat Enterprise Linux 5.2).  When
+using older versions each target should be included as a separate option and
+should be preceded by a '+' to indicate it should be added to the list of
+queried targets, e.g.,
 
        arp_ip_target=+192.168.1.1 arp_ip_target=+192.168.1.2
 
@@ -940,7 +994,7 @@ added to the list of queried targets, e.g.,
 options via BONDING_OPTS, it is not necessary to edit /etc/modules.conf or
 /etc/modprobe.conf.
 
-       For older versions of initscripts that do not support
+       For even older versions of initscripts that do not support
 BONDING_OPTS, it is necessary to edit /etc/modules.conf (or
 /etc/modprobe.conf, depending upon your distro) to load the bonding module
 with your desired options when the bond0 interface is brought up.  The
index 39131a3..610083f 100644 (file)
@@ -57,6 +57,24 @@ can be set before calling bind().
 DCCP_SOCKOPT_GET_CUR_MPS is read-only and retrieves the current maximum packet
 size (application payload size) in bytes, see RFC 4340, section 14.
 
+DCCP_SOCKOPT_AVAILABLE_CCIDS is also read-only and returns the list of CCIDs
+supported by the endpoint (see include/linux/dccp.h for symbolic constants).
+The caller needs to provide a sufficiently large (> 2) array of type uint8_t.
+
+DCCP_SOCKOPT_CCID is write-only and sets both the TX and RX CCIDs at the same
+time, combining the operation of the next two socket options. This option is
+preferrable over the latter two, since often applications will use the same
+type of CCID for both directions; and mixed use of CCIDs is not currently well
+understood. This socket option takes as argument at least one uint8_t value, or
+an array of uint8_t values, which must match available CCIDS (see above). CCIDs
+must be registered on the socket before calling connect() or listen().
+
+DCCP_SOCKOPT_TX_CCID is read/write. It returns the current CCID (if set) or sets
+the preference list for the TX CCID, using the same format as DCCP_SOCKOPT_CCID.
+Please note that the getsockopt argument type here is `int', not uint8_t.
+
+DCCP_SOCKOPT_RX_CCID is analogous to DCCP_SOCKOPT_TX_CCID, but for the RX CCID.
+
 DCCP_SOCKOPT_SERVER_TIMEWAIT enables the server (listening socket) to hold
 timewait state when closing the connection (RFC 4340, 8.3). The usual case is
 that the closing server sends a CloseReq, whereupon the client holds timewait
@@ -121,9 +139,6 @@ send_ndp = 1
 send_ackvec = 1
        Whether or not to send Ack Vector options (sec. 11.5).
 
-ack_ratio = 2
-       The default Ack Ratio (sec. 11.3) to use.
-
 tx_ccid = 2
        Default CCID for the sender-receiver half-connection.
 
index 31bc8b7..4eb3cc4 100644 (file)
@@ -3,15 +3,15 @@ Krzysztof Halasa <khc@pm.waw.pl>
 
 
 Generic HDLC layer currently supports:
-1. Frame Relay (ANSI, CCITT, Cisco and no LMI).
+1. Frame Relay (ANSI, CCITT, Cisco and no LMI)
    - Normal (routed) and Ethernet-bridged (Ethernet device emulation)
      interfaces can share a single PVC.
    - ARP support (no InARP support in the kernel - there is an
      experimental InARP user-space daemon available on:
      http://www.kernel.org/pub/linux/utils/net/hdlc/).
-2. raw HDLC - either IP (IPv4) interface or Ethernet device emulation.
-3. Cisco HDLC.
-4. PPP (uses syncppp.c).
+2. raw HDLC - either IP (IPv4) interface or Ethernet device emulation
+3. Cisco HDLC
+4. PPP
 5. X.25 (uses X.25 routines).
 
 Generic HDLC is a protocol driver only - it needs a low-level driver
index d849326..c771278 100644 (file)
@@ -27,6 +27,12 @@ min_adv_mss - INTEGER
        The advertised MSS depends on the first hop route MTU, but will
        never be lower than this setting.
 
+rt_cache_rebuild_count - INTEGER
+       The per net-namespace route cache emergency rebuild threshold.
+       Any net-namespace having its route cache rebuilt due to
+       a hash bucket chain being too long more than this many times
+       will have its route caching disabled
+
 IP Fragmentation:
 
 ipfrag_high_thresh - INTEGER
index 2ff8ccb..24ac91d 100644 (file)
@@ -50,10 +50,6 @@ associates with the AP. hostapd and wpa_supplicant are used to take
 care of WPA2-PSK authentication. In addition, hostapd is also
 processing access point side of association.
 
-Please note that the current Linux kernel does not enable AP mode, so a
-simple patch is needed to enable AP mode selection:
-http://johannes.sipsolutions.net/patches/kernel/all/LATEST/006-allow-ap-vlan-modes.patch
-
 
 # Build mac80211_hwsim as part of kernel configuration
 
@@ -65,3 +61,8 @@ hostapd hostapd.conf
 
 # Run wpa_supplicant (station) for wlan1
 wpa_supplicant -Dwext -iwlan1 -c wpa_supplicant.conf
+
+
+More test cases are available in hostap.git:
+git://w1.fi/srv/git/hostap.git and mac80211_hwsim/tests subdirectory
+(http://w1.fi/gitweb/gitweb.cgi?p=hostap.git;a=tree;f=mac80211_hwsim/tests)
index a96989a..dcf3164 100644 (file)
@@ -131,11 +131,13 @@ are expected to do this during initialization.
 
        r = zd_reg2alpha2(mac->regdomain, alpha2);
        if (!r)
-               regulatory_hint(hw->wiphy, alpha2, NULL);
+               regulatory_hint(hw->wiphy, alpha2);
 
 Example code - drivers providing a built in regulatory domain:
 --------------------------------------------------------------
 
+[NOTE: This API is not currently available, it can be added when required]
+
 If you have regulatory information you can obtain from your
 driver and you *need* to use this we let you build a regulatory domain
 structure and pass it to the wireless core. To do this you should
@@ -167,7 +169,6 @@ struct ieee80211_regdomain mydriver_jp_regdom = {
 
 Then in some part of your code after your wiphy has been registered:
 
-       int r;
        struct ieee80211_regdomain *rd;
        int size_of_regd;
        int num_rules = mydriver_jp_regdom.n_reg_rules;
@@ -178,17 +179,12 @@ Then in some part of your code after your wiphy has been registered:
 
        rd = kzalloc(size_of_regd, GFP_KERNEL);
        if (!rd)
-       return -ENOMEM;
+               return -ENOMEM;
 
        memcpy(rd, &mydriver_jp_regdom, sizeof(struct ieee80211_regdomain));
 
-       for (i=0; i < num_rules; i++) {
-               memcpy(&rd->reg_rules[i], &mydriver_jp_regdom.reg_rules[i],
-                       sizeof(struct ieee80211_reg_rule));
-       }
-       r = regulatory_hint(hw->wiphy, NULL, rd);
-       if (r) {
-               kfree(rd);
-               return r;
-       }
-
+       for (i=0; i < num_rules; i++)
+               memcpy(&rd->reg_rules[i],
+                      &mydriver_jp_regdom.reg_rules[i],
+                      sizeof(struct ieee80211_reg_rule));
+       regulatory_struct_hint(rd);
index b65f079..4d3ee31 100644 (file)
@@ -191,12 +191,20 @@ Userspace input handlers (uevents) or kernel input handlers (rfkill-input):
          to tell the devices registered with the rfkill class to change
          their state (i.e. translates the input layer event into real
          action).
+
        * rfkill-input implements EPO by handling EV_SW SW_RFKILL_ALL 0
          (power off all transmitters) in a special way: it ignores any
          overrides and local state cache and forces all transmitters to the
          RFKILL_STATE_SOFT_BLOCKED state (including those which are already
-         supposed to be BLOCKED).  Note that the opposite event (power on all
-         transmitters) is handled normally.
+         supposed to be BLOCKED).
+       * rfkill EPO will remain active until rfkill-input receives an
+         EV_SW SW_RFKILL_ALL 1 event.  While the EPO is active, transmitters
+         are locked in the blocked state (rfkill will refuse to unblock them).
+       * rfkill-input implements different policies that the user can
+         select for handling EV_SW SW_RFKILL_ALL 1.  It will unlock rfkill,
+         and either do nothing (leave transmitters blocked, but now unlocked),
+         restore the transmitters to their state before the EPO, or unblock
+         them all.
 
 Userspace uevent handler or kernel platform-specific drivers hooked to the
 rfkill notifier chain:
@@ -331,11 +339,9 @@ class to get a sysfs interface :-)
 correct event for your switch/button.  These events are emergency power-off
 events when they are trying to turn the transmitters off.  An example of an
 input device which SHOULD generate *_RFKILL_ALL events is the wireless-kill
-switch in a laptop which is NOT a hotkey, but a real switch that kills radios
-in hardware, even if the O.S. has gone to lunch.  An example of an input device
-which SHOULD NOT generate *_RFKILL_ALL events by default, is any sort of hot
-key that does nothing by itself, as well as any hot key that is type-specific
-(e.g. the one for WLAN).
+switch in a laptop which is NOT a hotkey, but a real sliding/rocker switch.
+An example of an input device which SHOULD NOT generate *_RFKILL_ALL events by
+default, is any sort of hot key that is type-specific (e.g. the one for WLAN).
 
 
 3.1 Guidelines for wireless device drivers
index 8f2b67e..2859e9a 100644 (file)
@@ -742,7 +742,7 @@ M:  jirislaby@gmail.com
 P:     Nick Kossifidis
 M:     mickflemm@gmail.com
 P:     Luis R. Rodriguez
-M:     mcgrof@gmail.com
+M:     lrodriguez@atheros.com
 P:     Bob Copeland
 M:     me@bobcopeland.com
 L:     linux-wireless@vger.kernel.org
@@ -1607,11 +1607,6 @@ L:       acpi4asus-user@lists.sourceforge.net
 W:     http://sourceforge.net/projects/acpi4asus
 S:     Maintained
 
-EEPRO100 NETWORK DRIVER
-P:     Andrey V. Savochkin
-M:     saw@saw.sw.com.sg
-S:     Maintained
-
 EFS FILESYSTEM
 W:     http://aeschi.ch.eu.org/efs/
 S:     Orphan
@@ -3614,16 +3609,26 @@ L:      linux-hams@vger.kernel.org
 W:     http://www.linux-ax25.org/
 S:     Maintained
 
-RTL818X WIRELESS DRIVER
-P:     Michael Wu
-M:     flamingice@sourmilk.net
-P:     Andrea Merello
-M:     andreamrl@tiscali.it
+RTL8180 WIRELESS DRIVER
+P:     John W. Linville
+M:     linville@tuxdriver.com
 L:     linux-wireless@vger.kernel.org
 W:     http://linuxwireless.org/
-T:     git kernel.org:/pub/scm/linux/kernel/git/mwu/mac80211-drivers.git
+T:     git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-testing.git
 S:     Maintained
 
+RTL8187 WIRELESS DRIVER
+P:      Herton Ronaldo Krzesinski
+M:      herton@mandriva.com.br
+P:      Hin-Tak Leung
+M       htl10@users.sourceforge.net
+P:      Larry Finger
+M:      Larry.Finger@lwfinger.net
+L:      linux-wireless@vger.kernel.org
+W:      http://linuxwireless.org/
+T:      git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-testing.git
+S:      Maintained
+
 S3 SAVAGE FRAMEBUFFER DRIVER
 P:     Antonino Daplas
 M:     adaplas@gmail.com
@@ -3904,6 +3909,12 @@ M:       mhoffman@lightlink.com
 L:     lm-sensors@lm-sensors.org
 S:     Maintained
 
+SMSC911x ETHERNET DRIVER
+P:     Steve Glendinning
+M:     steve.glendinning@smsc.com
+L:     netdev@vger.kernel.org
+S:     Supported
+
 SMX UIO Interface
 P:     Ben Nizette
 M:     bn@niasdigital.com
index e7c6386..5add22f 100644 (file)
@@ -177,7 +177,6 @@ static irqreturn_t fsg_reset_handler(int irq, void *dev_id)
 
 static void __init fsg_init(void)
 {
-       DECLARE_MAC_BUF(mac_buf);
        uint8_t __iomem *f;
 
        ixp4xx_sys_init();
@@ -256,10 +255,10 @@ static void __init fsg_init(void)
 #endif
                iounmap(f);
        }
-       printk(KERN_INFO "FSG: Using MAC address %s for port 0\n",
-              print_mac(mac_buf, fsg_plat_eth[0].hwaddr));
-       printk(KERN_INFO "FSG: Using MAC address %s for port 1\n",
-              print_mac(mac_buf, fsg_plat_eth[1].hwaddr));
+       printk(KERN_INFO "FSG: Using MAC address %pM for port 0\n",
+              fsg_plat_eth[0].hwaddr);
+       printk(KERN_INFO "FSG: Using MAC address %pM for port 1\n",
+              fsg_plat_eth[1].hwaddr);
 
 }
 
index 0acd95e..921c947 100644 (file)
@@ -231,7 +231,6 @@ static irqreturn_t nas100d_reset_handler(int irq, void *dev_id)
 
 static void __init nas100d_init(void)
 {
-       DECLARE_MAC_BUF(mac_buf);
        uint8_t __iomem *f;
        int i;
 
@@ -294,8 +293,8 @@ static void __init nas100d_init(void)
 #endif
                iounmap(f);
        }
-       printk(KERN_INFO "NAS100D: Using MAC address %s for port 0\n",
-              print_mac(mac_buf, nas100d_plat_eth[0].hwaddr));
+       printk(KERN_INFO "NAS100D: Using MAC address %pM for port 0\n",
+              nas100d_plat_eth[0].hwaddr);
 
 }
 
index bc9d920..ff6a08d 100644 (file)
@@ -220,7 +220,6 @@ static struct sys_timer nslu2_timer = {
 
 static void __init nslu2_init(void)
 {
-       DECLARE_MAC_BUF(mac_buf);
        uint8_t __iomem *f;
        int i;
 
@@ -275,8 +274,8 @@ static void __init nslu2_init(void)
 #endif
                iounmap(f);
        }
-       printk(KERN_INFO "NSLU2: Using MAC address %s for port 0\n",
-              print_mac(mac_buf, nslu2_plat_eth[0].hwaddr));
+       printk(KERN_INFO "NSLU2: Using MAC address %pM for port 0\n",
+              nslu2_plat_eth[0].hwaddr);
 
 }
 
index 3b74655..fa741f8 100644 (file)
@@ -67,7 +67,6 @@ static void appldata_get_net_sum_data(void *data)
        int i;
        struct appldata_net_sum_data *net_data;
        struct net_device *dev;
-       struct net_device_stats *stats;
        unsigned long rx_packets, tx_packets, rx_bytes, tx_bytes, rx_errors,
                        tx_errors, rx_dropped, tx_dropped, collisions;
 
@@ -86,7 +85,8 @@ static void appldata_get_net_sum_data(void *data)
        collisions = 0;
        read_lock(&dev_base_lock);
        for_each_netdev(&init_net, dev) {
-               stats = dev->get_stats(dev);
+               const struct net_device_stats *stats = dev_get_stats(dev);
+
                rx_packets += stats->rx_packets;
                tx_packets += stats->tx_packets;
                rx_bytes   += stats->rx_bytes;
index 5b45a80..a62ff83 100644 (file)
@@ -42,8 +42,5 @@ void __init idprom_init(void)
                            idprom->id_cksum, calc_idprom_cksum(idprom));
        }
 
-       printk("Ethernet address: %02x:%02x:%02x:%02x:%02x:%02x\n",
-              idprom->id_ethaddr[0], idprom->id_ethaddr[1],
-              idprom->id_ethaddr[2], idprom->id_ethaddr[3],
-              idprom->id_ethaddr[4], idprom->id_ethaddr[5]);
+       printk("Ethernet address: %pM\n", idprom->id_ethaddr);
 }
index 5b4ca8d..74f1a17 100644 (file)
@@ -418,12 +418,7 @@ static void eth_configure(int n, void *init, char *mac,
 
        setup_etheraddr(mac, device->mac, dev->name);
 
-       printk(KERN_INFO "Netdevice %d ", n);
-       printk("(%02x:%02x:%02x:%02x:%02x:%02x) ",
-              device->mac[0], device->mac[1],
-              device->mac[2], device->mac[3],
-              device->mac[4], device->mac[5]);
-       printk(": ");
+       printk(KERN_INFO "Netdevice %d (%pM) : ", n, device->mac);
 
        lp = dev->priv;
        /* This points to the transport private data. It's still clear, but we
index 11a20ad..87f47ca 100644 (file)
@@ -660,10 +660,7 @@ static int iss_net_configure(int index, char *init)
 
        printk(KERN_INFO "Netdevice %d ", index);
        if (lp->have_mac)
-               printk("(%02x:%02x:%02x:%02x:%02x:%02x) ",
-                               lp->mac[0], lp->mac[1],
-                               lp->mac[2], lp->mac[3],
-                               lp->mac[4], lp->mac[5]);
+               printk("(%pM) ", lp->mac);
        printk(": ");
 
        /* sysfs register */
index 93f3690..c237527 100644 (file)
@@ -200,4 +200,3 @@ void aoenet_xmit(struct sk_buff_head *);
 int is_aoe_netif(struct net_device *ifp);
 int set_aoe_iflist(const char __user *str, size_t size);
 
-unsigned long long mac_addr(char addr[6]);
index 1747dd2..2307a27 100644 (file)
@@ -37,7 +37,7 @@ static ssize_t aoedisk_show_mac(struct device *dev,
 
        if (t == NULL)
                return snprintf(page, PAGE_SIZE, "none\n");
-       return snprintf(page, PAGE_SIZE, "%012llx\n", mac_addr(t->addr));
+       return snprintf(page, PAGE_SIZE, "%pm\n", t->addr);
 }
 static ssize_t aoedisk_show_netif(struct device *dev,
                                  struct device_attribute *attr, char *page)
index 71ff78c..45c5a33 100644 (file)
@@ -349,11 +349,9 @@ resend(struct aoedev *d, struct aoetgt *t, struct frame *f)
        ah = (struct aoe_atahdr *) (h+1);
 
        snprintf(buf, sizeof buf,
-               "%15s e%ld.%d oldtag=%08x@%08lx newtag=%08x "
-               "s=%012llx d=%012llx nout=%d\n",
+               "%15s e%ld.%d oldtag=%08x@%08lx newtag=%08x s=%pm d=%pm nout=%d\n",
                "retransmit", d->aoemajor, d->aoeminor, f->tag, jiffies, n,
-               mac_addr(h->src),
-               mac_addr(h->dst), t->nout);
+               h->src, h->dst, t->nout);
        aoechr_error(buf);
 
        f->tag = n;
@@ -544,10 +542,10 @@ rexmit_timer(ulong vp)
                                printk(KERN_INFO
                                        "aoe: e%ld.%d: "
                                        "too many lost jumbo on "
-                                       "%s:%012llx - "
+                                       "%s:%pm - "
                                        "falling back to %d frames.\n",
                                        d->aoemajor, d->aoeminor,
-                                       ifp->nd->name, mac_addr(t->addr),
+                                       ifp->nd->name, t->addr,
                                        DEFAULTBCNT);
                                ifp->maxbcnt = 0;
                        }
@@ -672,8 +670,8 @@ ataid_complete(struct aoedev *d, struct aoetgt *t, unsigned char *id)
 
        if (d->ssize != ssize)
                printk(KERN_INFO
-                       "aoe: %012llx e%ld.%d v%04x has %llu sectors\n",
-                       mac_addr(t->addr),
+                       "aoe: %pm e%ld.%d v%04x has %llu sectors\n",
+                       t->addr,
                        d->aoemajor, d->aoeminor,
                        d->fw_ver, (long long)ssize);
        d->ssize = ssize;
@@ -775,8 +773,8 @@ aoecmd_ata_rsp(struct sk_buff *skb)
        n = get_unaligned_be32(&hin->tag);
        t = gettgt(d, hin->src);
        if (t == NULL) {
-               printk(KERN_INFO "aoe: can't find target e%ld.%d:%012llx\n",
-                       d->aoemajor, d->aoeminor, mac_addr(hin->src));
+               printk(KERN_INFO "aoe: can't find target e%ld.%d:%pm\n",
+                       d->aoemajor, d->aoeminor, hin->src);
                spin_unlock_irqrestore(&d->lock, flags);
                return;
        }
@@ -1036,10 +1034,10 @@ aoecmd_cfg_rsp(struct sk_buff *skb)
                n = n ? n * 512 : DEFAULTBCNT;
                if (n != ifp->maxbcnt) {
                        printk(KERN_INFO
-                               "aoe: e%ld.%d: setting %d%s%s:%012llx\n",
+                               "aoe: e%ld.%d: setting %d%s%s:%pm\n",
                                d->aoemajor, d->aoeminor, n,
                                " byte data frames on ", ifp->nd->name,
-                               mac_addr(t->addr));
+                               t->addr);
                        ifp->maxbcnt = n;
                }
        }
index 9157d64..30de5b1 100644 (file)
@@ -83,17 +83,6 @@ set_aoe_iflist(const char __user *user_str, size_t size)
        return 0;
 }
 
-unsigned long long
-mac_addr(char addr[6])
-{
-       __be64 n = 0;
-       char *p = (char *) &n;
-
-       memcpy(p + 2, addr, 6); /* (sizeof addr != 6) */
-
-       return (unsigned long long) __be64_to_cpu(n);
-}
-
 void
 aoenet_xmit(struct sk_buff_head *queue)
 {
index 7cb4029..1164837 100644 (file)
@@ -2,26 +2,6 @@
 menu "Bluetooth device drivers"
        depends on BT
 
-config BT_HCIUSB
-       tristate "HCI USB driver (old version)"
-       depends on USB && BT_HCIBTUSB=n
-       help
-         Bluetooth HCI USB driver.
-         This driver is required if you want to use Bluetooth devices with
-         USB interface.
-
-         Say Y here to compile support for Bluetooth USB devices into the
-         kernel or say M to compile it as module (hci_usb).
-
-config BT_HCIUSB_SCO
-       bool "SCO (voice) support"
-       depends on BT_HCIUSB
-       help
-         This option enables the SCO support in the HCI USB driver. You need this
-         to transmit voice data with your Bluetooth USB device.
-
-         Say Y here to compile support for SCO over HCI USB.
-
 config BT_HCIBTUSB
        tristate "HCI USB driver"
        depends on USB
index 77444af..16930f9 100644 (file)
@@ -2,7 +2,6 @@
 # Makefile for the Linux Bluetooth HCI device drivers.
 #
 
-obj-$(CONFIG_BT_HCIUSB)                += hci_usb.o
 obj-$(CONFIG_BT_HCIVHCI)       += hci_vhci.o
 obj-$(CONFIG_BT_HCIUART)       += hci_uart.o
 obj-$(CONFIG_BT_HCIBCM203X)    += bcm203x.o
index ee40201..eafd4af 100644 (file)
 
 #include <net/bluetooth/bluetooth.h>
 
-#ifndef CONFIG_BT_HCIBCM203X_DEBUG
-#undef  BT_DBG
-#define BT_DBG(D...)
-#endif
-
 #define VERSION "1.2"
 
 static struct usb_device_id bcm203x_table[] = {
@@ -199,7 +194,7 @@ static int bcm203x_probe(struct usb_interface *intf, const struct usb_device_id
                return -EIO;
        }
 
-       BT_DBG("minidrv data %p size %d", firmware->data, firmware->size);
+       BT_DBG("minidrv data %p size %zu", firmware->data, firmware->size);
 
        size = max_t(uint, firmware->size, 4096);
 
@@ -227,7 +222,7 @@ static int bcm203x_probe(struct usb_interface *intf, const struct usb_device_id
                return -EIO;
        }
 
-       BT_DBG("firmware data %p size %d", firmware->data, firmware->size);
+       BT_DBG("firmware data %p size %zu", firmware->data, firmware->size);
 
        data->fw_data = kmalloc(firmware->size, GFP_KERNEL);
        if (!data->fw_data) {
index 90a0946..d3f14be 100644 (file)
 #include <net/bluetooth/bluetooth.h>
 #include <net/bluetooth/hci_core.h>
 
-#ifndef CONFIG_BT_HCIBFUSB_DEBUG
-#undef  BT_DBG
-#define BT_DBG(D...)
-#endif
-
 #define VERSION "1.2"
 
 static struct usb_driver bfusb_driver;
@@ -221,7 +216,7 @@ static int bfusb_rx_submit(struct bfusb_data *data, struct urb *urb)
        struct sk_buff *skb;
        int err, pipe, size = HCI_MAX_FRAME_SIZE + 32;
 
-       BT_DBG("bfusb %p urb %p", bfusb, urb);
+       BT_DBG("bfusb %p urb %p", data, urb);
 
        if (!urb && !(urb = usb_alloc_urb(0, GFP_ATOMIC)))
                return -ENOMEM;
@@ -354,7 +349,7 @@ static void bfusb_rx_complete(struct urb *urb)
        int count = urb->actual_length;
        int err, hdr, len;
 
-       BT_DBG("bfusb %p urb %p skb %p len %d", bfusb, urb, skb, skb->len);
+       BT_DBG("bfusb %p urb %p skb %p len %d", data, urb, skb, skb->len);
 
        read_lock(&data->lock);
 
@@ -691,7 +686,7 @@ static int bfusb_probe(struct usb_interface *intf, const struct usb_device_id *i
                goto error;
        }
 
-       BT_DBG("firmware data %p size %d", firmware->data, firmware->size);
+       BT_DBG("firmware data %p size %zu", firmware->data, firmware->size);
 
        if (bfusb_load_firmware(data, firmware->data, firmware->size) < 0) {
                BT_ERR("Firmware loading failed");
index b936d8c..c115285 100644 (file)
 #include <net/bluetooth/bluetooth.h>
 #include <net/bluetooth/hci_core.h>
 
-#ifndef CONFIG_BT_HCIBPA10X_DEBUG
-#undef  BT_DBG
-#define BT_DBG(D...)
-#endif
-
 #define VERSION "0.10"
 
 static struct usb_device_id bpa10x_table[] = {
@@ -489,6 +484,8 @@ static int bpa10x_probe(struct usb_interface *intf, const struct usb_device_id *
 
        hdev->owner = THIS_MODULE;
 
+       set_bit(HCI_QUIRK_NO_RESET, &hdev->quirks);
+
        err = hci_register_dev(hdev);
        if (err < 0) {
                hci_free_dev(hdev);
index b3e4d07..ff195c2 100644 (file)
@@ -502,15 +502,15 @@ static int bt3c_load_firmware(bt3c_info_t *info, const unsigned char *firmware,
 
                memset(b, 0, sizeof(b));
                memcpy(b, ptr + 2, 2);
-               size = simple_strtol(b, NULL, 16);
+               size = simple_strtoul(b, NULL, 16);
 
                memset(b, 0, sizeof(b));
                memcpy(b, ptr + 4, 8);
-               addr = simple_strtol(b, NULL, 16);
+               addr = simple_strtoul(b, NULL, 16);
 
                memset(b, 0, sizeof(b));
                memcpy(b, ptr + (size * 2) + 2, 2);
-               fcs = simple_strtol(b, NULL, 16);
+               fcs = simple_strtoul(b, NULL, 16);
 
                memset(b, 0, sizeof(b));
                for (tmp = 0, i = 0; i < size; i++) {
@@ -530,7 +530,7 @@ static int bt3c_load_firmware(bt3c_info_t *info, const unsigned char *firmware,
                        memset(b, 0, sizeof(b));
                        for (i = 0; i < (size - 4) / 2; i++) {
                                memcpy(b, ptr + (i * 4) + 12, 4);
-                               tmp = simple_strtol(b, NULL, 16);
+                               tmp = simple_strtoul(b, NULL, 16);
                                bt3c_put(iobase, tmp);
                        }
                }
index cda6c7c..7e29827 100644 (file)
 #include <net/bluetooth/bluetooth.h>
 #include <net/bluetooth/hci_core.h>
 
-#ifndef CONFIG_BT_HCIBTSDIO_DEBUG
-#undef  BT_DBG
-#define BT_DBG(D...)
-#endif
-
 #define VERSION "0.1"
 
 static const struct sdio_device_id btsdio_table[] = {
@@ -91,6 +86,7 @@ static int btsdio_tx_packet(struct btsdio_data *data, struct sk_buff *skb)
 
        err = sdio_writesb(data->func, REG_TDAT, skb->data, skb->len);
        if (err < 0) {
+               skb_pull(skb, 4);
                sdio_writeb(data->func, 0x01, REG_PC_WRT, NULL);
                return err;
        }
index af472e0..b5fbda6 100644 (file)
 #include <net/bluetooth/bluetooth.h>
 #include <net/bluetooth/hci_core.h>
 
-//#define CONFIG_BT_HCIBTUSB_DEBUG
-#ifndef CONFIG_BT_HCIBTUSB_DEBUG
-#undef  BT_DBG
-#define BT_DBG(D...)
-#endif
-
-#define VERSION "0.3"
+#define VERSION "0.4"
 
 static int ignore_dga;
 static int ignore_csr;
 static int ignore_sniffer;
 static int disable_scofix;
 static int force_scofix;
-static int reset;
+
+static int reset = 1;
 
 static struct usb_driver btusb_driver;
 
 #define BTUSB_IGNORE           0x01
-#define BTUSB_RESET            0x02
-#define BTUSB_DIGIANSWER       0x04
-#define BTUSB_CSR              0x08
-#define BTUSB_SNIFFER          0x10
-#define BTUSB_BCM92035         0x20
-#define BTUSB_BROKEN_ISOC      0x40
-#define BTUSB_WRONG_SCO_MTU    0x80
+#define BTUSB_DIGIANSWER       0x02
+#define BTUSB_CSR              0x04
+#define BTUSB_SNIFFER          0x08
+#define BTUSB_BCM92035         0x10
+#define BTUSB_BROKEN_ISOC      0x20
+#define BTUSB_WRONG_SCO_MTU    0x40
 
 static struct usb_device_id btusb_table[] = {
        /* Generic Bluetooth USB device */
@@ -79,7 +73,7 @@ static struct usb_device_id btusb_table[] = {
        { USB_DEVICE(0x0bdb, 0x1002) },
 
        /* Canyon CN-BTU1 with HID interfaces */
-       { USB_DEVICE(0x0c10, 0x0000), .driver_info = BTUSB_RESET },
+       { USB_DEVICE(0x0c10, 0x0000) },
 
        { }     /* Terminating entry */
 };
@@ -94,52 +88,37 @@ static struct usb_device_id blacklist_table[] = {
        { USB_DEVICE(0x0a5c, 0x2033), .driver_info = BTUSB_IGNORE },
 
        /* Broadcom BCM2035 */
-       { USB_DEVICE(0x0a5c, 0x2035), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
-       { USB_DEVICE(0x0a5c, 0x200a), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
+       { USB_DEVICE(0x0a5c, 0x2035), .driver_info = BTUSB_WRONG_SCO_MTU },
+       { USB_DEVICE(0x0a5c, 0x200a), .driver_info = BTUSB_WRONG_SCO_MTU },
+       { USB_DEVICE(0x0a5c, 0x2009), .driver_info = BTUSB_BCM92035 },
 
        /* Broadcom BCM2045 */
-       { USB_DEVICE(0x0a5c, 0x2039), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
-       { USB_DEVICE(0x0a5c, 0x2101), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
-
-       /* Broadcom BCM2046 */
-       { USB_DEVICE(0x0a5c, 0x2146), .driver_info = BTUSB_RESET },
-       { USB_DEVICE(0x0a5c, 0x2151), .driver_info = BTUSB_RESET },
-
-       /* Apple MacBook Pro with Broadcom chip */
-       { USB_DEVICE(0x05ac, 0x820f), .driver_info = BTUSB_RESET },
+       { USB_DEVICE(0x0a5c, 0x2039), .driver_info = BTUSB_WRONG_SCO_MTU },
+       { USB_DEVICE(0x0a5c, 0x2101), .driver_info = BTUSB_WRONG_SCO_MTU },
 
        /* IBM/Lenovo ThinkPad with Broadcom chip */
-       { USB_DEVICE(0x0a5c, 0x201e), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
-       { USB_DEVICE(0x0a5c, 0x2110), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
-
-       /* Targus ACB10US */
-       { USB_DEVICE(0x0a5c, 0x2100), .driver_info = BTUSB_RESET },
-       { USB_DEVICE(0x0a5c, 0x2154), .driver_info = BTUSB_RESET },
-
-       /* ANYCOM Bluetooth USB-200 and USB-250 */
-       { USB_DEVICE(0x0a5c, 0x2111), .driver_info = BTUSB_RESET },
+       { USB_DEVICE(0x0a5c, 0x201e), .driver_info = BTUSB_WRONG_SCO_MTU },
+       { USB_DEVICE(0x0a5c, 0x2110), .driver_info = BTUSB_WRONG_SCO_MTU },
 
        /* HP laptop with Broadcom chip */
-       { USB_DEVICE(0x03f0, 0x171d), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
+       { USB_DEVICE(0x03f0, 0x171d), .driver_info = BTUSB_WRONG_SCO_MTU },
 
        /* Dell laptop with Broadcom chip */
-       { USB_DEVICE(0x413c, 0x8126), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
+       { USB_DEVICE(0x413c, 0x8126), .driver_info = BTUSB_WRONG_SCO_MTU },
 
-       /* Dell Wireless 370 */
-       { USB_DEVICE(0x413c, 0x8156), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
+       /* Dell Wireless 370 and 410 devices */
+       { USB_DEVICE(0x413c, 0x8152), .driver_info = BTUSB_WRONG_SCO_MTU },
+       { USB_DEVICE(0x413c, 0x8156), .driver_info = BTUSB_WRONG_SCO_MTU },
 
-       /* Dell Wireless 410 */
-       { USB_DEVICE(0x413c, 0x8152), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
+       /* Belkin F8T012 and F8T013 devices */
+       { USB_DEVICE(0x050d, 0x0012), .driver_info = BTUSB_WRONG_SCO_MTU },
+       { USB_DEVICE(0x050d, 0x0013), .driver_info = BTUSB_WRONG_SCO_MTU },
 
-       /* Microsoft Wireless Transceiver for Bluetooth 2.0 */
-       { USB_DEVICE(0x045e, 0x009c), .driver_info = BTUSB_RESET },
+       /* Asus WL-BTD202 device */
+       { USB_DEVICE(0x0b05, 0x1715), .driver_info = BTUSB_WRONG_SCO_MTU },
 
        /* Kensington Bluetooth USB adapter */
-       { USB_DEVICE(0x047d, 0x105d), .driver_info = BTUSB_RESET },
-       { USB_DEVICE(0x047d, 0x105e), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
-
-       /* ISSC Bluetooth Adapter v3.1 */
-       { USB_DEVICE(0x1131, 0x1001), .driver_info = BTUSB_RESET },
+       { USB_DEVICE(0x047d, 0x105e), .driver_info = BTUSB_WRONG_SCO_MTU },
 
        /* RTX Telecom based adapters with buggy SCO support */
        { USB_DEVICE(0x0400, 0x0807), .driver_info = BTUSB_BROKEN_ISOC },
@@ -148,13 +127,6 @@ static struct usb_device_id blacklist_table[] = {
        /* CONWISE Technology based adapters with buggy SCO support */
        { USB_DEVICE(0x0e5e, 0x6622), .driver_info = BTUSB_BROKEN_ISOC },
 
-       /* Belkin F8T012 and F8T013 devices */
-       { USB_DEVICE(0x050d, 0x0012), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
-       { USB_DEVICE(0x050d, 0x0013), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },
-
-       /* Belkin F8T016 device */
-       { USB_DEVICE(0x050d, 0x016a), .driver_info = BTUSB_RESET },
-
        /* Digianswer devices */
        { USB_DEVICE(0x08fd, 0x0001), .driver_info = BTUSB_DIGIANSWER },
        { USB_DEVICE(0x08fd, 0x0002), .driver_info = BTUSB_IGNORE },
@@ -197,7 +169,10 @@ struct btusb_data {
        struct usb_endpoint_descriptor *isoc_tx_ep;
        struct usb_endpoint_descriptor *isoc_rx_ep;
 
+       __u8 cmdreq_type;
+
        int isoc_altsetting;
+       int suspend_count;
 };
 
 static void btusb_intr_complete(struct urb *urb)
@@ -236,7 +211,7 @@ static void btusb_intr_complete(struct urb *urb)
        }
 }
 
-static int btusb_submit_intr_urb(struct hci_dev *hdev)
+static int btusb_submit_intr_urb(struct hci_dev *hdev, gfp_t mem_flags)
 {
        struct btusb_data *data = hdev->driver_data;
        struct urb *urb;
@@ -249,13 +224,13 @@ static int btusb_submit_intr_urb(struct hci_dev *hdev)
        if (!data->intr_ep)
                return -ENODEV;
 
-       urb = usb_alloc_urb(0, GFP_ATOMIC);
+       urb = usb_alloc_urb(0, mem_flags);
        if (!urb)
                return -ENOMEM;
 
        size = le16_to_cpu(data->intr_ep->wMaxPacketSize);
 
-       buf = kmalloc(size, GFP_ATOMIC);
+       buf = kmalloc(size, mem_flags);
        if (!buf) {
                usb_free_urb(urb);
                return -ENOMEM;
@@ -271,7 +246,7 @@ static int btusb_submit_intr_urb(struct hci_dev *hdev)
 
        usb_anchor_urb(urb, &data->intr_anchor);
 
-       err = usb_submit_urb(urb, GFP_ATOMIC);
+       err = usb_submit_urb(urb, mem_flags);
        if (err < 0) {
                BT_ERR("%s urb %p submission failed (%d)",
                                                hdev->name, urb, -err);
@@ -319,7 +294,7 @@ static void btusb_bulk_complete(struct urb *urb)
        }
 }
 
-static int btusb_submit_bulk_urb(struct hci_dev *hdev)
+static int btusb_submit_bulk_urb(struct hci_dev *hdev, gfp_t mem_flags)
 {
        struct btusb_data *data = hdev->driver_data;
        struct urb *urb;
@@ -332,13 +307,13 @@ static int btusb_submit_bulk_urb(struct hci_dev *hdev)
        if (!data->bulk_rx_ep)
                return -ENODEV;
 
-       urb = usb_alloc_urb(0, GFP_KERNEL);
+       urb = usb_alloc_urb(0, mem_flags);
        if (!urb)
                return -ENOMEM;
 
        size = le16_to_cpu(data->bulk_rx_ep->wMaxPacketSize);
 
-       buf = kmalloc(size, GFP_KERNEL);
+       buf = kmalloc(size, mem_flags);
        if (!buf) {
                usb_free_urb(urb);
                return -ENOMEM;
@@ -353,7 +328,7 @@ static int btusb_submit_bulk_urb(struct hci_dev *hdev)
 
        usb_anchor_urb(urb, &data->bulk_anchor);
 
-       err = usb_submit_urb(urb, GFP_KERNEL);
+       err = usb_submit_urb(urb, mem_flags);
        if (err < 0) {
                BT_ERR("%s urb %p submission failed (%d)",
                                                hdev->name, urb, -err);
@@ -430,7 +405,7 @@ static void inline __fill_isoc_descriptor(struct urb *urb, int len, int mtu)
        urb->number_of_packets = i;
 }
 
-static int btusb_submit_isoc_urb(struct hci_dev *hdev)
+static int btusb_submit_isoc_urb(struct hci_dev *hdev, gfp_t mem_flags)
 {
        struct btusb_data *data = hdev->driver_data;
        struct urb *urb;
@@ -443,14 +418,14 @@ static int btusb_submit_isoc_urb(struct hci_dev *hdev)
        if (!data->isoc_rx_ep)
                return -ENODEV;
 
-       urb = usb_alloc_urb(BTUSB_MAX_ISOC_FRAMES, GFP_KERNEL);
+       urb = usb_alloc_urb(BTUSB_MAX_ISOC_FRAMES, mem_flags);
        if (!urb)
                return -ENOMEM;
 
        size = le16_to_cpu(data->isoc_rx_ep->wMaxPacketSize) *
                                                BTUSB_MAX_ISOC_FRAMES;
 
-       buf = kmalloc(size, GFP_KERNEL);
+       buf = kmalloc(size, mem_flags);
        if (!buf) {
                usb_free_urb(urb);
                return -ENOMEM;
@@ -473,7 +448,7 @@ static int btusb_submit_isoc_urb(struct hci_dev *hdev)
 
        usb_anchor_urb(urb, &data->isoc_anchor);
 
-       err = usb_submit_urb(urb, GFP_KERNEL);
+       err = usb_submit_urb(urb, mem_flags);
        if (err < 0) {
                BT_ERR("%s urb %p submission failed (%d)",
                                                hdev->name, urb, -err);
@@ -520,7 +495,7 @@ static int btusb_open(struct hci_dev *hdev)
        if (test_and_set_bit(BTUSB_INTR_RUNNING, &data->flags))
                return 0;
 
-       err = btusb_submit_intr_urb(hdev);
+       err = btusb_submit_intr_urb(hdev, GFP_KERNEL);
        if (err < 0) {
                clear_bit(BTUSB_INTR_RUNNING, &data->flags);
                clear_bit(HCI_RUNNING, &hdev->flags);
@@ -589,7 +564,7 @@ static int btusb_send_frame(struct sk_buff *skb)
                        return -ENOMEM;
                }
 
-               dr->bRequestType = USB_TYPE_CLASS;
+               dr->bRequestType = data->cmdreq_type;
                dr->bRequest     = 0;
                dr->wIndex       = 0;
                dr->wValue       = 0;
@@ -680,8 +655,19 @@ static void btusb_notify(struct hci_dev *hdev, unsigned int evt)
 
        BT_DBG("%s evt %d", hdev->name, evt);
 
-       if (evt == HCI_NOTIFY_CONN_ADD || evt == HCI_NOTIFY_CONN_DEL)
-               schedule_work(&data->work);
+       if (hdev->conn_hash.acl_num > 0) {
+               if (!test_and_set_bit(BTUSB_BULK_RUNNING, &data->flags)) {
+                       if (btusb_submit_bulk_urb(hdev, GFP_ATOMIC) < 0)
+                               clear_bit(BTUSB_BULK_RUNNING, &data->flags);
+                       else
+                               btusb_submit_bulk_urb(hdev, GFP_ATOMIC);
+               }
+       } else {
+               clear_bit(BTUSB_BULK_RUNNING, &data->flags);
+               usb_unlink_anchored_urbs(&data->bulk_anchor);
+       }
+
+       schedule_work(&data->work);
 }
 
 static int inline __set_isoc_interface(struct hci_dev *hdev, int altsetting)
@@ -732,18 +718,6 @@ static void btusb_work(struct work_struct *work)
        struct btusb_data *data = container_of(work, struct btusb_data, work);
        struct hci_dev *hdev = data->hdev;
 
-       if (hdev->conn_hash.acl_num > 0) {
-               if (!test_and_set_bit(BTUSB_BULK_RUNNING, &data->flags)) {
-                       if (btusb_submit_bulk_urb(hdev) < 0)
-                               clear_bit(BTUSB_BULK_RUNNING, &data->flags);
-                       else
-                               btusb_submit_bulk_urb(hdev);
-               }
-       } else {
-               clear_bit(BTUSB_BULK_RUNNING, &data->flags);
-               usb_kill_anchored_urbs(&data->bulk_anchor);
-       }
-
        if (hdev->conn_hash.sco_num > 0) {
                if (data->isoc_altsetting != 2) {
                        clear_bit(BTUSB_ISOC_RUNNING, &data->flags);
@@ -754,10 +728,10 @@ static void btusb_work(struct work_struct *work)
                }
 
                if (!test_and_set_bit(BTUSB_ISOC_RUNNING, &data->flags)) {
-                       if (btusb_submit_isoc_urb(hdev) < 0)
+                       if (btusb_submit_isoc_urb(hdev, GFP_KERNEL) < 0)
                                clear_bit(BTUSB_ISOC_RUNNING, &data->flags);
                        else
-                               btusb_submit_isoc_urb(hdev);
+                               btusb_submit_isoc_urb(hdev, GFP_KERNEL);
                }
        } else {
                clear_bit(BTUSB_ISOC_RUNNING, &data->flags);
@@ -828,6 +802,8 @@ static int btusb_probe(struct usb_interface *intf,
                return -ENODEV;
        }
 
+       data->cmdreq_type = USB_TYPE_CLASS;
+
        data->udev = interface_to_usbdev(intf);
        data->intf = intf;
 
@@ -862,11 +838,11 @@ static int btusb_probe(struct usb_interface *intf,
 
        hdev->owner = THIS_MODULE;
 
-       /* interface numbers are hardcoded in the spec */
+       /* Interface numbers are hardcoded in the specification */
        data->isoc = usb_ifnum_to_if(data->udev, 1);
 
-       if (reset || id->driver_info & BTUSB_RESET)
-               set_bit(HCI_QUIRK_RESET_ON_INIT, &hdev->quirks);
+       if (!reset)
+               set_bit(HCI_QUIRK_NO_RESET, &hdev->quirks);
 
        if (force_scofix || id->driver_info & BTUSB_WRONG_SCO_MTU) {
                if (!disable_scofix)
@@ -876,9 +852,23 @@ static int btusb_probe(struct usb_interface *intf,
        if (id->driver_info & BTUSB_BROKEN_ISOC)
                data->isoc = NULL;
 
+       if (id->driver_info & BTUSB_DIGIANSWER) {
+               data->cmdreq_type = USB_TYPE_VENDOR;
+               set_bit(HCI_QUIRK_NO_RESET, &hdev->quirks);
+       }
+
+       if (id->driver_info & BTUSB_CSR) {
+               struct usb_device *udev = data->udev;
+
+               /* Old firmware would otherwise execute USB reset */
+               if (le16_to_cpu(udev->descriptor.bcdDevice) < 0x117)
+                       set_bit(HCI_QUIRK_NO_RESET, &hdev->quirks);
+       }
+
        if (id->driver_info & BTUSB_SNIFFER) {
                struct usb_device *udev = data->udev;
 
+               /* New sniffer firmware has crippled HCI interface */
                if (le16_to_cpu(udev->descriptor.bcdDevice) > 0x997)
                        set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks);
 
@@ -949,10 +939,71 @@ static void btusb_disconnect(struct usb_interface *intf)
        hci_free_dev(hdev);
 }
 
+static int btusb_suspend(struct usb_interface *intf, pm_message_t message)
+{
+       struct btusb_data *data = usb_get_intfdata(intf);
+
+       BT_DBG("intf %p", intf);
+
+       if (data->suspend_count++)
+               return 0;
+
+       cancel_work_sync(&data->work);
+
+       usb_kill_anchored_urbs(&data->tx_anchor);
+
+       usb_kill_anchored_urbs(&data->isoc_anchor);
+       usb_kill_anchored_urbs(&data->bulk_anchor);
+       usb_kill_anchored_urbs(&data->intr_anchor);
+
+       return 0;
+}
+
+static int btusb_resume(struct usb_interface *intf)
+{
+       struct btusb_data *data = usb_get_intfdata(intf);
+       struct hci_dev *hdev = data->hdev;
+       int err;
+
+       BT_DBG("intf %p", intf);
+
+       if (--data->suspend_count)
+               return 0;
+
+       if (!test_bit(HCI_RUNNING, &hdev->flags))
+               return 0;
+
+       if (test_bit(BTUSB_INTR_RUNNING, &data->flags)) {
+               err = btusb_submit_intr_urb(hdev, GFP_NOIO);
+               if (err < 0) {
+                       clear_bit(BTUSB_INTR_RUNNING, &data->flags);
+                       return err;
+               }
+       }
+
+       if (test_bit(BTUSB_BULK_RUNNING, &data->flags)) {
+               if (btusb_submit_bulk_urb(hdev, GFP_NOIO) < 0)
+                       clear_bit(BTUSB_BULK_RUNNING, &data->flags);
+               else
+                       btusb_submit_bulk_urb(hdev, GFP_NOIO);
+       }
+
+       if (test_bit(BTUSB_ISOC_RUNNING, &data->flags)) {
+               if (btusb_submit_isoc_urb(hdev, GFP_NOIO) < 0)
+                       clear_bit(BTUSB_ISOC_RUNNING, &data->flags);
+               else
+                       btusb_submit_isoc_urb(hdev, GFP_NOIO);
+       }
+
+       return 0;
+}
+
 static struct usb_driver btusb_driver = {
        .name           = "btusb",
        .probe          = btusb_probe,
        .disconnect     = btusb_disconnect,
+       .suspend        = btusb_suspend,
+       .resume         = btusb_resume,
        .id_table       = btusb_table,
 };
 
index 7938062..894b2cb 100644 (file)
 
 #include "hci_uart.h"
 
-#ifndef CONFIG_BT_HCIUART_DEBUG
-#undef  BT_DBG
-#define BT_DBG( A... )
-#endif
-
 #define VERSION "0.3"
 
 static int txcrc = 1;
index bfbae14..b0fafb0 100644 (file)
 
 #include "hci_uart.h"
 
-#ifndef CONFIG_BT_HCIUART_DEBUG
-#undef  BT_DBG
-#define BT_DBG( A... )
-#endif
-
 #define VERSION "1.2"
 
 struct h4_struct {
index 4426bb5..af761dc 100644 (file)
 
 #include "hci_uart.h"
 
-#ifndef CONFIG_BT_HCIUART_DEBUG
-#undef  BT_DBG
-#define BT_DBG( A... )
-#endif
-
 #define VERSION "2.2"
 
 static int reset = 0;
@@ -399,8 +394,8 @@ static int hci_uart_register_dev(struct hci_uart *hu)
 
        hdev->owner = THIS_MODULE;
 
-       if (reset)
-               set_bit(HCI_QUIRK_RESET_ON_INIT, &hdev->quirks);
+       if (!reset)
+               set_bit(HCI_QUIRK_NO_RESET, &hdev->quirks);
 
        if (hci_register_dev(hdev) < 0) {
                BT_ERR("Can't register HCI device");
diff --git a/drivers/bluetooth/hci_usb.c b/drivers/bluetooth/hci_usb.c
deleted file mode 100644 (file)
index 3c45392..0000000
+++ /dev/null
@@ -1,1136 +0,0 @@
-/* 
-   HCI USB driver for Linux Bluetooth protocol stack (BlueZ)
-   Copyright (C) 2000-2001 Qualcomm Incorporated
-   Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
-
-   Copyright (C) 2003 Maxim Krasnyansky <maxk@qualcomm.com>
-
-   This program 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;
-
-   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-   IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
-   CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES 
-   WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 
-   ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 
-   OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-   ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, 
-   COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS 
-   SOFTWARE IS DISCLAIMED.
-*/
-
-/*
- * Bluetooth HCI USB driver.
- * Based on original USB Bluetooth driver for Linux kernel
- *    Copyright (c) 2000 Greg Kroah-Hartman        <greg@kroah.com>
- *    Copyright (c) 2000 Mark Douglas Corner       <mcorner@umich.edu>
- *
- */
-
-#include <linux/module.h>
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/unistd.h>
-#include <linux/types.h>
-#include <linux/interrupt.h>
-#include <linux/moduleparam.h>
-
-#include <linux/slab.h>
-#include <linux/errno.h>
-#include <linux/string.h>
-#include <linux/skbuff.h>
-
-#include <linux/usb.h>
-
-#include <net/bluetooth/bluetooth.h>
-#include <net/bluetooth/hci_core.h>
-
-#include "hci_usb.h"
-
-#ifndef CONFIG_BT_HCIUSB_DEBUG
-#undef  BT_DBG
-#define BT_DBG(D...)
-#endif
-
-#ifndef CONFIG_BT_HCIUSB_ZERO_PACKET
-#undef  URB_ZERO_PACKET
-#define URB_ZERO_PACKET 0
-#endif
-
-static int ignore_dga;
-static int ignore_csr;
-static int ignore_sniffer;
-static int disable_scofix;
-static int force_scofix;
-static int reset;
-
-#ifdef CONFIG_BT_HCIUSB_SCO
-static int isoc = 2;
-#endif
-
-#define VERSION "2.10"
-
-static struct usb_driver hci_usb_driver; 
-
-static struct usb_device_id bluetooth_ids[] = {
-       /* Generic Bluetooth USB device */
-       { USB_DEVICE_INFO(HCI_DEV_CLASS, HCI_DEV_SUBCLASS, HCI_DEV_PROTOCOL) },
-
-       /* AVM BlueFRITZ! USB v2.0 */
-       { USB_DEVICE(0x057c, 0x3800) },
-
-       /* Bluetooth Ultraport Module from IBM */
-       { USB_DEVICE(0x04bf, 0x030a) },
-
-       /* ALPS Modules with non-standard id */
-       { USB_DEVICE(0x044e, 0x3001) },
-       { USB_DEVICE(0x044e, 0x3002) },
-
-       /* Ericsson with non-standard id */
-       { USB_DEVICE(0x0bdb, 0x1002) },
-
-       /* Canyon CN-BTU1 with HID interfaces */
-       { USB_DEVICE(0x0c10, 0x0000), .driver_info = HCI_RESET },
-
-       { }     /* Terminating entry */
-};
-
-MODULE_DEVICE_TABLE (usb, bluetooth_ids);
-
-static struct usb_device_id blacklist_ids[] = {
-       /* CSR BlueCore devices */
-       { USB_DEVICE(0x0a12, 0x0001), .driver_info = HCI_CSR },
-
-       /* Broadcom BCM2033 without firmware */
-       { USB_DEVICE(0x0a5c, 0x2033), .driver_info = HCI_IGNORE },
-
-       /* Broadcom BCM2035 */
-       { USB_DEVICE(0x0a5c, 0x2035), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
-       { USB_DEVICE(0x0a5c, 0x200a), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
-       { USB_DEVICE(0x0a5c, 0x2009), .driver_info = HCI_BCM92035 },
-
-       /* Broadcom BCM2045 */
-       { USB_DEVICE(0x0a5c, 0x2039), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
-       { USB_DEVICE(0x0a5c, 0x2101), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
-
-       /* IBM/Lenovo ThinkPad with Broadcom chip */
-       { USB_DEVICE(0x0a5c, 0x201e), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
-       { USB_DEVICE(0x0a5c, 0x2110), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
-
-       /* Targus ACB10US */
-       { USB_DEVICE(0x0a5c, 0x2100), .driver_info = HCI_RESET },
-
-       /* ANYCOM Bluetooth USB-200 and USB-250 */
-       { USB_DEVICE(0x0a5c, 0x2111), .driver_info = HCI_RESET },
-
-       /* HP laptop with Broadcom chip */
-       { USB_DEVICE(0x03f0, 0x171d), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
-
-       /* Dell laptop with Broadcom chip */
-       { USB_DEVICE(0x413c, 0x8126), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
-       /* Dell Wireless 370 */
-       { USB_DEVICE(0x413c, 0x8156), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
-       /* Dell Wireless 410 */
-       { USB_DEVICE(0x413c, 0x8152), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
-
-       /* Broadcom 2046 */
-       { USB_DEVICE(0x0a5c, 0x2151), .driver_info = HCI_RESET },
-
-       /* Microsoft Wireless Transceiver for Bluetooth 2.0 */
-       { USB_DEVICE(0x045e, 0x009c), .driver_info = HCI_RESET },
-
-       /* Kensington Bluetooth USB adapter */
-       { USB_DEVICE(0x047d, 0x105d), .driver_info = HCI_RESET },
-       { USB_DEVICE(0x047d, 0x105e), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
-
-       /* ISSC Bluetooth Adapter v3.1 */
-       { USB_DEVICE(0x1131, 0x1001), .driver_info = HCI_RESET },
-
-       /* RTX Telecom based adapters with buggy SCO support */
-       { USB_DEVICE(0x0400, 0x0807), .driver_info = HCI_BROKEN_ISOC },
-       { USB_DEVICE(0x0400, 0x080a), .driver_info = HCI_BROKEN_ISOC },
-
-       /* CONWISE Technology based adapters with buggy SCO support */
-       { USB_DEVICE(0x0e5e, 0x6622), .driver_info = HCI_BROKEN_ISOC },
-
-       /* Belkin F8T012 and F8T013 devices */
-       { USB_DEVICE(0x050d, 0x0012), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
-       { USB_DEVICE(0x050d, 0x0013), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
-
-       /* Digianswer devices */
-       { USB_DEVICE(0x08fd, 0x0001), .driver_info = HCI_DIGIANSWER },
-       { USB_DEVICE(0x08fd, 0x0002), .driver_info = HCI_IGNORE },
-
-       /* CSR BlueCore Bluetooth Sniffer */
-       { USB_DEVICE(0x0a12, 0x0002), .driver_info = HCI_SNIFFER },
-
-       /* Frontline ComProbe Bluetooth Sniffer */
-       { USB_DEVICE(0x16d3, 0x0002), .driver_info = HCI_SNIFFER },
-
-       { }     /* Terminating entry */
-};
-
-static struct _urb *_urb_alloc(int isoc, gfp_t gfp)
-{
-       struct _urb *_urb = kmalloc(sizeof(struct _urb) +
-                               sizeof(struct usb_iso_packet_descriptor) * isoc, gfp);
-       if (_urb) {
-               memset(_urb, 0, sizeof(*_urb));
-               usb_init_urb(&_urb->urb);
-       }
-       return _urb;
-}
-
-static struct _urb *_urb_dequeue(struct _urb_queue *q)
-{
-       struct _urb *_urb = NULL;
-       unsigned long flags;
-       spin_lock_irqsave(&q->lock, flags);
-       {
-               struct list_head *head = &q->head;
-               struct list_head *next = head->next;
-               if (next != head) {
-                       _urb = list_entry(next, struct _urb, list);
-                       list_del(next); _urb->queue = NULL;
-               }
-       }
-       spin_unlock_irqrestore(&q->lock, flags);
-       return _urb;
-}
-
-static void hci_usb_rx_complete(struct urb *urb);
-static void hci_usb_tx_complete(struct urb *urb);
-
-#define __pending_tx(husb, type)  (&husb->pending_tx[type-1])
-#define __pending_q(husb, type)   (&husb->pending_q[type-1])
-#define __completed_q(husb, type) (&husb->completed_q[type-1])
-#define __transmit_q(husb, type)  (&husb->transmit_q[type-1])
-
-static inline struct _urb *__get_completed(struct hci_usb *husb, int type)
-{
-       return _urb_dequeue(__completed_q(husb, type)); 
-}
-
-#ifdef CONFIG_BT_HCIUSB_SCO
-static void __fill_isoc_desc(struct urb *urb, int len, int mtu)
-{
-       int offset = 0, i;
-
-       BT_DBG("len %d mtu %d", len, mtu);
-
-       for (i=0; i < HCI_MAX_ISOC_FRAMES && len >= mtu; i++, offset += mtu, len -= mtu) {
-               urb->iso_frame_desc[i].offset = offset;
-               urb->iso_frame_desc[i].length = mtu;
-               BT_DBG("desc %d offset %d len %d", i, offset, mtu);
-       }
-       if (len && i < HCI_MAX_ISOC_FRAMES) {
-               urb->iso_frame_desc[i].offset = offset;
-               urb->iso_frame_desc[i].length = len;
-               BT_DBG("desc %d offset %d len %d", i, offset, len);
-               i++;
-       }
-       urb->number_of_packets = i;
-}
-#endif
-
-static int hci_usb_intr_rx_submit(struct hci_usb *husb)
-{
-       struct _urb *_urb;
-       struct urb *urb;
-       int err, pipe, interval, size;
-       void *buf;
-
-       BT_DBG("%s", husb->hdev->name);
-
-       size = le16_to_cpu(husb->intr_in_ep->desc.wMaxPacketSize);
-
-       buf = kmalloc(size, GFP_ATOMIC);
-       if (!buf)
-               return -ENOMEM;
-
-       _urb = _urb_alloc(0, GFP_ATOMIC);
-       if (!_urb) {
-               kfree(buf);
-               return -ENOMEM;
-       }
-       _urb->type = HCI_EVENT_PKT;
-       _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-
-       urb = &_urb->urb;
-       pipe     = usb_rcvintpipe(husb->udev, husb->intr_in_ep->desc.bEndpointAddress);
-       interval = husb->intr_in_ep->desc.bInterval;
-       usb_fill_int_urb(urb, husb->udev, pipe, buf, size, hci_usb_rx_complete, husb, interval);
-       
-       err = usb_submit_urb(urb, GFP_ATOMIC);
-       if (err) {
-               BT_ERR("%s intr rx submit failed urb %p err %d",
-                               husb->hdev->name, urb, err);
-               _urb_unlink(_urb);
-               kfree(_urb);
-               kfree(buf);
-       }
-       return err;
-}
-
-static int hci_usb_bulk_rx_submit(struct hci_usb *husb)
-{
-       struct _urb *_urb;
-       struct urb *urb;
-       int err, pipe, size = HCI_MAX_FRAME_SIZE;
-       void *buf;
-
-       buf = kmalloc(size, GFP_ATOMIC);
-       if (!buf)
-               return -ENOMEM;
-
-       _urb = _urb_alloc(0, GFP_ATOMIC);
-       if (!_urb) {
-               kfree(buf);
-               return -ENOMEM;
-       }
-       _urb->type = HCI_ACLDATA_PKT;
-       _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-
-       urb  = &_urb->urb;
-       pipe = usb_rcvbulkpipe(husb->udev, husb->bulk_in_ep->desc.bEndpointAddress);
-       usb_fill_bulk_urb(urb, husb->udev, pipe, buf, size, hci_usb_rx_complete, husb);
-       urb->transfer_flags = 0;
-
-       BT_DBG("%s urb %p", husb->hdev->name, urb);
-
-       err = usb_submit_urb(urb, GFP_ATOMIC);
-       if (err) {
-               BT_ERR("%s bulk rx submit failed urb %p err %d",
-                               husb->hdev->name, urb, err);
-               _urb_unlink(_urb);
-               kfree(_urb);
-               kfree(buf);
-       }
-       return err;
-}
-
-#ifdef CONFIG_BT_HCIUSB_SCO
-static int hci_usb_isoc_rx_submit(struct hci_usb *husb)
-{
-       struct _urb *_urb;
-       struct urb *urb;
-       int err, mtu, size;
-       void *buf;
-
-       mtu  = le16_to_cpu(husb->isoc_in_ep->desc.wMaxPacketSize);
-       size = mtu * HCI_MAX_ISOC_FRAMES;
-
-       buf = kmalloc(size, GFP_ATOMIC);
-       if (!buf)
-               return -ENOMEM;
-
-       _urb = _urb_alloc(HCI_MAX_ISOC_FRAMES, GFP_ATOMIC);
-       if (!_urb) {
-               kfree(buf);
-               return -ENOMEM;
-       }
-       _urb->type = HCI_SCODATA_PKT;
-       _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-
-       urb = &_urb->urb;
-
-       urb->context  = husb;
-       urb->dev      = husb->udev;
-       urb->pipe     = usb_rcvisocpipe(husb->udev, husb->isoc_in_ep->desc.bEndpointAddress);
-       urb->complete = hci_usb_rx_complete;
-
-       urb->interval = husb->isoc_in_ep->desc.bInterval;
-
-       urb->transfer_buffer_length = size;
-       urb->transfer_buffer = buf;
-       urb->transfer_flags  = URB_ISO_ASAP;
-
-       __fill_isoc_desc(urb, size, mtu);
-
-       BT_DBG("%s urb %p", husb->hdev->name, urb);
-
-       err = usb_submit_urb(urb, GFP_ATOMIC);
-       if (err) {
-               BT_ERR("%s isoc rx submit failed urb %p err %d",
-                               husb->hdev->name, urb, err);
-               _urb_unlink(_urb);
-               kfree(_urb);
-               kfree(buf);
-       }
-       return err;
-}
-#endif
-
-/* Initialize device */
-static int hci_usb_open(struct hci_dev *hdev)
-{
-       struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-       int i, err;
-       unsigned long flags;
-
-       BT_DBG("%s", hdev->name);
-
-       if (test_and_set_bit(HCI_RUNNING, &hdev->flags))
-               return 0;
-
-       write_lock_irqsave(&husb->completion_lock, flags);
-
-       err = hci_usb_intr_rx_submit(husb);
-       if (!err) {
-               for (i = 0; i < HCI_MAX_BULK_RX; i++)
-                       hci_usb_bulk_rx_submit(husb);
-
-#ifdef CONFIG_BT_HCIUSB_SCO
-               if (husb->isoc_iface)
-                       for (i = 0; i < HCI_MAX_ISOC_RX; i++)
-                               hci_usb_isoc_rx_submit(husb);
-#endif
-       } else {
-               clear_bit(HCI_RUNNING, &hdev->flags);
-       }
-
-       write_unlock_irqrestore(&husb->completion_lock, flags);
-       return err;
-}
-
-/* Reset device */
-static int hci_usb_flush(struct hci_dev *hdev)
-{
-       struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-       int i;
-
-       BT_DBG("%s", hdev->name);
-
-       for (i = 0; i < 4; i++)
-               skb_queue_purge(&husb->transmit_q[i]);
-       return 0;
-}
-
-static void hci_usb_unlink_urbs(struct hci_usb *husb)
-{
-       int i;
-
-       BT_DBG("%s", husb->hdev->name);
-
-       for (i = 0; i < 4; i++) {
-               struct _urb *_urb;
-               struct urb *urb;
-
-               /* Kill pending requests */
-               while ((_urb = _urb_dequeue(&husb->pending_q[i]))) {
-                       urb = &_urb->urb;
-                       BT_DBG("%s unlinking _urb %p type %d urb %p", 
-                                       husb->hdev->name, _urb, _urb->type, urb);
-                       usb_kill_urb(urb);
-                       _urb_queue_tail(__completed_q(husb, _urb->type), _urb);
-               }
-
-               /* Release completed requests */
-               while ((_urb = _urb_dequeue(&husb->completed_q[i]))) {
-                       urb = &_urb->urb;
-                       BT_DBG("%s freeing _urb %p type %d urb %p",
-                                       husb->hdev->name, _urb, _urb->type, urb);
-                       kfree(urb->setup_packet);
-                       kfree(urb->transfer_buffer);
-                       kfree(_urb);
-               }
-       }
-}
-
-/* Close device */
-static int hci_usb_close(struct hci_dev *hdev)
-{
-       struct hci_usb *husb = (struct hci_usb *) hdev->driver_data;
-       unsigned long flags;
-
-       if (!test_and_clear_bit(HCI_RUNNING, &hdev->flags))
-               return 0;
-
-       BT_DBG("%s", hdev->name);
-
-       /* Synchronize with completion handlers */
-       write_lock_irqsave(&husb->completion_lock, flags);
-       write_unlock_irqrestore(&husb->completion_lock, flags);
-
-       hci_usb_unlink_urbs(husb);
-       hci_usb_flush(hdev);
-       return 0;
-}
-
-static int __tx_submit(struct hci_usb *husb, struct _urb *_urb)
-{
-       struct urb *urb = &_urb->urb;
-       int err;
-
-       BT_DBG("%s urb %p type %d", husb->hdev->name, urb, _urb->type);
-
-       _urb_queue_tail(__pending_q(husb, _urb->type), _urb);
-       err = usb_submit_urb(urb, GFP_ATOMIC);
-       if (err) {
-               BT_ERR("%s tx submit failed urb %p type %d err %d",
-                               husb->hdev->name, urb, _urb->type, err);
-               _urb_unlink(_urb);
-               _urb_queue_tail(__completed_q(husb, _urb->type), _urb);
-       } else
-               atomic_inc(__pending_tx(husb, _urb->type));
-
-       return err;
-}
-
-static inline int hci_usb_send_ctrl(struct hci_usb *husb, struct sk_buff *skb)
-{
-       struct _urb *_urb = __get_completed(husb, bt_cb(skb)->pkt_type);
-       struct usb_ctrlrequest *dr;
-       struct urb *urb;
-
-       if (!_urb) {
-               _urb = _urb_alloc(0, GFP_ATOMIC);
-               if (!_urb)
-                       return -ENOMEM;
-               _urb->type = bt_cb(skb)->pkt_type;
-
-               dr = kmalloc(sizeof(*dr), GFP_ATOMIC);
-               if (!dr) {
-                       kfree(_urb);
-                       return -ENOMEM;
-               }
-       } else
-               dr = (void *) _urb->urb.setup_packet;
-
-       dr->bRequestType = husb->ctrl_req;
-       dr->bRequest = 0;
-       dr->wIndex   = 0;
-       dr->wValue   = 0;
-       dr->wLength  = __cpu_to_le16(skb->len);
-
-       urb = &_urb->urb;
-       usb_fill_control_urb(urb, husb->udev, usb_sndctrlpipe(husb->udev, 0),
-               (void *) dr, skb->data, skb->len, hci_usb_tx_complete, husb);
-
-       BT_DBG("%s skb %p len %d", husb->hdev->name, skb, skb->len);
-       
-       _urb->priv = skb;
-       return __tx_submit(husb, _urb);
-}
-
-static inline int hci_usb_send_bulk(struct hci_usb *husb, struct sk_buff *skb)
-{
-       struct _urb *_urb = __get_completed(husb, bt_cb(skb)->pkt_type);
-       struct urb *urb;
-       int pipe;
-
-       if (!_urb) {
-               _urb = _urb_alloc(0, GFP_ATOMIC);
-               if (!_urb)
-                       return -ENOMEM;
-               _urb->type = bt_cb(skb)->pkt_type;
-       }
-
-       urb  = &_urb->urb;
-       pipe = usb_sndbulkpipe(husb->udev, husb->bulk_out_ep->desc.bEndpointAddress);
-       usb_fill_bulk_urb(urb, husb->udev, pipe, skb->data, skb->len, 
-                       hci_usb_tx_complete, husb);
-       urb->transfer_flags = URB_ZERO_PACKET;
-
-       BT_DBG("%s skb %p len %d", husb->hdev->name, skb, skb->len);
-
-       _urb->priv = skb;
-       return __tx_submit(husb, _urb);
-}
-
-#ifdef CONFIG_BT_HCIUSB_SCO
-static inline int hci_usb_send_isoc(struct hci_usb *husb, struct sk_buff *skb)
-{
-       struct _urb *_urb = __get_completed(husb, bt_cb(skb)->pkt_type);
-       struct urb *urb;
-
-       if (!_urb) {
-               _urb = _urb_alloc(HCI_MAX_ISOC_FRAMES, GFP_ATOMIC);
-               if (!_urb)
-                       return -ENOMEM;
-               _urb->type = bt_cb(skb)->pkt_type;
-       }
-
-       BT_DBG("%s skb %p len %d", husb->hdev->name, skb, skb->len);
-
-       urb = &_urb->urb;
-
-       urb->context  = husb;
-       urb->dev      = husb->udev;
-       urb->pipe     = usb_sndisocpipe(husb->udev, husb->isoc_out_ep->desc.bEndpointAddress);
-       urb->complete = hci_usb_tx_complete;
-       urb->transfer_flags = URB_ISO_ASAP;
-
-       urb->interval = husb->isoc_out_ep->desc.bInterval;
-
-       urb->transfer_buffer = skb->data;
-       urb->transfer_buffer_length = skb->len;
-
-       __fill_isoc_desc(urb, skb->len, le16_to_cpu(husb->isoc_out_ep->desc.wMaxPacketSize));
-
-       _urb->priv = skb;
-       return __tx_submit(husb, _urb);
-}
-#endif
-
-static void hci_usb_tx_process(struct hci_usb *husb)
-{
-       struct sk_buff_head *q;
-       struct sk_buff *skb;
-
-       BT_DBG("%s", husb->hdev->name);
-
-       do {
-               clear_bit(HCI_USB_TX_WAKEUP, &husb->state);
-
-               /* Process command queue */
-               q = __transmit_q(husb, HCI_COMMAND_PKT);
-               if (!atomic_read(__pending_tx(husb, HCI_COMMAND_PKT)) &&
-                               (skb = skb_dequeue(q))) {
-                       if (hci_usb_send_ctrl(husb, skb) < 0)
-                               skb_queue_head(q, skb);
-               }
-
-#ifdef CONFIG_BT_HCIUSB_SCO
-               /* Process SCO queue */
-               q = __transmit_q(husb, HCI_SCODATA_PKT);
-               if (atomic_read(__pending_tx(husb, HCI_SCODATA_PKT)) < HCI_MAX_ISOC_TX &&
-                               (skb = skb_dequeue(q))) {
-                       if (hci_usb_send_isoc(husb, skb) < 0)
-                               skb_queue_head(q, skb);
-               }
-#endif
-
-               /* Process ACL queue */
-               q = __transmit_q(husb, HCI_ACLDATA_PKT);
-               while (atomic_read(__pending_tx(husb, HCI_ACLDATA_PKT)) < HCI_MAX_BULK_TX &&
-                               (skb = skb_dequeue(q))) {
-                       if (hci_usb_send_bulk(husb, skb) < 0) {
-                               skb_queue_head(q, skb);
-                               break;
-                       }
-               }
-       } while(test_bit(HCI_USB_TX_WAKEUP, &husb->state));
-}
-
-static inline void hci_usb_tx_wakeup(struct hci_usb *husb)
-{
-       /* Serialize TX queue processing to avoid data reordering */
-       if (!test_and_set_bit(HCI_USB_TX_PROCESS, &husb->state)) {
-               hci_usb_tx_process(husb);
-               clear_bit(HCI_USB_TX_PROCESS, &husb->state);
-       } else
-               set_bit(HCI_USB_TX_WAKEUP, &husb->state);
-}
-
-/* Send frames from HCI layer */
-static int hci_usb_send_frame(struct sk_buff *skb)
-{
-       struct hci_dev *hdev = (struct hci_dev *) skb->dev;
-       struct hci_usb *husb;
-
-       if (!hdev) {
-               BT_ERR("frame for uknown device (hdev=NULL)");
-               return -ENODEV;
-       }
-
-       if (!test_bit(HCI_RUNNING, &hdev->flags))
-               return -EBUSY;
-
-       BT_DBG("%s type %d len %d", hdev->name, bt_cb(skb)->pkt_type, skb->len);
-
-       husb = (struct hci_usb *) hdev->driver_data;
-
-       switch (bt_cb(skb)->pkt_type) {
-       case HCI_COMMAND_PKT:
-               hdev->stat.cmd_tx++;
-               break;
-
-       case HCI_ACLDATA_PKT:
-               hdev->stat.acl_tx++;
-               break;
-
-#ifdef CONFIG_BT_HCIUSB_SCO
-       case HCI_SCODATA_PKT:
-               hdev->stat.sco_tx++;
-               break;
-#endif
-
-       default:
-               kfree_skb(skb);
-               return 0;
-       }
-
-       read_lock(&husb->completion_lock);
-
-       skb_queue_tail(__transmit_q(husb, bt_cb(skb)->pkt_type), skb);
-       hci_usb_tx_wakeup(husb);
-
-       read_unlock(&husb->completion_lock);
-       return 0;
-}
-
-static void hci_usb_rx_complete(struct urb *urb)
-{
-       struct _urb *_urb = container_of(urb, struct _urb, urb);
-       struct hci_usb *husb = (void *) urb->context;
-       struct hci_dev *hdev = husb->hdev;
-       int err, count = urb->actual_length;
-
-       BT_DBG("%s urb %p type %d status %d count %d flags %x", hdev->name, urb,
-                       _urb->type, urb->status, count, urb->transfer_flags);
-
-       read_lock(&husb->completion_lock);
-
-       if (!test_bit(HCI_RUNNING, &hdev->flags))
-               goto unlock;
-
-       if (urb->status || !count)
-               goto resubmit;
-
-       if (_urb->type == HCI_SCODATA_PKT) {
-#ifdef CONFIG_BT_HCIUSB_SCO
-               int i;
-               for (i=0; i < urb->number_of_packets; i++) {
-  &