Merge branch 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 11 Jan 2011 00:04:53 +0000 (16:04 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 11 Jan 2011 00:04:53 +0000 (16:04 -0800)
* 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6: (510 commits)
  staging: speakup: fix failure handling
  staging: usbip: remove double giveback of URB
  Staging: batman-adv: Remove batman-adv from staging
  Staging: hv: Use only one txf buffer per channel and kmalloc/GFP_KERNEL on initialize
  staging: hv: remove unneeded osd_schedule_callback
  staging: hv: convert channel_mgmt.c to not call osd_schedule_callback
  staging: hv: convert vmbus_on_msg_dpc to not call osd_schedule_callback
  staging: brcm80211: Fix WL_<type> logging macros
  Staging: IIO: DDS: AD9833 / AD9834 driver
  Staging: IIO: dds.h convenience macros
  Staging: IIO: Direct digital synthesis abi documentation
  staging: brcm80211: Convert ETHER_TYPE_802_1X to ETH_P_PAE
  staging: brcm80211: Remove unused ETHER_TYPE_<foo> #defines
  staging: brcm80211: Remove ETHER_HDR_LEN, use ETH_HLEN
  staging: brcm80211: Convert ETHER_ADDR_LEN to ETH_ALEN
  staging: brcm80211: Convert ETHER_IS<FOO> to is_<foo>_ether_addr
  staging: brcm80211: Remove unused ether_<foo> #defines and struct
  staging: brcm80211: Convert ETHER_IS_MULTI to is_multicast_ether_addr
  staging: brcm80211: Remove unused #defines ETHER_<foo>_LOCALADDR
  Staging: comedi: Fix checkpatch.pl issues in file s526.c
  ...

Fix up trivial conflict in drivers/video/udlfb.c

567 files changed:
MAINTAINERS
drivers/staging/Kconfig
drivers/staging/Makefile
drivers/staging/adis16255/Kconfig [deleted file]
drivers/staging/adis16255/Makefile [deleted file]
drivers/staging/adis16255/adis16255.c [deleted file]
drivers/staging/adis16255/adis16255.h [deleted file]
drivers/staging/asus_oled/asus_oled.c
drivers/staging/ath6kl/hif/sdio/linux_sdio/src/hif.c
drivers/staging/ath6kl/os/linux/ar6000_drv.c
drivers/staging/autofs/dirhash.c
drivers/staging/batman-adv/Kconfig [deleted file]
drivers/staging/batman-adv/Makefile [deleted file]
drivers/staging/batman-adv/README [deleted file]
drivers/staging/batman-adv/TODO [deleted file]
drivers/staging/batman-adv/aggregation.c [deleted file]
drivers/staging/batman-adv/aggregation.h [deleted file]
drivers/staging/batman-adv/bat_debugfs.c [deleted file]
drivers/staging/batman-adv/bat_debugfs.h [deleted file]
drivers/staging/batman-adv/bat_sysfs.c [deleted file]
drivers/staging/batman-adv/bat_sysfs.h [deleted file]
drivers/staging/batman-adv/bitarray.c [deleted file]
drivers/staging/batman-adv/bitarray.h [deleted file]
drivers/staging/batman-adv/hard-interface.c [deleted file]
drivers/staging/batman-adv/hard-interface.h [deleted file]
drivers/staging/batman-adv/hash.c [deleted file]
drivers/staging/batman-adv/hash.h [deleted file]
drivers/staging/batman-adv/icmp_socket.c [deleted file]
drivers/staging/batman-adv/icmp_socket.h [deleted file]
drivers/staging/batman-adv/main.c [deleted file]
drivers/staging/batman-adv/main.h [deleted file]
drivers/staging/batman-adv/originator.c [deleted file]
drivers/staging/batman-adv/originator.h [deleted file]
drivers/staging/batman-adv/packet.h [deleted file]
drivers/staging/batman-adv/ring_buffer.c [deleted file]
drivers/staging/batman-adv/ring_buffer.h [deleted file]
drivers/staging/batman-adv/routing.c [deleted file]
drivers/staging/batman-adv/routing.h [deleted file]
drivers/staging/batman-adv/send.c [deleted file]
drivers/staging/batman-adv/send.h [deleted file]
drivers/staging/batman-adv/soft-interface.c [deleted file]
drivers/staging/batman-adv/soft-interface.h [deleted file]
drivers/staging/batman-adv/sysfs-class-net-batman-adv [deleted file]
drivers/staging/batman-adv/sysfs-class-net-mesh [deleted file]
drivers/staging/batman-adv/translation-table.c [deleted file]
drivers/staging/batman-adv/translation-table.h [deleted file]
drivers/staging/batman-adv/types.h [deleted file]
drivers/staging/batman-adv/unicast.c [deleted file]
drivers/staging/batman-adv/unicast.h [deleted file]
drivers/staging/batman-adv/vis.c [deleted file]
drivers/staging/batman-adv/vis.h [deleted file]
drivers/staging/bcm/Adapter.h
drivers/staging/bcm/Arp.c [deleted file]
drivers/staging/bcm/Bcmchar.c
drivers/staging/bcm/Bcmnet.c
drivers/staging/bcm/CmHost.c
drivers/staging/bcm/CmHost.h
drivers/staging/bcm/DDRInit.c
drivers/staging/bcm/Debug.c [deleted file]
drivers/staging/bcm/Debug.h
drivers/staging/bcm/HandleControlPacket.c
drivers/staging/bcm/HostMibs.h [deleted file]
drivers/staging/bcm/IPv6Protocol.c
drivers/staging/bcm/IPv6ProtocolHdr.h
drivers/staging/bcm/InterfaceDld.c
drivers/staging/bcm/InterfaceIdleMode.c
drivers/staging/bcm/InterfaceIdleMode.h
drivers/staging/bcm/InterfaceInit.c
drivers/staging/bcm/InterfaceInit.h
drivers/staging/bcm/InterfaceIsr.c
drivers/staging/bcm/InterfaceMisc.c
drivers/staging/bcm/InterfaceMisc.h
drivers/staging/bcm/InterfaceRx.c
drivers/staging/bcm/InterfaceTx.c
drivers/staging/bcm/InterfaceTx.h
drivers/staging/bcm/Interfacemain.h [deleted file]
drivers/staging/bcm/LeakyBucket.c
drivers/staging/bcm/Macros.h
drivers/staging/bcm/Makefile
drivers/staging/bcm/Misc.c
drivers/staging/bcm/Osal_Misc.c [deleted file]
drivers/staging/bcm/PHSModule.c
drivers/staging/bcm/PHSModule.h
drivers/staging/bcm/Protocol.h
drivers/staging/bcm/Prototypes.h
drivers/staging/bcm/Qos.c
drivers/staging/bcm/TODO
drivers/staging/bcm/Transmit.c
drivers/staging/bcm/cntrl_SignalingInterface.h
drivers/staging/bcm/headers.h
drivers/staging/bcm/hostmibs.c
drivers/staging/bcm/led_control.c
drivers/staging/bcm/nvm.c
drivers/staging/bcm/nvm.h
drivers/staging/bcm/osal_misc.h [deleted file]
drivers/staging/brcm80211/README
drivers/staging/brcm80211/brcmfmac/README
drivers/staging/brcm80211/brcmfmac/bcmsdh.c
drivers/staging/brcm80211/brcmfmac/bcmsdh_linux.c
drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc.c
drivers/staging/brcm80211/brcmfmac/bcmsdh_sdmmc_linux.c
drivers/staging/brcm80211/brcmfmac/dhd.h
drivers/staging/brcm80211/brcmfmac/dhd_bus.h
drivers/staging/brcm80211/brcmfmac/dhd_cdc.c
drivers/staging/brcm80211/brcmfmac/dhd_common.c
drivers/staging/brcm80211/brcmfmac/dhd_custom_gpio.c
drivers/staging/brcm80211/brcmfmac/dhd_linux.c
drivers/staging/brcm80211/brcmfmac/dhd_linux_sched.c
drivers/staging/brcm80211/brcmfmac/dhd_proto.h
drivers/staging/brcm80211/brcmfmac/dhd_sdio.c
drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
drivers/staging/brcm80211/brcmfmac/wl_cfg80211.h
drivers/staging/brcm80211/brcmfmac/wl_iw.c
drivers/staging/brcm80211/brcmfmac/wl_iw.h
drivers/staging/brcm80211/include/bcm_rpc.h [deleted file]
drivers/staging/brcm80211/include/bcm_rpc_tp.h [deleted file]
drivers/staging/brcm80211/include/bcm_xdr.h [deleted file]
drivers/staging/brcm80211/include/bcmdefs.h
drivers/staging/brcm80211/include/bcmsdbus.h
drivers/staging/brcm80211/include/bcmsdh.h
drivers/staging/brcm80211/include/bcmsdh_sdmmc.h
drivers/staging/brcm80211/include/bcmsrom.h
drivers/staging/brcm80211/include/bcmutils.h
drivers/staging/brcm80211/include/d11.h
drivers/staging/brcm80211/include/dbus.h [deleted file]
drivers/staging/brcm80211/include/epivers.h [deleted file]
drivers/staging/brcm80211/include/hnddma.h
drivers/staging/brcm80211/include/hndpmu.h
drivers/staging/brcm80211/include/linux_osl.h [deleted file]
drivers/staging/brcm80211/include/linuxver.h [deleted file]
drivers/staging/brcm80211/include/nicpci.h
drivers/staging/brcm80211/include/osl.h
drivers/staging/brcm80211/include/proto/ethernet.h
drivers/staging/brcm80211/include/proto/wpa.h
drivers/staging/brcm80211/include/rpc_osl.h
drivers/staging/brcm80211/include/siutils.h
drivers/staging/brcm80211/include/wlioctl.h
drivers/staging/brcm80211/phy/wlc_phy_cmn.c
drivers/staging/brcm80211/phy/wlc_phy_hal.h
drivers/staging/brcm80211/phy/wlc_phy_int.h
drivers/staging/brcm80211/phy/wlc_phy_lcn.c
drivers/staging/brcm80211/phy/wlc_phy_n.c
drivers/staging/brcm80211/phy/wlc_phytbl_lcn.c
drivers/staging/brcm80211/phy/wlc_phytbl_n.c
drivers/staging/brcm80211/sys/wl_dbg.h
drivers/staging/brcm80211/sys/wl_export.h
drivers/staging/brcm80211/sys/wl_mac80211.c
drivers/staging/brcm80211/sys/wl_mac80211.h
drivers/staging/brcm80211/sys/wl_ucode.h
drivers/staging/brcm80211/sys/wl_ucode_loader.c
drivers/staging/brcm80211/sys/wlc_alloc.c
drivers/staging/brcm80211/sys/wlc_alloc.h
drivers/staging/brcm80211/sys/wlc_ampdu.c
drivers/staging/brcm80211/sys/wlc_ampdu.h
drivers/staging/brcm80211/sys/wlc_antsel.c
drivers/staging/brcm80211/sys/wlc_antsel.h
drivers/staging/brcm80211/sys/wlc_bmac.c
drivers/staging/brcm80211/sys/wlc_bmac.h
drivers/staging/brcm80211/sys/wlc_bsscfg.h
drivers/staging/brcm80211/sys/wlc_cfg.h
drivers/staging/brcm80211/sys/wlc_channel.c
drivers/staging/brcm80211/sys/wlc_event.c
drivers/staging/brcm80211/sys/wlc_event.h
drivers/staging/brcm80211/sys/wlc_mac80211.c
drivers/staging/brcm80211/sys/wlc_mac80211.h
drivers/staging/brcm80211/sys/wlc_phy_shim.c
drivers/staging/brcm80211/sys/wlc_pub.h
drivers/staging/brcm80211/sys/wlc_rate.c
drivers/staging/brcm80211/sys/wlc_rpc.h [deleted file]
drivers/staging/brcm80211/sys/wlc_rpctx.h [deleted file]
drivers/staging/brcm80211/sys/wlc_scb.h
drivers/staging/brcm80211/sys/wlc_stf.c
drivers/staging/brcm80211/sys/wlc_stf.h
drivers/staging/brcm80211/sys/wlc_types.h
drivers/staging/brcm80211/util/aiutils.c
drivers/staging/brcm80211/util/bcmotp.c
drivers/staging/brcm80211/util/bcmsrom.c
drivers/staging/brcm80211/util/bcmutils.c
drivers/staging/brcm80211/util/bcmwifi.c
drivers/staging/brcm80211/util/hnddma.c
drivers/staging/brcm80211/util/hndpmu.c
drivers/staging/brcm80211/util/linux_osl.c
drivers/staging/brcm80211/util/nicpci.c
drivers/staging/brcm80211/util/nvram/nvram_ro.c
drivers/staging/brcm80211/util/sbutils.c
drivers/staging/brcm80211/util/siutils.c
drivers/staging/comedi/drivers.c
drivers/staging/comedi/drivers/addi-data/APCI1710_Tor.c
drivers/staging/comedi/drivers/addi-data/addi_common.c
drivers/staging/comedi/drivers/addi-data/hwdrv_APCI1710.c
drivers/staging/comedi/drivers/addi-data/hwdrv_apci1500.c
drivers/staging/comedi/drivers/addi-data/hwdrv_apci1516.c
drivers/staging/comedi/drivers/addi-data/hwdrv_apci3200.c
drivers/staging/comedi/drivers/addi-data/hwdrv_apci3501.c
drivers/staging/comedi/drivers/amplc_pci230.c
drivers/staging/comedi/drivers/cb_das16_cs.c
drivers/staging/comedi/drivers/comedi_bond.c
drivers/staging/comedi/drivers/ii_pci20kc.c
drivers/staging/comedi/drivers/jr3_pci.c
drivers/staging/comedi/drivers/ni_tiocmd.c
drivers/staging/comedi/drivers/rtd520.c
drivers/staging/comedi/drivers/s526.c
drivers/staging/comedi/drivers/usbdux.c
drivers/staging/cptm1217/Kconfig [new file with mode: 0644]
drivers/staging/cptm1217/Makefile [new file with mode: 0644]
drivers/staging/cptm1217/TODO [new file with mode: 0644]
drivers/staging/cptm1217/clearpad_tm1217.c [new file with mode: 0644]
drivers/staging/cptm1217/cp_tm1217.h [new file with mode: 0644]
drivers/staging/crystalhd/crystalhd_hw.c
drivers/staging/crystalhd/crystalhd_lnx.c
drivers/staging/cx25821/cx25821-alsa.c
drivers/staging/cxt1e1/comet.c
drivers/staging/cxt1e1/functions.c
drivers/staging/cxt1e1/hwprobe.c
drivers/staging/cxt1e1/linux.c
drivers/staging/cxt1e1/musycc.c
drivers/staging/cxt1e1/pmcc4_drv.c
drivers/staging/cxt1e1/sbecom_inline_linux.h
drivers/staging/easycap/Kconfig
drivers/staging/easycap/Makefile
drivers/staging/easycap/README
drivers/staging/easycap/easycap.h
drivers/staging/easycap/easycap_debug.h
drivers/staging/easycap/easycap_ioctl.c
drivers/staging/easycap/easycap_low.c
drivers/staging/easycap/easycap_main.c
drivers/staging/easycap/easycap_settings.c
drivers/staging/easycap/easycap_sound.c
drivers/staging/easycap/easycap_testcard.c
drivers/staging/et131x/et131x_initpci.c
drivers/staging/frontier/alphatrack.c
drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c
drivers/staging/ft1000/ft1000-pcmcia/ft1000_proc.c
drivers/staging/ft1000/ft1000-usb/Makefile
drivers/staging/ft1000/ft1000-usb/ft1000_debug.c [moved from drivers/staging/ft1000/ft1000-usb/ft1000_chdev.c with 61% similarity]
drivers/staging/ft1000/ft1000-usb/ft1000_download.c
drivers/staging/ft1000/ft1000-usb/ft1000_hw.c
drivers/staging/ft1000/ft1000-usb/ft1000_hw.h
drivers/staging/ft1000/ft1000-usb/ft1000_proc.c
drivers/staging/ft1000/ft1000-usb/ft1000_usb.c
drivers/staging/ft1000/ft1000-usb/ft1000_usb.h
drivers/staging/go7007/go7007-driver.c
drivers/staging/hv/Makefile
drivers/staging/hv/blkvsc.c
drivers/staging/hv/blkvsc_drv.c
drivers/staging/hv/channel.c
drivers/staging/hv/channel_mgmt.c
drivers/staging/hv/channel_mgmt.h
drivers/staging/hv/connection.c
drivers/staging/hv/hv.c
drivers/staging/hv/hv.h
drivers/staging/hv/hv_api.h
drivers/staging/hv/hv_utils.c
drivers/staging/hv/netvsc.c
drivers/staging/hv/netvsc.h
drivers/staging/hv/netvsc_api.h
drivers/staging/hv/netvsc_drv.c
drivers/staging/hv/osd.c
drivers/staging/hv/osd.h
drivers/staging/hv/ring_buffer.c
drivers/staging/hv/ring_buffer.h
drivers/staging/hv/rndis.h
drivers/staging/hv/rndis_filter.c
drivers/staging/hv/rndis_filter.h
drivers/staging/hv/storvsc.c
drivers/staging/hv/storvsc_api.h
drivers/staging/hv/storvsc_drv.c
drivers/staging/hv/vmbus.c [deleted file]
drivers/staging/hv/vmbus_api.h
drivers/staging/hv/vmbus_drv.c
drivers/staging/hv/vmbus_private.h
drivers/staging/hv/vstorage.h
drivers/staging/iio/Documentation/sysfs-bus-iio
drivers/staging/iio/Documentation/sysfs-bus-iio-dds [new file with mode: 0644]
drivers/staging/iio/Kconfig
drivers/staging/iio/Makefile
drivers/staging/iio/TODO
drivers/staging/iio/accel/Kconfig
drivers/staging/iio/accel/Makefile
drivers/staging/iio/accel/accel.h
drivers/staging/iio/accel/adis16201.h [new file with mode: 0644]
drivers/staging/iio/accel/adis16201_core.c [new file with mode: 0644]
drivers/staging/iio/accel/adis16201_ring.c [new file with mode: 0644]
drivers/staging/iio/accel/adis16201_trigger.c [new file with mode: 0644]
drivers/staging/iio/accel/adis16203.h [new file with mode: 0644]
drivers/staging/iio/accel/adis16203_core.c [new file with mode: 0644]
drivers/staging/iio/accel/adis16203_ring.c [new file with mode: 0644]
drivers/staging/iio/accel/adis16203_trigger.c [new file with mode: 0644]
drivers/staging/iio/accel/adis16204.h [new file with mode: 0644]
drivers/staging/iio/accel/adis16204_core.c [new file with mode: 0644]
drivers/staging/iio/accel/adis16204_ring.c [new file with mode: 0644]
drivers/staging/iio/accel/adis16204_trigger.c [new file with mode: 0644]
drivers/staging/iio/accel/adis16209_ring.c
drivers/staging/iio/accel/lis3l02dq_ring.c
drivers/staging/iio/adc/Kconfig
drivers/staging/iio/adc/Makefile
drivers/staging/iio/adc/ad7150.c [new file with mode: 0644]
drivers/staging/iio/adc/ad7152.c [new file with mode: 0644]
drivers/staging/iio/adc/ad7291.c [new file with mode: 0644]
drivers/staging/iio/adc/ad7298.c [new file with mode: 0644]
drivers/staging/iio/adc/ad7314.c [new file with mode: 0644]
drivers/staging/iio/adc/ad7745.c [new file with mode: 0644]
drivers/staging/iio/adc/ad7816.c [new file with mode: 0644]
drivers/staging/iio/adc/ad7887.h [new file with mode: 0644]
drivers/staging/iio/adc/ad7887_core.c [new file with mode: 0644]
drivers/staging/iio/adc/ad7887_ring.c [new file with mode: 0644]
drivers/staging/iio/adc/adt7310.c [new file with mode: 0644]
drivers/staging/iio/adc/adt7410.c [new file with mode: 0644]
drivers/staging/iio/adc/adt75.c [new file with mode: 0644]
drivers/staging/iio/addac/Kconfig [new file with mode: 0644]
drivers/staging/iio/addac/Makefile [new file with mode: 0644]
drivers/staging/iio/addac/adt7316-i2c.c [new file with mode: 0644]
drivers/staging/iio/addac/adt7316-spi.c [new file with mode: 0644]
drivers/staging/iio/addac/adt7316.c [new file with mode: 0644]
drivers/staging/iio/addac/adt7316.h [new file with mode: 0644]
drivers/staging/iio/dac/Kconfig [new file with mode: 0644]
drivers/staging/iio/dac/Makefile [new file with mode: 0644]
drivers/staging/iio/dac/ad5446.c [new file with mode: 0644]
drivers/staging/iio/dac/ad5446.h [new file with mode: 0644]
drivers/staging/iio/dac/ad5624r.h [new file with mode: 0644]
drivers/staging/iio/dac/ad5624r_spi.c [new file with mode: 0644]
drivers/staging/iio/dac/dac.h [new file with mode: 0644]
drivers/staging/iio/dds/Kconfig [new file with mode: 0644]
drivers/staging/iio/dds/Makefile [new file with mode: 0644]
drivers/staging/iio/dds/ad5930.c [new file with mode: 0644]
drivers/staging/iio/dds/ad9832.c [new file with mode: 0644]
drivers/staging/iio/dds/ad9834.c [new file with mode: 0644]
drivers/staging/iio/dds/ad9834.h [new file with mode: 0644]
drivers/staging/iio/dds/ad9850.c [new file with mode: 0644]
drivers/staging/iio/dds/ad9852.c [new file with mode: 0644]
drivers/staging/iio/dds/ad9910.c [new file with mode: 0644]
drivers/staging/iio/dds/ad9951.c [new file with mode: 0644]
drivers/staging/iio/dds/dds.h [new file with mode: 0644]
drivers/staging/iio/gyro/Kconfig
drivers/staging/iio/gyro/Makefile
drivers/staging/iio/gyro/adis16060.h [new file with mode: 0644]
drivers/staging/iio/gyro/adis16060_core.c [new file with mode: 0644]
drivers/staging/iio/gyro/adis16080.h [new file with mode: 0644]
drivers/staging/iio/gyro/adis16080_core.c [new file with mode: 0644]
drivers/staging/iio/gyro/adis16130.h [new file with mode: 0644]
drivers/staging/iio/gyro/adis16130_core.c [new file with mode: 0644]
drivers/staging/iio/gyro/adis16251.h [new file with mode: 0644]
drivers/staging/iio/gyro/adis16251_core.c [new file with mode: 0644]
drivers/staging/iio/gyro/adis16260.h
drivers/staging/iio/gyro/adis16260_core.c
drivers/staging/iio/gyro/adis16260_platform_data.h [new file with mode: 0644]
drivers/staging/iio/gyro/gyro.h
drivers/staging/iio/imu/adis16350_core.c
drivers/staging/iio/meter/Kconfig [new file with mode: 0644]
drivers/staging/iio/meter/Makefile [new file with mode: 0644]
drivers/staging/iio/meter/ade7753.c [new file with mode: 0644]
drivers/staging/iio/meter/ade7753.h [new file with mode: 0644]
drivers/staging/iio/meter/ade7754.c [new file with mode: 0644]
drivers/staging/iio/meter/ade7754.h [new file with mode: 0644]
drivers/staging/iio/meter/ade7758.h [new file with mode: 0644]
drivers/staging/iio/meter/ade7758_core.c [new file with mode: 0644]
drivers/staging/iio/meter/ade7758_ring.c [new file with mode: 0644]
drivers/staging/iio/meter/ade7758_trigger.c [new file with mode: 0644]
drivers/staging/iio/meter/ade7759.c [new file with mode: 0644]
drivers/staging/iio/meter/ade7759.h [new file with mode: 0644]
drivers/staging/iio/meter/ade7854-i2c.c [new file with mode: 0644]
drivers/staging/iio/meter/ade7854-spi.c [new file with mode: 0644]
drivers/staging/iio/meter/ade7854.c [new file with mode: 0644]
drivers/staging/iio/meter/ade7854.h [new file with mode: 0644]
drivers/staging/iio/meter/meter.h [new file with mode: 0644]
drivers/staging/iio/resolver/Kconfig [new file with mode: 0644]
drivers/staging/iio/resolver/Makefile [new file with mode: 0644]
drivers/staging/iio/resolver/ad2s120x.c [new file with mode: 0644]
drivers/staging/iio/resolver/ad2s1210.c [new file with mode: 0644]
drivers/staging/iio/resolver/ad2s90.c [new file with mode: 0644]
drivers/staging/iio/sysfs.h
drivers/staging/intel_sst/Kconfig
drivers/staging/intel_sst/intel_sst.c
drivers/staging/intel_sst/intel_sst.h
drivers/staging/intel_sst/intel_sst_app_interface.c
drivers/staging/intel_sst/intel_sst_common.h
drivers/staging/intel_sst/intel_sst_drv_interface.c
drivers/staging/intel_sst/intel_sst_dsp.c
drivers/staging/intel_sst/intel_sst_fw_ipc.h
drivers/staging/intel_sst/intel_sst_ioctl.h
drivers/staging/intel_sst/intel_sst_ipc.c
drivers/staging/intel_sst/intel_sst_pvt.c
drivers/staging/intel_sst/intel_sst_stream.c
drivers/staging/intel_sst/intel_sst_stream_encoded.c
drivers/staging/intel_sst/intelmid.c
drivers/staging/intel_sst/intelmid.h
drivers/staging/intel_sst/intelmid_ctrl.c
drivers/staging/intel_sst/intelmid_msic_control.c
drivers/staging/intel_sst/intelmid_pvt.c
drivers/staging/intel_sst/intelmid_v0_control.c
drivers/staging/intel_sst/intelmid_v1_control.c
drivers/staging/intel_sst/intelmid_v2_control.c
drivers/staging/keucr/init.c
drivers/staging/keucr/init.h
drivers/staging/keucr/ms.c
drivers/staging/keucr/smilmain.c
drivers/staging/keucr/smilsub.c
drivers/staging/line6/capture.c
drivers/staging/line6/midi.c
drivers/staging/line6/playback.c
drivers/staging/memrar/memrar.h
drivers/staging/msm/Makefile
drivers/staging/msm/lcdc_toshiba_wvga_pt.c
drivers/staging/msm/tvenc.c
drivers/staging/phison/phison.c
drivers/staging/pohmelfs/crypto.c
drivers/staging/rt2860/chip/mac_pci.h
drivers/staging/rt2860/chip/mac_usb.h
drivers/staging/rt2860/chip/rtmp_mac.h
drivers/staging/rt2860/chip/rtmp_phy.h
drivers/staging/rt2860/chips/rt3090.c
drivers/staging/rt2860/chips/rt30xx.c
drivers/staging/rt2860/common/ba_action.c
drivers/staging/rt2860/common/cmm_data.c
drivers/staging/rt2860/common/cmm_data_pci.c
drivers/staging/rt2860/common/cmm_mac_pci.c
drivers/staging/rt2860/common/cmm_mac_usb.c
drivers/staging/rt2860/common/cmm_wpa.c
drivers/staging/rt2860/common/ee_efuse.c
drivers/staging/rt2860/common/mlme.c
drivers/staging/rt2860/common/rt_rf.c
drivers/staging/rt2860/common/rtmp_init.c
drivers/staging/rt2860/common/rtmp_mcu.c
drivers/staging/rt2860/common/spectrum.c
drivers/staging/rt2860/mlme.h
drivers/staging/rt2860/oid.h
drivers/staging/rt2860/pci_main_dev.c
drivers/staging/rt2860/rt_linux.c
drivers/staging/rt2860/rt_linux.h
drivers/staging/rt2860/rt_main_dev.c
drivers/staging/rt2860/rt_pci_rbus.c
drivers/staging/rt2860/rt_usb.c
drivers/staging/rt2860/rtmp.h
drivers/staging/rt2860/rtmp_def.h
drivers/staging/rt2860/rtmp_timer.h
drivers/staging/rt2860/spectrum.h
drivers/staging/rt2860/sta/assoc.c
drivers/staging/rt2860/sta/auth.c
drivers/staging/rt2860/sta/connect.c
drivers/staging/rt2860/sta/rtmp_data.c
drivers/staging/rt2860/sta/sanity.c
drivers/staging/rt2860/sta/sync.c
drivers/staging/rt2860/sta/wpa.c
drivers/staging/rt2860/sta_ioctl.c
drivers/staging/rt2860/usb_main_dev.c
drivers/staging/rt2860/wpa.h
drivers/staging/rtl8192e/ieee80211/ieee80211_tx.c
drivers/staging/rtl8192e/r8192E_core.c
drivers/staging/rtl8192e/r819xE_phy.c
drivers/staging/rtl8192u/Makefile
drivers/staging/rtl8192u/dot11d.h
drivers/staging/rtl8192u/ieee80211/Makefile
drivers/staging/rtl8192u/ieee80211/dot11d.c
drivers/staging/rtl8192u/ieee80211/dot11d.h
drivers/staging/rtl8192u/ieee80211/ieee80211.h
drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c
drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c
drivers/staging/rtl8192u/ieee80211/ieee80211_softmac_wx.c
drivers/staging/rtl8192u/ieee80211/ieee80211_tx.c
drivers/staging/rtl8192u/r8192U_core.c
drivers/staging/rtl8192u/r8192U_wx.c
drivers/staging/rtl8192u/r819xU_phy.c
drivers/staging/rtl8712/TODO
drivers/staging/rtl8712/osdep_service.h
drivers/staging/rtl8712/rtl8712_efuse.c
drivers/staging/rtl8712/rtl8712_xmit.c
drivers/staging/rtl8712/rtl871x_xmit.c
drivers/staging/rtl8712/usb_intf.c
drivers/staging/sep/Kconfig [new file with mode: 0644]
drivers/staging/sep/Makefile [new file with mode: 0644]
drivers/staging/sep/TODO [new file with mode: 0644]
drivers/staging/sep/sep_dev.h [new file with mode: 0644]
drivers/staging/sep/sep_driver.c [new file with mode: 0644]
drivers/staging/sep/sep_driver_api.h [new file with mode: 0644]
drivers/staging/sep/sep_driver_config.h [new file with mode: 0644]
drivers/staging/sep/sep_driver_hw_defs.h [new file with mode: 0644]
drivers/staging/sm7xx/smtcfb.c
drivers/staging/solo6x10/Kconfig
drivers/staging/solo6x10/TODO
drivers/staging/solo6x10/solo6010-core.c
drivers/staging/solo6x10/solo6010-disp.c
drivers/staging/solo6x10/solo6010-enc.c
drivers/staging/solo6x10/solo6010-g723.c
drivers/staging/solo6x10/solo6010-gpio.c
drivers/staging/solo6x10/solo6010-i2c.c
drivers/staging/solo6x10/solo6010-osd-font.h
drivers/staging/solo6x10/solo6010-p2m.c
drivers/staging/solo6x10/solo6010-tw28.c
drivers/staging/solo6x10/solo6010-v4l2-enc.c
drivers/staging/solo6x10/solo6010-v4l2.c
drivers/staging/solo6x10/solo6010.h
drivers/staging/speakup/kobjects.c
drivers/staging/speakup/main.c
drivers/staging/speakup/spk_types.h
drivers/staging/spectra/ffsport.c
drivers/staging/spectra/ffsport.h
drivers/staging/spectra/flash.c
drivers/staging/spectra/lld_emu.c
drivers/staging/spectra/lld_nand.c
drivers/staging/ste_rmi4/Kconfig [new file with mode: 0644]
drivers/staging/ste_rmi4/Makefile [new file with mode: 0644]
drivers/staging/ste_rmi4/TODO [new file with mode: 0644]
drivers/staging/ste_rmi4/synaptics_i2c_rmi4.c [new file with mode: 0644]
drivers/staging/ste_rmi4/synaptics_i2c_rmi4.h [new file with mode: 0644]
drivers/staging/tidspbridge/core/tiomap3430.c
drivers/staging/tidspbridge/rmgr/nldr.c
drivers/staging/usbip/vhci_hcd.c
drivers/staging/vme/bridges/Module.symvers [new file with mode: 0644]
drivers/staging/vme/bridges/vme_ca91cx42.c
drivers/staging/vme/bridges/vme_ca91cx42.h
drivers/staging/vme/bridges/vme_tsi148.c
drivers/staging/vme/bridges/vme_tsi148.h
drivers/staging/vme/devices/vme_user.c
drivers/staging/vme/vme.c
drivers/staging/vme/vme_bridge.h
drivers/staging/vt6655/card.c
drivers/staging/vt6655/iwctl.c
drivers/staging/vt6655/wpa2.c
drivers/staging/vt6656/baseband.c
drivers/staging/vt6656/card.c
drivers/staging/vt6656/dpc.c
drivers/staging/vt6656/iwctl.c
drivers/staging/vt6656/power.c
drivers/staging/vt6656/rxtx.c
drivers/staging/vt6656/tkip.c
drivers/staging/vt6656/wpa2.c
drivers/staging/westbridge/astoria/arch/arm/mach-omap2/cyashalomap_kernel.c
drivers/staging/winbond/Makefile
drivers/staging/winbond/core.h
drivers/staging/winbond/mac_structures.h
drivers/staging/winbond/mds.c
drivers/staging/winbond/mds_f.h
drivers/staging/winbond/mds_s.h
drivers/staging/winbond/mlmetxrx.c [deleted file]
drivers/staging/winbond/mlmetxrx_f.h [deleted file]
drivers/staging/winbond/mto.c
drivers/staging/winbond/phy_calibration.c
drivers/staging/winbond/phy_calibration.h
drivers/staging/winbond/reg.c
drivers/staging/winbond/sysdef.h [deleted file]
drivers/staging/winbond/wb35reg.c
drivers/staging/winbond/wb35reg_f.h
drivers/staging/winbond/wb35reg_s.h
drivers/staging/winbond/wb35rx.c
drivers/staging/winbond/wb35rx_f.h
drivers/staging/winbond/wb35tx.c
drivers/staging/winbond/wb35tx_f.h
drivers/staging/winbond/wbhal.h [moved from drivers/staging/winbond/wbhal_s.h with 98% similarity]
drivers/staging/winbond/wbhal_f.h [deleted file]
drivers/staging/winbond/wblinux_f.h [deleted file]
drivers/staging/winbond/wbusb.c
drivers/staging/winbond/wbusb_s.h [deleted file]
drivers/staging/wlags49_h2/wl_pci.c
drivers/staging/wlags49_h2/wl_profile.c
drivers/staging/wlags49_h2/wl_sysfs.c
drivers/staging/wlan-ng/p80211conv.c
drivers/staging/wlan-ng/p80211conv.h
drivers/staging/wlan-ng/p80211netdev.c
drivers/staging/wlan-ng/p80211netdev.h
drivers/staging/wlan-ng/p80211types.h
drivers/staging/wlan-ng/prism2mgmt.c
drivers/staging/xgifb/XGI_main_26.c
drivers/staging/zram/xvmalloc.c
drivers/staging/zram/zram_drv.c
drivers/usb/serial/option.c
drivers/video/udlfb.c
include/linux/rar_register.h

index 5181828..aca102f 100644 (file)
@@ -1423,7 +1423,9 @@ F:        drivers/net/tg3.*
 BROADCOM BRCM80211 IEEE802.11n WIRELESS DRIVER
 M:     Brett Rudley <brudley@broadcom.com>
 M:     Henry Ptasinski <henryp@broadcom.com>
-M:     Nohee Ko <noheek@broadcom.com>
+M:     Dowan Kim <dowan@broadcom.com>
+M:     Roland Vossen <rvossen@broadcom.com>
+M:     Arend van Spriel <arend@broadcom.com>
 L:     linux-wireless@vger.kernel.org
 S:     Supported
 F:     drivers/staging/brcm80211/
index bdc632b..e2d5869 100644 (file)
@@ -119,6 +119,8 @@ source "drivers/staging/vme/Kconfig"
 
 source "drivers/staging/memrar/Kconfig"
 
+source "drivers/staging/sep/Kconfig"
+
 source "drivers/staging/iio/Kconfig"
 
 source "drivers/staging/zram/Kconfig"
@@ -127,8 +129,6 @@ source "drivers/staging/wlags49_h2/Kconfig"
 
 source "drivers/staging/wlags49_h25/Kconfig"
 
-source "drivers/staging/batman-adv/Kconfig"
-
 source "drivers/staging/samsung-laptop/Kconfig"
 
 source "drivers/staging/sm7xx/Kconfig"
@@ -141,8 +141,6 @@ source "drivers/staging/cxt1e1/Kconfig"
 
 source "drivers/staging/ti-st/Kconfig"
 
-source "drivers/staging/adis16255/Kconfig"
-
 source "drivers/staging/xgifb/Kconfig"
 
 source "drivers/staging/msm/Kconfig"
@@ -175,5 +173,9 @@ source "drivers/staging/intel_sst/Kconfig"
 
 source "drivers/staging/speakup/Kconfig"
 
+source "drivers/staging/cptm1217/Kconfig"
+
+source "drivers/staging/ste_rmi4/Kconfig"
+
 endif # !STAGING_EXCLUDE_BUILD
 endif # STAGING
index 3eda5c7..c7d2224 100644 (file)
@@ -42,18 +42,17 @@ obj-$(CONFIG_VT6656)                += vt6656/
 obj-$(CONFIG_HYPERV)           += hv/
 obj-$(CONFIG_VME_BUS)          += vme/
 obj-$(CONFIG_MRST_RAR_HANDLER) += memrar/
+obj-$(CONFIG_DX_SEP)            += sep/
 obj-$(CONFIG_IIO)              += iio/
 obj-$(CONFIG_ZRAM)             += zram/
 obj-$(CONFIG_WLAGS49_H2)       += wlags49_h2/
 obj-$(CONFIG_WLAGS49_H25)      += wlags49_h25/
-obj-$(CONFIG_BATMAN_ADV)       += batman-adv/
 obj-$(CONFIG_SAMSUNG_LAPTOP)   += samsung-laptop/
 obj-$(CONFIG_FB_SM7XX)         += sm7xx/
 obj-$(CONFIG_VIDEO_DT3155)     += dt3155v4l/
 obj-$(CONFIG_CRYSTALHD)                += crystalhd/
 obj-$(CONFIG_CXT1E1)           += cxt1e1/
 obj-$(CONFIG_TI_ST)            += ti-st/
-obj-$(CONFIG_ADIS16255)                += adis16255/
 obj-$(CONFIG_FB_XGI)           += xgifb/
 obj-$(CONFIG_MSM_STAGING)      += msm/
 obj-$(CONFIG_EASYCAP)          += easycap/
@@ -68,3 +67,5 @@ obj-$(CONFIG_BCM_WIMAX)       += bcm/
 obj-$(CONFIG_FT1000)           += ft1000/
 obj-$(CONFIG_SND_INTEL_SST)            += intel_sst/
 obj-$(CONFIG_SPEAKUP)  += speakup/
+obj-$(CONFIG_TOUCHSCREEN_CLEARPAD_TM1217)      += cptm1217/
+obj-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4)   += ste_rmi4/
diff --git a/drivers/staging/adis16255/Kconfig b/drivers/staging/adis16255/Kconfig
deleted file mode 100644 (file)
index a883c1f..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-config ADIS16255
-       tristate "Analog Devices ADIS16250/16255"
-       depends on SPI && SYSFS
-       ---help---
-       If you say yes here you get support for the Analog Devices
-       ADIS16250/16255 Low Power Gyroscope. The driver exposes
-       orientation and gyroscope value, as well as sample rate
-       to the sysfs.
-
-       This driver can also be built as a module. If so, the module
-       will be called adis16255.
diff --git a/drivers/staging/adis16255/Makefile b/drivers/staging/adis16255/Makefile
deleted file mode 100644 (file)
index 8c39081..0000000
+++ /dev/null
@@ -1 +0,0 @@
-obj-$(CONFIG_ADIS16255)                += adis16255.o
diff --git a/drivers/staging/adis16255/adis16255.c b/drivers/staging/adis16255/adis16255.c
deleted file mode 100644 (file)
index 8d4d7cb..0000000
+++ /dev/null
@@ -1,468 +0,0 @@
-/*
- * Analog Devices ADIS16250/ADIS16255 Low Power Gyroscope
- *
- * Written by: Matthias Brugger <m_brugger@web.de>
- *
- * Copyright (C) 2010 Fraunhofer Institute for Integrated Circuits
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the
- * Free Software Foundation, Inc.,
- * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- */
-
-/*
- * The driver just has a bare interface to the sysfs (sample rate in Hz,
- * orientation (x, y, z) and gyroscope data in °/sec.
- *
- * It should be added to iio subsystem when this has left staging.
- *
- */
-
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/device.h>
-#include <linux/list.h>
-#include <linux/errno.h>
-#include <linux/mutex.h>
-#include <linux/slab.h>
-
-#include <linux/interrupt.h>
-#include <linux/sysfs.h>
-#include <linux/stat.h>
-#include <linux/delay.h>
-
-#include <linux/gpio.h>
-
-#include <linux/spi/spi.h>
-#include <linux/workqueue.h>
-
-#include "adis16255.h"
-
-#define ADIS_STATUS        0x3d
-#define ADIS_SMPL_PRD_MSB  0x37
-#define ADIS_SMPL_PRD_LSB  0x36
-#define ADIS_MSC_CTRL_MSB  0x35
-#define ADIS_MSC_CTRL_LSB  0x34
-#define ADIS_GPIO_CTRL     0x33
-#define ADIS_ALM_SMPL1     0x25
-#define ADIS_ALM_MAG1      0x21
-#define ADIS_GYRO_SCALE    0x17
-#define ADIS_GYRO_OUT      0x05
-#define ADIS_SUPPLY_OUT    0x03
-#define ADIS_ENDURANCE     0x01
-
-/*
- * data structure for every sensor
- *
- * @dev:       Driver model representation of the device.
- * @spi:       Pointer to the spi device which will manage i/o to spi bus.
- * @data:      Last read data from device.
- * @irq_adis:  GPIO Number of IRQ signal
- * @irq:       irq line manage by kernel
- * @negative:  indicates if sensor is upside down (negative == 1)
- * @direction: indicates axis (x, y, z) the sensor is meassuring
- */
-struct spi_adis16255_data {
-       struct device dev;
-       struct spi_device *spi;
-       s16 data;
-       int irq;
-       u8 negative;
-       char direction;
-};
-
-/*-------------------------------------------------------------------------*/
-
-static int spi_adis16255_read_data(struct spi_adis16255_data *spiadis,
-                                       u8 adr,
-                                       u8 *rbuf)
-{
-       struct spi_device *spi = spiadis->spi;
-       struct spi_message msg;
-       struct spi_transfer xfer1, xfer2;
-       u8 *buf, *rx;
-       int ret;
-
-       buf = kzalloc(4, GFP_KERNEL);
-       if (buf == NULL)
-               return -ENOMEM;
-
-       rx = kzalloc(4, GFP_KERNEL);
-       if (rx == NULL) {
-               ret = -ENOMEM;
-               goto err_buf;
-       }
-
-       buf[0] = adr;
-
-       spi_message_init(&msg);
-       memset(&xfer1, 0, sizeof(xfer1));
-       memset(&xfer2, 0, sizeof(xfer2));
-
-       xfer1.tx_buf = buf;
-       xfer1.rx_buf = buf + 2;
-       xfer1.len = 2;
-       xfer1.delay_usecs = 9;
-
-       xfer2.tx_buf = rx + 2;
-       xfer2.rx_buf = rx;
-       xfer2.len = 2;
-
-       spi_message_add_tail(&xfer1, &msg);
-       spi_message_add_tail(&xfer2, &msg);
-
-       ret = spi_sync(spi, &msg);
-       if (ret == 0) {
-               rbuf[0] = rx[0];
-               rbuf[1] = rx[1];
-       }
-
-       kfree(rx);
-err_buf:
-       kfree(buf);
-
-       return ret;
-}
-
-static int spi_adis16255_write_data(struct spi_adis16255_data *spiadis,
-                                       u8 adr1,
-                                       u8 adr2,
-                                       u8 *wbuf)
-{
-       struct spi_device *spi = spiadis->spi;
-       struct spi_message   msg;
-       struct spi_transfer  xfer1, xfer2;
-       u8       *buf, *rx;
-       int         ret;
-
-       buf = kmalloc(4, GFP_KERNEL);
-       if (buf == NULL)
-               return -ENOMEM;
-
-       rx = kzalloc(4, GFP_KERNEL);
-       if (rx == NULL) {
-               ret = -ENOMEM;
-               goto err_buf;
-       }
-
-       spi_message_init(&msg);
-       memset(&xfer1, 0, sizeof(xfer1));
-       memset(&xfer2, 0, sizeof(xfer2));
-
-       buf[0] = adr1 | 0x80;
-       buf[1] = *wbuf;
-
-       buf[2] = adr2 | 0x80;
-       buf[3] = *(wbuf + 1);
-
-       xfer1.tx_buf = buf;
-       xfer1.rx_buf = rx;
-       xfer1.len = 2;
-       xfer1.delay_usecs = 9;
-
-       xfer2.tx_buf = buf+2;
-       xfer2.rx_buf = rx+2;
-       xfer2.len = 2;
-
-       spi_message_add_tail(&xfer1, &msg);
-       spi_message_add_tail(&xfer2, &msg);
-
-       ret = spi_sync(spi, &msg);
-       if (ret != 0)
-               dev_warn(&spi->dev, "write data to %#x %#x failed\n",
-                               buf[0], buf[2]);
-
-       kfree(rx);
-err_buf:
-       kfree(buf);
-       return ret;
-}
-
-/*-------------------------------------------------------------------------*/
-
-static irqreturn_t adis_irq_thread(int irq, void *dev_id)
-{
-       struct spi_adis16255_data *spiadis = dev_id;
-       int status;
-       u16 value = 0;
-
-       status =  spi_adis16255_read_data(spiadis, ADIS_GYRO_OUT, (u8 *)&value);
-       if (status != 0) {
-               dev_warn(&spiadis->spi->dev, "SPI FAILED\n");
-               goto exit;
-       }
-
-       /* perform on new data only... */
-       if (value & 0x8000) {
-               /* delete error and new data bit */
-               value = value & 0x3fff;
-               /* set negative value */
-               if (value & 0x2000)
-                       value = value | 0xe000;
-
-               if (likely(spiadis->negative))
-                       value = -value;
-
-               spiadis->data = (s16) value;
-       }
-
-exit:
-       return IRQ_HANDLED;
-}
-
-/*-------------------------------------------------------------------------*/
-
-ssize_t adis16255_show_data(struct device *device,
-               struct device_attribute *da,
-               char *buf)
-{
-       struct spi_adis16255_data *spiadis = dev_get_drvdata(device);
-       return snprintf(buf, PAGE_SIZE, "%d\n", spiadis->data);
-}
-DEVICE_ATTR(data, S_IRUGO , adis16255_show_data, NULL);
-
-ssize_t adis16255_show_direction(struct device *device,
-               struct device_attribute *da,
-               char *buf)
-{
-       struct spi_adis16255_data *spiadis = dev_get_drvdata(device);
-       return snprintf(buf, PAGE_SIZE, "%c\n", spiadis->direction);
-}
-DEVICE_ATTR(direction, S_IRUGO , adis16255_show_direction, NULL);
-
-ssize_t adis16255_show_sample_rate(struct device *device,
-               struct device_attribute *da,
-               char *buf)
-{
-       struct spi_adis16255_data *spiadis = dev_get_drvdata(device);
-       int status = 0;
-       u16 value = 0;
-       int ts = 0;
-
-       status = spi_adis16255_read_data(spiadis, ADIS_SMPL_PRD_MSB,
-                               (u8 *)&value);
-       if (status != 0)
-               return -EINVAL;
-
-       if (value & 0x80) {
-               /* timebase = 60.54 ms */
-               ts = 60540 * ((0x7f & value) + 1);
-       } else {
-               /* timebase = 1.953 ms */
-               ts = 1953 * ((0x7f & value) + 1);
-       }
-
-       return snprintf(buf, PAGE_SIZE, "%d\n", (1000*1000)/ts);
-}
-DEVICE_ATTR(sample_rate, S_IRUGO , adis16255_show_sample_rate, NULL);
-
-static struct attribute *adis16255_attributes[] = {
-       &dev_attr_data.attr,
-       &dev_attr_direction.attr,
-       &dev_attr_sample_rate.attr,
-       NULL
-};
-
-static const struct attribute_group adis16255_attr_group = {
-       .attrs = adis16255_attributes,
-};
-
-/*-------------------------------------------------------------------------*/
-
-static int spi_adis16255_shutdown(struct spi_adis16255_data *spiadis)
-{
-       u16 value = 0;
-       /* turn sensor off */
-       spi_adis16255_write_data(spiadis,
-                       ADIS_SMPL_PRD_MSB, ADIS_SMPL_PRD_LSB,
-                       (u8 *)&value);
-       spi_adis16255_write_data(spiadis,
-                       ADIS_MSC_CTRL_MSB, ADIS_MSC_CTRL_LSB,
-                       (u8 *)&value);
-       return 0;
-}
-
-static int spi_adis16255_bringup(struct spi_adis16255_data *spiadis)
-{
-       int status = 0;
-       u16 value = 0;
-
-       status = spi_adis16255_read_data(spiadis, ADIS_GYRO_SCALE,
-                               (u8 *)&value);
-       if (status != 0)
-               goto err;
-       if (value != 0x0800) {
-               dev_warn(&spiadis->spi->dev, "Scale factor is none default "
-                               "value (%.4x)\n", value);
-       }
-
-       /* timebase = 1.953 ms, Ns = 0 -> 512 Hz sample rate */
-       value =  0x0001;
-       status = spi_adis16255_write_data(spiadis,
-                               ADIS_SMPL_PRD_MSB, ADIS_SMPL_PRD_LSB,
-                               (u8 *)&value);
-       if (status != 0)
-               goto err;
-
-       /* start internal self-test */
-       value = 0x0400;
-       status = spi_adis16255_write_data(spiadis,
-                               ADIS_MSC_CTRL_MSB, ADIS_MSC_CTRL_LSB,
-                               (u8 *)&value);
-       if (status != 0)
-               goto err;
-
-       /* wait 35 ms to finish self-test */
-       msleep(35);
-
-       value = 0x0000;
-       status = spi_adis16255_read_data(spiadis, ADIS_STATUS,
-                               (u8 *)&value);
-       if (status != 0)
-               goto err;
-
-       if (value & 0x23) {
-               if (value & 0x20) {
-                       dev_warn(&spiadis->spi->dev, "self-test error\n");
-                       status = -ENODEV;
-                       goto err;
-               } else if (value & 0x3) {
-                       dev_warn(&spiadis->spi->dev, "Sensor voltage "
-                                               "out of range.\n");
-                       status = -ENODEV;
-                       goto err;
-               }
-       }
-
-       /* set interrupt to active high on DIO0 when data ready */
-       value = 0x0006;
-       status = spi_adis16255_write_data(spiadis,
-                               ADIS_MSC_CTRL_MSB, ADIS_MSC_CTRL_LSB,
-                               (u8 *)&value);
-       if (status != 0)
-               goto err;
-       return status;
-
-err:
-       spi_adis16255_shutdown(spiadis);
-       return status;
-}
-
-/*-------------------------------------------------------------------------*/
-
-static int __devinit spi_adis16255_probe(struct spi_device *spi)
-{
-
-       struct adis16255_init_data *init_data = spi->dev.platform_data;
-       struct spi_adis16255_data  *spiadis;
-       int status = 0;
-
-       spiadis = kzalloc(sizeof(*spiadis), GFP_KERNEL);
-       if (!spiadis)
-               return -ENOMEM;
-
-       spiadis->spi = spi;
-       spiadis->direction = init_data->direction;
-
-       if (init_data->negative)
-               spiadis->negative = 1;
-
-       status = gpio_request(init_data->irq, "adis16255");
-       if (status != 0)
-               goto err;
-
-       status = gpio_direction_input(init_data->irq);
-       if (status != 0)
-               goto gpio_err;
-
-       spiadis->irq = gpio_to_irq(init_data->irq);
-
-       status = request_threaded_irq(spiadis->irq,
-                       NULL, adis_irq_thread,
-                       IRQF_DISABLED, "adis-driver", spiadis);
-
-       if (status != 0) {
-               dev_err(&spi->dev, "IRQ request failed\n");
-               goto gpio_err;
-       }
-
-       dev_dbg(&spi->dev, "GPIO %d IRQ %d\n", init_data->irq, spiadis->irq);
-
-       dev_set_drvdata(&spi->dev, spiadis);
-       status = sysfs_create_group(&spi->dev.kobj, &adis16255_attr_group);
-       if (status != 0)
-               goto irq_err;
-
-       status = spi_adis16255_bringup(spiadis);
-       if (status != 0)
-               goto sysfs_err;
-
-       dev_info(&spi->dev, "spi_adis16255 driver added!\n");
-
-       return status;
-
-sysfs_err:
-       sysfs_remove_group(&spiadis->spi->dev.kobj, &adis16255_attr_group);
-irq_err:
-       free_irq(spiadis->irq, spiadis);
-gpio_err:
-       gpio_free(init_data->irq);
-err:
-       kfree(spiadis);
-       return status;
-}
-
-static int __devexit spi_adis16255_remove(struct spi_device *spi)
-{
-       struct spi_adis16255_data  *spiadis    = dev_get_drvdata(&spi->dev);
-
-       spi_adis16255_shutdown(spiadis);
-
-       free_irq(spiadis->irq, spiadis);
-       gpio_free(irq_to_gpio(spiadis->irq));
-
-       sysfs_remove_group(&spiadis->spi->dev.kobj, &adis16255_attr_group);
-
-       kfree(spiadis);
-
-       dev_info(&spi->dev, "spi_adis16255 driver removed!\n");
-       return 0;
-}
-
-static struct spi_driver spi_adis16255_drv = {
-       .driver = {
-               .name =  "spi_adis16255",
-               .owner = THIS_MODULE,
-       },
-       .probe = spi_adis16255_probe,
-       .remove =   __devexit_p(spi_adis16255_remove),
-};
-
-/*-------------------------------------------------------------------------*/
-
-static int __init spi_adis16255_init(void)
-{
-       return spi_register_driver(&spi_adis16255_drv);
-}
-module_init(spi_adis16255_init);
-
-static void __exit spi_adis16255_exit(void)
-{
-       spi_unregister_driver(&spi_adis16255_drv);
-}
-module_exit(spi_adis16255_exit);
-
-MODULE_AUTHOR("Matthias Brugger");
-MODULE_DESCRIPTION("SPI device driver for ADIS16255 sensor");
-MODULE_LICENSE("GPL");
diff --git a/drivers/staging/adis16255/adis16255.h b/drivers/staging/adis16255/adis16255.h
deleted file mode 100644 (file)
index 03e0700..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef ADIS16255_H
-#define ADIS16255_H
-
-#include <linux/types.h>
-
-struct adis16255_init_data {
-       char direction;
-       u8   negative;
-       int  irq;
-};
-
-#endif
index 016c6f7..7bb7da7 100644 (file)
@@ -70,7 +70,7 @@ module_param(start_off, uint, 0644);
 MODULE_PARM_DESC(start_off,
                 "Set to 1 to switch off OLED display after it is attached");
 
-enum oled_pack_mode{
+enum oled_pack_mode {
        PACK_MODE_G1,
        PACK_MODE_G50,
        PACK_MODE_LAST
index c307a55..e96662b 100644 (file)
@@ -876,7 +876,7 @@ HIFAckInterrupt(HIF_DEVICE *device)
 void
 HIFUnMaskInterrupt(HIF_DEVICE *device)
 {
-    int ret;;
+    int ret;
 
     AR_DEBUG_ASSERT(device != NULL);
     AR_DEBUG_ASSERT(device->func != NULL);
@@ -1188,7 +1188,7 @@ addHifDevice(struct sdio_func *func)
     HIF_DEVICE *hifdevice;
     AR_DEBUG_PRINTF(ATH_DEBUG_TRACE, ("AR6000: addHifDevice\n"));
     AR_DEBUG_ASSERT(func != NULL);
-    hifdevice = (HIF_DEVICE *)kzalloc(sizeof(HIF_DEVICE), GFP_KERNEL);
+    hifdevice = kzalloc(sizeof(HIF_DEVICE), GFP_KERNEL);
     AR_DEBUG_ASSERT(hifdevice != NULL);
 #if HIF_USE_DMA_BOUNCE_BUFFER
     hifdevice->dma_buffer = kmalloc(HIF_DMA_BUFFER_SIZE, GFP_KERNEL);
index a659f70..126a36a 100644 (file)
@@ -4439,7 +4439,7 @@ skip_key:
         for (i = assoc_req_ie_pos; i < assoc_req_ie_pos + assocReqLen - 4; i++) {
             AR_DEBUG_PRINTF(ATH_DEBUG_WLAN_CONNECT,("%2.2x ", assocInfo[i]));
             sprintf(pos, "%2.2x", assocInfo[i]);
-            pos += 2;;
+            pos += 2;
         }
         AR_DEBUG_PRINTF(ATH_DEBUG_WLAN_CONNECT,("\n"));
 
index 8f3e2b8..d3f42c8 100644 (file)
@@ -30,7 +30,7 @@ void autofs_update_usage(struct autofs_dirhash *dh,
                         struct autofs_dir_ent *ent)
 {
        autofs_delete_usage(ent);   /* Unlink from current position */
-       autofs_init_usage(dh,ent);  /* Relink at queue tail */
+       autofs_init_usage(dh, ent);  /* Relink at queue tail */
 }
 
 struct autofs_dir_ent *autofs_expire(struct super_block *sb,
@@ -45,17 +45,18 @@ struct autofs_dir_ent *autofs_expire(struct super_block *sb,
                struct path path;
                int umount_ok;
 
-               if ( list_empty(&dh->expiry_head) || sbi->catatonic )
+               if (list_empty(&dh->expiry_head) || sbi->catatonic)
                        return NULL;    /* No entries */
                /* We keep the list sorted by last_usage and want old stuff */
-               ent = list_entry(dh->expiry_head.next, struct autofs_dir_ent, exp);
+               ent = list_entry(dh->expiry_head.next,
+                                               struct autofs_dir_ent, exp);
                if (jiffies - ent->last_usage < timeout)
                        break;
                /* Move to end of list in case expiry isn't desirable */
                autofs_update_usage(dh, ent);
 
                /* Check to see that entry is expirable */
-               if ( ent->ino < AUTOFS_FIRST_DIR_INO )
+               if (ent->ino < AUTOFS_FIRST_DIR_INO)
                        return ent; /* Symlinks are always expirable */
 
                /* Get the dentry for the autofs subdirectory */
@@ -63,14 +64,15 @@ struct autofs_dir_ent *autofs_expire(struct super_block *sb,
 
                if (!path.dentry) {
                        /* Should only happen in catatonic mode */
-                       printk("autofs: dentry == NULL but inode range is directory, entry %s\n", ent->name);
+                       printk(KERN_DEBUG "autofs: dentry == NULL but inode \
+                               range is directory, entry %s\n", ent->name);
                        autofs_delete_usage(ent);
                        continue;
                }
 
                if (!path.dentry->d_inode) {
                        dput(path.dentry);
-                       printk("autofs: negative dentry on expiry queue: %s\n",
+                       printk(KERN_DEBUG "autofs: negative dentry on expiry queue: %s\n",
                               ent->name);
                        autofs_delete_usage(ent);
                        continue;
@@ -80,14 +82,16 @@ struct autofs_dir_ent *autofs_expire(struct super_block *sb,
                   point to the mounted-on-top root. */
                if (!S_ISDIR(path.dentry->d_inode->i_mode) ||
                    !d_mountpoint(path.dentry)) {
-                       DPRINTK(("autofs: not expirable (not a mounted directory): %s\n", ent->name));
+                       DPRINTK(("autofs: not expirable \
+                               (not a mounted directory): %s\n", ent->name));
                        continue;
                }
                path.mnt = mnt;
                path_get(&path);
                if (!follow_down(&path)) {
                        path_put(&path);
-                       DPRINTK(("autofs: not expirable (not a mounted directory): %s\n", ent->name));
+                       DPRINTK(("autofs: not expirable\
+                       (not a mounted directory): %s\n", ent->name));
                        continue;
                }
                while (d_mountpoint(path.dentry) && follow_down(&path))
@@ -96,30 +100,37 @@ struct autofs_dir_ent *autofs_expire(struct super_block *sb,
                path_put(&path);
 
                if (umount_ok) {
-                       DPRINTK(("autofs: signaling expire on %s\n", ent->name));
+                       DPRINTK(("autofs: signaling expire on %s\n",
+                                                               ent->name));
                        return ent; /* Expirable! */
                }
-               DPRINTK(("autofs: didn't expire due to may_umount: %s\n", ent->name));
+
+               DPRINTK(("autofs: didn't expire due to may_umount: %s\n",
+                                                               ent->name));
        }
        return NULL;            /* No expirable entries */
 }
 
-void autofs_initialize_hash(struct autofs_dirhash *dh) {
+void autofs_initialize_hash(struct autofs_dirhash *dh)
+{
        memset(&dh->h, 0, AUTOFS_HASH_SIZE*sizeof(struct autofs_dir_ent *));
        INIT_LIST_HEAD(&dh->expiry_head);
 }
 
-struct autofs_dir_ent *autofs_hash_lookup(const struct autofs_dirhash *dh, struct qstr *name)
+struct autofs_dir_ent *autofs_hash_lookup(const struct autofs_dirhash *dh,
+                                               struct qstr *name)
 {
        struct autofs_dir_ent *dhn;
 
        DPRINTK(("autofs_hash_lookup: hash = 0x%08x, name = ", name->hash));
-       autofs_say(name->name,name->len);
+       autofs_say(name->name, name->len);
 
-       for ( dhn = dh->h[(unsigned) name->hash % AUTOFS_HASH_SIZE] ; dhn ; dhn = dhn->next ) {
-               if ( name->hash == dhn->hash &&
+       for (dhn = dh->h[(unsigned) name->hash % AUTOFS_HASH_SIZE];
+               dhn;
+               dhn = dhn->next) {
+               if (name->hash == dhn->hash &&
                     name->len == dhn->len &&
-                    !memcmp(name->name, dhn->name, name->len) )
+                    !memcmp(name->name, dhn->name, name->len))
                        break;
        }
 
@@ -131,9 +142,9 @@ void autofs_hash_insert(struct autofs_dirhash *dh, struct autofs_dir_ent *ent)
        struct autofs_dir_ent **dhnp;
 
        DPRINTK(("autofs_hash_insert: hash = 0x%08x, name = ", ent->hash));
-       autofs_say(ent->name,ent->len);
+       autofs_say(ent->name, ent->len);
 
-       autofs_init_usage(dh,ent);
+       autofs_init_usage(dh, ent);
        if (ent->dentry)
                dget(ent->dentry);
 
@@ -141,19 +152,19 @@ void autofs_hash_insert(struct autofs_dirhash *dh, struct autofs_dir_ent *ent)
        ent->next = *dhnp;
        ent->back = dhnp;
        *dhnp = ent;
-       if ( ent->next )
+       if (ent->next)
                ent->next->back = &(ent->next);
 }
 
 void autofs_hash_delete(struct autofs_dir_ent *ent)
 {
        *(ent->back) = ent->next;
-       if ( ent->next )
+       if (ent->next)
                ent->next->back = ent->back;
 
        autofs_delete_usage(ent);
 
-       if ( ent->dentry )
+       if (ent->dentry)
                dput(ent->dentry);
        kfree(ent->name);
        kfree(ent);
@@ -176,37 +187,37 @@ struct autofs_dir_ent *autofs_hash_enum(const struct autofs_dirhash *dh,
        bucket = (*ptr >> 16) - 1;
        ecount = *ptr & 0xffff;
 
-       if ( bucket < 0 ) {
+       if (bucket < 0)
                bucket = ecount = 0;
-       } 
 
        DPRINTK(("autofs_hash_enum: bucket %d, entry %d\n", bucket, ecount));
 
        ent = last ? last->next : NULL;
 
-       if ( ent ) {
+       if (ent) {
                ecount++;
        } else {
-               while  ( bucket < AUTOFS_HASH_SIZE ) {
+               while  (bucket < AUTOFS_HASH_SIZE) {
                        ent = dh->h[bucket];
-                       for ( i = ecount ; ent && i ; i-- )
+                       for (i = ecount ; ent && i ; i--)
                                ent = ent->next;
-                       
+
                        if (ent) {
                                ecount++; /* Point to *next* entry */
                                break;
                        }
-                       
+
                        bucket++; ecount = 0;
                }
        }
 
 #ifdef DEBUG
-       if ( !ent )
-               printk("autofs_hash_enum: nothing found\n");
+       if (!ent)
+               printk(KERN_DEBUG "autofs_hash_enum: nothing found\n");
        else {
-               printk("autofs_hash_enum: found hash %08x, name", ent->hash);
-               autofs_say(ent->name,ent->len);
+               printk(KERN_DEBUG "autofs_hash_enum: found hash %08x, name",
+                                                               ent->hash);
+               autofs_say(ent->name, ent->len);
        }
 #endif
 
@@ -221,9 +232,9 @@ void autofs_hash_dputall(struct autofs_dirhash *dh)
        int i;
        struct autofs_dir_ent *ent;
 
-       for ( i = 0 ; i < AUTOFS_HASH_SIZE ; i++ ) {
-               for ( ent = dh->h[i] ; ent ; ent = ent->next ) {
-                       if ( ent->dentry ) {
+       for (i = 0 ; i < AUTOFS_HASH_SIZE ; i++) {
+               for (ent = dh->h[i] ; ent ; ent = ent->next) {
+                       if (ent->dentry) {
                                dput(ent->dentry);
                                ent->dentry = NULL;
                        }
@@ -238,10 +249,10 @@ void autofs_hash_nuke(struct autofs_sb_info *sbi)
        int i;
        struct autofs_dir_ent *ent, *nent;
 
-       for ( i = 0 ; i < AUTOFS_HASH_SIZE ; i++ ) {
-               for ( ent = sbi->dirhash.h[i] ; ent ; ent = nent ) {
+       for (i = 0 ; i < AUTOFS_HASH_SIZE ; i++) {
+               for (ent = sbi->dirhash.h[i] ; ent ; ent = nent) {
                        nent = ent->next;
-                       if ( ent->dentry )
+                       if (ent->dentry)
                                dput(ent->dentry);
                        kfree(ent->name);
                        kfree(ent);
diff --git a/drivers/staging/batman-adv/Kconfig b/drivers/staging/batman-adv/Kconfig
deleted file mode 100644 (file)
index 8553f35..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# B.A.T.M.A.N meshing protocol
-#
-
-config BATMAN_ADV
-       tristate "B.A.T.M.A.N. Advanced Meshing Protocol"
-       depends on NET
-        default n
-       ---help---
-
-        B.A.T.M.A.N. (better approach to mobile ad-hoc networking) is
-        a routing protocol for multi-hop ad-hoc mesh networks. The
-        networks may be wired or wireless. See
-        http://www.open-mesh.org/ for more information and user space
-        tools.
-
-config BATMAN_ADV_DEBUG
-       bool "B.A.T.M.A.N. debugging"
-       depends on BATMAN_ADV != n
-       ---help---
-
-         This is an option for use by developers; most people should
-         say N here. This enables compilation of support for
-         outputting debugging information to the kernel log. The
-         output is controlled via the module parameter debug.
-
diff --git a/drivers/staging/batman-adv/Makefile b/drivers/staging/batman-adv/Makefile
deleted file mode 100644 (file)
index 7892428..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# Copyright (C) 2007-2010 B.A.T.M.A.N. contributors:
-#
-# Marek Lindner, Simon Wunderlich
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of version 2 of the GNU General Public
-# License as published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA
-#
-
-obj-$(CONFIG_BATMAN_ADV) += batman-adv.o
-batman-adv-y := main.o bat_debugfs.o bat_sysfs.o send.o routing.o soft-interface.o icmp_socket.o translation-table.o bitarray.o hash.o ring_buffer.o vis.o hard-interface.o aggregation.o originator.o unicast.o
diff --git a/drivers/staging/batman-adv/README b/drivers/staging/batman-adv/README
deleted file mode 100644 (file)
index 7c878bb..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-[state: 04-09-2010]
-
-BATMAN-ADV
-----------
-
-Batman  advanced  is  a new approach to wireless networking which
-does no longer operate on the IP basis. Unlike the batman daemon,
-which  exchanges  information  using UDP packets and sets routing
-tables, batman-advanced operates on ISO/OSI Layer 2 only and uses
-and  routes  (or  better: bridges) Ethernet Frames. It emulates a
-virtual network switch of all nodes participating.  Therefore all
-nodes  appear  to be link local, thus all higher operating proto-
-cols won't be affected by any changes within the network. You can
-run almost any protocol above batman advanced, prominent examples
-are: IPv4, IPv6, DHCP, IPX.
-
-Batman advanced was implemented as a Linux kernel driver  to  re-
-duce the overhead to a minimum. It does not depend on any (other)
-network driver, and can be used on wifi as well as ethernet  lan,
-vpn,  etc ... (anything with ethernet-style layer 2).
-
-CONFIGURATION
--------------
-
-Load the batman-adv module into your kernel:
-
-# insmod batman-adv.ko
-
-The  module  is now waiting for activation. You must add some in-
-terfaces on which batman can operate. After  loading  the  module
-batman  advanced  will scan your systems interfaces to search for
-compatible interfaces. Once found, it will create  subfolders  in
-the /sys directories of each supported interface, e.g.
-
-# ls /sys/class/net/eth0/batman_adv/
-# iface_status  mesh_iface
-
-If an interface does not have the "batman_adv" subfolder it prob-
-ably is not supported. Not supported  interfaces  are:  loopback,
-non-ethernet and batman's own interfaces.
-
-Note:  After the module was loaded it will continuously watch for
-new interfaces to verify the compatibility. There is no  need  to
-reload the module if you plug your USB wifi adapter into your ma-
-chine after batman advanced was initially loaded.
-
-To activate a  given  interface  simply  write  "bat0"  into  its
-"mesh_iface" file inside the batman_adv subfolder:
-
-# echo bat0 > /sys/class/net/eth0/batman_adv/mesh_iface
-
-Repeat  this step for all interfaces you wish to add.  Now batman
-starts using/broadcasting on this/these interface(s).
-
-By reading the "iface_status" file you can check its status:
-
-# cat /sys/class/net/eth0/batman_adv/iface_status
-# active
-
-To deactivate an interface you have  to  write  "none"  into  its
-"mesh_iface" file:
-
-# echo none > /sys/class/net/eth0/batman_adv/mesh_iface
-
-
-All  mesh  wide  settings  can be found in batman's own interface
-folder:
-
-#  ls  /sys/class/net/bat0/mesh/
-#  aggregated_ogms  bonding  orig_interval  vis_mode
-
-
-There is a special folder for debugging informations:
-
-#  ls /sys/kernel/debug/batman_adv/bat0/
-#  originators  socket  transtable_global  transtable_local
-#  vis_data
-
-
-Some of the files contain all sort of status information  regard-
-ing  the  mesh  network.  For  example, you can view the table of
-originators (mesh participants) with:
-
-# cat /sys/kernel/debug/batman_adv/bat0/originators
-
-Other files allow to change batman's behaviour to better fit your
-requirements.  For instance, you can check the current originator
-interval (value in milliseconds which determines how often batman
-sends its broadcast packets):
-
-# cat /sys/class/net/bat0/mesh/orig_interval
-# 1000
-
-and also change its value:
-
-# echo 3000 > /sys/class/net/bat0/mesh/orig_interval
-
-In very mobile scenarios, you might want to adjust the originator
-interval to a lower value. This will make the mesh  more  respon-
-sive to topology changes, but will also increase the overhead.
-
-
-USAGE
------
-
-To  make use of your newly created mesh, batman advanced provides
-a new interface "bat0" which you should use from this  point  on.
-All  interfaces  added  to  batman  advanced are not relevant any
-longer because batman handles them for you. Basically, one "hands
-over" the data by using the batman interface and batman will make
-sure it reaches its destination.
-
-The "bat0" interface can be used like any  other  regular  inter-
-face.  It needs an IP address which can be either statically con-
-figured or dynamically (by using DHCP or similar services):
-
-# NodeA: ifconfig bat0 192.168.0.1
-# NodeB: ifconfig bat0 192.168.0.2
-# NodeB: ping 192.168.0.1
-
-Note:  In  order to avoid problems remove all IP addresses previ-
-ously assigned to interfaces now used by batman advanced, e.g.
-
-# ifconfig eth0 0.0.0.0
-
-
-VISUALIZATION
--------------
-
-If you want topology visualization, at least one mesh  node  must
-be configured as VIS-server:
-
-# echo "server" > /sys/class/net/bat0/mesh/vis_mode
-
-Each  node  is  either configured as "server" or as "client" (de-
-fault: "client").  Clients send their topology data to the server
-next to them, and server synchronize with other servers. If there
-is no server configured (default) within the  mesh,  no  topology
-information   will  be  transmitted.  With  these  "synchronizing
-servers", there can be 1 or more vis servers sharing the same (or
-at least very similar) data.
-
-When  configured  as  server,  you can get a topology snapshot of
-your mesh:
-
-# cat /sys/kernel/debug/batman_adv/bat0/vis_data
-
-This raw output is intended to be easily parsable and convertable
-with  other tools. Have a look at the batctl README if you want a
-vis output in dot or json format for instance and how those  out-
-puts could then be visualised in an image.
-
-The raw format consists of comma separated values per entry where
-each entry is giving information about a  certain  source  inter-
-face.  Each  entry can/has to have the following values:
--> "mac" - mac address of an originator's source interface
-           (each line begins with it)
--> "TQ mac  value"  -  src mac's link quality towards mac address
-                       of a neighbor originator's interface which
-                       is being used for routing
--> "HNA mac" - HNA announced by source mac
--> "PRIMARY" - this  is a primary interface
--> "SEC mac" - secondary mac address of source
-               (requires preceding PRIMARY)
-
-The TQ value has a range from 4 to 255 with 255 being  the  best.
-The HNA entries are showing which hosts are connected to the mesh
-via bat0 or being bridged into the mesh network.  The PRIMARY/SEC
-values are only applied on primary interfaces
-
-
-LOGGING/DEBUGGING
------------------
-
-All error messages, warnings and information messages are sent to
-the kernel log. Depending on your operating  system  distribution
-this  can  be read in one of a number of ways. Try using the com-
-mands: dmesg, logread, or looking in the files  /var/log/kern.log
-or  /var/log/syslog.  All  batman-adv  messages are prefixed with
-"batman-adv:" So to see just these messages try
-
-# dmesg | grep batman-adv
-
-When investigating problems with your mesh network  it  is  some-
-times  necessary  to see more detail debug messages. This must be
-enabled when compiling the batman-adv module. When building  bat-
-man-adv  as  part of kernel, use "make menuconfig" and enable the
-option "B.A.T.M.A.N. debugging".
-
-Those additional  debug messages can be accessed  using a special
-file in debugfs
-
-# cat /sys/kernel/debug/batman_adv/bat0/log
-
-The additional debug output is by default disabled. It can be en-
-abled  during run time. Following log_levels are defined:
-
-0 - All  debug  output  disabled
-1 - Enable messages related to routing / flooding / broadcasting
-2 - Enable route or hna added / changed / deleted
-3 - Enable all messages
-
-The debug output can be changed at runtime  using  the  file
-/sys/class/net/bat0/mesh/log_level. e.g.
-
-# echo 2 > /sys/class/net/bat0/mesh/log_level
-
-will enable debug messages for when routes or HNAs change.
-
-
-BATCTL
-------
-
-As batman advanced operates on layer 2 all hosts participating in
-the  virtual switch are completely transparent for all  protocols
-above layer 2. Therefore the common diagnosis tools do  not  work
-as  expected.  To  overcome these problems batctl was created. At
-the  moment the  batctl contains ping,  traceroute,  tcpdump  and
-interfaces to the kernel module settings.
-
-For more information, please see the manpage (man batctl).
-
-batctl is available on http://www.open-mesh.org/
-
-
-CONTACT
--------
-
-Please send us comments, experiences, questions, anything :)
-
-IRC:            #batman   on   irc.freenode.org
-Mailing-list:   b.a.t.m.a.n@b.a.t.m.a.n@lists.open-mesh.org
-                (optional   subscription   at
-                 https://lists.open-mesh.org/mm/listinfo/b.a.t.m.a.n)
-
-You can also contact the Authors:
-
-Marek  Lindner  <lindner_marek@yahoo.de>
-Simon  Wunderlich  <siwu@hrz.tu-chemnitz.de>
-
diff --git a/drivers/staging/batman-adv/TODO b/drivers/staging/batman-adv/TODO
deleted file mode 100644 (file)
index 11c384f..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
- * remove own list functionality from hash
- * use hlist_head, hlist_node in hash
- * don't use callbacks for compare+choose in hash
- * think about more efficient ways instead of abstraction of hash
- * Request a new review
- * Process the comments from the review
- * Move into mainline proper
-
-Please send all patches to:
-       Marek Lindner <lindner_marek@yahoo.de>
-       Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
-       Andrew Lunn <andrew@lunn.ch>
-       b.a.t.m.a.n@lists.open-mesh.org
-       Greg Kroah-Hartman <gregkh@suse.de>
diff --git a/drivers/staging/batman-adv/aggregation.c b/drivers/staging/batman-adv/aggregation.c
deleted file mode 100644 (file)
index 08624d4..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * Copyright (C) 2007-2010 B.A.T.M.A.N. contributors:
- *
- * Marek Lindner, Simon Wunderlich
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA
- *
- */
-
-#include "main.h"
-#include "aggregation.h"
-#include "send.h"
-#include "routing.h"
-
-/* calculate the size of the hna information for a given packet */
-static int hna_len(struct batman_packet *batman_packet)
-{
-       return batman_packet->num_hna * ETH_ALEN;
-}
-
-/* return true if new_packet can be aggregated with forw_packet */
-static bool can_aggregate_with(struct batman_packet *new_batman_packet,
-                              int packet_len,
-                              unsigned long send_time,
-                              bool directlink,
-                              struct batman_if *if_incoming,
-                              struct forw_packet *forw_packet)
-{
-       struct batman_packet *batman_packet =
-               (struct batman_packet *)forw_packet->skb->data;
-       int aggregated_bytes = forw_packet->packet_len + packet_len;
-
-       /**
-        * we can aggregate the current packet to this aggregated packet
-        * if:
-        *
-        * - the send time is within our MAX_AGGREGATION_MS time
-        * - the resulting packet wont be bigger than
-        *   MAX_AGGREGATION_BYTES
-        */
-
-       if (time_before(send_time, forw_packet->send_time) &&
-           time_after_eq(send_time + msecs_to_jiffies(MAX_AGGREGATION_MS),
-                                       forw_packet->send_time) &&
-           (aggregated_bytes <= MAX_AGGREGATION_BYTES)) {
-
-               /**
-                * check aggregation compatibility
-                * -> direct link packets are broadcasted on
-                *    their interface only
-                * -> aggregate packet if the current packet is
-                *    a "global" packet as well as the base
-                *    packet
-                */
-
-               /* packets without direct link flag and high TTL
-                * are flooded through the net  */
-               if ((!directlink) &&
-                   (!(batman_packet->flags & DIRECTLINK)) &&
-                   (batman_packet->ttl != 1) &&
-
-                   /* own packets originating non-primary
-                    * interfaces leave only that interface */
-                   ((!forw_packet->own) ||
-                    (forw_packet->if_incoming->if_num == 0)))
-                       return true;
-
-               /* if the incoming packet is sent via this one
-                * interface only - we still can aggregate */
-               if ((directlink) &&
-                   (new_batman_packet->ttl == 1) &&
-                   (forw_packet->if_incoming == if_incoming) &&
-
-                   /* packets from direct neighbors or
-                    * own secondary interface packets
-                    * (= secondary interface packets in general) */
-                   (batman_packet->flags & DIRECTLINK ||
-                    (forw_packet->own &&
-                     forw_packet->if_incoming->if_num != 0)))
-                       return true;
-       }
-
-       return false;
-}
-
-#define atomic_dec_not_zero(v)          atomic_add_unless((v), -1, 0)
-/* create a new aggregated packet and add this packet to it */
-static void new_aggregated_packet(unsigned char *packet_buff, int packet_len,
-                                 unsigned long send_time, bool direct_link,
-                                 struct batman_if *if_incoming,
-                                 int own_packet)
-{
-       struct bat_priv *bat_priv = netdev_priv(if_incoming->soft_iface);
-       struct forw_packet *forw_packet_aggr;
-       unsigned long flags;
-       unsigned char *skb_buff;
-
-       /* own packet should always be scheduled */
-       if (!own_packet) {
-               if (!atomic_dec_not_zero(&bat_priv->batman_queue_left)) {
-                       bat_dbg(DBG_BATMAN, bat_priv,
-                               "batman packet queue full\n");
-                       return;
-               }
-       }
-
-       forw_packet_aggr = kmalloc(sizeof(struct forw_packet), GFP_ATOMIC);
-       if (!forw_packet_aggr) {
-               if (!own_packet)
-                       atomic_inc(&bat_priv->batman_queue_left);
-               return;
-       }
-
-       if ((atomic_read(&bat_priv->aggregation_enabled)) &&
-           (packet_len < MAX_AGGREGATION_BYTES))
-               forw_packet_aggr->skb = dev_alloc_skb(MAX_AGGREGATION_BYTES +
-                                                     sizeof(struct ethhdr));
-       else
-               forw_packet_aggr->skb = dev_alloc_skb(packet_len +
-                                                     sizeof(struct ethhdr));
-
-       if (!forw_packet_aggr->skb) {
-               if (!own_packet)
-                       atomic_inc(&bat_priv->batman_queue_left);
-               kfree(forw_packet_aggr);
-               return;
-       }
-       skb_reserve(forw_packet_aggr->skb, sizeof(struct ethhdr));
-
-       INIT_HLIST_NODE(&forw_packet_aggr->list);
-
-       skb_buff = skb_put(forw_packet_aggr->skb, packet_len);
-       forw_packet_aggr->packet_len = packet_len;
-       memcpy(skb_buff, packet_buff, packet_len);
-
-       forw_packet_aggr->own = own_packet;
-       forw_packet_aggr->if_incoming = if_incoming;
-       forw_packet_aggr->num_packets = 0;
-       forw_packet_aggr->direct_link_flags = 0;
-       forw_packet_aggr->send_time = send_time;
-
-       /* save packet direct link flag status */
-       if (direct_link)
-               forw_packet_aggr->direct_link_flags |= 1;
-
-       /* add new packet to packet list */
-       spin_lock_irqsave(&bat_priv->forw_bat_list_lock, flags);
-       hlist_add_head(&forw_packet_aggr->list, &bat_priv->forw_bat_list);
-       spin_unlock_irqrestore(&bat_priv->forw_bat_list_lock, flags);
-
-       /* start timer for this packet */
-       INIT_DELAYED_WORK(&forw_packet_aggr->delayed_work,
-                         send_outstanding_bat_packet);
-       queue_delayed_work(bat_event_workqueue,
-                          &forw_packet_aggr->delayed_work,
-                          send_time - jiffies);
-}
-
-/* aggregate a new packet into the existing aggregation */
-static void aggregate(struct forw_packet *forw_packet_aggr,
-                     unsigned char *packet_buff,
-                     int packet_len,
-                     bool direct_link)
-{
-       unsigned char *skb_buff;
-
-       skb_buff = skb_put(forw_packet_aggr->skb, packet_len);
-       memcpy(skb_buff, packet_buff, packet_len);
-       forw_packet_aggr->packet_len += packet_len;
-       forw_packet_aggr->num_packets++;
-
-       /* save packet direct link flag status */
-       if (direct_link)
-               forw_packet_aggr->direct_link_flags |=
-                       (1 << forw_packet_aggr->num_packets);
-}
-
-void add_bat_packet_to_list(struct bat_priv *bat_priv,
-                           unsigned char *packet_buff, int packet_len,
-                           struct batman_if *if_incoming, char own_packet,
-                           unsigned long send_time)
-{
-       /**
-        * _aggr -> pointer to the packet we want to aggregate with
-        * _pos -> pointer to the position in the queue
-        */
-       struct forw_packet *forw_packet_aggr = NULL, *forw_packet_pos = NULL;
-       struct hlist_node *tmp_node;
-       struct batman_packet *batman_packet =
-               (struct batman_packet *)packet_buff;
-       bool direct_link = batman_packet->flags & DIRECTLINK ? 1 : 0;
-       unsigned long flags;
-
-       /* find position for the packet in the forward queue */
-       spin_lock_irqsave(&bat_priv->forw_bat_list_lock, flags);
-       /* own packets are not to be aggregated */
-       if ((atomic_read(&bat_priv->aggregation_enabled)) && (!own_packet)) {
-               hlist_for_each_entry(forw_packet_pos, tmp_node,
-                                    &bat_priv->forw_bat_list, list) {
-                       if (can_aggregate_with(batman_packet,
-                                              packet_len,
-                                              send_time,
-                                              direct_link,
-                                              if_incoming,
-                                              forw_packet_pos)) {
-                               forw_packet_aggr = forw_packet_pos;
-                               break;
-                       }
-               }
-       }
-
-       /* nothing to aggregate with - either aggregation disabled or no
-        * suitable aggregation packet found */
-       if (forw_packet_aggr == NULL) {
-               /* the following section can run without the lock */
-               spin_unlock_irqrestore(&bat_priv->forw_bat_list_lock, flags);
-
-               /**
-                * if we could not aggregate this packet with one of the others
-                * we hold it back for a while, so that it might be aggregated
-                * later on
-                */
-               if ((!own_packet) &&
-                   (atomic_read(&bat_priv->aggregation_enabled)))
-                       send_time += msecs_to_jiffies(MAX_AGGREGATION_MS);
-
-               new_aggregated_packet(packet_buff, packet_len,
-                                     send_time, direct_link,
-                                     if_incoming, own_packet);
-       } else {
-               aggregate(forw_packet_aggr,
-                         packet_buff, packet_len,
-                         direct_link);
-               spin_unlock_irqrestore(&bat_priv->forw_bat_list_lock, flags);
-       }
-}
-
-/* unpack the aggregated packets and process them one by one */
-void receive_aggr_bat_packet(struct ethhdr *ethhdr, unsigned char *packet_buff,
-                            int packet_len, struct batman_if *if_incoming)
-{
-       struct batman_packet *batman_packet;
-       int buff_pos = 0;
-       unsigned char *hna_buff;
-
-       batman_packet = (struct batman_packet *)packet_buff;
-
-       do {
-               /* network to host order for our 32bit seqno, and the
-                  orig_interval. */
-               batman_packet->seqno = ntohl(batman_packet->seqno);
-
-               hna_buff = packet_buff + buff_pos + BAT_PACKET_LEN;
-               receive_bat_packet(ethhdr, batman_packet,
-                                  hna_buff, hna_len(batman_packet),
-                                  if_incoming);
-
-               buff_pos += BAT_PACKET_LEN + hna_len(batman_packet);
-               batman_packet = (struct batman_packet *)
-                       (packet_buff + buff_pos);
-       } while (aggregated_packet(buff_pos, packet_len,
-                                  batman_packet->num_hna));
-}
diff --git a/drivers/staging/batman-adv/aggregation.h b/drivers/staging/batman-adv/aggregation.h
deleted file mode 100644 (file)
index 71a91b3..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2007-2010 B.A.T.M.A.N. contributors:
- *
- * Marek Lindner, Simon Wunderlich
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA
- *
- */
-
-#ifndef _NET_BATMAN_ADV_AGGREGATION_H_
-#define _NET_BATMAN_ADV_AGGREGATION_H_
-
-#include "main.h"
-
-/* is there another aggregated packet here? */
-static inline int aggregated_packet(int buff_pos, int packet_len, int num_hna)
-{
-       int next_buff_pos = buff_pos + BAT_PACKET_LEN + (num_hna * ETH_ALEN);
-
-       return (next_buff_pos <= packet_len) &&
-               (next_buff_pos <= MAX_AGGREGATION_BYTES);
-}
-
-void add_bat_packet_to_list(struct bat_priv *bat_priv,
-                           unsigned char *packet_buff, int packet_len,
-                           struct batman_if *if_incoming, char own_packet,
-                           unsigned long send_time);
-void receive_aggr_bat_packet(struct ethhdr *ethhdr, unsigned char *packet_buff,
-                            int packet_len, struct batman_if *if_incoming);
-
-#endif /* _NET_BATMAN_ADV_AGGREGATION_H_ */
diff --git a/drivers/staging/batman-adv/bat_debugfs.c b/drivers/staging/batman-adv/bat_debugfs.c
deleted file mode 100644 (file)
index 57f84a9..0000000
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- * Copyright (C) 2010 B.A.T.M.A.N. contributors:
- *
- * Marek Lindner
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA
- *
- */
-
-#include "main.h"
-
-#include <linux/debugfs.h>
-
-#include "bat_debugfs.h"
-#include "translation-table.h"
-#include "originator.h"
-#include "hard-interface.h"
-#include "vis.h"
-#include "icmp_socket.h"
-
-static struct dentry *bat_debugfs;
-
-#ifdef CONFIG_BATMAN_ADV_DEBUG
-#define LOG_BUFF_MASK (log_buff_len-1)
-#define LOG_BUFF(idx) (debug_log->log_buff[(idx) & LOG_BUFF_MASK])
-
-static int log_buff_len = LOG_BUF_LEN;
-
-static void emit_log_char(struct debug_log *debug_log, char c)
-{
-       LOG_BUFF(debug_log->log_end) = c;
-       debug_log->log_end++;
-
-       if (debug_log->log_end - debug_log->log_start > log_buff_len)
-               debug_log->log_start = debug_log->log_end - log_buff_len;
-}
-
-static int fdebug_log(struct debug_log *debug_log, char *fmt, ...)
-{
-       int printed_len;
-       va_list args;
-       static char debug_log_buf[256];
-       char *p;
-       unsigned long flags;
-
-       if (!debug_log)
-               return 0;
-
-       spin_lock_irqsave(&debug_log->lock, flags);
-       va_start(args, fmt);
-       printed_len = vscnprintf(debug_log_buf, sizeof(debug_log_buf),
-                                fmt, args);
-       va_end(args);
-
-       for (p = debug_log_buf; *p != 0; p++)
-               emit_log_char(debug_log, *p);
-
-       spin_unlock_irqrestore(&debug_log->lock, flags);
-
-       wake_up(&debug_log->queue_wait);
-
-       return 0;
-}
-
-int debug_log(struct bat_priv *bat_priv, char *fmt, ...)
-{
-       va_list args;
-       char tmp_log_buf[256];
-
-       va_start(args, fmt);
-       vscnprintf(tmp_log_buf, sizeof(tmp_log_buf), fmt, args);
-       fdebug_log(bat_priv->debug_log, "[%10u] %s",
-                  (jiffies / HZ), tmp_log_buf);
-       va_end(args);
-
-       return 0;
-}
-
-static int log_open(struct inode *inode, struct file *file)
-{
-       nonseekable_open(inode, file);
-       file->private_data = inode->i_private;
-       inc_module_count();
-       return 0;
-}
-
-static int log_release(struct inode *inode, struct file *file)
-{
-       dec_module_count();
-       return 0;
-}
-
-static ssize_t log_read(struct file *file, char __user *buf,
-                       size_t count, loff_t *ppos)
-{
-       struct bat_priv *bat_priv = file->private_data;
-       struct debug_log *debug_log = bat_priv->debug_log;
-       int error, i = 0;
-       char c;
-       unsigned long flags;
-
-       if ((file->f_flags & O_NONBLOCK) &&
-           !(debug_log->log_end - debug_log->log_start))
-               return -EAGAIN;
-
-       if ((!buf) || (count < 0))
-               return -EINVAL;
-
-       if (count == 0)
-               return 0;
-
-       if (!access_ok(VERIFY_WRITE, buf, count))
-               return -EFAULT;
-
-       error = wait_event_interruptible(debug_log->queue_wait,
-                               (debug_log->log_start - debug_log->log_end));
-
-       if (error)
-               return error;
-
-       spin_lock_irqsave(&debug_log->lock, flags);
-
-       while ((!error) && (i < count) &&
-              (debug_log->log_start != debug_log->log_end)) {
-               c = LOG_BUFF(debug_log->log_start);
-
-               debug_log->log_start++;
-
-               spin_unlock_irqrestore(&debug_log->lock, flags);
-
-               error = __put_user(c, buf);
-
-               spin_lock_irqsave(&debug_log->lock, flags);
-
-               buf++;
-               i++;
-
-       }
-
-       spin_unlock_irqrestore(&debug_log->lock, flags);
-
-       if (!error)
-               return i;
-
-       return error;
-}
-
-static unsigned int log_poll(struct file *file, poll_table *wait)
-{
-       struct bat_priv *bat_priv = file->private_data;
-       struct debug_log *debug_log = bat_priv->debug_log;
-
-       poll_wait(file, &debug_log->queue_wait, wait);
-
-       if (debug_log->log_end - debug_log->log_start)
-               return POLLIN | POLLRDNORM;
-
-       return 0;
-}
-
-static const struct file_operations log_fops = {
-       .open           = log_open,
-       .release        = log_release,
-       .read           = log_read,
-       .poll           = log_poll,
-       .llseek         = no_llseek,
-};
-
-static int debug_log_setup(struct bat_priv *bat_priv)
-{
-       struct dentry *d;
-
-       if (!bat_priv->debug_dir)
-               goto err;
-
-       bat_priv->debug_log = kzalloc(sizeof(struct debug_log), GFP_ATOMIC);
-       if (!bat_priv->debug_log)
-               goto err;
-
-       spin_lock_init(&bat_priv->debug_log->lock);
-       init_waitqueue_head(&bat_priv->debug_log->queue_wait);
-
-       d = debugfs_create_file("log", S_IFREG | S_IRUSR,
-                               bat_priv->debug_dir, bat_priv, &log_fops);
-       if (d)
-               goto err;
-
-       return 0;
-
-err:
-       return 1;
-}
-
-static void debug_log_cleanup(struct bat_priv *bat_priv)
-{
-       kfree(bat_priv->debug_log);
-       bat_priv->debug_log = NULL;
-}
-#else /* CONFIG_BATMAN_ADV_DEBUG */
-static int debug_log_setup(struct bat_priv *bat_priv)
-{
-       bat_priv->debug_log = NULL;
-       return 0;
-}
-
-static void debug_log_cleanup(struct bat_priv *bat_priv)
-{
-       return;
-}
-#endif
-
-static int originators_open(struct inode *inode, struct file *file)
-{
-       struct net_device *net_dev = (struct net_device *)inode->i_private;
-       return single_open(file, orig_seq_print_text, net_dev);
-}
-
-static int transtable_global_open(struct inode *inode, struct file *file)
-{
-       struct net_device *net_dev = (struct net_device *)inode->i_private;
-       return single_open(file, hna_global_seq_print_text, net_dev);
-}
-
-static int transtable_local_open(struct inode *inode, struct file *file)
-{
-       struct net_device *net_dev = (struct net_device *)inode->i_private;
-       return single_open(file, hna_local_seq_print_text, net_dev);
-}
-
-static int vis_data_open(struct inode *inode, struct file *file)
-{
-       struct net_device *net_dev = (struct net_device *)inode->i_private;
-       return single_open(file, vis_seq_print_text, net_dev);
-}
-
-struct bat_debuginfo {
-       struct attribute attr;
-       const struct file_operations fops;
-};
-
-#define BAT_DEBUGINFO(_name, _mode, _open)     \
-struct bat_debuginfo bat_debuginfo_##_name = { \
-       .attr = { .name = __stringify(_name),   \
-                 .mode = _mode, },             \
-       .fops = { .owner = THIS_MODULE,         \
-                 .open = _open,                \
-                 .read = seq_read,             \
-                 .llseek = seq_lseek,          \
-                 .release = single_release,    \
-               }                               \
-};
-
-static BAT_DEBUGINFO(originators, S_IRUGO, originators_open);
-static BAT_DEBUGINFO(transtable_global, S_IRUGO, transtable_global_open);
-static BAT_DEBUGINFO(transtable_local, S_IRUGO, transtable_local_open);
-static BAT_DEBUGINFO(vis_data, S_IRUGO, vis_data_open);
-
-static struct bat_debuginfo *mesh_debuginfos[] = {
-       &bat_debuginfo_originators,
-       &bat_debuginfo_transtable_global,
-       &bat_debuginfo_transtable_local,
-       &bat_debuginfo_vis_data,
-       NULL,
-};
-
-void debugfs_init(void)
-{
-       bat_debugfs = debugfs_create_dir(DEBUGFS_BAT_SUBDIR, NULL);
-       if (bat_debugfs == ERR_PTR(-ENODEV))
-               bat_debugfs = NULL;
-}
-
-void debugfs_destroy(void)
-{
-       if (bat_debugfs) {
-               debugfs_remove_recursive(bat_debugfs);
-               bat_debugfs = NULL;
-       }
-}
-
-int debugfs_add_meshif(struct net_device *dev)
-{
-       struct bat_priv *bat_priv = netdev_priv(dev);
-       struct bat_debuginfo **bat_debug;
-       struct dentry *file;
-
-       if (!bat_debugfs)
-               goto out;
-
-       bat_priv->debug_dir = debugfs_create_dir(dev->name, bat_debugfs);
-       if (!bat_priv->debug_dir)
-               goto out;
-
-       bat_socket_setup(bat_priv);
-       debug_log_setup(bat_priv);
-
-       for (bat_debug = mesh_debuginfos; *bat_debug; ++bat_debug) {
-               file = debugfs_create_file(((*bat_debug)->attr).name,
-                                         S_IFREG | ((*bat_debug)->attr).mode,
-                                         bat_priv->debug_dir,
-                                         dev, &(*bat_debug)->fops);
-               if (!file) {
-                       bat_err(dev, "Can't add debugfs file: %s/%s\n",
-                               dev->name, ((*bat_debug)->attr).name);
-                       goto rem_attr;
-               }
-       }
-
-       return 0;
-rem_attr:
-       debugfs_remove_recursive(bat_priv->debug_dir);
-       bat_priv->debug_dir = NULL;
-out:
-#ifdef CONFIG_DEBUG_FS
-       return -ENOMEM;
-#else
-       return 0;
-#endif /* CONFIG_DEBUG_FS */
-}
-
-void debugfs_del_meshif(struct net_device *dev)
-{
-       struct bat_priv *bat_priv = netdev_priv(dev);
-
-       debug_log_cleanup(bat_priv);
-
-       if (bat_debugfs) {
-               debugfs_remove_recursive(bat_priv->debug_dir);
-               bat_priv->debug_dir = NULL;
-       }
-}
diff --git a/drivers/staging/batman-adv/bat_debugfs.h b/drivers/staging/batman-adv/bat_debugfs.h
deleted file mode 100644 (file)
index 72df532..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2010 B.A.T.M.A.N. contributors:
- *
- * Marek Lindner
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA
- *
- */
-
-
-#ifndef _NET_BATMAN_ADV_DEBUGFS_H_
-#define _NET_BATMAN_ADV_DEBUGFS_H_
-
-#define DEBUGFS_BAT_SUBDIR "batman_adv"
-
-void debugfs_init(void);
-void debugfs_destroy(void);
-int debugfs_add_meshif(struct net_device *dev);
-void debugfs_del_meshif(struct net_device *dev);
-
-#endif /* _NET_BATMAN_ADV_DEBUGFS_H_ */
diff --git a/drivers/staging/batman-adv/bat_sysfs.c b/drivers/staging/batman-adv/bat_sysfs.c
deleted file mode 100644 (file)
index bc17fb8..0000000
+++ /dev/null
@@ -1,558 +0,0 @@
-/*
- * Copyright (C) 2010 B.A.T.M.A.N. contributors:
- *
- * Marek Lindner
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA
- *
- */
-
-#include "main.h"
-#include "bat_sysfs.h"
-#include "translation-table.h"
-#include "originator.h"
-#include "hard-interface.h"
-#include "vis.h"
-
-#define to_dev(obj)     container_of(obj, struct device, kobj)
-
-#define BAT_ATTR(_name, _mode, _show, _store)  \
-struct bat_attribute bat_attr_##_name = {      \
-       .attr = {.name = __stringify(_name),    \
-                .mode = _mode },               \
-       .show   = _show,                        \
-       .store  = _store,                       \
-};
-
-static ssize_t show_aggr_ogms(struct kobject *kobj, struct attribute *attr,
-                            char *buff)
-{
-       struct device *dev = to_dev(kobj->parent);
-       struct bat_priv *bat_priv = netdev_priv(to_net_dev(dev));
-       int aggr_status = atomic_read(&bat_priv->aggregation_enabled);
-
-       return sprintf(buff, "%s\n",
-                      aggr_status == 0 ? "disabled" : "enabled");
-}
-
-static ssize_t store_aggr_ogms(struct kobject *kobj, struct attribute *attr,
-                             char *buff, size_t count)
-{
-       struct device *dev = to_dev(kobj->parent);
-       struct net_device *net_dev = to_net_dev(dev);
-       struct bat_priv *bat_priv = netdev_priv(net_dev);
-       int aggr_tmp = -1;
-
-       if (((count == 2) && (buff[0] == '1')) ||
-           (strncmp(buff, "enable", 6) == 0))
-               aggr_tmp = 1;
-
-       if (((count == 2) && (buff[0] == '0')) ||
-           (strncmp(buff, "disable", 7) == 0))
-               aggr_tmp = 0;
-
-       if (aggr_tmp < 0) {
-               if (buff[count - 1] == '\n')
-                       buff[count - 1] = '\0';
-
-               bat_info(net_dev,
-                        "Invalid parameter for 'aggregate OGM' setting"
-                        "received: %s\n", buff);
-               return -EINVAL;
-       }
-
-       if (atomic_read(&bat_priv->aggregation_enabled) == aggr_tmp)
-               return count;
-
-       bat_info(net_dev, "Changing aggregation from: %s to: %s\n",
-                atomic_read(&bat_priv->aggregation_enabled) == 1 ?
-                "enabled" : "disabled", aggr_tmp == 1 ? "enabled" :
-                "disabled");
-
-       atomic_set(&bat_priv->aggregation_enabled, (unsigned)aggr_tmp);
-       return count;
-}
-
-static ssize_t show_bond(struct kobject *kobj, struct attribute *attr,
-                            char *buff)
-{
-       struct device *dev = to_dev(kobj->parent);
-       struct bat_priv *bat_priv = netdev_priv(to_net_dev(dev));
-       int bond_status = atomic_read(&bat_priv->bonding_enabled);
-
-       return sprintf(buff, "%s\n",
-                      bond_status == 0 ? "disabled" : "enabled");
-}
-
-static ssize_t store_bond(struct kobject *kobj, struct attribute *attr,
-                         char *buff, size_t count)
-{
-       struct device *dev = to_dev(kobj->parent);
-       struct net_device *net_dev = to_net_dev(dev);
-       struct bat_priv *bat_priv = netdev_priv(net_dev);
-       int bonding_enabled_tmp = -1;
-
-       if (((count == 2) && (buff[0] == '1')) ||
-           (strncmp(buff, "enable", 6) == 0))
-               bonding_enabled_tmp = 1;
-
-       if (((count == 2) && (buff[0] == '0')) ||
-           (strncmp(buff, "disable", 7) == 0))
-               bonding_enabled_tmp = 0;
-
-       if (bonding_enabled_tmp < 0) {
-               if (buff[count - 1] == '\n')
-                       buff[count - 1] = '\0';
-
-               bat_err(net_dev,
-                       "Invalid parameter for 'bonding' setting received: "
-                       "%s\n", buff);
-               return -EINVAL;
-       }
-
-       if (atomic_read(&bat_priv->bonding_enabled) == bonding_enabled_tmp)
-               return count;
-
-       bat_info(net_dev, "Changing bonding from: %s to: %s\n",
-                atomic_read(&bat_priv->bonding_enabled) == 1 ?
-                "enabled" : "disabled",
-                bonding_enabled_tmp == 1 ? "enabled" : "disabled");
-
-       atomic_set(&bat_priv->bonding_enabled, (unsigned)bonding_enabled_tmp);
-       return count;
-}
-
-static ssize_t show_frag(struct kobject *kobj, struct attribute *attr,
-                            char *buff)
-{
-       struct device *dev = to_dev(kobj->parent);
-       struct bat_priv *bat_priv = netdev_priv(to_net_dev(dev));
-       int frag_status = atomic_read(&bat_priv->frag_enabled);
-
-       return sprintf(buff, "%s\n",
-                      frag_status == 0 ? "disabled" : "enabled");
-}
-
-static ssize_t store_frag(struct kobject *kobj, struct attribute *attr,
-                         char *buff, size_t count)
-{
-       struct device *dev = to_dev(kobj->parent);
-       struct net_device *net_dev = to_net_dev(dev);
-       struct bat_priv *bat_priv = netdev_priv(net_dev);
-       int frag_enabled_tmp = -1;
-
-       if (((count == 2) && (buff[0] == '1')) ||
-           (strncmp(buff, "enable", 6) == 0))
-               frag_enabled_tmp = 1;
-
-       if (((count == 2) && (buff[0] == '0')) ||
-           (strncmp(buff, "disable", 7) == 0))
-               frag_enabled_tmp = 0;
-
-       if (frag_enabled_tmp < 0) {
-               if (buff[count - 1] == '\n')
-                       buff[count - 1] = '\0';
-
-               bat_err(net_dev,
-                       "Invalid parameter for 'fragmentation' setting on mesh"
-                       "received: %s\n", buff);
-               return -EINVAL;
-       }
-
-       if (atomic_read(&bat_priv->frag_enabled) == frag_enabled_tmp)
-               return count;
-
-       bat_info(net_dev, "Changing fragmentation from: %s to: %s\n",
-                atomic_read(&bat_priv->frag_enabled) == 1 ?
-                "enabled" : "disabled",
-                frag_enabled_tmp == 1 ? "enabled" : "disabled");
-
-       atomic_set(&bat_priv->frag_enabled, (unsigned)frag_enabled_tmp);
-       update_min_mtu(net_dev);
-       return count;
-}
-
-static ssize_t show_vis_mode(struct kobject *kobj, struct attribute *attr,
-                            char *buff)
-{
-       struct device *dev = to_dev(kobj->parent);
-       struct bat_priv *bat_priv = netdev_priv(to_net_dev(dev));
-       int vis_mode = atomic_read(&bat_priv->vis_mode);
-
-       return sprintf(buff, "%s\n",
-                      vis_mode == VIS_TYPE_CLIENT_UPDATE ?
-                                                       "client" : "server");
-}
-
-static ssize_t store_vis_mode(struct kobject *kobj, struct attribute *attr,
-                             char *buff, size_t count)
-{
-       struct device *dev = to_dev(kobj->parent);
-       struct net_device *net_dev = to_net_dev(dev);
-       struct bat_priv *bat_priv = netdev_priv(net_dev);
-       unsigned long val;
-       int ret, vis_mode_tmp = -1;
-
-       ret = strict_strtoul(buff, 10, &val);
-
-       if (((count == 2) && (!ret) && (val == VIS_TYPE_CLIENT_UPDATE)) ||
-           (strncmp(buff, "client", 6) == 0) ||
-           (strncmp(buff, "off", 3) == 0))
-               vis_mode_tmp = VIS_TYPE_CLIENT_UPDATE;
-
-       if (((count == 2) && (!ret) && (val == VIS_TYPE_SERVER_SYNC)) ||
-           (strncmp(buff, "server", 6) == 0))
-               vis_mode_tmp = VIS_TYPE_SERVER_SYNC;
-
-       if (vis_mode_tmp < 0) {
-               if (buff[count - 1] == '\n')
-                       buff[count - 1] = '\0';
-
-               bat_info(net_dev,
-                        "Invalid parameter for 'vis mode' setting received: "
-                        "%s\n", buff);
-               return -EINVAL;
-       }
-
-       if (atomic_read(&bat_priv->vis_mode) == vis_mode_tmp)
-               return count;
-
-       bat_info(net_dev, "Changing vis mode from: %s to: %s\n",
-                atomic_read(&bat_priv->vis_mode) == VIS_TYPE_CLIENT_UPDATE ?
-                "client" : "server", vis_mode_tmp == VIS_TYPE_CLIENT_UPDATE ?
-                "client" : "server");
-
-       atomic_set(&bat_priv->vis_mode, (unsigned)vis_mode_tmp);
-       return count;
-}
-
-static ssize_t show_orig_interval(struct kobject *kobj, struct attribute *attr,
-                                char *buff)
-{
-       struct device *dev = to_dev(kobj->parent);
-       struct bat_priv *bat_priv = netdev_priv(to_net_dev(dev));
-
-       return sprintf(buff, "%i\n",
-                      atomic_read(&bat_priv->orig_interval));
-}
-
-static ssize_t store_orig_interval(struct kobject *kobj, struct attribute *attr,
-                                 char *buff, size_t count)
-{
-       struct device *dev = to_dev(kobj->parent);
-       struct net_device *net_dev = to_net_dev(dev);
-       struct bat_priv *bat_priv = netdev_priv(net_dev);
-       unsigned long orig_interval_tmp;
-       int ret;
-
-       ret = strict_strtoul(buff, 10, &orig_interval_tmp);
-       if (ret) {
-               bat_info(net_dev, "Invalid parameter for 'orig_interval' "
-                        "setting received: %s\n", buff);
-               return -EINVAL;
-       }
-
-       if (orig_interval_tmp < JITTER * 2) {
-               bat_info(net_dev, "New originator interval too small: %li "
-                        "(min: %i)\n", orig_interval_tmp, JITTER * 2);
-               return -EINVAL;
-       }
-
-       if (atomic_read(&bat_priv->orig_interval) == orig_interval_tmp)
-               return count;
-
-       bat_info(net_dev, "Changing originator interval from: %i to: %li\n",
-                atomic_read(&bat_priv->orig_interval),
-                orig_interval_tmp);
-
-       atomic_set(&bat_priv->orig_interval, orig_interval_tmp);
-       return count;
-}
-
-#ifdef CONFIG_BATMAN_ADV_DEBUG
-static ssize_t show_log_level(struct kobject *kobj, struct attribute *attr,
-                            char *buff)
-{
-       struct device *dev = to_dev(kobj->parent);
-       struct bat_priv *bat_priv = netdev_priv(to_net_dev(dev));
-       int log_level = atomic_read(&bat_priv->log_level);
-
-       return sprintf(buff, "%d\n", log_level);
-}
-
-static ssize_t store_log_level(struct kobject *kobj, struct attribute *attr,
-                             char *buff, size_t count)
-{
-       struct device *dev = to_dev(kobj->parent);
-       struct net_device *net_dev = to_net_dev(dev);
-       struct bat_priv *bat_priv = netdev_priv(net_dev);
-       unsigned long log_level_tmp;
-       int ret;
-
-       ret = strict_strtoul(buff, 10, &log_level_tmp);
-       if (ret) {
-               bat_info(net_dev, "Invalid parameter for 'log_level' "
-                        "setting received: %s\n", buff);
-               return -EINVAL;
-       }
-
-       if (log_level_tmp > 3) {
-               bat_info(net_dev, "New log level too big: %li "
-                        "(max: %i)\n", log_level_tmp, 3);
-               return -EINVAL;
-       }
-
-       if (atomic_read(&bat_priv->log_level) == log_level_tmp)
-               return count;
-
-       bat_info(net_dev, "Changing log level from: %i to: %li\n",
-                atomic_read(&bat_priv->log_level),
-                log_level_tmp);
-
-       atomic_set(&bat_priv->log_level, (unsigned)log_level_tmp);
-       return count;
-}
-#endif
-
-static BAT_ATTR(aggregated_ogms, S_IRUGO | S_IWUSR,
-               show_aggr_ogms, store_aggr_ogms);
-static BAT_ATTR(bonding, S_IRUGO | S_IWUSR, show_bond, store_bond);
-static BAT_ATTR(fragmentation, S_IRUGO | S_IWUSR, show_frag, store_frag);
-static BAT_ATTR(vis_mode, S_IRUGO | S_IWUSR, show_vis_mode, store_vis_mode);
-static BAT_ATTR(orig_interval, S_IRUGO | S_IWUSR,
-               show_orig_interval, store_orig_interval);
-#ifdef CONFIG_BATMAN_ADV_DEBUG
-static BAT_ATTR(log_level, S_IRUGO | S_IWUSR, show_log_level, store_log_level);
-#endif
-
-static struct bat_attribute *mesh_attrs[] = {
-       &bat_attr_aggregated_ogms,
-       &bat_attr_bonding,
-       &bat_attr_fragmentation,
-       &bat_attr_vis_mode,
-       &bat_attr_orig_interval,
-#ifdef CONFIG_BATMAN_ADV_DEBUG
-       &bat_attr_log_level,
-#endif
-       NULL,
-};
-
-int sysfs_add_meshif(struct net_device *dev)
-{
-       struct kobject *batif_kobject = &dev->dev.kobj;
-       struct bat_priv *bat_priv = netdev_priv(dev);
-       struct bat_attribute **bat_attr;
-       int err;
-
-       bat_priv->mesh_obj = kobject_create_and_add(SYSFS_IF_MESH_SUBDIR,
-                                                   batif_kobject);
-       if (!bat_priv->mesh_obj) {
-               bat_err(dev, "Can't add sysfs directory: %s/%s\n", dev->name,
-                       SYSFS_IF_MESH_SUBDIR);
-               goto out;
-       }
-
-       for (bat_attr = mesh_attrs; *bat_attr; ++bat_attr) {
-               err = sysfs_create_file(bat_priv->mesh_obj,
-                                       &((*bat_attr)->attr));
-               if (err) {
-                       bat_err(dev, "Can't add sysfs file: %s/%s/%s\n",
-                               dev->name, SYSFS_IF_MESH_SUBDIR,
-                               ((*bat_attr)->attr).name);
-                       goto rem_attr;
-               }
-       }
-
-       return 0;
-
-rem_attr:
-       for (bat_attr = mesh_attrs; *bat_attr; ++bat_attr)
-               sysfs_remove_file(bat_priv->mesh_obj, &((*bat_attr)->attr));
-
-       kobject_put(bat_priv->mesh_obj);
-       bat_priv->mesh_obj = NULL;
-out:
-       return -ENOMEM;
-}
-
-void sysfs_del_meshif(struct net_device *dev)
-{
-       struct bat_priv *bat_priv = netdev_priv(dev);
-       struct bat_attribute **bat_attr;
-
-       for (bat_attr = mesh_attrs; *bat_attr; ++bat_attr)
-               sysfs_remove_file(bat_priv->mesh_obj, &((*bat_attr)->attr));
-
-       kobject_put(bat_priv->mesh_obj);
-       bat_priv->mesh_obj = NULL;
-}
-
-static ssize_t show_mesh_iface(struct kobject *kobj, struct attribute *attr,
-                              char *buff)
-{
-       struct device *dev = to_dev(kobj->parent);
-       struct net_device *net_dev = to_net_dev(dev);
-       struct batman_if *batman_if = get_batman_if_by_netdev(net_dev);
-       ssize_t length;
-
-       if (!batman_if)
-               return 0;
-
-       length = sprintf(buff, "%s\n", batman_if->if_status == IF_NOT_IN_USE ?
-                        "none" : batman_if->soft_iface->name);
-
-       hardif_put(batman_if);
-
-       return length;
-}
-
-static ssize_t store_mesh_iface(struct kobject *kobj, struct attribute *attr,
-                               char *buff, size_t count)
-{
-       struct device *dev = to_dev(kobj->parent);
-       struct net_device *net_dev = to_net_dev(dev);
-       struct batman_if *batman_if = get_batman_if_by_netdev(net_dev);
-       int status_tmp = -1;
-       int ret;
-
-       if (!batman_if)
-               return count;
-
-       if (buff[count - 1] == '\n')
-               buff[count - 1] = '\0';
-
-       if (strlen(buff) >= IFNAMSIZ) {
-               pr_err("Invalid parameter for 'mesh_iface' setting received: "
-                      "interface name too long '%s'\n", buff);
-               hardif_put(batman_if);
-               return -EINVAL;
-       }
-
-       if (strncmp(buff, "none", 4) == 0)
-               status_tmp = IF_NOT_IN_USE;
-       else
-               status_tmp = IF_I_WANT_YOU;
-
-       if ((batman_if->if_status == status_tmp) || ((batman_if->soft_iface) &&
-           (strncmp(batman_if->soft_iface->name, buff, IFNAMSIZ) == 0))) {
-               hardif_put(batman_if);
-               return count;
-       }
-
-       if (status_tmp == IF_NOT_IN_USE) {
-               rtnl_lock();
-               hardif_disable_interface(batman_if);
-               rtnl_unlock();
-               hardif_put(batman_if);
-               return count;
-       }
-
-       /* if the interface already is in use */
-       if (batman_if->if_status != IF_NOT_IN_USE) {
-               rtnl_lock();
-               hardif_disable_interface(batman_if);
-               rtnl_unlock();
-       }
-
-       ret = hardif_enable_interface(batman_if, buff);
-       hardif_put(batman_if);
-
-       return ret;
-}
-
-static ssize_t show_iface_status(struct kobject *kobj, struct attribute *attr,
-                                char *buff)
-{
-       struct device *dev = to_dev(kobj->parent);
-       struct net_device *net_dev = to_net_dev(dev);
-       struct batman_if *batman_if = get_batman_if_by_netdev(net_dev);
-       ssize_t length;
-
-       if (!batman_if)
-               return 0;
-
-       switch (batman_if->if_status) {
-       case IF_TO_BE_REMOVED:
-               length = sprintf(buff, "disabling\n");
-               break;
-       case IF_INACTIVE:
-               length = sprintf(buff, "inactive\n");
-               break;
-       case IF_ACTIVE:
-               length = sprintf(buff, "active\n");
-               break;
-       case IF_TO_BE_ACTIVATED:
-               length = sprintf(buff, "enabling\n");
-               break;
-       case IF_NOT_IN_USE:
-       default:
-               length = sprintf(buff, "not in use\n");
-               break;
-       }
-
-       hardif_put(batman_if);
-
-       return length;
-}
-
-static BAT_ATTR(mesh_iface, S_IRUGO | S_IWUSR,
-               show_mesh_iface, store_mesh_iface);
-static BAT_ATTR(iface_status, S_IRUGO, show_iface_status, NULL);
-
-static struct bat_attribute *batman_attrs[] = {
-       &bat_attr_mesh_iface,
-       &bat_attr_iface_status,
-       NULL,
-};
-
-int sysfs_add_hardif(struct kobject **hardif_obj, struct net_device *dev)
-{
-       struct kobject *hardif_kobject = &dev->dev.kobj;
-       struct bat_attribute **bat_attr;
-       int err;
-
-       *hardif_obj = kobject_create_and_add(SYSFS_IF_BAT_SUBDIR,
-                                                   hardif_kobject);
-
-       if (!*hardif_obj) {
-               bat_err(dev, "Can't add sysfs directory: %s/%s\n", dev->name,
-                       SYSFS_IF_BAT_SUBDIR);
-               goto out;
-       }
-
-       for (bat_attr = batman_attrs; *bat_attr; ++bat_attr) {
-               err = sysfs_create_file(*hardif_obj, &((*bat_attr)->attr));
-               if (err) {
-                       bat_err(dev, "Can't add sysfs file: %s/%s/%s\n",
-                               dev->name, SYSFS_IF_BAT_SUBDIR,
-                               ((*bat_attr)->attr).name);
-                       goto rem_attr;
-               }
-       }
-
-       return 0;
-
-rem_attr:
-       for (bat_attr = batman_attrs; *bat_attr; ++bat_attr)
-               sysfs_remove_file(*hardif_obj, &((*bat_attr)->attr));
-out:
-       return -ENOMEM;
-}
-
-void sysfs_del_hardif(struct kobject **hardif_obj)
-{
-       kobject_put(*hardif_obj);
-       *hardif_obj = NULL;
-}
diff --git a/drivers/staging/batman-adv/bat_sysfs.h b/drivers/staging/batman-adv/bat_sysfs.h
deleted file mode 100644 (file)
index 7f186c0..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2010 B.A.T.M.A.N. contributors:
- *
- * Marek Lindner
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA
- *
- */
-
-
-#ifndef _NET_BATMAN_ADV_SYSFS_H_
-#define _NET_BATMAN_ADV_SYSFS_H_
-
-#define SYSFS_IF_MESH_SUBDIR "mesh"
-#define SYSFS_IF_BAT_SUBDIR "batman_adv"
-
-struct bat_attribute {
-       struct attribute attr;
-       ssize_t (*show)(struct kobject *kobj, struct attribute *attr,
-                       char *buf);
-       ssize_t (*store)(struct kobject *kobj, struct attribute *attr,
-                        char *buf, size_t count);
-};
-
-int sysfs_add_meshif(struct net_device *dev);
-void sysfs_del_meshif(struct net_device *dev);
-int sysfs_add_hardif(struct kobject **hardif_obj, struct net_device *dev);
-void sysfs_del_hardif(struct kobject **hardif_obj);
-
-#endif /* _NET_BATMAN_ADV_SYSFS_H_ */
diff --git a/drivers/staging/batman-adv/bitarray.c b/drivers/staging/batman-adv/bitarray.c
deleted file mode 100644 (file)
index 814274f..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright (C) 2006-2010 B.A.T.M.A.N. contributors:
- *
- * Simon Wunderlich, Marek Lindner
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA
- *
- */
-
-#include "main.h"
-#include "bitarray.h"
-
-#include <linux/bitops.h>
-
-/* returns true if the corresponding bit in the given seq_bits indicates true
- * and curr_seqno is within range of last_seqno */
-uint8_t get_bit_status(TYPE_OF_WORD *seq_bits, uint32_t last_seqno,
-                      uint32_t curr_seqno)
-{
-       int32_t diff, word_offset, word_num;
-
-       diff = last_seqno - curr_seqno;
-       if (diff < 0 || diff >= TQ_LOCAL_WINDOW_SIZE) {
-               return 0;
-       } else {
-               /* which word */
-               word_num = (last_seqno - curr_seqno) / WORD_BIT_SIZE;
-               /* which position in the selected word */
-               word_offset = (last_seqno - curr_seqno) % WORD_BIT_SIZE;
-
-               if (seq_bits[word_num] & 1 << word_offset)
-                       return 1;
-               else
-                       return 0;
-       }
-}
-
-/* turn corresponding bit on, so we can remember that we got the packet */
-void bit_mark(TYPE_OF_WORD *seq_bits, int32_t n)
-{
-       int32_t word_offset, word_num;
-
-       /* if too old, just drop it */
-       if (n < 0 || n >= TQ_LOCAL_WINDOW_SIZE)
-               return;
-
-       /* which word */
-       word_num = n / WORD_BIT_SIZE;
-       /* which position in the selected word */
-       word_offset = n % WORD_BIT_SIZE;
-
-       seq_bits[word_num] |= 1 << word_offset; /* turn the position on */
-}
-
-/* shift the packet array by n places. */
-static void bit_shift(TYPE_OF_WORD *seq_bits, int32_t n)
-{
-       int32_t word_offset, word_num;
-       int32_t i;
-
-       if (n <= 0 || n >= TQ_LOCAL_WINDOW_SIZE)
-               return;
-
-       word_offset = n % WORD_BIT_SIZE;/* shift how much inside each word */
-       word_num = n / WORD_BIT_SIZE;   /* shift over how much (full) words */
-
-       for (i = NUM_WORDS - 1; i > word_num; i--) {
-               /* going from old to new, so we don't overwrite the data we copy
-                * from.
-                *
-                * left is high, right is low: FEDC BA98 7654 3210
-                *                                        ^^ ^^
-                *                             vvvv
-                * ^^^^ = from, vvvvv =to, we'd have word_num==1 and
-                * word_offset==WORD_BIT_SIZE/2 ????? in this example.
-                * (=24 bits)
-                *
-                * our desired output would be: 9876 5432 1000 0000
-                * */
-
-               seq_bits[i] =
-                       (seq_bits[i - word_num] << word_offset) +
-                       /* take the lower port from the left half, shift it left
-                        * to its final position */
-                       (seq_bits[i - word_num - 1] >>
-                        (WORD_BIT_SIZE-word_offset));
-               /* and the upper part of the right half and shift it left to
-                * it's position */
-               /* for our example that would be: word[0] = 9800 + 0076 =
-                * 9876 */
-       }
-       /* now for our last word, i==word_num, we only have the it's "left"
-        * half. that's the 1000 word in our example.*/
-
-       seq_bits[i] = (seq_bits[i - word_num] << word_offset);
-
-       /* pad the rest with 0, if there is anything */
-       i--;
-
-       for (; i >= 0; i--)
-               seq_bits[i] = 0;
-}
-
-static void bit_reset_window(TYPE_OF_WORD *seq_bits)
-{
-       int i;
-       for (i = 0; i < NUM_WORDS; i++)
-               seq_bits[i] = 0;
-}
-
-
-/* receive and process one packet within the sequence number window.
- *
- * returns:
- *  1 if the window was moved (either new or very old)
- *  0 if the window was not moved/shifted.
- */
-char bit_get_packet(void *priv, TYPE_OF_WORD *seq_bits,
-                   int32_t seq_num_diff, int8_t set_mark)
-{
-       struct bat_priv *bat_priv = (struct bat_priv *)priv;
-
-       /* sequence number is slightly older. We already got a sequence number
-        * higher than this one, so we just mark it. */
-
-       if ((seq_num_diff <= 0) && (seq_num_diff > -TQ_LOCAL_WINDOW_SIZE)) {
-               if (set_mark)
-                       bit_mark(seq_bits, -seq_num_diff);
-               return 0;
-       }
-
-       /* sequence number is slightly newer, so we shift the window and
-        * set the mark if required */
-
-       if ((seq_num_diff > 0) && (seq_num_diff < TQ_LOCAL_WINDOW_SIZE)) {
-               bit_shift(seq_bits, seq_num_diff);
-
-               if (set_mark)
-                       bit_mark(seq_bits, 0);
-               return 1;
-       }
-
-       /* sequence number is much newer, probably missed a lot of packets */
-
-       if ((seq_num_diff >= TQ_LOCAL_WINDOW_SIZE)
-               || (seq_num_diff < EXPECTED_SEQNO_RANGE)) {
-               bat_dbg(DBG_BATMAN, bat_priv,
-                       "We missed a lot of packets (%i) !\n",
-                       seq_num_diff - 1);
-               bit_reset_window(seq_bits);
-               if (set_mark)
-                       bit_mark(seq_bits, 0);
-               return 1;
-       }
-
-       /* received a much older packet. The other host either restarted
-        * or the old packet got delayed somewhere in the network. The
-        * packet should be dropped without calling this function if the
-        * seqno window is protected. */
-
-       if ((seq_num_diff <= -TQ_LOCAL_WINDOW_SIZE)
-               || (seq_num_diff >= EXPECTED_SEQNO_RANGE)) {
-
-               bat_dbg(DBG_BATMAN, bat_priv,
-                       "Other host probably restarted!\n");
-
-               bit_reset_window(seq_bits);
-               if (set_mark)
-                       bit_mark(seq_bits, 0);
-
-               return 1;
-       }
-
-       /* never reached */
-       return 0;
-}
-
-/* count the hamming weight, how many good packets did we receive? just count
- * the 1's.
- */
-int bit_packet_count(TYPE_OF_WORD *seq_bits)
-{
-       int i, hamming = 0;
-
-       for (i = 0; i < NUM_WORDS; i++)
-               hamming += hweight_long(seq_bits[i]);
-
-       return hamming;
-}
diff --git a/drivers/staging/batman-adv/bitarray.h b/drivers/staging/batman-adv/bitarray.h
deleted file mode 100644 (file)
index 77b1e61..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2006-2010 B.A.T.M.A.N. contributors:
- *
- * Simon Wunderlich, Marek Lindner
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA
- *
- */
-
-#ifndef _NET_BATMAN_ADV_BITARRAY_H_
-#define _NET_BATMAN_ADV_BITARRAY_H_
-
-/* you should choose something big, if you don't want to waste cpu
- * and keep the type in sync with bit_packet_count */
-#define TYPE_OF_WORD unsigned long
-#define WORD_BIT_SIZE (sizeof(TYPE_OF_WORD) * 8)
-
-/* returns true if the corresponding bit in the given seq_bits indicates true
- * and curr_seqno is within range of last_seqno */
-uint8_t get_bit_status(TYPE_OF_WORD *seq_bits, uint32_t last_seqno,
-                                          uint32_t curr_seqno);
-
-/* turn corresponding bit on, so we can remember that we got the packet */
-void bit_mark(TYPE_OF_WORD *seq_bits, int32_t n);
-
-
-/* receive and process one packet, returns 1 if received seq_num is considered
- * new, 0 if old  */
-char bit_get_packet(void *priv, TYPE_OF_WORD *seq_bits,
-                   int32_t seq_num_diff, int8_t set_mark);
-
-/* count the hamming weight, how many good packets did we receive? */
-int  bit_packet_count(TYPE_OF_WORD *seq_bits);
-
-#endif /* _NET_BATMAN_ADV_BITARRAY_H_ */
diff --git a/drivers/staging/batman-adv/hard-interface.c b/drivers/staging/batman-adv/hard-interface.c
deleted file mode 100644 (file)
index d85de82..0000000
+++ /dev/null
@@ -1,647 +0,0 @@
-/*
- * Copyright (C) 2007-2010 B.A.T.M.A.N. contributors:
- *
- * Marek Lindner, Simon Wunderlich
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA
- *
- */
-
-#include "main.h"
-#include "hard-interface.h"
-#include "soft-interface.h"
-#include "send.h"
-#include "translation-table.h"
-#include "routing.h"
-#include "bat_sysfs.h"
-#include "originator.h"
-#include "hash.h"
-
-#include <linux/if_arp.h>
-
-#define MIN(x, y) ((x) < (y) ? (x) : (y))
-
-/* protect update critical side of if_list - but not the content */
-static DEFINE_SPINLOCK(if_list_lock);
-
-struct batman_if *get_batman_if_by_netdev(struct net_device *net_dev)
-{
-       struct batman_if *batman_if;
-
-       rcu_read_lock();
-       list_for_each_entry_rcu(batman_if, &if_list, list) {
-               if (batman_if->net_dev == net_dev)
-                       goto out;
-       }
-
-       batman_if = NULL;
-
-out:
-       if (batman_if)
-               hardif_hold(batman_if);
-
-       rcu_read_unlock();
-       return batman_if;
-}
-
-static int is_valid_iface(struct net_device *net_dev)
-{
-       if (net_dev->flags & IFF_LOOPBACK)
-               return 0;
-
-       if (net_dev->type != ARPHRD_ETHER)
-               return 0;
-
-       if (net_dev->addr_len != ETH_ALEN)
-               return 0;
-
-       /* no batman over batman */
-#ifdef HAVE_NET_DEVICE_OPS
-       if (net_dev->netdev_ops->ndo_start_xmit == interface_tx)
-               return 0;
-#else
-       if (net_dev->hard_start_xmit == interface_tx)
-               return 0;
-#endif
-
-       /* Device is being bridged */
-       /* if (net_dev->priv_flags & IFF_BRIDGE_PORT)
-               return 0; */
-
-       return 1;
-}
-
-static struct batman_if *get_active_batman_if(struct net_device *soft_iface)
-{
-       struct batman_if *batman_if;
-
-       rcu_read_lock();
-       list_for_each_entry_rcu(batman_if, &if_list, list) {
-               if (batman_if->soft_iface != soft_iface)
-                       continue;
-
-               if (batman_if->if_status == IF_ACTIVE)
-                       goto out;
-       }
-
-       batman_if = NULL;
-
-out:
-       if (batman_if)
-               hardif_hold(batman_if);
-
-       rcu_read_unlock();
-       return batman_if;
-}
-
-static void update_primary_addr(struct bat_priv *bat_priv)
-{
-       struct vis_packet *vis_packet;
-
-       vis_packet = (struct vis_packet *)
-                               bat_priv->my_vis_info->skb_packet->data;
-       memcpy(vis_packet->vis_orig,
-              bat_priv->primary_if->net_dev->dev_addr, ETH_ALEN);
-       memcpy(vis_packet->sender_orig,
-              bat_priv->primary_if->net_dev->dev_addr, ETH_ALEN);
-}
-
-static void set_primary_if(struct bat_priv *bat_priv,
-                          struct batman_if *batman_if)
-{
-       struct batman_packet *batman_packet;
-       struct batman_if *old_if;
-
-       if (batman_if)
-               hardif_hold(batman_if);
-
-       old_if = bat_priv->primary_if;
-       bat_priv->primary_if = batman_if;
-
-       if (old_if)
-               hardif_put(old_if);
-
-       if (!bat_priv->primary_if)
-               return;
-
-       batman_packet = (struct batman_packet *)(batman_if->packet_buff);
-       batman_packet->flags = PRIMARIES_FIRST_HOP;
-       batman_packet->ttl = TTL;
-
-       update_primary_addr(bat_priv);
-
-       /***
-        * hacky trick to make sure that we send the HNA information via
-        * our new primary interface
-        */
-       atomic_set(&bat_priv->hna_local_changed, 1);
-}
-
-static bool hardif_is_iface_up(struct batman_if *batman_if)
-{
-       if (batman_if->net_dev->flags & IFF_UP)
-               return true;
-
-       return false;
-}
-
-static void update_mac_addresses(struct batman_if *batman_if)
-{
-       memcpy(((struct batman_packet *)(batman_if->packet_buff))->orig,
-              batman_if->net_dev->dev_addr, ETH_ALEN);
-       memcpy(((struct batman_packet *)(batman_if->packet_buff))->prev_sender,
-              batman_if->net_dev->dev_addr, ETH_ALEN);
-}
-
-static void check_known_mac_addr(struct net_device *net_dev)
-{
-       struct batman_if *batman_if;
-
-       rcu_read_lock();
-       list_for_each_entry_rcu(batman_if, &if_list, list) {
-               if ((batman_if->if_status != IF_ACTIVE) &&
-                   (batman_if->if_status != IF_TO_BE_ACTIVATED))
-                       continue;
-
-               if (batman_if->net_dev == net_dev)
-                       continue;
-
-               if (!compare_orig(batman_if->net_dev->dev_addr,
-                                 net_dev->dev_addr))
-                       continue;
-
-               pr_warning("The newly added mac address (%pM) already exists "
-                          "on: %s\n", net_dev->dev_addr,
-                          batman_if->net_dev->name);
-               pr_warning("It is strongly recommended to keep mac addresses "
-                          "unique to avoid problems!\n");
-       }
-       rcu_read_unlock();
-}
-
-int hardif_min_mtu(struct net_device *soft_iface)
-{
-       struct bat_priv *bat_priv = netdev_priv(soft_iface);
-       struct batman_if *batman_if;
-       /* allow big frames if all devices are capable to do so
-        * (have MTU > 1500 + BAT_HEADER_LEN) */
-       int min_mtu = ETH_DATA_LEN;
-
-       if (atomic_read(&bat_priv->frag_enabled))
-               goto out;
-
-       rcu_read_lock();
-       list_for_each_entry_rcu(batman_if, &if_list, list) {
-               if ((batman_if->if_status != IF_ACTIVE) &&
-                   (batman_if->if_status != IF_TO_BE_ACTIVATED))
-                       continue;
-
-               if (batman_if->soft_iface != soft_iface)
-                       continue;
-
-               min_mtu = MIN(batman_if->net_dev->mtu - BAT_HEADER_LEN,
-                             min_mtu);
-       }
-       rcu_read_unlock();
-out:
-       return min_mtu;
-}
-
-/* adjusts the MTU if a new interface with a smaller MTU appeared. */
-void update_min_mtu(struct net_device *soft_iface)
-{
-       int min_mtu;
-
-       min_mtu = hardif_min_mtu(soft_iface);
-       if (soft_iface->mtu != min_mtu)
-               soft_iface->mtu = min_mtu;
-}
-
-static void hardif_activate_interface(struct batman_if *batman_if)
-{
-       struct bat_priv *bat_priv;
-
-       if (batman_if->if_status != IF_INACTIVE)
-               return;
-
-       bat_priv = netdev_priv(batman_if->soft_iface);
-
-       update_mac_addresses(batman_if);
-       batman_if->if_status = IF_TO_BE_ACTIVATED;
-
-       /**
-        * the first active interface becomes our primary interface or
-        * the next active interface after the old primay interface was removed
-        */
-       if (!bat_priv->primary_if)
-               set_primary_if(bat_priv, batman_if);
-
-       bat_info(batman_if->soft_iface, "Interface activated: %s\n",
-                batman_if->net_dev->name);
-
-       update_min_mtu(batman_if->soft_iface);
-       return;
-}
-
-static void hardif_deactivate_interface(struct batman_if *batman_if)
-{
-       if ((batman_if->if_status != IF_ACTIVE) &&
-          (batman_if->if_status != IF_TO_BE_ACTIVATED))
-               return;
-
-       batman_if->if_status = IF_INACTIVE;
-
-       bat_info(batman_if->soft_iface, "Interface deactivated: %s\n",
-                batman_if->net_dev->name);
-
-       update_min_mtu(batman_if->soft_iface);
-}
-
-int hardif_enable_interface(struct batman_if *batman_if, char *iface_name)
-{
-       struct bat_priv *bat_priv;
-       struct batman_packet *batman_packet;
-
-       if (batman_if->if_status != IF_NOT_IN_USE)
-               goto out;
-
-       batman_if->soft_iface = dev_get_by_name(&init_net, iface_name);
-
-       if (!batman_if->soft_iface) {
-               batman_if->soft_iface = softif_create(iface_name);
-
-               if (!batman_if->soft_iface)
-                       goto err;
-
-               /* dev_get_by_name() increases the reference counter for us */
-               dev_hold(batman_if->soft_iface);
-       }
-
-       bat_priv = netdev_priv(batman_if->soft_iface);
-       batman_if->packet_len = BAT_PACKET_LEN;
-       batman_if->packet_buff = kmalloc(batman_if->packet_len, GFP_ATOMIC);
-
-       if (!batman_if->packet_buff) {
-               bat_err(batman_if->soft_iface, "Can't add interface packet "
-                       "(%s): out of memory\n", batman_if->net_dev->name);
-               goto err;
-       }
-
-       batman_packet = (struct batman_packet *)(batman_if->packet_buff);
-       batman_packet->packet_type = BAT_PACKET;
-       batman_packet->version = COMPAT_VERSION;
-       batman_packet->flags = 0;
-       batman_packet->ttl = 2;
-       batman_packet->tq = TQ_MAX_VALUE;
-       batman_packet->num_hna = 0;
-
-       batman_if->if_num = bat_priv->num_ifaces;
-       bat_priv->num_ifaces++;
-       batman_if->if_status = IF_INACTIVE;
-       orig_hash_add_if(batman_if, bat_priv->num_ifaces);
-
-       batman_if->batman_adv_ptype.type = __constant_htons(ETH_P_BATMAN);
-       batman_if->batman_adv_ptype.func = batman_skb_recv;
-       batman_if->batman_adv_ptype.dev = batman_if->net_dev;
-       hardif_hold(batman_if);
-       dev_add_pack(&batman_if->batman_adv_ptype);
-
-       atomic_set(&batman_if->seqno, 1);
-       atomic_set(&batman_if->frag_seqno, 1);
-       bat_info(batman_if->soft_iface, "Adding interface: %s\n",
-                batman_if->net_dev->name);
-
-       if (atomic_read(&bat_priv->frag_enabled) && batman_if->net_dev->mtu <
-               ETH_DATA_LEN + BAT_HEADER_LEN)
-               bat_info(batman_if->soft_iface,
-                       "The MTU of interface %s is too small (%i) to handle "
-                       "the transport of batman-adv packets. Packets going "
-                       "over this interface will be fragmented on layer2 "
-                       "which could impact the performance. Setting the MTU "
-                       "to %zi would solve the problem.\n",
-                       batman_if->net_dev->name, batman_if->net_dev->mtu,
-                       ETH_DATA_LEN + BAT_HEADER_LEN);
-
-       if (!atomic_read(&bat_priv->frag_enabled) && batman_if->net_dev->mtu <
-               ETH_DATA_LEN + BAT_HEADER_LEN)
-               bat_info(batman_if->soft_iface,
-                       "The MTU of interface %s is too small (%i) to handle "
-                       "the transport of batman-adv packets. If you experience"
-                       " problems getting traffic through try increasing the "
-                       "MTU to %zi.\n",
-                       batman_if->net_dev->name, batman_if->net_dev->mtu,
-                       ETH_DATA_LEN + BAT_HEADER_LEN);
-
-       if (hardif_is_iface_up(batman_if))
-               hardif_activate_interface(batman_if);
-       else
-               bat_err(batman_if->soft_iface, "Not using interface %s "
-                       "(retrying later): interface not active\n",
-                       batman_if->net_dev->name);
-
-       /* begin scheduling originator messages on that interface */
-       schedule_own_packet(batman_if);
-
-out:
-       return 0;
-
-err:
-       return -ENOMEM;
-}
-
-void hardif_disable_interface(struct batman_if *batman_if)
-{
-       struct bat_priv *bat_priv = netdev_priv(batman_if->soft_iface);
-
-       if (batman_if->if_status == IF_ACTIVE)
-               hardif_deactivate_interface(batman_if);
-
-       if (batman_if->if_status != IF_INACTIVE)
-               return;
-
-       bat_info(batman_if->soft_iface, "Removing interface: %s\n",
-                batman_if->net_dev->name);
-       dev_remove_pack(&batman_if->batman_adv_ptype);
-       hardif_put(batman_if);
-
-       bat_priv->num_ifaces--;
-       orig_hash_del_if(batman_if, bat_priv->num_ifaces);
-
-       if (batman_if == bat_priv->primary_if) {
-               struct batman_if *new_if;
-
-               new_if = get_active_batman_if(batman_if->soft_iface);
-               set_primary_if(bat_priv, new_if);
-
-               if (new_if)
-                       hardif_put(new_if);
-       }
-
-       kfree(batman_if->packet_buff);
-       batman_if->packet_buff = NULL;
-       batman_if->if_status = IF_NOT_IN_USE;
-
-       /* delete all references to this batman_if */
-       purge_orig_ref(bat_priv);
-       purge_outstanding_packets(bat_priv, batman_if);
-       dev_put(batman_if->soft_iface);
-
-       /* nobody uses this interface anymore */
-       if (!bat_priv->num_ifaces)
-               softif_destroy(batman_if->soft_iface);
-
-       batman_if->soft_iface = NULL;
-}
-
-static struct batman_if *hardif_add_interface(struct net_device *net_dev)
-{
-       struct batman_if *batman_if;
-       int ret;
-
-       ret = is_valid_iface(net_dev);
-       if (ret != 1)
-               goto out;
-
-       dev_hold(net_dev);
-
-       batman_if = kmalloc(sizeof(struct batman_if), GFP_ATOMIC);
-       if (!batman_if) {
-               pr_err("Can't add interface (%s): out of memory\n",
-                      net_dev->name);
-               goto release_dev;
-       }
-
-       ret = sysfs_add_hardif(&batman_if->hardif_obj, net_dev);
-       if (ret)
-               goto free_if;
-
-       batman_if->if_num = -1;
-       batman_if->net_dev = net_dev;
-       batman_if->soft_iface = NULL;
-       batman_if->if_status = IF_NOT_IN_USE;
-       INIT_LIST_HEAD(&batman_if->list);
-       atomic_set(&batman_if->refcnt, 0);
-       hardif_hold(batman_if);
-
-       check_known_mac_addr(batman_if->net_dev);
-
-       spin_lock(&if_list_lock);
-       list_add_tail_rcu(&batman_if->list, &if_list);
-       spin_unlock(&if_list_lock);
-
-       /* extra reference for return */
-       hardif_hold(batman_if);
-       return batman_if;
-
-free_if:
-       kfree(batman_if);
-release_dev:
-       dev_put(net_dev);
-out:
-       return NULL;
-}
-
-static void hardif_remove_interface(struct batman_if *batman_if)
-{
-       /* first deactivate interface */
-       if (batman_if->if_status != IF_NOT_IN_USE)
-               hardif_disable_interface(batman_if);
-
-       if (batman_if->if_status != IF_NOT_IN_USE)
-               return;
-
-       batman_if->if_status = IF_TO_BE_REMOVED;
-       synchronize_rcu();
-       sysfs_del_hardif(&batman_if->hardif_obj);
-       hardif_put(batman_if);
-}
-
-void hardif_remove_interfaces(void)
-{
-       struct batman_if *batman_if, *batman_if_tmp;
-       struct list_head if_queue;
-
-       INIT_LIST_HEAD(&if_queue);
-
-       spin_lock(&if_list_lock);
-       list_for_each_entry_safe(batman_if, batman_if_tmp, &if_list, list) {
-               list_del_rcu(&batman_if->list);
-               list_add_tail(&batman_if->list, &if_queue);
-       }
-       spin_unlock(&if_list_lock);
-
-       rtnl_lock();
-       list_for_each_entry_safe(batman_if, batman_if_tmp, &if_queue, list) {
-               hardif_remove_interface(batman_if);
-       }
-       rtnl_unlock();
-}
-
-static int hard_if_event(struct notifier_block *this,
-                        unsigned long event, void *ptr)
-{
-       struct net_device *net_dev = (struct net_device *)ptr;
-       struct batman_if *batman_if = get_batman_if_by_netdev(net_dev);
-       struct bat_priv *bat_priv;
-
-       if (!batman_if && event == NETDEV_REGISTER)
-               batman_if = hardif_add_interface(net_dev);
-
-       if (!batman_if)
-               goto out;
-
-       switch (event) {
-       case NETDEV_UP:
-               hardif_activate_interface(batman_if);
-               break;
-       case NETDEV_GOING_DOWN:
-       case NETDEV_DOWN:
-               hardif_deactivate_interface(batman_if);
-               break;
-       case NETDEV_UNREGISTER:
-               spin_lock(&if_list_lock);
-               list_del_rcu(&batman_if->list);
-               spin_unlock(&if_list_lock);
-
-               hardif_remove_interface(batman_if);
-               break;
-       case NETDEV_CHANGEMTU:
-               if (batman_if->soft_iface)
-                       update_min_mtu(batman_if->soft_iface);
-               break;
-       case NETDEV_CHANGEADDR:
-               if (batman_if->if_status == IF_NOT_IN_USE) {
-                       hardif_put(batman_if);
-                       goto out;
-               }
-
-               check_known_mac_addr(batman_if->net_dev);
-               update_mac_addresses(batman_if);
-
-               bat_priv = netdev_priv(batman_if->soft_iface);
-               if (batman_if == bat_priv->primary_if)
-                       update_primary_addr(bat_priv);
-               break;
-       default:
-               break;
-       };
-       hardif_put(batman_if);
-
-out:
-       return NOTIFY_DONE;
-}
-
-/* receive a packet with the batman ethertype coming on a hard
- * interface */
-int batman_skb_recv(struct sk_buff *skb, struct net_device *dev,
-       struct packet_type *ptype, struct net_device *orig_dev)
-{
-       struct bat_priv *bat_priv;
-       struct batman_packet *batman_packet;
-       struct batman_if *batman_if;
-       int ret;
-
-       batman_if = container_of(ptype, struct batman_if, batman_adv_ptype);
-       skb = skb_share_check(skb, GFP_ATOMIC);
-
-       /* skb was released by skb_share_check() */
-       if (!skb)
-               goto err_out;
-
-       /* packet should hold at least type and version */
-       if (unlikely(!pskb_may_pull(skb, 2)))
-               goto err_free;
-
-       /* expect a valid ethernet header here. */
-       if (unlikely(skb->mac_len != sizeof(struct ethhdr)
-                               || !skb_mac_header(skb)))
-               goto err_free;
-
-       if (!batman_if->soft_iface)
-               goto err_free;
-
-       bat_priv = netdev_priv(batman_if->soft_iface);
-
-       if (atomic_read(&bat_priv->mesh_state) != MESH_ACTIVE)
-               goto err_free;
-
-       /* discard frames on not active interfaces */
-       if (batman_if->if_status != IF_ACTIVE)
-               goto err_free;
-
-       batman_packet = (struct batman_packet *)skb->data;
-
-       if (batman_packet->version != COMPAT_VERSION) {
-               bat_dbg(DBG_BATMAN, bat_priv,
-                       "Drop packet: incompatible batman version (%i)\n",
-                       batman_packet->version);
-               goto err_free;
-       }
-
-       /* all receive handlers return whether they received or reused
-        * the supplied skb. if not, we have to free the skb. */
-
-       switch (batman_packet->packet_type) {
-               /* batman originator packet */
-       case BAT_PACKET:
-               ret = recv_bat_packet(skb, batman_if);
-               break;
-
-               /* batman icmp packet */
-       case BAT_ICMP:
-               ret = recv_icmp_packet(skb, batman_if);
-               break;
-
-               /* unicast packet */
-       case BAT_UNICAST:
-               ret = recv_unicast_packet(skb, batman_if);
-               break;
-
-               /* fragmented unicast packet */
-       case BAT_UNICAST_FRAG:
-               ret = recv_ucast_frag_packet(skb, batman_if);
-               break;
-
-               /* broadcast packet */
-       case BAT_BCAST:
-               ret = recv_bcast_packet(skb, batman_if);
-               break;
-
-               /* vis packet */
-       case BAT_VIS:
-               ret = recv_vis_packet(skb, batman_if);
-               break;
-       default:
-               ret = NET_RX_DROP;
-       }
-
-       if (ret == NET_RX_DROP)
-               kfree_skb(skb);
-
-       /* return NET_RX_SUCCESS in any case as we
-        * most probably dropped the packet for
-        * routing-logical reasons. */
-
-       return NET_RX_SUCCESS;
-
-err_free:
-       kfree_skb(skb);
-err_out:
-       return NET_RX_DROP;
-}
-
-struct notifier_block hard_if_notifier = {
-       .notifier_call = hard_if_event,
-};
diff --git a/drivers/staging/batman-adv/hard-interface.h b/drivers/staging/batman-adv/hard-interface.h
deleted file mode 100644 (file)
index d550889..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2007-2010 B.A.T.M.A.N. contributors:
- *
- * Marek Lindner, Simon Wunderlich
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA
- *
- */
-
-#ifndef _NET_BATMAN_ADV_HARD_INTERFACE_H_
-#define _NET_BATMAN_ADV_HARD_INTERFACE_H_
-
-#define IF_NOT_IN_USE 0
-#define IF_TO_BE_REMOVED 1
-#define IF_INACTIVE 2
-#define IF_ACTIVE 3
-#define IF_TO_BE_ACTIVATED 4
-#define IF_I_WANT_YOU 5
-
-extern struct notifier_block hard_if_notifier;
-
-struct batman_if *get_batman_if_by_netdev(struct net_device *net_dev);
-int hardif_enable_interface(struct batman_if *batman_if, char *iface_name);
-void hardif_disable_interface(struct batman_if *batman_if);
-void hardif_remove_interfaces(void);
-int batman_skb_recv(struct sk_buff *skb,
-                               struct net_device *dev,
-                               struct packet_type *ptype,
-                               struct net_device *orig_dev);
-int hardif_min_mtu(struct net_device *soft_iface);
-void update_min_mtu(struct net_device *soft_iface);
-
-static inline void hardif_hold(struct batman_if *batman_if)
-{
-       atomic_inc(&batman_if->refcnt);
-}
-
-static inline void hardif_put(struct batman_if *batman_if)
-{
-       if (atomic_dec_and_test(&batman_if->refcnt)) {
-               dev_put(batman_if->net_dev);
-               kfree(batman_if);
-       }
-}
-
-#endif /* _NET_BATMAN_ADV_HARD_INTERFACE_H_ */
diff --git a/drivers/staging/batman-adv/hash.c b/drivers/staging/batman-adv/hash.c
deleted file mode 100644 (file)
index 8ef26eb..0000000
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- * Copyright (C) 2006-2010 B.A.T.M.A.N. contributors:
- *
- * Simon Wunderlich, Marek Lindner
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA
- *
- */
-
-#include "main.h"
-#include "hash.h"
-
-/* clears the hash */
-static void hash_init(struct hashtable_t *hash)
-{
-       int i;
-
-       hash->elements = 0;
-
-       for (i = 0 ; i < hash->size; i++)
-               hash->table[i] = NULL;
-}
-
-/* remove the hash structure. if hashdata_free_cb != NULL, this function will be
- * called to remove the elements inside of the hash.  if you don't remove the
- * elements, memory might be leaked. */
-void hash_delete(struct hashtable_t *hash, hashdata_free_cb free_cb, void *arg)
-{
-       struct element_t *bucket, *last_bucket;
-       int i;
-
-       for (i = 0; i < hash->size; i++) {
-               bucket = hash->table[i];
-
-               while (bucket != NULL) {
-                       if (free_cb != NULL)
-                               free_cb(bucket->data, arg);
-
-                       last_bucket = bucket;
-                       bucket = bucket->next;
-                       kfree(last_bucket);
-               }
-       }
-
-       hash_destroy(hash);
-}
-
-/* free only the hashtable and the hash itself. */
-void hash_destroy(struct hashtable_t *hash)
-{
-       kfree(hash->table);
-       kfree(hash);
-}
-
-/* iterate though the hash. First element is selected if an iterator
- * initialized with HASHIT() is supplied as iter. Use the returned
- * (or supplied) iterator to access the elements until hash_iterate returns
- * NULL. */
-
-struct hash_it_t *hash_iterate(struct hashtable_t *hash,
-                              struct hash_it_t *iter)
-{
-       if (!hash)
-               return NULL;
-       if (!iter)
-               return NULL;
-
-       /* sanity checks first (if our bucket got deleted in the last
-        * iteration): */
-       if (iter->bucket != NULL) {
-               if (iter->first_bucket != NULL) {
-                       /* we're on the first element and it got removed after
-                        * the last iteration. */
-                       if ((*iter->first_bucket) != iter->bucket) {
-                               /* there are still other elements in the list */
-                               if ((*iter->first_bucket) != NULL) {
-                                       iter->prev_bucket = NULL;
-                                       iter->bucket = (*iter->first_bucket);
-                                       iter->first_bucket =
-                                               &hash->table[iter->index];
-                                       return iter;
-                               } else {
-                                       iter->bucket = NULL;
-                               }
-                       }
-               } else if (iter->prev_bucket != NULL) {
-                       /*
-                       * we're not on the first element, and the bucket got
-                       * removed after the last iteration.  the last bucket's
-                       * next pointer is not pointing to our actual bucket
-                       * anymore.  select the next.
-                       */
-                       if (iter->prev_bucket->next != iter->bucket)
-                               iter->bucket = iter->prev_bucket;
-               }
-       }
-
-       /* now as we are sane, select the next one if there is some */
-       if (iter->bucket != NULL) {
-               if (iter->bucket->next != NULL) {
-                       iter->prev_bucket = iter->bucket;
-                       iter->bucket = iter->bucket->next;
-                       iter->first_bucket = NULL;
-                       return iter;
-               }
-       }
-
-       /* if not returned yet, we've reached the last one on the index and have
-        * to search forward */
-       iter->index++;
-       /* go through the entries of the hash table */
-       while (iter->index < hash->size) {
-               if ((hash->table[iter->index]) != NULL) {
-                       iter->prev_bucket = NULL;
-                       iter->bucket = hash->table[iter->index];
-                       iter->first_bucket = &hash->table[iter->index];
-                       return iter;
-               } else {
-                       iter->index++;
-               }
-       }
-
-       /* nothing to iterate over anymore */
-       return NULL;
-}
-
-/* allocates and clears the hash */
-struct hashtable_t *hash_new(int size, hashdata_compare_cb compare,
-                            hashdata_choose_cb choose)
-{
-       struct hashtable_t *hash;
-
-       hash = kmalloc(sizeof(struct hashtable_t) , GFP_ATOMIC);
-
-       if (hash == NULL)
-               return NULL;
-
-       hash->size = size;
-       hash->table = kmalloc(sizeof(struct element_t *) * size, GFP_ATOMIC);
-
-       if (hash->table == NULL) {
-               kfree(hash);
-               return NULL;
-       }
-
-       hash_init(hash);
-
-       hash->compare = compare;
-       hash->choose = choose;
-
-       return hash;
-}
-
-/* adds data to the hashtable. returns 0 on success, -1 on error */
-int hash_add(struct hashtable_t *hash, void *data)
-{
-       int index;
-       struct element_t *bucket, *prev_bucket = NULL;
-
-       if (!hash)
-               return -1;
-
-       index = hash->choose(data, hash->size);
-       bucket = hash->table[index];
-
-       while (bucket != NULL) {
-               if (hash->compare(bucket->data, data))
-                       return -1;
-
-               prev_bucket = bucket;
-               bucket = bucket->next;
-       }
-
-       /* found the tail of the list, add new element */
-       bucket = kmalloc(sizeof(struct element_t), GFP_ATOMIC);
-
-       if (bucket == NULL)
-               return -1;
-
-       bucket->data = data;
-       bucket->next = NULL;
-
-       /* and link it */
-       if (prev_bucket == NULL)
-               hash->table[index] = bucket;
-       else
-               prev_bucket->next = bucket;
-
-       hash->elements++;
-       return 0;
-}
-
-/* finds data, based on the key in keydata. returns the found data on success,
- * or NULL on error */
-void *hash_find(struct hashtable_t *hash, void *keydata)
-{
-       int index;
-       struct element_t *bucket;
-
-       if (!hash)
-               return NULL;
-
-       index = hash->choose(keydata , hash->size);
-       bucket = hash->table[index];
-
-       while (bucket != NULL) {
-               if (hash->compare(bucket->data, keydata))
-                       return bucket->data;
-
-               bucket = bucket->next;
-       }
-
-       return NULL;
-}
-
-/* remove bucket (this might be used in hash_iterate() if you already found the
- * bucket you want to delete and don't need the overhead to find it again with
- * hash_remove(). But usually, you don't want to use this function, as it
- * fiddles with hash-internals. */
-void *hash_remove_bucket(struct hashtable_t *hash, struct hash_it_t *hash_it_t)
-{
-       void *data_save;
-
-       data_save = hash_it_t->bucket->data;
-
-       if (hash_it_t->prev_bucket != NULL)
-               hash_it_t->prev_bucket->next = hash_it_t->bucket->next;
-       else if (hash_it_t->first_bucket != NULL)
-               (*hash_it_t->first_bucket) = hash_it_t->bucket->next;
-
-       kfree(hash_it_t->bucket);
-       hash->elements--;
-
-       return data_save;
-}
-
-/* removes data from hash, if found. returns pointer do data on success, so you
- * can remove the used structure yourself, or NULL on error .  data could be the
- * structure you use with just the key filled, we just need the key for
- * comparing. */
-void *hash_remove(struct hashtable_t *hash, void *data)
-{
-       struct hash_it_t hash_it_t;
-
-       hash_it_t.index = hash->choose(data, hash->size);
-       hash_it_t.bucket = hash->table[hash_it_t.index];
-       hash_it_t.prev_bucket = NULL;
-
-       while (hash_it_t.bucket != NULL) {
-               if (hash->compare(hash_it_t.bucket->data, data)) {
-                       hash_it_t.first_bucket =
-                               (hash_it_t.bucket ==
-                                hash->table[hash_it_t.index] ?
-                                &hash->table[hash_it_t.index] : NULL);
-                       return hash_remove_bucket(hash, &hash_it_t);
-               }
-
-               hash_it_t.prev_bucket = hash_it_t.bucket;
-               hash_it_t.bucket = hash_it_t.bucket->next;
-       }
-
-       return NULL;
-}
-
-/* resize the hash, returns the pointer to the new hash or NULL on
- * error. removes the old hash on success. */
-struct hashtable_t *hash_resize(struct hashtable_t *hash, int size)
-{
-       struct hashtable_t *new_hash;
-       struct element_t *bucket;
-       int i;
-
-       /* initialize a new hash with the new size */
-       new_hash = hash_new(size, hash->compare, hash->choose);
-
-       if (new_hash == NULL)
-               return NULL;
-
-       /* copy the elements */
-       for (i = 0; i < hash->size; i++) {
-               bucket = hash->table[i];
-
-               while (bucket != NULL) {
-                       hash_add(new_hash, bucket->data);
-                       bucket = bucket->next;
-               }
-       }
-
-       /* remove hash and eventual overflow buckets but not the content
-        * itself. */
-       hash_delete(hash, NULL, NULL);
-
-       return new_hash;
-}
diff --git a/drivers/staging/batman-adv/hash.h b/drivers/staging/batman-adv/hash.h
deleted file mode 100644 (file)
index 2c8e176..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (C) 2006-2010 B.A.T.M.A.N. contributors:
- *
- * Simon Wunderlich, Marek Lindner
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA
- *
- */
-
-#ifndef _NET_BATMAN_ADV_HASH_H_
-#define _NET_BATMAN_ADV_HASH_H_
-
-#define HASHIT(name) struct hash_it_t name = { \
-               .index = -1, .bucket = NULL, \
-               .prev_bucket = NULL, \
-               .first_bucket = NULL }
-
-
-typedef int (*hashdata_compare_cb)(void *, void *);
-typedef int (*hashdata_choose_cb)(void *, int);
-typedef void (*hashdata_free_cb)(void *, void *);
-
-struct element_t {
-       void *data;             /* pointer to the data */
-       struct element_t *next; /* overflow bucket pointer */
-};
-
-struct hash_it_t {
-       int index;
-       struct element_t *bucket;
-       struct element_t *prev_bucket;
-       struct element_t **first_bucket;
-};
-
-struct hashtable_t {
-       struct element_t **table;   /* the hashtable itself, with the buckets */
-       int elements;               /* number of elements registered */
-       int size;                   /* size of hashtable */
-       hashdata_compare_cb compare;/* callback to a compare function.  should
-                                    * compare 2 element datas for their keys,
-                                    * return 0 if same and not 0 if not
-                                    * same */
-       hashdata_choose_cb choose;  /* the hashfunction, should return an index
-                                    * based on the key in the data of the first
-                                    * argument and the size the second */
-};
-
-/* allocates and clears the hash */
-struct hashtable_t *hash_new(int size, hashdata_compare_cb compare,
-                            hashdata_choose_cb choose);
-
-/* remove bucket (this might be used in hash_iterate() if you already found the
- * bucket you want to delete and don't need the overhead to find it again with
- * hash_remove().  But usually, you don't want to use this function, as it
- * fiddles with hash-internals. */
-void *hash_remove_bucket(struct hashtable_t *hash, struct hash_it_t *hash_it_t);
-
-/* remove the hash structure. if hashdata_free_cb != NULL, this function will be
- * called to remove the elements inside of the hash.  if you don't remove the
- * elements, memory might be leaked. */
-void hash_delete(struct hashtable_t *hash, hashdata_free_cb free_cb, void *arg);
-
-/* free only the hashtable and the hash itself. */
-void hash_destroy(struct hashtable_t *hash);
-
-/* adds data to the hashtable. returns 0 on success, -1 on error */
-int hash_add(struct hashtable_t *hash, void *data);
-
-/* removes data from hash, if found. returns pointer do data on success, so you
- * can remove the used structure yourself, or NULL on error .  data could be the
- * structure you use with just the key filled, we just need the key for
- * comparing. */
-void *hash_remove(struct hashtable_t *hash, void *data);
-
-/* finds data, based on the key in keydata. returns the found data on success,
- * or NULL on error */
-void *hash_find(struct hashtable_t *hash, void *keydata);
-
-/* resize the hash, returns the pointer to the new hash or NULL on
- * error. removes the old hash on success */
-struct hashtable_t *hash_resize(struct hashtable_t *hash, int size);
-
-/* iterate though the hash. first element is selected with iter_in NULL.  use
- * the returned iterator to access the elements until hash_it_t returns NULL. */
-struct hash_it_t *hash_iterate(struct hashtable_t *hash,
-                              struct hash_it_t *iter_in);
-
-#endif /* _NET_BATMAN_ADV_HASH_H_ */
diff --git a/drivers/staging/batman-adv/icmp_socket.c b/drivers/staging/batman-adv/icmp_socket.c
deleted file mode 100644 (file)
index 48856ca..0000000
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
- * Copyright (C) 2007-2010 B.A.T.M.A.N. contributors:
- *
- * Marek Lindner
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA
- *
- */
-
-#include "main.h"
-#include <linux/debugfs.h>
-#include <linux/slab.h>
-#include "icmp_socket.h"
-#include "send.h"
-#include "types.h"
-#include "hash.h"
-#include "hard-interface.h"
-
-
-static struct socket_client *socket_client_hash[256];
-
-static void bat_socket_add_packet(struct socket_client *socket_client,
-                                 struct icmp_packet_rr *icmp_packet,
-                                 size_t icmp_len);
-
-void bat_socket_init(void)
-{
-       memset(socket_client_hash, 0, sizeof(socket_client_hash));
-}
-
-static int bat_socket_open(struct inode *inode, struct file *file)
-{
-       unsigned int i;
-       struct socket_client *socket_client;
-
-       nonseekable_open(inode, file);
-
-       socket_client = kmalloc(sizeof(struct socket_client), GFP_KERNEL);
-
-       if (!socket_client)
-               return -ENOMEM;
-
-       for (i = 0; i < ARRAY_SIZE(socket_client_hash); i++) {
-               if (!socket_client_hash[i]) {
-                       socket_client_hash[i] = socket_client;
-                       break;
-               }
-       }
-
-       if (i == ARRAY_SIZE(socket_client_hash)) {
-               pr_err("Error - can't add another packet client: "
-                      "maximum number of clients reached\n");
-               kfree(socket_client);
-               return -EXFULL;
-       }
-
-       INIT_LIST_HEAD(&socket_client->queue_list);
-       socket_client->queue_len = 0;
-       socket_client->index = i;
-       socket_client->bat_priv = inode->i_private;
-       spin_lock_init(&socket_client->lock);
-       init_waitqueue_head(&socket_client->queue_wait);
-
-       file->private_data = socket_client;
-
-       inc_module_count();
-       return 0;
-}
-
-static int bat_socket_release(struct inode *inode, struct file *file)
-{
-       struct socket_client *socket_client = file->private_data;
-       struct socket_packet *socket_packet;
-       struct list_head *list_pos, *list_pos_tmp;
-       unsigned long flags;
-
-       spin_lock_irqsave(&socket_client->lock, flags);
-
-       /* for all packets in the queue ... */
-       list_for_each_safe(list_pos, list_pos_tmp, &socket_client->queue_list) {
-               socket_packet = list_entry(list_pos,
-                                          struct socket_packet, list);
-
-               list_del(list_pos);
-               kfree(socket_packet);
-       }
-
-       socket_client_hash[socket_client->index] = NULL;
-       spin_unlock_irqrestore(&socket_client->lock, flags);
-
-       kfree(socket_client);
-       dec_module_count();
-
-       return 0;
-}
-
-static ssize_t bat_socket_read(struct file *file, char __user *buf,
-                              size_t count, loff_t *ppos)
-{
-       struct socket_client *socket_client = file->private_data;
-       struct socket_packet *socket_packet;
-       size_t packet_len;
-       int error;
-       unsigned long flags;
-
-       if ((file->f_flags & O_NONBLOCK) && (socket_client->queue_len == 0))
-               return -EAGAIN;
-
-       if ((!buf) || (count < sizeof(struct icmp_packet)))
-               return -EINVAL;
-
-       if (!access_ok(VERIFY_WRITE, buf, count))
-               return -EFAULT;
-
-       error = wait_event_interruptible(socket_client->queue_wait,
-                                        socket_client->queue_len);
-
-       if (error)
-               return error;
-
-       spin_lock_irqsave(&socket_client->lock, flags);
-
-       socket_packet = list_first_entry(&socket_client->queue_list,
-                                        struct socket_packet, list);
-       list_del(&socket_packet->list);
-       socket_client->queue_len--;
-
-       spin_unlock_irqrestore(&socket_client->lock, flags);
-
-       error = __copy_to_user(buf, &socket_packet->icmp_packet,
-                              socket_packet->icmp_len);
-
-       packet_len = socket_packet->icmp_len;
-       kfree(socket_packet);
-
-       if (error)
-               return -EFAULT;
-
-       return packet_len;
-}
-
-static ssize_t bat_socket_write(struct file *file, const char __user *buff,
-                               size_t len, loff_t *off)
-{
-       struct socket_client *socket_client = file->private_data;
-       struct bat_priv *bat_priv = socket_client->bat_priv;
-       struct sk_buff *skb;
-       struct icmp_packet_rr *icmp_packet;
-
-       struct orig_node *orig_node;
-       struct batman_if *batman_if;
-       size_t packet_len = sizeof(struct icmp_packet);
-       uint8_t dstaddr[ETH_ALEN];
-       unsigned long flags;
-
-       if (len < sizeof(struct icmp_packet)) {
-               bat_dbg(DBG_BATMAN, bat_priv,
-                       "Error - can't send packet from char device: "
-                       "invalid packet size\n");
-               return -EINVAL;
-       }
-
-       if (!bat_priv->primary_if)
-               return -EFAULT;
-
-       if (len >= sizeof(struct icmp_packet_rr))
-               packet_len = sizeof(struct icmp_packet_rr);
-
-       skb = dev_alloc_skb(packet_len + sizeof(struct ethhdr));
-       if (!skb)
-               return -ENOMEM;
-
-       skb_reserve(skb, sizeof(struct ethhdr));
-       icmp_packet = (struct icmp_packet_rr *)skb_put(skb, packet_len);
-
-       if (!access_ok(VERIFY_READ, buff, packet_len)) {
-               len = -EFAULT;
-               goto free_skb;
-       }
-
-       if (__copy_from_user(icmp_packet, buff, packet_len)) {
-               len = -EFAULT;
-               goto free_skb;
-       }
-
-       if (icmp_packet->packet_type != BAT_ICMP) {
-               bat_dbg(DBG_BATMAN, bat_priv,
-                       "Error - can't send packet from char device: "
-                       "got bogus packet type (expected: BAT_ICMP)\n");
-               len = -EINVAL;
-               goto free_skb;
-       }
-
-       if (icmp_packet->msg_type != ECHO_REQUEST) {
-               bat_dbg(DBG_BATMAN, bat_priv,
-                       "Error - can't send packet from char device: "
-                       "got bogus message type (expected: ECHO_REQUEST)\n");
-               len = -EINVAL;
-               goto free_skb;
-       }
-
-       icmp_packet->uid = socket_client->index;
-
-       if (icmp_packet->version != COMPAT_VERSION) {
-               icmp_packet->msg_type = PARAMETER_PROBLEM;
-               icmp_packet->ttl = COMPAT_VERSION;
-               bat_socket_add_packet(socket_client, icmp_packet, packet_len);
-               goto free_skb;
-       }
-
-       if (atomic_read(&bat_priv->mesh_state) != MESH_ACTIVE)
-               goto dst_unreach;
-
-       spin_lock_irqsave(&bat_priv->orig_hash_lock, flags);
-       orig_node = ((struct orig_node *)hash_find(bat_priv->orig_hash,
-                                                  icmp_packet->dst));
-
-       if (!orig_node)
-               goto unlock;
-
-       if (!orig_node->router)
-               goto unlock;
-
-       batman_if = orig_node->router->if_incoming;
-       memcpy(dstaddr, orig_node->router->addr, ETH_ALEN);
-
-       spin_unlock_irqrestore(&bat_priv->orig_hash_lock, flags);
-
-       if (!batman_if)
-               goto dst_unreach;
-
-       if (batman_if->if_status != IF_ACTIVE)
-               goto dst_unreach;
-
-       memcpy(icmp_packet->orig,
-              bat_priv->primary_if->net_dev->dev_addr, ETH_ALEN);
-
-       if (packet_len == sizeof(struct icmp_packet_rr))
-               memcpy(icmp_packet->rr, batman_if->net_dev->dev_addr, ETH_ALEN);
-
-
-       send_skb_packet(skb, batman_if, dstaddr);
-
-       goto out;
-
-unlock:
-       spin_unlock_irqrestore(&bat_priv->orig_hash_lock, flags);
-dst_unreach:
-       icmp_packet->msg_type = DESTINATION_UNREACHABLE;
-       bat_socket_add_packet(socket_client, icmp_packet, packet_len);
-free_skb:
-       kfree_skb(skb);
-out:
-       return len;
-}
-
-static unsigned int bat_socket_poll(struct file *file, poll_table *wait)
-{
-       struct socket_client *socket_client = file->private_data;
-
-       poll_wait(file, &socket_client->queue_wait, wait);
-
-       if (socket_client->queue_len > 0)
-               return POLLIN | POLLRDNORM;
-
-       return 0;
-}
-
-static const struct file_operations fops = {
-       .owner = THIS_MODULE,
-       .open = bat_socket_open,
-       .release = bat_socket_release,
-       .read = bat_socket_read,
-       .write = bat_socket_write,
-       .poll = bat_socket_poll,
-       .llseek = no_llseek,
-};
-
-int bat_socket_setup(struct bat_priv *bat_priv)
-{
-       struct dentry *d;
-
-       if (!bat_priv->debug_dir)
-               goto err;
-
-       d = debugfs_create_file(ICMP_SOCKET, S_IFREG | S_IWUSR | S_IRUSR,
-                               bat_priv->debug_dir, bat_priv, &fops);
-       if (d)
-               goto err;
-
-       return 0;
-
-err:
-       return 1;
-}
-
-static void bat_socket_add_packet(struct socket_client *socket_client,
-                                 struct icmp_packet_rr *icmp_packet,
-                                 size_t icmp_len)
-{
-       struct socket_packet *socket_packet;
-       unsigned long flags;
-
-       socket_packet = kmalloc(sizeof(struct socket_packet), GFP_ATOMIC);
-
-       if (!socket_packet)
-               return;
-
-       INIT_LIST_HEAD(&socket_packet->list);
-       memcpy(&socket_packet->icmp_packet, icmp_packet, icmp_len);
-       socket_packet->icmp_len = icmp_len;
-
-       spin_lock_irqsave(&socket_client->lock, flags);
-
-       /* while waiting for the lock the socket_client could have been
-        * deleted */
-       if (!socket_client_hash[icmp_packet->uid]) {
-               spin_unlock_irqrestore(&socket_client->lock, flags);
-               kfree(socket_packet);
-               return;
-       }
-
-       list_add_tail(&socket_packet->list, &socket_client->queue_list);
-       socket_client->queue_len++;
-
-       if (socket_client->queue_len > 100) {
-               socket_packet = list_first_entry(&socket_client->queue_list,
-                                                struct socket_packet, list);
-
-               list_del(&socket_packet->list);
-               kfree(socket_packet);
-               socket_client->queue_len--;
-       }
-
-       spin_unlock_irqrestore(&socket_client->lock, flags);
-
-       wake_up(&socket_client->queue_wait);
-}
-
-void bat_socket_receive_packet(struct icmp_packet_rr *icmp_packet,
-                              size_t icmp_len)
-{
-       struct socket_client *hash = socket_client_hash[icmp_packet->uid];
-
-       if (hash)
-               bat_socket_add_packet(hash, icmp_packet, icmp_len);
-}
diff --git a/drivers/staging/batman-adv/icmp_socket.h b/drivers/staging/batman-adv/icmp_socket.h
deleted file mode 100644 (file)
index bf9b348..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2007-2010 B.A.T.M.A.N. contributors:
- *
- * Marek Lindner
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA
- *
- */
-
-#ifndef _NET_BATMAN_ADV_ICMP_SOCKET_H_
-#define _NET_BATMAN_ADV_ICMP_SOCKET_H_
-
-#include "types.h"
-
-#define ICMP_SOCKET "socket"
-
-void bat_socket_init(void);
-int bat_socket_setup(struct bat_priv *bat_priv);
-void bat_socket_receive_packet(struct icmp_packet_rr *icmp_packet,
-                              size_t icmp_len);
-
-#endif /* _NET_BATMAN_ADV_ICMP_SOCKET_H_ */
diff --git a/drivers/staging/batman-adv/main.c b/drivers/staging/batman-adv/main.c
deleted file mode 100644 (file)
index 0587940..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright (C) 2007-2010 B.A.T.M.A.N. contributors:
- *
- * Marek Lindner, Simon Wunderlich
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA
- *
- */
-
-#include "main.h"
-#include "bat_sysfs.h"
-#include "bat_debugfs.h"
-#include "routing.h"
-#include "send.h"
-#include "originator.h"
-#include "soft-interface.h"
-#include "icmp_socket.h"
-#include "translation-table.h"
-#include "hard-interface.h"
-#include "types.h"
-#include "vis.h"
-#include "hash.h"
-
-struct list_head if_list;
-
-unsigned char broadcast_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
-
-struct workqueue_struct *bat_event_workqueue;
-
-static int __init batman_init(void)
-{
-       INIT_LIST_HEAD(&if_list);
-
-       /* the name should not be longer than 10 chars - see
-        * http://lwn.net/Articles/23634/ */
-       bat_event_workqueue = create_singlethread_workqueue("bat_events");
-
-       if (!bat_event_workqueue)
-               return -ENOMEM;
-
-       bat_socket_init();
-       debugfs_init();
-
-       register_netdevice_notifier(&hard_if_notifier);
-
-       pr_info("B.A.T.M.A.N. advanced %s%s (compatibility version %i) "
-               "loaded\n", SOURCE_VERSION, REVISION_VERSION_STR,
-               COMPAT_VERSION);
-
-       return 0;
-}
-
-static void __exit batman_exit(void)
-{
-       debugfs_destroy();
-       unregister_netdevice_notifier(&hard_if_notifier);
-       hardif_remove_interfaces();
-
-       flush_workqueue(bat_event_workqueue);
-       destroy_workqueue(bat_event_workqueue);
-       bat_event_workqueue = NULL;
-
-       rcu_barrier();
-}
-
-int mesh_init(struct net_device *soft_iface)
-{
-       struct bat_priv *bat_priv = netdev_priv(soft_iface);
-
-       spin_lock_init(&bat_priv->orig_hash_lock);
-       spin_lock_init(&bat_priv->forw_bat_list_lock);
-       spin_lock_init(&bat_priv->forw_bcast_list_lock);
-       spin_lock_init(&bat_priv->hna_lhash_lock);
-       spin_lock_init(&bat_priv->hna_ghash_lock);
-       spin_lock_init(&bat_priv->vis_hash_lock);
-       spin_lock_init(&bat_priv->vis_list_lock);
-
-       INIT_HLIST_HEAD(&bat_priv->forw_bat_list);
-       INIT_HLIST_HEAD(&bat_priv->forw_bcast_list);
-
-       if (originator_init(bat_priv) < 1)
-               goto err;
-
-       if (hna_local_init(bat_priv) < 1)
-               goto err;
-
-       if (hna_global_init(bat_priv) < 1)
-               goto err;
-
-       hna_local_add(soft_iface, soft_iface->dev_addr);
-
-       if (vis_init(bat_priv) < 1)
-               goto err;
-
-       atomic_set(&bat_priv->mesh_state, MESH_ACTIVE);
-       goto end;
-
-err:
-       pr_err("Unable to allocate memory for mesh information structures: "
-              "out of mem ?\n");
-       mesh_free(soft_iface);
-       return -1;
-
-end:
-       return 0;
-}
-
-void mesh_free(struct net_device *soft_iface)
-{
-       struct bat_priv *bat_priv = netdev_priv(soft_iface);
-
-       atomic_set(&bat_priv->mesh_state, MESH_DEACTIVATING);
-
-       purge_outstanding_packets(bat_priv, NULL);
-
-       vis_quit(bat_priv);
-
-       originator_free(bat_priv);
-
-       hna_local_free(bat_priv);
-       hna_global_free(bat_priv);
-
-       atomic_set(&bat_priv->mesh_state, MESH_INACTIVE);
-}
-
-void inc_module_count(void)
-{
-       try_module_get(THIS_MODULE);
-}
-
-void dec_module_count(void)
-{
-       module_put(THIS_MODULE);
-}
-
-/* returns 1 if they are the same originator */
-
-int compare_orig(void *data1, void *data2)
-{
-       return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0);
-}
-
-/* hashfunction to choose an entry in a hash table of given size */
-/* hash algorithm from http://en.wikipedia.org/wiki/Hash_table */
-int choose_orig(void *data, int32_t size)
-{
-       unsigned char *key = data;
-       uint32_t hash = 0;
-       size_t i;
-
-       for (i = 0; i < 6; i++) {
-               hash += key[i];
-               hash += (hash << 10);
-               hash ^= (hash >> 6);
-       }
-
-       hash += (hash << 3);
-       hash ^= (hash >> 11);
-       hash += (hash << 15);
-
-       return hash % size;
-}
-
-int is_my_mac(uint8_t *addr)
-{
-       struct batman_if *batman_if;
-
-       rcu_read_lock();
-       list_for_each_entry_rcu(batman_if, &if_list, list) {
-               if (batman_if->if_status != IF_ACTIVE)
-                       continue;
-
-               if (compare_orig(batman_if->net_dev->dev_addr, addr)) {
-                       rcu_read_unlock();
-                       return 1;
-               }
-       }
-       rcu_read_unlock();
-       return 0;
-
-}
-
-int is_bcast(uint8_t *addr)
-{
-       return (addr[0] == (uint8_t)0xff) && (addr[1] == (uint8_t)0xff);
-}
-
-int is_mcast(uint8_t *addr)
-{
-       return *addr & 0x01;
-}
-
-module_init(batman_init);
-module_exit(batman_exit);
-
-MODULE_LICENSE("GPL");
-
-MODULE_AUTHOR(DRIVER_AUTHOR);
-MODULE_DESCRIPTION(DRIVER_DESC);
-MODULE_SUPPORTED_DEVICE(DRIVER_DEVICE);
-#ifdef REVISION_VERSION
-MODULE_VERSION(SOURCE_VERSION "-" REVISION_VERSION);
-#else
-MODULE_VERSION(SOURCE_VERSION);
-#endif
diff --git a/drivers/staging/batman-adv/main.h b/drivers/staging/batman-adv/main.h
deleted file mode 100644 (file)
index 5e3f516..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Copyright (C) 2007-2010 B.A.T.M.A.N. contributors:
- *
- * Marek Lindner, Simon Wunderlich
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA
- *
- */
-
-#ifndef _NET_BATMAN_ADV_MAIN_H_
-#define _NET_BATMAN_ADV_MAIN_H_
-
-/* Kernel Programming */
-#define LINUX
-
-#define DRIVER_AUTHOR "Marek Lindner <lindner_marek@yahoo.de>, " \
-                     "Simon Wunderlich <siwu@hrz.tu-chemnitz.de>"
-#define DRIVER_DESC   "B.A.T.M.A.N. advanced"
-#define DRIVER_DEVICE "batman-adv"
-
-#define SOURCE_VERSION "next"
-
-
-/* B.A.T.M.A.N. parameters */
-
-#define TQ_MAX_VALUE 255
-#define JITTER 20
-#define TTL 50                   /* Time To Live of broadcast messages */
-
-#define PURGE_TIMEOUT 200      /* purge originators after time in seconds if no
-                                  * valid packet comes in -> TODO: check
-                                  * influence on TQ_LOCAL_WINDOW_SIZE */
-#define LOCAL_HNA_TIMEOUT 3600 /* in seconds */
-
-#define TQ_LOCAL_WINDOW_SIZE 64          /* sliding packet range of received originator
-                                  * messages in squence numbers (should be a
-                                  * multiple of our word size) */
-#define TQ_GLOBAL_WINDOW_SIZE 5
-#define TQ_LOCAL_BIDRECT_SEND_MINIMUM 1
-#define TQ_LOCAL_BIDRECT_RECV_MINIMUM 1
-#define TQ_TOTAL_BIDRECT_LIMIT 1
-
-#define TQ_HOP_PENALTY 10
-
-#define NUM_WORDS (TQ_LOCAL_WINDOW_SIZE / WORD_BIT_SIZE)
-
-#define PACKBUFF_SIZE 2000
-#define LOG_BUF_LEN 8192         /* has to be a power of 2 */
-
-#define VIS_INTERVAL 5000      /* 5 seconds */
-
-/* how much worse secondary interfaces may be to
- * to be considered as bonding candidates */
-
-#define BONDING_TQ_THRESHOLD   50
-
-#define MAX_AGGREGATION_BYTES 512 /* should not be bigger than 512 bytes or
-                                  * change the size of
-                                  * forw_packet->direct_link_flags */
-#define MAX_AGGREGATION_MS 100
-
-#define RESET_PROTECTION_MS 30000
-#define EXPECTED_SEQNO_RANGE   65536
-/* don't reset again within 30 seconds */
-
-#define MESH_INACTIVE 0
-#define MESH_ACTIVE 1
-#define MESH_DEACTIVATING 2
-
-#define BCAST_QUEUE_LEN                256
-#define BATMAN_QUEUE_LEN       256
-
-/*
- * Debug Messages
- */
-#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt /* Append 'batman-adv: ' before
-                                            * kernel messages */
-
-#define DBG_BATMAN 1   /* all messages related to routing / flooding /
-                        * broadcasting / etc */
-#define DBG_ROUTES 2   /* route or hna added / changed / deleted */
-#define DBG_ALL 3
-
-#define LOG_BUF_LEN 8192          /* has to be a power of 2 */
-
-
-/*
- *  Vis
- */
-
-/* #define VIS_SUBCLUSTERS_DISABLED */
-
-/*
- * Kernel headers
- */
-
-#include <linux/mutex.h>       /* mutex */
-#include <linux/module.h>      /* needed by all modules */
-#include <linux/netdevice.h>   /* netdevice */
-#include <linux/if_ether.h>    /* ethernet header */
-#include <linux/poll.h>                /* poll_table */
-#include <linux/kthread.h>     /* kernel threads */
-#include <linux/pkt_sched.h>   /* schedule types */
-#include <linux/workqueue.h>   /* workqueue */
-#include <linux/slab.h>
-#include <net/sock.h>          /* struct sock */
-#include <linux/jiffies.h>
-#include <linux/seq_file.h>
-#include "types.h"
-
-#ifndef REVISION_VERSION
-#define REVISION_VERSION_STR ""
-#else
-#define REVISION_VERSION_STR " "REVISION_VERSION
-#endif
-
-extern struct list_head if_list;
-
-extern unsigned char broadcast_addr[];
-extern struct workqueue_struct *bat_event_workqueue;
-
-int mesh_init(struct net_device *soft_iface);
-void mesh_free(struct net_device *soft_iface);
-void inc_module_count(void);
-void dec_module_count(void);
-int compare_orig(void *data1, void *data2);
-int choose_orig(void *data, int32_t size);
-int is_my_mac(uint8_t *addr);
-int is_bcast(uint8_t *addr);
-int is_mcast(uint8_t *addr);
-
-#ifdef CONFIG_BATMAN_ADV_DEBUG
-int debug_log(struct bat_priv *bat_priv, char *fmt, ...);
-
-#define bat_dbg(type, bat_priv, fmt, arg...)                   \
-       do {                                                    \
-               if (atomic_read(&bat_priv->log_level) & type)   \
-                       debug_log(bat_priv, fmt, ## arg);       \
-       }                                                       \
-       while (0)
-#else /* !CONFIG_BATMAN_ADV_DEBUG */
-static inline void bat_dbg(char type __attribute__((unused)),
-                          struct bat_priv *bat_priv __attribute__((unused)),
-                          char *fmt __attribute__((unused)), ...)
-{
-}
-#endif
-
-#define bat_warning(net_dev, fmt, arg...)                              \
-       do {                                                            \
-               struct net_device *_netdev = (net_dev);                 \
-               struct bat_priv *_batpriv = netdev_priv(_netdev);       \
-               bat_dbg(DBG_ALL, _batpriv, fmt, ## arg);                \
-               pr_warning("%s: " fmt, _netdev->name, ## arg);          \
-       } while (0)
-#define bat_info(net_dev, fmt, arg...)                                 \
-       do {                                                            \
-               struct net_device *_netdev = (net_dev);                 \
-               struct bat_priv *_batpriv = netdev_priv(_netdev);       \
-               bat_dbg(DBG_ALL, _batpriv, fmt, ## arg);                \
-               pr_info("%s: " fmt, _netdev->name, ## arg);             \
-       } while (0)
-#define bat_err(net_dev, fmt, arg...)                                  \
-       do {                                                            \
-               struct net_device *_netdev = (net_dev);                 \
-               struct bat_priv *_batpriv = netdev_priv(_netdev);       \
-               bat_dbg(DBG_ALL, _batpriv, fmt, ## arg);                \
-               pr_err("%s: " fmt, _netdev->name, ## arg);              \
-       } while (0)
-
-#endif /* _NET_BATMAN_ADV_MAIN_H_ */
diff --git a/drivers/staging/batman-adv/originator.c b/drivers/staging/batman-adv/originator.c
deleted file mode 100644 (file)
index 5527008..0000000
+++ /dev/null
@@ -1,533 +0,0 @@
-/*
- * Copyright (C) 2009-2010 B.A.T.M.A.N. contributors:
- *
- * Marek Lindner, Simon Wunderlich
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA
- *
- */
-
-/* increase the reference counter for this originator */
-
-#include "main.h"
-#include "originator.h"
-#include "hash.h"
-#include "translation-table.h"
-#include "routing.h"
-#include "hard-interface.h"
-#include "unicast.h"
-
-static void purge_orig(struct work_struct *work);
-
-static void start_purge_timer(struct bat_priv *bat_priv)
-{
-       INIT_DELAYED_WORK(&bat_priv->orig_work, purge_orig);
-       queue_delayed_work(bat_event_workqueue, &bat_priv->orig_work, 1 * HZ);
-}
-
-int originator_init(struct bat_priv *bat_priv)
-{
-       unsigned long flags;
-       if (bat_priv->orig_hash)
-               return 1;
-
-       spin_lock_irqsave(&bat_priv->orig_hash_lock, flags);
-       bat_priv->orig_hash = hash_new(128, compare_orig, choose_orig);
-
-       if (!bat_priv->orig_hash)
-               goto err;
-
-       spin_unlock_irqrestore(&bat_priv->orig_hash_lock, flags);
-       start_purge_timer(bat_priv);
-       return 1;
-
-err:
-       spin_unlock_irqrestore(&bat_priv->orig_hash_lock, flags);
-       return 0;
-}
-
-struct neigh_node *
-create_neighbor(struct orig_node *orig_node, struct orig_node *orig_neigh_node,
-               uint8_t *neigh, struct batman_if *if_incoming)
-{
-       struct bat_priv *bat_priv = netdev_priv(if_incoming->soft_iface);
-       struct neigh_node *neigh_node;
-
-       bat_dbg(DBG_BATMAN, bat_priv,
-               "Creating new last-hop neighbor of originator\n");
-
-       neigh_node = kzalloc(sizeof(struct neigh_node), GFP_ATOMIC);
-       if (!neigh_node)
-               return NULL;
-
-       INIT_LIST_HEAD(&neigh_node->list);
-
-       memcpy(neigh_node->addr, neigh, ETH_ALEN);
-       neigh_node->orig_node = orig_neigh_node;
-       neigh_node->if_incoming = if_incoming;
-
-       list_add_tail(&neigh_node->list, &orig_node->neigh_list);
-       return neigh_node;
-}
-
-static void free_orig_node(void *data, void *arg)
-{
-       struct list_head *list_pos, *list_pos_tmp;
-       struct neigh_node *neigh_node;
-       struct orig_node *orig_node = (struct orig_node *)data;
-       struct bat_priv *bat_priv = (struct bat_priv *)arg;
-
-       /* for all neighbors towards this originator ... */
-       list_for_each_safe(list_pos, list_pos_tmp, &orig_node->neigh_list) {
-               neigh_node = list_entry(list_pos, struct neigh_node, list);
-
-               list_del(list_pos);
-               kfree(neigh_node);
-       }
-
-       frag_list_free(&orig_node->frag_list);
-       hna_global_del_orig(bat_priv, orig_node, "originator timed out");
-
-       kfree(orig_node->bcast_own);
-       kfree(orig_node->bcast_own_sum);
-       kfree(orig_node);
-}
-
-void originator_free(struct bat_priv *bat_priv)
-{
-       unsigned long flags;
-
-       if (!bat_priv->orig_hash)
-               return;
-
-       cancel_delayed_work_sync(&bat_priv->orig_work);
-
-       spin_lock_irqsave(&bat_priv->orig_hash_lock, flags);
-       hash_delete(bat_priv->orig_hash, free_orig_node, bat_priv);
-       bat_priv->orig_hash = NULL;
-       spin_unlock_irqrestore(&bat_priv->orig_hash_lock, flags);
-}
-
-/* this function finds or creates an originator entry for the given
- * address if it does not exits */
-struct orig_node *get_orig_node(struct bat_priv *bat_priv, uint8_t *addr)
-{
-       struct orig_node *orig_node;
-       struct hashtable_t *swaphash;
-       int size;
-
-       orig_node = ((struct orig_node *)hash_find(bat_priv->orig_hash, addr));
-
-       if (orig_node)
-               return orig_node;
-
-       bat_dbg(DBG_BATMAN, bat_priv,
-               "Creating new originator: %pM\n", addr);
-
-       orig_node = kzalloc(sizeof(struct orig_node), GFP_ATOMIC);
-       if (!orig_node)
-               return NULL;
-
-       INIT_LIST_HEAD(&orig_node->neigh_list);
-
-       memcpy(orig_node->orig, addr, ETH_ALEN);
-       orig_node->router = NULL;
-       orig_node->hna_buff = NULL;
-       orig_node->bcast_seqno_reset = jiffies - 1
-                                       - msecs_to_jiffies(RESET_PROTECTION_MS);
-       orig_node->batman_seqno_reset = jiffies - 1
-                                       - msecs_to_jiffies(RESET_PROTECTION_MS);
-
-       size = bat_priv->num_ifaces * sizeof(TYPE_OF_WORD) * NUM_WORDS;
-
-       orig_node->bcast_own = kzalloc(size, GFP_ATOMIC);
-       if (!orig_node->bcast_own)
-               goto free_orig_node;
-
-       size = bat_priv->num_ifaces * sizeof(uint8_t);
-       orig_node->bcast_own_sum = kzalloc(size, GFP_ATOMIC);
-
-       INIT_LIST_HEAD(&orig_node->frag_list);
-       orig_node->last_frag_packet = 0;
-
-       if (!orig_node->bcast_own_sum)
-               goto free_bcast_own;
-
-       if (hash_add(bat_priv->orig_hash, orig_node) < 0)
-               goto free_bcast_own_sum;
-
-       if (bat_priv->orig_hash->elements * 4 > bat_priv->orig_hash->size) {
-               swaphash = hash_resize(bat_priv->orig_hash,
-                                      bat_priv->orig_hash->size * 2);
-
-               if (!swaphash)
-                       bat_dbg(DBG_BATMAN, bat_priv,
-                               "Couldn't resize orig hash table\n");
-               else
-                       bat_priv->orig_hash = swaphash;
-       }
-
-       return orig_node;
-free_bcast_own_sum:
-       kfree(orig_node->bcast_own_sum);
-free_bcast_own:
-       kfree(orig_node->bcast_own);
-free_orig_node:
-       kfree(orig_node);
-       return NULL;
-}
-
-static bool purge_orig_neighbors(struct bat_priv *bat_priv,
-                                struct orig_node *orig_node,
-                                struct neigh_node **best_neigh_node)
-{
-       struct list_head *list_pos, *list_pos_tmp;
-       struct neigh_node *neigh_node;
-       bool neigh_purged = false;
-
-       *best_neigh_node = NULL;
-
-       /* for all neighbors towards this originator ... */
-       list_for_each_safe(list_pos, list_pos_tmp, &orig_node->neigh_list) {
-               neigh_node = list_entry(list_pos, struct neigh_node, list);
-
-               if ((time_after(jiffies,
-                       neigh_node->last_valid + PURGE_TIMEOUT * HZ)) ||
-                   (neigh_node->if_incoming->if_status == IF_INACTIVE) ||
-                   (neigh_node->if_incoming->if_status == IF_TO_BE_REMOVED)) {
-
-                       if (neigh_node->if_incoming->if_status ==
-                                                       IF_TO_BE_REMOVED)
-                               bat_dbg(DBG_BATMAN, bat_priv,
-                                       "neighbor purge: originator %pM, "
-                                       "neighbor: %pM, iface: %s\n",
-       &