Netdev List
 help / color / mirror / Atom feed
* [git patches] net driver updates for 2.6.25
From: Jeff Garzik @ 2008-01-18 20:17 UTC (permalink / raw)
  To: David Miller; +Cc: netdev, LKML


Please pull from the 'upstream' branch of
git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git upstream

to receive my 2.6.25 net driver queue into davem/net-2.6.25.git:

Adam Baker (2):
      rt2x00: Unconstify rt2x00dev
      rt2x00: Place mutex around USB register access

Adrian Bunk (4):
      drivers/net/netxen/: cleanups
      drivers/net/chelsio/: #if 0 unused functions
      ipg: add __devexit annotation
      e1000: remove no longer used code for pci read/write cfg

Al Viro (15):
      endianness annotations and fixes for olympic
      sunhme endianness annotations
      sungem endianness annotations^[
      e1000e endianness annotations
      e1000 endianness annotations
      NULL noise in drivers/net
      forcedeth endianness bugs
      e100 endianness annotations
      ixgbe endianness annotations
      ixgb endianness annotations
      annotate tun
      annotate the rest of drivers/net/wan
      eepro100 annotations
      slhc annotations
      qla3xxx annotations

Alan Cox (2):
      3c501: Bring into compliance with the coding style
      slip: Drag kicking and screaming into coding style compliance

Alejandro Martinez Ruiz (3):
      netdev: use ARRAY_SIZE() instead of sizeof(array) / ETH_GSTRING_LEN
      netdev: ARRAY_SIZE() cleanups
      sk98lin: kill bogus check and convert to use ARRAY_SIZE()

Andrea Merello (1):
      rtl8187: fix tx power reading

Andres Salomon (4):
      libertas: drop useless default_fw_name variable
      libertas: mark module_init/exit functions as __init/__exit
      libertas: reset devices upon disconnect rather than module unloading
      libertas: nuke useless variable usbdriver_name and useless comments

Auke Kok (6):
      e1000e: Disable L1 ASPM power savings for 82573 mobile variants
      e1000/e1000e: Move PCI-Express device IDs over to e1000e
      ixgbe: Fix copper PHY initialization code
      [E1000E]: update netstats traffic counters realtime
      [E1000]: update netstats traffic counters realtime
      e1000: Dump the eeprom when a user encounters a bad checksum

Ben M Cahill (29):
      iwl3945: re-align 3945 event log data
      iwl4965: add comments to rate scaling code
      iwlwifi: add comments to EEPROM stuff
      iwl-4965-hw.h: clean up unused eeprom structures and definitions
      iwlwifi: clean up and clarify some comments after 3945/4965 split
      iwlwifi: Move is_legacy() macro family from iwl-4965-hw.h to iwl-4965-rs.h
      iwlwifi: Add comments to some driver data structures
      iwlwifi: Document 4965 rate_n_flags bits
      iwlwifi: Document Rx calibration
      iwlwifi: Partially clean-up, add comments to iwl-*-hw.h
      iwlwifi: clean up some unused definitions in iwl-4965.h and iwl-3945.h
      iwlwifi: add comments, mostly on Tx queues
      iwlwifi: add comments to iwl*-base.c
      iwlwifi: Clean up unused definitions in iwl-3945-hw.h
      iwlwifi: clean up unused definitions in iwl-4965-hw.h
      iwlwifi: move uCode API definitions to iwl-4965-commands.h
      iwlwifi: move HT_IE_EXT_CHANNEL_* driver definitions to iwl-4965.h
      iwlwifi: document temperature calculation
      iwlwifi: document txpower calculations
      iwlwifi: document keep-warm buffer
      iwlwifi: document Rx registers
      iwlwifi: document Tx registers
      iwlwifi: document shared Tx structures
      iwlwifi: document 4965 Tx scheduler
      iwlwifi: document command header and "alive" responses
      iwlwifi: add comments to RXON command and txpower formats
      iwlwifi: add comments to QOS and ADD_STA commands
      iwlwifi: add comments to Tx commands
      iwlwifi: document 4965 rate scaling

Bill Hayes (1):
      e1000e: alternate MAC address support

Brajesh Dave (2):
      libertas: separate mesh connectivity from that of the main interface
      libertas: configurable beacon interval

Christoph Hellwig (4):
      iwlwifi: mark more functions/variables static
      iwlwifi: keep 3945 and 4965 headers separate
      iwlwifi: cleanup Kconfig and ifdefs to split 3945 and 4965
      iwlwifi: cleanup namespace

Claudio Lanconelli (1):
      add driver for enc28j60 ethernet chip

Dan Williams (12):
      orinoco: more reliable scan handling
      orinoco: always use latest BSS info when caching scan results
      libertas: make lbs_cmd() usage nicer
      libertas: clean up is_command_allowed_in_ps()
      libertas: clean up direct command handling
      libertas: add simple copyback command callback
      libertas: convert GET_HW_SPEC to a direct command
      libertas: rename and re-type bufvirtualaddr to cmdbuf
      libertas: fix case of FWT_ACCESS_LIST_ROUTE and FWT_ACCESS_LIST_NEIGHBOR commands
      libertas: convert DATA_RATE to a direct command
      libertas: convert RF_CHANNEL to a direct command
      libertas: endianness fixes for get_channel/set_channel

Daniel Drake (3):
      zd1211rw: port to mac80211
      zd1211rw: Add ID for Trendnet TEW-429UB A
      zd1211rw: add copyright notices

David Acker (1):
      Fix e100 on systems that have cache incoherent DMA

David Miller (1):
      NET: ns83820.c remove fastcall macro

David Woodhouse (114):
      libertas: Fix memory leak of RX skbs
      libertas: Remove cmd_oid from struct cmd_ctrl_node
      libertas: Consolidate lbs_host_to_card_done() function.
      libertas: Don't claim to have checksummed incoming packets.
      libertas: Move SET_BOOT2_VER command to if_usb where it belongs
      libertas: Zero 'pdata_size' field in cmd_ctrl_node reliably.
      libertas: Byteswap cmdptr->size in lbs_cmd()
      libertas: Use lbs_cmd() for setting Boot2 version
      libertas: Remove SET_BOOT2_VER support from the Big Switch Statement.
      libertas: Fix endianness in boot2_version handling.
      libertas: when usb_submit_usb fails, include the error code in the printk
      libertas: Switch to using a callback function pointer for commands
      libertas: Don't set IW_ENCODE_NOKEY when returning WEP keys.
      libertas: Fix up error handling in lbs_setuserscan()
      libertas: kill adapter->nr_cmd_pending
      libertas: switch lbs_cmd() to take a callback function pointer
      libertas: clean up lbs_thread() to make it slightly more readable
      libertas: fix lbs_rtap attribute in sysfs
      libertas: kill TxLockFlag
      libertas: kill struct lbs_adapter
      libertas: use lbs_host_to_card_done() in lbs_tx_timeout()
      libertas: cope with device which already has firmware loaded
      libertas: stop debugfs code looking at cmdpendingq
      libertas: kill internal tx queue for PS mode
      libertas: kill SendSinglePacket() function.
      libertas: move lbs_hard_start_xmit() into tx.c
      libertas: kill lbs_process_tx() by merging it into lbs_hard_start_xmit()
      libertas: clean up lbs_hard_start_xmit()
      libertas: kill lbs_pre_start_xmit(), lib_mesh_pre_start_xmit()
      libertas: stop using ieee80211 for radiotap device
      libertas: set dev_addr on rtap device
      libertas: TX packet is radiotap iff it comes from rtap_dev
      libertas: free successfully transmitted skbs again
      libertas: refactor the 'should I sleep?' decision in lbs_thread()
      libertas: Move actual transmission to main thread
      libertas: remove unreachable code from process_rxed_802_11_packet()
      libertas: fix error cases in lbs_process_rxed_802_11_packet()
      libertas: kill lbs_upload_tx_packet()
      libertas: kill (IS,SET,UNSET)_MESH_FRAME.
      libertas: add opaque extra argument to cmd callback function
      libertas: clean up lbs_interrupt()
      libertas: remove pre_open_check()
      libertas: make rtap and normal modes mutually exclusive, clean up open/stop
      libertas: improve reliability of firmware reloading on USB
      libertas: switch to a waitqueue and timer for handling USB firmware load
      libertas: don't run thread while firmware not yet ready
      libertas: switch USB cardp->priv to 'struct lbs_private *' and resulting fix
      libertas: move removal of lbs_rtap file to lbs_stop_card()
      libertas: wait for 'firmware ready' event from firmware after loading
      libertas: fix debug output in lbs_cmd_copyback() function.
      libertas: convert CMD_MESH_ACCESS to a direct command
      libertas: remove casts from lbs_cmd() and lbs_cmd_with_response() macros
      libertas: make some more functions static
      libertas: fix sparse endianness warnings in scan.c
      libertas: add lbs_mesh sysfs attribute for enabling mesh
      libertas: kill references to mesh autostart
      libertas: kill rx_urb_recall and eth_dev members of struct usb_card_rec
      libertas: whitespace cleanup in host.h
      libertas: allow get/set SSID on mshX device
      libertas: allow setting channel on mshX device
      libertas: add missing newline on debug message
      libertas: disable mesh temporarily while setting eth channel/assoc
      libertas: add debugging output to lbs_mesh_config()
      libertas: be more careful about command responses matching cur_cmd
      libertas: add missing newlines in debugging statements
      libertas: slight cleanup of netif queue stop/wake
      libertas: add lbs_host_sleep_cfg() command function
      libertas: switch lbs_cmd() to take a _pointer_ to the command structure
      libertas: make worker thread not freezable
      libertas: implement suspend and resume core methods
      libertas: implement suspend/resume for USB devices
      libertas: add ethtool support for wake-on-lan configuration
      libertas: make lbs_update_channel() function non-static
      libertas: cope with both old and new mesh TLV values
      libertas: pass channel argument directly to lbs_mesh_config()
      libertas: use spin_is_locked() instead of spin_trylock() in lbs_interrupt()
      libertas: don't exit worker thread until kthread_stop() is called
      libertas: stop attempting to reset devices on unload
      libertas: clean up if_usb driver
      libertas: kill whitespace at end of lines
      libertas: kill unused wait_option field in struct cmd_ctrl_node
      libertas: rename and clean up DownloadcommandToStation
      libertas: don't use __lbs_cmd() with empty callback in if_usb.c
      libertas: remove some pointless checks for cmdnode buffer being present
      libertas: introduce and use lbs_complete_command() for command completion
      libertas: don't re-initialise cmdnode when taking it off the free queue
      libertas: kill cleanup_cmdnode()
      libertas: let __lbs_cmd() free its own cmdnode
      libertas: kill pdata_buf member of struct cmd_ctrl_node
      libertas: store command result in cmdnode instead of priv->cur_cmd_retcode
      libertas: add __lbs_cmd_async() for asynchronous command submission
      libertas: ensure response buffer size is always set for lbs_cmd_with_response
      libertas: handle command timeout in main thread instead of directly in timer
      libertas: kill 'addtail' argument to lbs_queue_cmd() and make it static
      libertas: fix return from lbs_update_channel()
      libertas: add SLEEP_PERIOD and FW_WAKE_METHOD command definitions
      libertas: fix buffer handling of PS_MODE commands and responses
      libertas: don't clear priv->dnld_sent after sending sleep confirm
      libertas: handle HOST_AWAKE event by sending WAKEUP_CONFIRM command
      libertas: allow for PS mode to be disabled when firmware doesn't support it
      libertas: Check for PS mode support on USB devices
      libertas: reduce explicit references to priv->cur_cmd->cmdbuf
      libertas: use priv->upld_buf for command responses
      libertas: discard DEFER responses to commands; let the timeout trigger
      libertas: make lbs_submit_command always 'succeed' and set command timer
      libertas: submit RSSI command on tx timeout, to check whether module is dead
      libertas: convert RADIO_CONTROL to a direct command
      libertas: convert INACTIVITY_TIMEOUT to a direct command
      libertas: convert SLEEP_PARAMS to a direct command
      libertas: convert SET_WEP to a direct command
      libertas: convert ENABLE_RSN to a direct command
      libertas: change inference about buffer size in lbs_cmd()
      libertas: convert SUBSCRIBE_EVENT to a direct command
      libertas: remove check for driver_lock in lbs_interrupt()

Divy Le Ray (11):
      cxgb3 - fix MSI-X failure path
      cxgb3 - Use wild card for PCI subdevice ID match
      cxgb3 - Fix resources release.
      cxgb3 - Add EEH support
      cxgb3 - FW upgrade
      cxgb3 - fix interaction with pktgen
      cxgb3 - sysfs methods clean up
      cxgb3 - HW set up updates
      cxgb3 - Fix I/O synchronization
      cxgb3 - parity initialization for T3C adapters.
      cxgb3 - Fix EEH, missing softirq blocking

Dmitry Torokhov (1):
      P54: use temporary variables to reduce size of generated code

Eliezer Tamir (1):
      add bnx2x driver for BCM57710

Emmanuel Grumbach (3):
      iwlwifi-ht: move 4965 SCD registers to iwl-prph.h
      iwlwifi: move 3945 SCD registers to iwl-prph.h
      iwlwifi: add 5965 SCD registers to iwl-prph.h

Florian Fainelli (1):
      Add me as maintainer of the RDC r6040 driver

Francois Romieu (9):
      sundance: SIOCDEVPRIVATE pollution
      r6040: compile error
      r6040: remove virt_to_bus
      r6040: erroneous dev->priv
      r6040: cleanups
      sis190: add cmos ram access code for the SiS19x/968 chipset pair
      sis190: remove duplicate INIT_WORK
      sis190: mdio operation failure is not correctly detected
      sis190: scheduling while atomic error

Frank Lichtenheld (2):
      b43: silence a bogus gcc warning
      b43legacy: properly fix a bogus gcc warning

Grant Likely (1):
      gianfar driver: eliminate compiler warnings and unnecessary macros

Holger Schurig (18):
      libertas: move wlan_*_association_work from header to c file
      libertas: move to uniform lbs_/LBS_ namespace
      libertas: clean up association debug messages
      libertas: remove arbitrary typedefs
      libertas: rework event subscription
      libertas: tweak association debug output
      libertas: tweak tx path debugging
      libertas: remove numprobes
      libertas: remove user-specified channel list
      libertas: less eventcause shifts
      libertas: remove cmd_ctrl_node->cmdflags
      libertas: remove cmd_ctrl_node->status
      libertas: make more functions static
      libertas: handy function to call firmware commands
      libertas: fix data packet size errors
      libertas: implement new scanning logic
      libertas: endianness fixes
      libertas: fix use-after-free error

Ian Schram (5):
      iwlwifi: fix various spelling and typos
      iwlwifi: rename iwl_eeprom_aqcuire_semaphore to _acquire_
      iwlwifi: Two comments in iwl-3945.c were longer than 80 columns
      iwlwifi: Beautify by removing superfluous newlines and code
      iwlwifi: remove late null-check and duplicate bug_on

Ivo van Doorn (25):
      rt2x00: Move quality statistics into seperate structure
      rt2x00: Use enum defines
      rt2x00: Correctly translate mac80211 antenna setup to rt2x00
      rt2x00: SW diversity should default to antenna B
      rt2x00: Remove rt2x00_clear_link
      rt2x00: Implement SW diversity
      rt2x00: Cleanup if-statements
      rt2x00: Release rt2x00 2.0.11
      rt2x00: Disable RX when switching antenna
      rt2x00: Split rt61/rt73 antenna selection into RX and TX antenna
      rt2x00: Input-polldev requires input device
      rt2x00: Detect initial rfkill state on register
      rt2x00: Remove unused variables
      rt2x00: Remove data_desc structure
      rt2x00: Release rt2x00 2.0.12
      rt2x00: Move duplicate code into rt2x00pci_txdone()
      rt2x00: Replace DRV_NAME with KBUILD_MODNAME
      rt2x00: Extend PLCP descriptor definition for rt2400pci
      rt2x00: Move register value/offset files into new folder
      rt2x00: Add chipset version to chipset debugfs entry
      rt2x00: Add skb descriptor
      rt2x00: Add TX/RX frame dumping facility
      rt2x00: Use IEEE80211_IF_TYPE_INVALID directly
      rt2x00: Cleanup rfkill
      rt2x00: Release rt2x00 2.0.13

Jay Vosburgh (1):
      [BONDING]: Documentation update

Jeff Garzik (10):
      hamradio/scc: kill unnecessary use of 'irq' function arg
      [netdrvr] irq handler minor cleanups in several drivers
      [netdrvr] ibmlana: modularization cleanup
      [netdrvr] ibmlana: move away from legacy MCA API
      [netdrvr] netxen: checkpatch fixes (98% trim trailing whitespace)
      drivers/net/r6040: fix obvious problems (but more remain)
      wireless: checkpatch cleanups
      [netdrvr] checkpatch cleanups
      drivers/net/cxgb3: trim trailing whitespace
      wireless/iwl: fix namespace breakage

Jes Sorensen (1):
      iwlwifi: disable interrupts before calling request_irq

Joe Perches (9):
      [E1000]: Convert regtest macro's to functions
      [E1000E]: convert register test macros to functions
      drivers/net/chelsio: Add missing "space"
      drivers/net/cxgb3: Add missing "space"
      drivers/net/ixgb: Add missing "space"
      drivers/net/netxen: Add missing "space"
      drivers/net/wan: Add missing "space"
      drivers/net/sk98lin: Add missing "space"
      drivers/net: Add missing "space"

Johannes Berg (3):
      b43: include full 64-bit timestamp in monitor mode
      b43: include FCS in frames handed to mac80211
      b43legacy: include full 64-bit timestamp in monitor mode

John W. Linville (3):
      iwlwifi: remove redundant initialization of final_mode
      rt2x00: correct "skb_buff" typo
      iwlwifi: fix-up merge fall-out after namespace separation

Komuro (1):
      axnet_cs: use spin_lock_irqsave instead of spin_lock + disable_irq

Larry Finger (13):
      b43legacy: LED triggers support
      b43legacy: RF-kill support
      b43legacy: Use input-polldev for the rfkill switch
      b43legacy: Rewrite pwork locking
      ssb: Add new SPROM structure while keeping the old
      ssb: Convert to use of the new SPROM structure
      b44: Convert to use of the new SPROM structure
      b43: Convert to use of the new SPROM structure
      b43legacy: Convert to use of the new SPROM structure
      ssb: Remove the old, now unused, data structures
      b43: Changes to enable BCM4311 rev 02 with wireless core revision 13
      rt2x00: Remove redundant code in rfkill setup
      b43legacy: Fix rfkill radio LED

Lee Schermerhorn (1):
      bnx2x depends on ZLIB_INFLATE

Li Zefan (1):
      libertas: don't cast a pointer to pointer of

Matheos Worku (1):
      ixgb: enable sun hardware support for broadcom phy

Matthias Kaehlcke (2):
      Prism54: Convert mgmt_sem to the mutex API
      PLIP driver: convert the semaphore killed_timer_sem to completion

Mattias Nissler (6):
      rt2x00: Fix antenna selection.
      rt2x00: Rework rt61 antenna selection.
      rt2x00: Rework rt73 antenna selection
      rt2x00: Correctly set ACK bit in tx descriptors
      rt2x00: Allow rt61 to catch up after a missing tx report
      rt2x00: Only update rssi average approximation on receiving beacon frames.

Michael Buesch (6):
      b43legacy: Remove set_key callback
      b43: Dereference of wl->current_dev must be protected by wl->mutex
      b43: Use the retry limit parameters from mac80211
      b43: consistent naming for ieee80211_ops
      b43: Fix ofdmtab write regression
      b43: Fix for broken transmission

Miguel Botón (1):
      iwlwifi: remove redundant declaration of 'iwl3945_priv' and 'iwl4965_priv' structs

Mohamed Abbas (4):
      iwl4965: fix cannot find a suitable rate issue
      iwlwifi: enhance WPA authenication stability
      iwlwifi: fix ucode assertion for RX queue overrun
      iwlwifi: avoid firmware command sending if rfkill is enabled

Olof Johansson (13):
      pasemi_mac: RX/TX ring management cleanup
      pasemi_mac: Move register definitions to include/asm-powerpc
      pasemi: DMA engine management library
      pasemi_mac: Convert to new dma library
      pasemi_mac: performance tweaks
      pasemi_mac: Fix TX cleaning
      pasemi_mac: Improve RX interrupt mitigation
      pasemi_mac: Software-based LRO support
      pasemi_mac: SKB unmap optimization
      pasemi_mac: Remove SKB copy/recycle logic
      pasemi_mac: Print warning when not attaching to a PHY
      pasemi_mac: Don't enable RX/TX without a link (if possible)
      pasemi: export pasemi_dma_init()

Patrick McHardy (1):
      [E1000]: Secondary unicast address support

Pekka Enberg (8):
      ipg: remove old contact information
      ipg: remove boolean macros
      ipg: remove IPG_DEV_KFREE_SKB macro
      ipg: remove driver version
      ipg: remove commented out code
      ipg: remove some internal comments
      ipg: naming convention fixes
      ipg: fix checkpatch reported errors

Peter Korsgaard (1):
      dm9601: Consolidate common parts of dm_write_*_async

Ramkrishna Vepa (2):
      S2io: Fixes to enable multiple transmit fifo support
      S2io: Fixes to enable multiple transmit fifos

Reinette Chatre (3):
      MAINTAINERS: Add Reinette Chatre to iwlwifi & ipw2100/ipw2200
      iwlwifi: continue namespace changes - fix CONFIG variables
      iwlwifi: remove HT code from iwl-3945.h

Robert P. J. Day (1):
      pcmcia net: use roundup_pow_of_two() macro instead of grotesque loop

Roel Kluin (1):
      wireless: fix '!x & y' typo's

Ron Rindjunsky (8):
      iwlwifi: 802.11n remove unnecessary config dependency
      iwlwifi: 802.11n new framework structures preperation
      iwlwifi: 802.11n configuring hw_mode parameters to support HT in A/G
      iwlwifi: 802.11n handling probe request HT IE
      iwlwifi: 802.11n comply HT self configuration flow with mac80211 framework
      iwlwifi: 802.11n comply HT add station flow with mac80211 framework
      iwlwifi: 802.11n comply HT rate scaling flows with mac80211 framework
      iwlwifi: 802.11n add support to 8K A-MSDU Rx frames

Sreenivasa Honnur (1):
      [S2IO]: Support for add/delete/store/restore ethernet addresses

Stefan Roese (1):
      net: NEWEMAC: Fix problem with mtu > 4080 on non TAH equipped 4xx PPC's

Stefano Brivio (8):
      b43legacy: use the retry limits provided by mac80211
      b43legacy: use a consistent naming scheme for the ops
      b43legacy: rewrite and fix rfkill initialization
      b43: rewrite A PHY initialization
      b43/b43legacy: fix my copyright notices
      b43legacy: fix kconfig dependecies for rfkill and leds
      b43: reinit on too many PHY TX errors
      b43legacy: reinit on too many PHY TX errors

Sten Wang (1):
      [NET]: Add support for the RDC R6040 Fast Ethernet controller

Stephen Hemminger (4):
      sky2: align IP header on Rx if possible
      sky2: rx allocation threshold change
      sky2: support for Yukon Supreme
      sky2: version 1.21

Thomas Bogendoerfer (3):
      SGISEEQ: use cached memory access to make driver work on IP28
      SGISEEQ: use cached memory access to make driver work on IP28
      SGISEEQ: fix oops when doing ifconfig down; ifconfig up

Tomas Winkler (14):
      iwlwifi: Add erp_ie_changed hanlder
      iwlwifi: renaming last_used and first_empty
      iwlwifi: rs-4965 fix return values
      iwlwifi: add TGN flag to qos parameters
      iwlwifi: remove cck_flag from iwl_driver_hw_info
      iwlwifi: remove cck_power_index_compensation
      iwlwifi: using PCI_DEVICE macro
      iwlwifi: replace restricted_reg with prph
      iwlwifi: rename restricted_mem to targ_mem
      iwlwifi: replacing wording restricted to nic access in iwl-io
      iwlwifi: Renames struct fw_image_desc to struct fw_desc
      iwlwifi: Support for uCode without init and bsm section
      iwlwifi: fix compliation warnings
      iwlwifi: add missing comments

Zhu Yi (9):
      iwlwifi: Update iwlwifi version stamp to 1.1.18
      iwlwifi: Update iwlwifi version stamp to 1.1.19
      iwlwifi: replace 0x8086 with PCI_VENDOR_ID_INTEL
      remove unused iwl4965_init_hw_rates function
      iwl4965: fix rxon flags set to wrong value for A mode in .erp_ie_changed
      iwlwifi: update version number to 1.2.22
      iwlwifi: cache mac80211 conf setting during a hardware scan
      iwlwifi: proper monitor support
      iwlwifi: skip mac80211 conf during a hardware scan and replay it afterwards

mabbas (2):
      iwlwifi: accept up to 4K frame size on Rx side to fit A-MSDU frame
      iwl4965: exclude 60M rate from probe request

 Documentation/networking/bonding.txt             |  204 
 MAINTAINERS                                      |   16 
 arch/ia64/hp/sim/simeth.c                        |    5 
 arch/powerpc/platforms/pasemi/Makefile           |    2 
 arch/powerpc/platforms/pasemi/dma_lib.c          |  488 +
 arch/powerpc/platforms/pasemi/pasemi.h           |    1 
 arch/ppc/8260_io/enet.c                          |    4 
 arch/ppc/8260_io/fcc_enet.c                      |    4 
 drivers/net/3c501.c                              |  232 
 drivers/net/3c507.c                              |   15 
 drivers/net/3c515.c                              |    2 
 drivers/net/7990.c                               |    8 
 drivers/net/Kconfig                              |   43 
 drivers/net/Makefile                             |    3 
 drivers/net/a2065.c                              |   10 
 drivers/net/amd8111e.c                           |    4 
 drivers/net/at1700.c                             |    5 
 drivers/net/b44.c                                |    8 
 drivers/net/bnx2.c                               |    4 
 drivers/net/bnx2x.c                              | 9064 +++++++++++++++++++++++
 drivers/net/bnx2x.h                              | 1071 ++
 drivers/net/bnx2x_fw_defs.h                      |  198 
 drivers/net/bnx2x_hsi.h                          | 2176 +++++
 drivers/net/bnx2x_init.h                         |  564 +
 drivers/net/bnx2x_init_values.h                  | 6368 ++++++++++++++++
 drivers/net/bnx2x_reg.h                          | 4394 +++++++++++
 drivers/net/cassini.c                            |    4 
 drivers/net/chelsio/cxgb2.c                      |    2 
 drivers/net/chelsio/espi.c                       |    2 
 drivers/net/chelsio/espi.h                       |    1 
 drivers/net/chelsio/sge.c                        |    4 
 drivers/net/chelsio/sge.h                        |    2 
 drivers/net/cpmac.c                              |    3 
 drivers/net/cxgb3/adapter.h                      |    1 
 drivers/net/cxgb3/cxgb3_main.c                   |  253 
 drivers/net/cxgb3/cxgb3_offload.c                |   19 
 drivers/net/cxgb3/firmware_exports.h             |   20 
 drivers/net/cxgb3/regs.h                         |  270 
 drivers/net/cxgb3/sge.c                          |  120 
 drivers/net/cxgb3/t3_hw.c                        |  167 
 drivers/net/cxgb3/version.h                      |    4 
 drivers/net/cxgb3/xgmac.c                        |   10 
 drivers/net/declance.c                           |    6 
 drivers/net/e100.c                               |  204 
 drivers/net/e1000/e1000_ethtool.c                |   86 
 drivers/net/e1000/e1000_hw.h                     |   88 
 drivers/net/e1000/e1000_main.c                   |  195 
 drivers/net/e1000e/82571.c                       |   11 
 drivers/net/e1000e/defines.h                     |    1 
 drivers/net/e1000e/e1000.h                       |    1 
 drivers/net/e1000e/ethtool.c                     |   89 
 drivers/net/e1000e/hw.h                          |   86 
 drivers/net/e1000e/lib.c                         |   39 
 drivers/net/e1000e/netdev.c                      |   61 
 drivers/net/e1000e/param.c                       |    7 
 drivers/net/e1000e/phy.c                         |    3 
 drivers/net/eepro100.c                           |   92 
 drivers/net/eexpress.c                           |   12 
 drivers/net/enc28j60.c                           | 1600 ++++
 drivers/net/enc28j60_hw.h                        |  309 
 drivers/net/forcedeth.c                          |   46 
 drivers/net/gianfar_sysfs.c                      |   50 
 drivers/net/hamradio/6pack.c                     |    2 
 drivers/net/hamradio/mkiss.c                     |    2 
 drivers/net/hamradio/scc.c                       |    8 
 drivers/net/hp100.c                              |    2 
 drivers/net/ibm_newemac/core.c                   |   14 
 drivers/net/ibmlana.c                            |  192 
 drivers/net/ipg.c                                |  286 
 drivers/net/ipg.h                                |   99 
 drivers/net/irda/irport.h                        |    2 
 drivers/net/irda/smsc-ircc2.c                    |   17 
 drivers/net/irda/via-ircc.c                      |   12 
 drivers/net/ixgb/ixgb_hw.c                       |   82 
 drivers/net/ixgb/ixgb_hw.h                       |   25 
 drivers/net/ixgb/ixgb_ids.h                      |    4 
 drivers/net/ixgb/ixgb_main.c                     |   10 
 drivers/net/ixgbe/ixgbe.h                        |    8 
 drivers/net/ixgbe/ixgbe_82598.c                  |  156 
 drivers/net/ixgbe/ixgbe_common.c                 |   12 
 drivers/net/ixgbe/ixgbe_ethtool.c                |    3 
 drivers/net/ixgbe/ixgbe_main.c                   |   29 
 drivers/net/ixgbe/ixgbe_phy.h                    |    1 
 drivers/net/ixgbe/ixgbe_type.h                   |   65 
 drivers/net/lp486e.c                             |    9 
 drivers/net/mac89x0.c                            |    2 
 drivers/net/mace.c                               |   10 
 drivers/net/myri10ge/myri10ge.c                  |    2 
 drivers/net/netxen/netxen_nic.h                  |   30 
 drivers/net/netxen/netxen_nic_ethtool.c          |   28 
 drivers/net/netxen/netxen_nic_hw.c               |   31 
 drivers/net/netxen/netxen_nic_hw.h               |   18 
 drivers/net/netxen/netxen_nic_init.c             |   98 
 drivers/net/netxen/netxen_nic_isr.c              |   15 
 drivers/net/netxen/netxen_nic_main.c             |   41 
 drivers/net/netxen/netxen_nic_niu.c              |   64 
 drivers/net/netxen/netxen_nic_phan_reg.h         |   15 
 drivers/net/ns83820.c                            |    9 
 drivers/net/pasemi_mac.c                         |  934 +-
 drivers/net/pasemi_mac.h                         |  365 
 drivers/net/pcmcia/axnet_cs.c                    |   16 
 drivers/net/pcmcia/fmvj18x_cs.c                  |    7 
 drivers/net/pcmcia/pcnet_cs.c                    |    4 
 drivers/net/pcnet32.c                            |    2 
 drivers/net/plip.c                               |   10 
 drivers/net/pppol2tp.c                           |    2 
 drivers/net/qla3xxx.c                            |   46 
 drivers/net/qla3xxx.h                            |   55 
 drivers/net/r6040.c                              | 1096 ++
 drivers/net/rrunner.c                            |    2 
 drivers/net/s2io-regs.h                          |   16 
 drivers/net/s2io.c                               |  536 -
 drivers/net/s2io.h                               |   26 
 drivers/net/sgiseeq.c                            |  245 
 drivers/net/sis190.c                             |   21 
 drivers/net/sis900.c                             |    6 
 drivers/net/sk98lin/skgemib.c                    |    2 
 drivers/net/sk98lin/skgepnmi.c                   |   14 
 drivers/net/sk98lin/skgesirq.c                   |    2 
 drivers/net/skfp/hwmtm.c                         |    4 
 drivers/net/skfp/smt.c                           |    2 
 drivers/net/sky2.c                               |  117 
 drivers/net/sky2.h                               |   13 
 drivers/net/slhc.c                               |   12 
 drivers/net/slip.c                               |  367 
 drivers/net/smc9194.c                            |    2 
 drivers/net/sundance.c                           |   26 
 drivers/net/sungem.c                             |   10 
 drivers/net/sungem.h                             |    8 
 drivers/net/sunhme.c                             |   51 
 drivers/net/sunhme.h                             |   12 
 drivers/net/tehuti.c                             |   10 
 drivers/net/tg3.c                                |    2 
 drivers/net/tokenring/olympic.c                  |   10 
 drivers/net/tokenring/olympic.h                  |   18 
 drivers/net/tokenring/smctr.c                    |    4 
 drivers/net/tulip/de4x5.c                        |    4 
 drivers/net/tun.c                                |    2 
 drivers/net/ucc_geth.c                           |    3 
 drivers/net/usb/dm9601.c                         |   53 
 drivers/net/via-rhine.c                          |    2 
 drivers/net/wan/farsync.c                        |   11 
 drivers/net/wan/hdlc_ppp.c                       |    2 
 drivers/net/wan/hdlc_raw_eth.c                   |    2 
 drivers/net/wan/lmc/lmc_main.c                   |    6 
 drivers/net/wan/lmc/lmc_media.c                  |    8 
 drivers/net/wan/lmc/lmc_proto.c                  |    2 
 drivers/net/wan/lmc/lmc_proto.h                  |    2 
 drivers/net/wan/pc300_drv.c                      |    8 
 drivers/net/wan/pc300_tty.c                      |   12 
 drivers/net/wan/sbni.c                           |    4 
 drivers/net/wan/sdla.c                           |    5 
 drivers/net/wan/wanxl.c                          |    4 
 drivers/net/wireless/Makefile                    |    3 
 drivers/net/wireless/airo.c                      |   10 
 drivers/net/wireless/atmel.c                     |    3 
 drivers/net/wireless/b43/Makefile                |    1 
 drivers/net/wireless/b43/b43.h                   |   17 
 drivers/net/wireless/b43/debugfs.c               |    2 
 drivers/net/wireless/b43/dma.c                   |   32 
 drivers/net/wireless/b43/leds.c                  |   10 
 drivers/net/wireless/b43/lo.c                    |    8 
 drivers/net/wireless/b43/main.c                  |  219 
 drivers/net/wireless/b43/main.h                  |    2 
 drivers/net/wireless/b43/phy.c                   |  672 -
 drivers/net/wireless/b43/phy.h                   |   24 
 drivers/net/wireless/b43/tables.c                |  112 
 drivers/net/wireless/b43/tables.h                |   12 
 drivers/net/wireless/b43/wa.c                    |  674 +
 drivers/net/wireless/b43/wa.h                    |    7 
 drivers/net/wireless/b43/xmit.c                  |    8 
 drivers/net/wireless/b43legacy/Kconfig           |   16 
 drivers/net/wireless/b43legacy/Makefile          |   29 
 drivers/net/wireless/b43legacy/b43legacy.h       |   18 
 drivers/net/wireless/b43legacy/debugfs.c         |    2 
 drivers/net/wireless/b43legacy/ilt.c             |    2 
 drivers/net/wireless/b43legacy/leds.c            |  417 -
 drivers/net/wireless/b43legacy/leds.h            |   61 
 drivers/net/wireless/b43legacy/main.c            |  380 
 drivers/net/wireless/b43legacy/main.h            |    2 
 drivers/net/wireless/b43legacy/phy.c             |   40 
 drivers/net/wireless/b43legacy/phy.h             |    2 
 drivers/net/wireless/b43legacy/radio.c           |   29 
 drivers/net/wireless/b43legacy/radio.h           |    4 
 drivers/net/wireless/b43legacy/rfkill.c          |  204 
 drivers/net/wireless/b43legacy/rfkill.h          |   59 
 drivers/net/wireless/b43legacy/xmit.c            |    7 
 drivers/net/wireless/hostap/hostap_hw.c          |    2 
 drivers/net/wireless/ipw2100.c                   |    3 
 drivers/net/wireless/iwlwifi/Kconfig             |  164 
 drivers/net/wireless/iwlwifi/iwl-3945-commands.h | 1639 ++++
 drivers/net/wireless/iwlwifi/iwl-3945-debug.h    |  152 
 drivers/net/wireless/iwlwifi/iwl-3945-hw.h       |  616 +
 drivers/net/wireless/iwlwifi/iwl-3945-io.h       |  431 +
 drivers/net/wireless/iwlwifi/iwl-3945-rs.c       |  146 
 drivers/net/wireless/iwlwifi/iwl-3945-rs.h       |   41 
 drivers/net/wireless/iwlwifi/iwl-3945.c          |  715 +
 drivers/net/wireless/iwlwifi/iwl-3945.h          |  950 ++
 drivers/net/wireless/iwlwifi/iwl-4965-commands.h | 2562 ++++++
 drivers/net/wireless/iwlwifi/iwl-4965-debug.h    |  152 
 drivers/net/wireless/iwlwifi/iwl-4965-hw.h       | 2062 ++++-
 drivers/net/wireless/iwlwifi/iwl-4965-io.h       |  431 +
 drivers/net/wireless/iwlwifi/iwl-4965-rs.c       |  984 +-
 drivers/net/wireless/iwlwifi/iwl-4965-rs.h       |   91 
 drivers/net/wireless/iwlwifi/iwl-4965.c          | 1387 ++-
 drivers/net/wireless/iwlwifi/iwl-4965.h          | 1192 ++-
 drivers/net/wireless/iwlwifi/iwl-channel.h       |  161 
 drivers/net/wireless/iwlwifi/iwl-commands.h      | 1734 ----
 drivers/net/wireless/iwlwifi/iwl-debug.h         |  152 
 drivers/net/wireless/iwlwifi/iwl-eeprom.h        |  336 
 drivers/net/wireless/iwlwifi/iwl-hw.h            |  537 -
 drivers/net/wireless/iwlwifi/iwl-io.h            |  470 -
 drivers/net/wireless/iwlwifi/iwl-priv.h          |  308 
 drivers/net/wireless/iwlwifi/iwl-prph.h          |   61 
 drivers/net/wireless/iwlwifi/iwl3945-base.c      | 3016 +++----
 drivers/net/wireless/iwlwifi/iwl4965-base.c      | 3566 ++++-----
 drivers/net/wireless/iwlwifi/iwlwifi.h           |  708 -
 drivers/net/wireless/libertas/11d.c              |  154 
 drivers/net/wireless/libertas/11d.h              |   26 
 drivers/net/wireless/libertas/README             |   40 
 drivers/net/wireless/libertas/assoc.c            |  458 -
 drivers/net/wireless/libertas/assoc.h            |   32 
 drivers/net/wireless/libertas/cmd.c              | 1396 ++-
 drivers/net/wireless/libertas/cmd.h              |   61 
 drivers/net/wireless/libertas/cmdresp.c          |  662 -
 drivers/net/wireless/libertas/debugfs.c          | 1492 ---
 drivers/net/wireless/libertas/debugfs.h          |   12 
 drivers/net/wireless/libertas/decl.h             |  102 
 drivers/net/wireless/libertas/defs.h             |   67 
 drivers/net/wireless/libertas/dev.h              |  176 
 drivers/net/wireless/libertas/ethtool.c          |  114 
 drivers/net/wireless/libertas/host.h             |  392 
 drivers/net/wireless/libertas/hostcmd.h          |  143 
 drivers/net/wireless/libertas/if_cs.c            |   88 
 drivers/net/wireless/libertas/if_sdio.c          |   88 
 drivers/net/wireless/libertas/if_sdio.h          |    4 
 drivers/net/wireless/libertas/if_usb.c           |  726 -
 drivers/net/wireless/libertas/if_usb.h           |  108 
 drivers/net/wireless/libertas/join.c             |  313 
 drivers/net/wireless/libertas/join.h             |   38 
 drivers/net/wireless/libertas/main.c             | 1330 +--
 drivers/net/wireless/libertas/rx.c               |  223 
 drivers/net/wireless/libertas/scan.c             | 1192 +--
 drivers/net/wireless/libertas/scan.h             |   94 
 drivers/net/wireless/libertas/tx.c               |  253 
 drivers/net/wireless/libertas/types.h            |   25 
 drivers/net/wireless/libertas/wext.c             |  867 +-
 drivers/net/wireless/libertas/wext.h             |   14 
 drivers/net/wireless/orinoco.c                   |  544 -
 drivers/net/wireless/orinoco.h                   |   12 
 drivers/net/wireless/p54common.c                 |    2 
 drivers/net/wireless/p54pci.c                    |   77 
 drivers/net/wireless/prism54/isl_ioctl.c         |    4 
 drivers/net/wireless/prism54/islpci_dev.c        |    2 
 drivers/net/wireless/prism54/islpci_dev.h        |    3 
 drivers/net/wireless/prism54/islpci_mgt.c        |    4 
 drivers/net/wireless/rt2x00/rt2400pci.c          |  173 
 drivers/net/wireless/rt2x00/rt2400pci.h          |   24 
 drivers/net/wireless/rt2x00/rt2500pci.c          |  141 
 drivers/net/wireless/rt2x00/rt2500pci.h          |    4 
 drivers/net/wireless/rt2x00/rt2500usb.c          |  206 
 drivers/net/wireless/rt2x00/rt2500usb.h          |   17 
 drivers/net/wireless/rt2x00/rt2x00.h             |  214 
 drivers/net/wireless/rt2x00/rt2x00config.c       |  100 
 drivers/net/wireless/rt2x00/rt2x00debug.c        |  240 
 drivers/net/wireless/rt2x00/rt2x00debug.h        |    4 
 drivers/net/wireless/rt2x00/rt2x00dev.c          |  301 
 drivers/net/wireless/rt2x00/rt2x00dump.h         |  121 
 drivers/net/wireless/rt2x00/rt2x00firmware.c     |    5 
 drivers/net/wireless/rt2x00/rt2x00lib.h          |    8 
 drivers/net/wireless/rt2x00/rt2x00mac.c          |    7 
 drivers/net/wireless/rt2x00/rt2x00pci.c          |   96 
 drivers/net/wireless/rt2x00/rt2x00pci.h          |   12 
 drivers/net/wireless/rt2x00/rt2x00rfkill.c       |   39 
 drivers/net/wireless/rt2x00/rt2x00ring.h         |   37 
 drivers/net/wireless/rt2x00/rt2x00usb.c          |   77 
 drivers/net/wireless/rt2x00/rt2x00usb.h          |   19 
 drivers/net/wireless/rt2x00/rt61pci.c            |  398 -
 drivers/net/wireless/rt2x00/rt61pci.h            |   14 
 drivers/net/wireless/rt2x00/rt73usb.c            |  232 
 drivers/net/wireless/rt2x00/rt73usb.h            |   14 
 drivers/net/wireless/rtl8187_rtl8225.c           |    8 
 drivers/net/wireless/wavelan.c                   |    2 
 drivers/net/wireless/wavelan_cs.c                |   10 
 drivers/net/wireless/zd1211rw/Kconfig            |    7 
 drivers/net/wireless/zd1211rw/Makefile           |    3 
 drivers/net/wireless/zd1211rw/zd_chip.c          |  126 
 drivers/net/wireless/zd1211rw/zd_chip.h          |   60 
 drivers/net/wireless/zd1211rw/zd_def.h           |    5 
 drivers/net/wireless/zd1211rw/zd_ieee80211.c     |  196 
 drivers/net/wireless/zd1211rw/zd_ieee80211.h     |   49 
 drivers/net/wireless/zd1211rw/zd_mac.c           | 1541 +--
 drivers/net/wireless/zd1211rw/zd_mac.h           |  117 
 drivers/net/wireless/zd1211rw/zd_netdev.c        |  264 
 drivers/net/wireless/zd1211rw/zd_netdev.h        |   45 
 drivers/net/wireless/zd1211rw/zd_rf.c            |    5 
 drivers/net/wireless/zd1211rw/zd_rf.h            |    5 
 drivers/net/wireless/zd1211rw/zd_rf_al2230.c     |    5 
 drivers/net/wireless/zd1211rw/zd_rf_al7230b.c    |    5 
 drivers/net/wireless/zd1211rw/zd_rf_rf2959.c     |    5 
 drivers/net/wireless/zd1211rw/zd_rf_uw2453.c     |    7 
 drivers/net/wireless/zd1211rw/zd_usb.c           |  289 
 drivers/net/wireless/zd1211rw/zd_usb.h           |   36 
 drivers/net/xen-netfront.c                       |    2 
 drivers/ssb/b43_pci_bridge.c                     |    1 
 drivers/ssb/main.c                               |   10 
 drivers/ssb/pci.c                                |  221 
 include/asm-powerpc/pasemi_dma.h                 |  467 +
 include/linux/if_frad.h                          |    2 
 include/linux/if_tun.h                           |    4 
 include/linux/pci_ids.h                          |    3 
 include/linux/ssb/ssb.h                          |   71 
 include/linux/ssb/ssb_regs.h                     |   59 
 net/ieee80211/ieee80211_wx.c                     |    2 
 314 files changed, 57148 insertions(+), 22551 deletions(-)

^ permalink raw reply

* Re: [patch] add net_device_stats support to ethtool
From: Jeff Garzik @ 2008-01-18 20:14 UTC (permalink / raw)
  To: Dan Nicolaescu; +Cc: netdev
In-Reply-To: <200801161529.m0GFTfYR005096@sallyv1.ics.uci.edu>

Dan Nicolaescu wrote:
> Hi,
> 
> I have posted this patch in the past with absolutely no reply.
> I would appreciate some sort of feedback of the form 
> interested/not interested.  Should I just drop it?
> 
> "ethtool -S" only supports devices that have custom code written to
> print the stats. 

No -- more specifically, ethtool is for NIC-specific statistics that do 
not appear elsewhere.

net_device_stats already appear elsewhere, so it's redundant to add it 
to ethtool.  Just duplicates the same functionality elsewhere.

	Jeff




^ permalink raw reply

* Re: [PATCH] ne2k: add minimal ethtool setting support
From: Jeff Garzik @ 2008-01-18 20:04 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Paul Gortmaker, netdev
In-Reply-To: <20080115154805.69150f76@deepthought>

Stephen Hemminger wrote:
> Add minimal ethtool settings support for ne2k driver. This is needed
> for KVM/QEMU environment where ne2k seems to be the simplest stupid
> hardware used.
> 
> Signed-off-by: Stephen Hemminger <stephen.hemminger@vyatta.com>
> 
> --- a/drivers/net/ne2k-pci.c	2008-01-15 11:21:02.000000000 -0800
> +++ b/drivers/net/ne2k-pci.c	2008-01-15 15:43:17.000000000 -0800
> @@ -634,8 +634,21 @@ static void ne2k_pci_get_drvinfo(struct 
>  	strcpy(info->bus_info, pci_name(pci_dev));
>  }
>  
> +static int ne2k_pci_get_settings(struct net_device *dev,
> +				 struct ethtool_cmd *cmd)
> +{
> +	cmd->speed		= SPEED_10;
> +	cmd->duplex		= (ei_status.ne2k_flags & FORCE_FDX)
> +				   ? DUPLEX_FULL : DUPLEX_HALF;
> +	cmd->port		= PORT_TP;
> +	cmd->transceiver	= XCVR_INTERNAL;
> +	cmd->autoneg		= AUTONEG_DISABLE;
> +	return 0;
> +}

It's a little bit /too/ minimal...  the speed is wrong for a large swath 
of 10/100 ne2k chips...

	Jeff




^ permalink raw reply

* Re: [PATCH net-2.6.25]  New driver "sfc" for Solarstorm SFC4000 controller - 5th attempt
From: Jeff Garzik @ 2008-01-18 20:03 UTC (permalink / raw)
  To: Robert Stonehouse; +Cc: netdev, linux-net-drivers, spope
In-Reply-To: <4790D1CD.80500@solarflare.com>

Robert Stonehouse wrote:
> This is a resubmission of a new driver for Solarflare network controllers.
> 
> The driver supports several types of PHY (10Gbase-T, XFP, CX4) on six
> different 10G and 1G boards. There is a driver for the network controller
> and an MTD driver that allows access to the flash/EEPROM.
> 
> NICs based on this controller are now available from SMC as part numbers
> SMC10GPCIe-XFP and SMC10GPCIe-10BT.
> 
> FYI the previous thread was:
>   http://marc.info/?l=linux-netdev&m=119999015817920&w=2
> 
> In previous postings we were asked to have the MTD part of this patch
> reviewed and we have responded to the comments received so far:
>   http://lists.infradead.org/pipermail/linux-mtd/2008-January/020355.html
> 
> Things that have changed since the last patch:
>  - Removed residual support for more than one port per controller.
>  - Moved LED control from PHY operations to board operations.
>  - Added support for controlling LRO through ethtool {get,set}_flags().
>  - Removed obsolete workaround for reservation of MSI-X tables by PCI core.
>  - Improved reliability of PHY loopback setting.
>  - Improved reliability of I2C operations.
>  - Fixed on-load self-test when using RSS.
>  - Simplified MTD driver following review on linux-mtd list.
>  - Removed some redundant information from struct efx_nic.
>  - hardware monitoring (for PHY link polling) is now a workqueue item
> rather than using a timer
>  - mac_lock becomes a mutex to support the previous item.
> 
> We would welcome more review of this code and would like to know if there
> are any objections to this being merged for 2.6.25.
> 
> 
> The patch (against net-2.6.25) is at:
>   https://support.solarflare.com/netdev/5/net-2.6.25-sfc-2.2.0045.patch
> 
> The new files may also be downloaded as a tarball:
>   https://support.solarflare.com/netdev/5/net-2.6.25-sfc-2.2.0045.tgz
> 
> And for verification there is:
>   https://support.solarflare.com/netdev/5/MD5SUMS

Please email to me in patch format...



^ permalink raw reply

* Re: [PATCH 3/4] sky2: support for Yukon Supreme
From: Jeff Garzik @ 2008-01-18 20:02 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Jeff Garzik, netdev
In-Reply-To: <20080111001550.913815702@linux-foundation.org>

applied 3-4



^ permalink raw reply

* Re: [PATCH] SGISEEQ: fix oops when doing ifconfig down; ifconfig up
From: Jeff Garzik @ 2008-01-18 20:01 UTC (permalink / raw)
  To: Thomas Bogendoerfer; +Cc: netdev, linux-mips, ralf, jgarzik
In-Reply-To: <20080112230847.1EB3EC2F35@solo.franken.de>

Thomas Bogendoerfer wrote:
> When doing init_ring checking whether a new skb needs to be allocated
> was wrong.
> 
> Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
> ---
> 
> This is a bug fix for the 2.6.25 driver.
> 
>  drivers/net/sgiseeq.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/net/sgiseeq.c b/drivers/net/sgiseeq.c
> index c69bb8b..78994ed 100644
> --- a/drivers/net/sgiseeq.c
> +++ b/drivers/net/sgiseeq.c
> @@ -193,7 +193,7 @@ static int seeq_init_ring(struct net_device *dev)
>  
>  	/* And now the rx ring. */
>  	for (i = 0; i < SEEQ_RX_BUFFERS; i++) {
> -		if (!sp->rx_desc[i].rdma.pbuf) {
> +		if (!sp->rx_desc[i].skb) {
>  			dma_addr_t dma_addr;
>  			struct sk_buff *skb = netdev_alloc_skb(dev, PKT_BUF_SZ);

applied

^ permalink raw reply

* Re: [PATCH][resend] add driver for enc28j60 ethernet chip
From: Jeff Garzik @ 2008-01-18 20:01 UTC (permalink / raw)
  To: Claudio Lanconelli; +Cc: netdev, Jeff Garzik, Stephen Hemminger
In-Reply-To: <478B32BC.6070206@eptar.com>

Claudio Lanconelli wrote:
> This patch add support for Microchip enc28j60 10Mbps Ethernet chip used 
> in embedded systems
> due to its cheap SPI interface.
> This 2nd version include changes from previous comments by Jeff and 
> Stephen,
> all but NAPI, see comments below at this regard.
> 
> I resend the patch because I didn't receive any feedback.
> 
> Changes to 1st version:
> - use mutex instead of semaphore
> - add carrier detect handling
> - add ethtool support
> - set_multicast_list when the interface is up using a workqueue
> - add restart_work to reset the chip in case of tx_timeout
> - removed kmalloc() for spi_transfer_buf (array defined in the priv struct)
> 
> Jeff Garzik wrote:
>>
>> comments:
>>
>> * Why do interrupt work in a kernel thread?  Your comment says you 
>> cannot, but does not explain.
> The enc28j60 is a SPI to Ethernet adapter, so we cannot access register 
> with simple in() out() instructions, but we need to use the SPI 
> subsystem. The spi_sync() basic operation to read/write a register is a 
> blocking operation, so can't be done in interrupt context.
> Since every basic operation like read interrupt flag register call 
> spi_sync() we need the work queue for almost everything.
> 
>>
>> * should use NAPI
>>
> For the reason I just explained I don't think NAPI is a viable way for 
> enc28j60.
> Furthermore enc28j60 is a 10Mb only device and probably don't suffer to 
> interrupt overload.
> 
> I'm waiting for any comments, please.

applied



^ permalink raw reply

* Re: [BUG] 2.6.24-rc8 broke warm reboots on ASUS P5B-E Plus
From: Mikael Pettersson @ 2008-01-18 20:00 UTC (permalink / raw)
  To: shemminger; +Cc: jeff, netdev, linux-kernel
In-Reply-To: <18319.54046.912597.487844@harpo.it.uu.se>

On Thu, 17 Jan 2008 23:13:50 +0100, Mikael Pettersson wrote:
 > The problematic machine has an Intel P965/ICH8R based ASUS P5B-E Plus
 > mainboard with a Core2Duo 6600 processor. Kernels up to and including
 > 2.6.24-rc7 work fine on it.
 > 
 > Kernel 2.6.24-rc8 boots Ok, but if I try to do a warm reboot after
 > having run 2.6.24-rc8, the BIOS hangs. The initial BIOS screen shows:
 > 
 > <BIOS version>
 > <CPU identification>
 > <lists hotkeys>
 > <identifies RAM>
 > <initialises USB controllers>
 > [here it always hangs after having run 2.6.24-rc8]
 > <RAM test>
 > <identifies ATA disks>
 > 
 > Pressing reset will not fix the hang, nor will powering the machine
 > down using the mainboard's power button. The only thing that works is
 > to switch the PSU off, wait a few seconds, switch the PSU on again,
 > and then press the mainboard's power button.
 > 
 > Both the 32-bit and 64-bit 2.6.24-rc8 x86 kernels cause this problem,
 > and it's 100% repeatable.
 > 
 > I'll try to do some rc7->rc8 bisecting tomorrow.

I've now narrowed it down to the following change in 2.6.24-rc7-git5:
84cd2dfb04d23a961c5f537baa243fa54d0987ac

>sky2: remove check for PCI wakeup setting from BIOS
>
>The driver checks status of PCI power management to mark
>default setting of Wake On Lan. On some systems this works, but often
>it reports a that WOL is disabled when it isn't.
>
>This patch gets rid of that check and just reports the wake on
>lan status based on the hardware capablity.
>
>Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
>Signed-off-by: Jeff Garzik <jeff@garzik.org>

Reverting this eliminates the abovementioned BIOS hang.

I added a debug printk to sky2_init_netdev(), and it showed:

sky2_init_netdev: wol == 0x0, (sky2_wol_supported(hw) & WAKE_MAGIC) == 0x20

That is, 2.6.24-rc7-git4 and earlier drivers would set sky2->wol to 0,
while 2.6.24-rc7-git5 and newer will set it to 0x20. A quick look through
sky2.c shows that this will affect HW programming in several places.

Please revert or fix before 2.6.24 final.

lspci -vvxxx included below.

/Mikael

02:00.0 Ethernet controller: Marvell Technology Group Ltd. Unknown device 4364 (rev 12)
        Subsystem: ASUSTeK Computer Inc. Unknown device 81f8
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 0, Cache Line Size 08
        Interrupt: pin A routed to IRQ 17
        Region 0: Memory at ff9fc000 (64-bit, non-prefetchable) [size=16K]
        Region 2: I/O ports at c800 [size=256]
        Expansion ROM at ff9c0000 [disabled] [size=128K]
        Capabilities: [48] Power Management version 3
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=1 PME-
        Capabilities: [50] Vital Product Data
        Capabilities: [5c] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable-
                Address: 0000000000000000  Data: 0000
        Capabilities: [e0] Express Legacy Endpoint IRQ 0
                Device: Supported: MaxPayload 128 bytes, PhantFunc 0, ExtTag-
                Device: Latency L0s unlimited, L1 unlimited
                Device: AtnBtn- AtnInd- PwrInd-
                Device: Errors: Correctable- Non-Fatal- Fatal- Unsupported-
                Device: RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
                Device: MaxPayload 128 bytes, MaxReadReq 512 bytes
                Link: Supported Speed 2.5Gb/s, Width x1, ASPM L0s L1, Port 0
                Link: Latency L0s <256ns, L1 unlimited
                Link: ASPM Disabled RCB 128 bytes CommClk+ ExtSynch-
                Link: Speed 2.5Gb/s, Width x1
00: ab 11 64 43 07 00 10 00 12 00 00 02 08 00 00 00
10: 04 c0 9f ff 00 00 00 00 01 c8 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 f8 81
30: 00 00 9c ff 48 00 00 00 00 00 00 00 0a 01 00 00
40: 00 00 f0 01 00 80 a0 01 01 50 03 fe 00 20 00 13
50: 03 5c 00 80 00 00 00 01 00 00 00 01 05 e0 80 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 70 00 00 00 00 00 00 82 a8 e8 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 10 00 11 00 c0 8f 00 00 00 20 19 00 11 ac 07 00
f0: 48 00 11 10 00 00 00 00 00 00 00 00 00 00 00 00

^ permalink raw reply

* Re: [patch v3] Documentation: add a guideline for hard_start_xmit method
From: Jeff Garzik @ 2008-01-18 19:42 UTC (permalink / raw)
  To: Matti Linnanvuori; +Cc: netdev
In-Reply-To: <492102.15643.qm@web52012.mail.re2.yahoo.com>

Matti Linnanvuori wrote:
> From: Matti Linnanvuori <mattilinnanvuori@yahoo.com>
> 
> Add a guideline not to modify SKBs.
> 
> Signed-off-by: Matti Linnanvuori <mattilinnanvuori@yahoo.com>
> 
> ---
> 
> --- a/Documentation/networking/driver.txt 2008-01-13 07:14:01.608291500 +0200
> +++ b/Documentation/networking/driver.txt 2008-01-15 16:16:14.636054000 +0200
> @@ -61,7 +61,10 @@ Transmit path guidelines:
>  2) Do not forget to update netdev->trans_start to jiffies after
>     each new tx packet is given to the hardware.
>  
> -3) Do not forget that once you return 0 from your hard_start_xmit
> +3) A hard_start_xmit method must not modify the shared parts of a
> +   cloned SKB.
> +
> +4) Do not forget that once you return 0 from your hard_start_xmit
>     method, it is your driver's responsibility to free up the SKB
>     and in some finite amount of time.

applied



^ permalink raw reply

* Re: [PATCH] atl1: fix frame length bug
From: Jeff Garzik @ 2008-01-18 19:42 UTC (permalink / raw)
  To: Jay Cliburn; +Cc: davem, csnook, david.harris, netdev
In-Reply-To: <1200362201-30987-1-git-send-email-jacliburn@bellsouth.net>

Jay Cliburn wrote:
> The driver sets up the hardware to accept a frame with max length
> equal to MTU + Ethernet header + FCS + VLAN tag, but we neglect to
> add the VLAN tag size to the ingress buffer.  When a VLAN-tagged
> frame arrives, the hardware passes it, but bad things happen
> because the buffer is too small.  This patch fixes that.
> 
> Thanks to David Harris for reporting the bug and testing the fix.
> 
> Tested-by: David Harris <david.harris@cpni-inc.com>
> Signed-off-by: Jay Cliburn <jacliburn@bellsouth.net>

applied



^ permalink raw reply

* Re: [Patch 2.6.24 1/1]S2io: Fixed synchronization between scheduling of napi with card reset and close
From: Jeff Garzik @ 2008-01-18 19:42 UTC (permalink / raw)
  To: Sreenivasa Honnur; +Cc: netdev, support
In-Reply-To: <Pine.GSO.4.10.10801142021110.20238-100000@guinness>

Sreenivasa Honnur wrote:
> - Fixed synchronization between scheduling of napi with card reset and close 
>   by moving the enabling and disabling of napi to card up and card down 
>   functions respectively instead of open and close.
> 
> Signed-off-by: Surjit Reang <surjit.reang@neterion.com>
> Signed-off-by: Ramkrishna Vepa <ram.vepa@neterion.com>

applied



^ permalink raw reply

* Re: Please pull 'fixes-jgarzik' branch of wireless-2.6
From: Jeff Garzik @ 2008-01-18 19:40 UTC (permalink / raw)
  To: John W. Linville; +Cc: netdev, linux-wireless
In-Reply-To: <20080116212752.GE3164@tuxdriver.com>

John W. Linville wrote:
> Jeff,
> 
> A few more fixes for 2.6.24...note that this branch is based
> on 2.6.24-rc8.
> 
> Thanks,
> 
> John
> 
> ---
> 
> Individual patches available here:
> 
> 	http://www.kernel.org/pub/linux/kernel/people/linville/wireless-2.6/fixes-jgarzik/
> 
> ---
> 
> The following changes since commit cbd9c883696da72b2b1f03f909dbacc04bbf8b58:
>   Linus Torvalds (1):
>         Linux 2.6.24-rc8
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git fixes-jgarzik
> 
> Ivo van Doorn (1):
>       rt2x00: Fix ieee80211 payload alignment
> 
> Marc Pignat (1):
>       wireless/libertas support for 88w8385 sdio older revision
> 
> Randy Dunlap (1):
>       hostap: section mismatch warning
> 
> Stefano Brivio (2):
>       ipw2200: fix typo in kerneldoc
>       b43: fix use-after-free rfkill bug
> 
>  drivers/net/wireless/b43/rfkill.c        |   11 ++++++-----
>  drivers/net/wireless/hostap/hostap_plx.c |    6 +++---
>  drivers/net/wireless/ipw2200.c           |    2 +-
>  drivers/net/wireless/libertas/if_sdio.c  |    4 ++++
>  drivers/net/wireless/rt2x00/rt2x00pci.c  |    2 +-
>  drivers/net/wireless/rt2x00/rt2x00usb.c  |   11 +++++++++--
>  6 files changed, 24 insertions(+), 12 deletions(-)

pulled



^ permalink raw reply

* Re: [PATCH] e1000e Kconfig: remove ref to nonexistant docs
From: Jeff Garzik @ 2008-01-18 19:40 UTC (permalink / raw)
  To: Jason Uhlenkott; +Cc: netdev, Auke Kok
In-Reply-To: <20080117070317.GA7922@aurum.uhlenkott.net>

Jason Uhlenkott wrote:
> There is no Documentation/networking/e1000e.txt.
> 
> Signed-off-by: Jason Uhlenkott <jasonuhl@jasonuhl.org>
> Cc: Auke Kok <auke-jan.h.kok@intel.com>
> ---
> 
> Index: linux/drivers/net/Kconfig
> ===================================================================
> --- linux.orig/drivers/net/Kconfig	2008-01-16 17:48:03.041103083 -0800
> +++ linux/drivers/net/Kconfig	2008-01-16 23:00:23.647430487 -0800
> @@ -1976,9 +1976,6 @@
>  
>  	  <http://support.intel.com>
>  
> -	  More specific information on configuring the driver is in
> -	  <file:Documentation/networking/e1000e.txt>.
> -
>  	  To compile this driver as a module, choose M here. The module
>  	  will be called e1000e.

applied



^ permalink raw reply

* Re: Pull request for 'ipg-fixes' branch (try #2)
From: Jeff Garzik @ 2008-01-18 19:39 UTC (permalink / raw)
  To: Francois Romieu
  Cc: David Miller, linux, Andrew Morton, netdev, Sorbica, Jesse,
	craig_rich
In-Reply-To: <20080117223651.GA7782@electric-eye.fr.zoreil.com>

Francois Romieu wrote:
> Please pull from branch 'ipg-fixes' in repository
> 
> git://git.kernel.org/pub/scm/linux/kernel/git/romieu/netdev-2.6.git ipg-fixes
> 
> to get the changes below.
> 
> Distance from 'master' (d8c89eb3a12f0da96d049bd515c7fa3702e511c5)
> -----------------------------------------------------------------
> 
> 47cccd7d7cc1f2b6f34aadc9041fb991c6293cdd
> dafdec746f8c468bebf6b99f32a392ee6c8d0212
> 0da1b995aee447656c0eb77e4e32468e37f868a3
> 227bc24d675d80de1cfb3ab72891cc932dadbc3b
> 
> Diffstat
> --------
> 
>  drivers/net/ipg.c |   36 ++++++++++++------------------------
>  1 files changed, 12 insertions(+), 24 deletions(-)
> 
> Shortlog
> --------
> 
> Francois Romieu (4):
>       ipg: balance locking in irq handler
>       ipg: plug Tx completion leak
>       ipg: fix queue stop condition in the xmit handler
>       ipg: fix Tx completion irq request

pulled



^ permalink raw reply

* Re: [PATCH 1/7] bonding: fix locking in sysfs primary/active selection
From: Jeff Garzik @ 2008-01-18 19:39 UTC (permalink / raw)
  To: Jay Vosburgh; +Cc: netdev, David Miller, Andy Gospodarek, Andrew Morton
In-Reply-To: <12006159063217-git-send-email-fubar@us.ibm.com>

Jay Vosburgh wrote:
> 	Fix the functions that store the primary and active slave
> options via sysfs to hold the correct locks in the correct order.
> 
> 	The bond_change_active_slave and bond_select_active_slave
> functions both require rtnl, bond->lock for read and curr_slave_lock for
> write_bh, and no other locks.  This is so that the lower level
> mode-specific functions (notably for balance-alb mode) can release locks
> down to just rtnl in order to call, e.g., dev_set_mac_address with the
> locks it expects (rtnl only).
> 
> Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>
> Signed-off-by: Andy Gospodarek <andy@greyhouse.net>
> ---
>  drivers/net/bonding/bond_sysfs.c |   15 ++++++++++-----
>  1 files changed, 10 insertions(+), 5 deletions(-)

applied 1-7



^ permalink raw reply

* sky2: call sky2_set_multicast from sky2_restart?
From: Tom Burns @ 2008-01-18 19:30 UTC (permalink / raw)
  To: netdev
In-Reply-To: <671c20540801181120i55bd8ff0r8385636d1ce5b2e@mail.gmail.com>

Hi List,

Throughout the sky2.c file any call to sky2_up(dev) is followed (soon
enough) by a call to sky2_set_multicast(dev).  Should this not also be
the case when it is called in sky2_restart()?

Cheers,
Tom Burns

^ permalink raw reply

* Re: [patch for 2.6.24? 1/1] bonding: locking fix
From: Jay Vosburgh @ 2008-01-18 17:32 UTC (permalink / raw)
  To: Krzysztof Oledzki
  Cc: Andrew Morton, davem, jeff, shemminger, netdev, Andy Gospodarek
In-Reply-To: <Pine.LNX.4.64.0801180932440.4570@bizon.gios.gov.pl>

Krzysztof Oledzki <olel@ans.pl> wrote:
[...]
>> 	which makes the warning go away, but Herbert Xu pointed out that
>> there is a potential problem with bond_enslave accessing the mc_lists
>> without sufficient locking.  It's not the only offender, either, and the
>> bond->mc_list references really need to be protected by the bond_lock,
>> and the whole thing probably ought to use dev_mc_sync/unsync instead of
>> what it does now.
>>
>> 	Since the bond_enslave, et al, business isn't a new problem, and
>> I've never heard of it being hit, I'm thinking now to just leave the
>> bond_enslave part for 2.6.25, and fix the lockdep warning for 2.6.24.
>
>It is a new problem, as it never happened with <=2.6.23.

	The lockdep warning is new, but I was referring to the lack of
mutexing between bond_enslave, bond_release, etc and the
set_multicast_list's use of the mc_lists.  There has never been mutexing
of the mc_lists in bond_enslave & friends, so that is not a new problem.

	-J

---
	-Jay Vosburgh, IBM Linux Technology Center, fubar@us.ibm.com

^ permalink raw reply

* Re: [PATCH net-2.6.25]  New driver "sfc" for Solarstorm SFC4000 controller - 5th attempt
From: Ben Hutchings @ 2008-01-18 17:16 UTC (permalink / raw)
  To: netdev; +Cc: linux-net-drivers
In-Reply-To: <4790D1CD.80500@solarflare.com>

Robert Stonehouse wrote:
<snip>
>  - Improved reliability of I2C operations.
<snip>

This reminds me that Randy Dunlap raised the question of whether we
could integrate with the kernel I2C and SPI systems.  I did some
investigatory work on this but it looked like it would add complexity
and increase our code size.

Ben.

-- 
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.

^ permalink raw reply

* [PATCH] [IPV6] ROUTE: Make sending algorithm more friendly with RFC 4861.
From: YOSHIFUJI Hideaki / 吉藤英明 @ 2008-01-18 17:00 UTC (permalink / raw)
  To: davem; +Cc: yoshfuji, mitch, netdev

We omit (or delay) sending NSes for known-to-unreachable routers
(in NUD_FAILED state) according to RFC 4191 (Default Router Preferences
and More-Specific Routes).
But this is not fully compatible with RFC 4861 (Neighbor Discovery Protocol
for IPv6), which does not remember unreachability of neighbors.

So, let's avoid mixing sending algorithm of RFC 4191 and that of RFC 4861,
and make the algorithm more friendly with RFC 4861 if RFC 4191 is disabled.

Issue was found by IPv6 Ready Logo Core Self_Test 1.5.0b2 (by TAHI Project),
and has been tracked down by Mitsuru Chinen <mitch@linux.vnet.ibm.com>.

Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>

--
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 6ecb5e6..20083e0 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -329,7 +329,7 @@ static inline int rt6_check_dev(struct rt6_info *rt, int oif)
 static inline int rt6_check_neigh(struct rt6_info *rt)
 {
 	struct neighbour *neigh = rt->rt6i_nexthop;
-	int m = 0;
+	int m;
 	if (rt->rt6i_flags & RTF_NONEXTHOP ||
 	    !(rt->rt6i_flags & RTF_GATEWAY))
 		m = 1;
@@ -337,10 +337,15 @@ static inline int rt6_check_neigh(struct rt6_info *rt)
 		read_lock_bh(&neigh->lock);
 		if (neigh->nud_state & NUD_VALID)
 			m = 2;
-		else if (!(neigh->nud_state & NUD_FAILED))
+#ifdef CONFIG_IPV6_ROUTER_PREF
+		else if (neigh->nud_state & NUD_FAILED)
+			m = 0;
+#endif
+		else
 			m = 1;
 		read_unlock_bh(&neigh->lock);
-	}
+	} else
+		m = 0;
 	return m;
 }
 

-- 
YOSHIFUJI Hideaki @ USAGI Project  <yoshfuji@linux-ipv6.org>
GPG-FP  : 9022 65EB 1ECF 3AD1 0BDF  80D8 4807 F894 E062 0EEA

^ permalink raw reply related

* Re: [PATCH] add modalias info to mv643xx_eth.ko
From: Dale Farnsworth @ 2008-01-18 16:31 UTC (permalink / raw)
  To: Olaf Hering; +Cc: linuxppc-dev, netdev
In-Reply-To: <20080118093805.GA28004@aepfle.de>

On Fri, Jan 18, 2008 at 10:38:05AM +0100, Olaf Hering wrote:
> mv643xx_eth has an platform modalias file in sysfs.
> But the module itself has no alias: line. Autoloading fails
> without the alias info in the module.
> 
> Signed-off-by: Olaf Hering <olaf@aepfle.de>

Acked-by: Dale Farnsworth <dale@farnsworth.org>

^ permalink raw reply

* [PATCH net-2.6.25]  New driver "sfc" for Solarstorm SFC4000 controller - 5th attempt
From: Robert Stonehouse @ 2008-01-18 16:20 UTC (permalink / raw)
  To: netdev; +Cc: jgarzik, linux-net-drivers, spope

This is a resubmission of a new driver for Solarflare network controllers.

The driver supports several types of PHY (10Gbase-T, XFP, CX4) on six
different 10G and 1G boards. There is a driver for the network controller
and an MTD driver that allows access to the flash/EEPROM.

NICs based on this controller are now available from SMC as part numbers
SMC10GPCIe-XFP and SMC10GPCIe-10BT.

FYI the previous thread was:
  http://marc.info/?l=linux-netdev&m=119999015817920&w=2

In previous postings we were asked to have the MTD part of this patch
reviewed and we have responded to the comments received so far:
  http://lists.infradead.org/pipermail/linux-mtd/2008-January/020355.html

Things that have changed since the last patch:
 - Removed residual support for more than one port per controller.
 - Moved LED control from PHY operations to board operations.
 - Added support for controlling LRO through ethtool {get,set}_flags().
 - Removed obsolete workaround for reservation of MSI-X tables by PCI core.
 - Improved reliability of PHY loopback setting.
 - Improved reliability of I2C operations.
 - Fixed on-load self-test when using RSS.
 - Simplified MTD driver following review on linux-mtd list.
 - Removed some redundant information from struct efx_nic.
 - hardware monitoring (for PHY link polling) is now a workqueue item
rather than using a timer
 - mac_lock becomes a mutex to support the previous item.

We would welcome more review of this code and would like to know if there
are any objections to this being merged for 2.6.25.


The patch (against net-2.6.25) is at:
  https://support.solarflare.com/netdev/5/net-2.6.25-sfc-2.2.0045.patch

The new files may also be downloaded as a tarball:
  https://support.solarflare.com/netdev/5/net-2.6.25-sfc-2.2.0045.tgz

And for verification there is:
  https://support.solarflare.com/netdev/5/MD5SUMS

Regards

--
Rob Stonehouse

^ permalink raw reply

* [PATCH 2/4] [IrDA] Frame length validation
From: samuel @ 2008-01-19  0:02 UTC (permalink / raw)
  To: David S. Miller; +Cc: netdev, irda-users, Robie Basak
In-Reply-To: <20080119000205.827714764@sortiz.org>

[-- Attachment #1: irda_input_validation.patch --]
[-- Type: text/plain, Size: 2450 bytes --]

From: Robie Basak <rb-oss-1@justgohome.co.uk>

When using a stir4200-based USB adaptor to talk to a device that uses an
mcp2150, the stir4200 sometimes drops an incoming frame causing the
mcp2150 to try and retransmit the lost frame. In this combination, the
next frame received from the mcp2150 is often invalid - either an empty
i:rsp or an IrCOMM i:rsp with an invalid clen. These corner cases are
now checked.

Signed-off-by: Robie Basak <rb-oss-1@justgohome.co.uk>
Signed-off-by: Samuel Ortiz <samuel@sortiz.org>
---
 net/irda/ircomm/ircomm_core.c |   12 ++++++++++++
 net/irda/irlap_event.c        |   13 +++++++++++++
 2 files changed, 25 insertions(+)

Index: net-2.6.25/net/irda/ircomm/ircomm_core.c
===================================================================
--- net-2.6.25.orig/net/irda/ircomm/ircomm_core.c	2008-01-14 19:27:06.000000000 +0100
+++ net-2.6.25/net/irda/ircomm/ircomm_core.c	2008-01-17 06:33:07.000000000 +0100
@@ -362,6 +362,18 @@
 
 	clen = skb->data[0];
 
+ 	/*
+	 * Input validation check: a stir4200/mcp2150 combinations sometimes
+ 	 * results in frames with clen > remaining packet size. These are
+ 	 * illegal; if we throw away just this frame then it seems to carry on
+ 	 * fine
+	 */
+ 	if (unlikely(skb->len < (clen + 1))) {
+ 		IRDA_DEBUG(2, "%s() throwing away illegal frame\n",
+			   __FUNCTION__ );
+ 		return;
+ 	}
+
 	/*
 	 * If there are any data hiding in the control channel, we must
 	 * deliver it first. The side effect is that the control channel
Index: net-2.6.25/net/irda/irlap_event.c
===================================================================
--- net-2.6.25.orig/net/irda/irlap_event.c	2008-01-17 06:33:05.000000000 +0100
+++ net-2.6.25/net/irda/irlap_event.c	2008-01-17 06:33:07.000000000 +0100
@@ -1199,6 +1199,19 @@
 
 	switch (event) {
 	case RECV_I_RSP: /* Optimize for the common case */
+		if (unlikely(skb->len <= LAP_ADDR_HEADER + LAP_CTRL_HEADER)) {
+			/*
+			 * Input validation check: a stir4200/mcp2150
+ 			 * combination sometimes results in an empty i:rsp.
+ 			 * This makes no sense; we can just ignore the frame
+ 			 * and send an rr:cmd immediately. This happens before
+ 			 * changing nr or ns so triggers a retransmit
+			 */
+ 			irlap_wait_min_turn_around(self, &self->qos_tx);
+ 			irlap_send_rr_frame(self, CMD_FRAME);
+ 			/* Keep state */
+ 			break;
+ 		}
 		/* FIXME: must check for remote_busy below */
 #ifdef CONFIG_IRDA_FAST_RR
 		/*

-- 


^ permalink raw reply

* [PATCH 4/4] [IrDA] Irport removal - part 2
From: samuel @ 2008-01-19  0:02 UTC (permalink / raw)
  To: David S. Miller; +Cc: netdev, irda-users, Adrian Bunk
In-Reply-To: <20080119000205.827714764@sortiz.org>

[-- Attachment #1: irport_removal_2.patch --]
[-- Type: TEXT/PLAIN, Size: 70720 bytes --]

From: Adrian Bunk <bunk@kernel.org>

Signed-off-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: Samuel Ortiz <samuel@sortiz.org>
---
 drivers/net/irda/act200l.c    |  297 -----------------------------------
 drivers/net/irda/actisys.c    |  288 ----------------------------------
 drivers/net/irda/ep7211_ir.c  |  125 --------------
 drivers/net/irda/esi.c        |  149 -----------------
 drivers/net/irda/girbil.c     |  250 -----------------------------
 drivers/net/irda/litelink.c   |  179 ---------------------
 drivers/net/irda/ma600.c      |  354 ------------------------------------------
 drivers/net/irda/mcp2120.c    |  240 ----------------------------
 drivers/net/irda/old_belkin.c |  164 -------------------
 drivers/net/irda/tekram.c     |  282 ---------------------------------
 10 files changed, 2328 deletions(-)

Index: net-2.6.25/drivers/net/irda/act200l.c
===================================================================
--- net-2.6.25.orig/drivers/net/irda/act200l.c	2008-01-18 09:34:17.000000000 +0100
+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
@@ -1,297 +0,0 @@
-/*********************************************************************
- *
- * Filename:      act200l.c
- * Version:       0.8
- * Description:   Implementation for the ACTiSYS ACT-IR200L dongle
- * Status:        Experimental.
- * Author:        SHIMIZU Takuya <tshimizu@ga2.so-net.ne.jp>
- * Created at:    Fri Aug  3 17:35:42 2001
- * Modified at:   Fri Aug 17 10:22:40 2001
- * Modified by:   SHIMIZU Takuya <tshimizu@ga2.so-net.ne.jp>
- *
- *     Copyright (c) 2001 SHIMIZU Takuya, All Rights Reserved.
- *
- *     This program is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of
- *     the License, or (at your option) any later version.
- *
- ********************************************************************/
-
-#include <linux/module.h>
-#include <linux/delay.h>
-#include <linux/tty.h>
-#include <linux/init.h>
-
-#include <net/irda/irda.h>
-#include <net/irda/irda_device.h>
-
-static int  act200l_reset(struct irda_task *task);
-static void act200l_open(dongle_t *self, struct qos_info *qos);
-static void act200l_close(dongle_t *self);
-static int  act200l_change_speed(struct irda_task *task);
-
-/* Regsiter 0: Control register #1 */
-#define ACT200L_REG0    0x00
-#define ACT200L_TXEN    0x01 /* Enable transmitter */
-#define ACT200L_RXEN    0x02 /* Enable receiver */
-
-/* Register 1: Control register #2 */
-#define ACT200L_REG1    0x10
-#define ACT200L_LODB    0x01 /* Load new baud rate count value */
-#define ACT200L_WIDE    0x04 /* Expand the maximum allowable pulse */
-
-/* Register 4: Output Power register */
-#define ACT200L_REG4    0x40
-#define ACT200L_OP0     0x01 /* Enable LED1C output */
-#define ACT200L_OP1     0x02 /* Enable LED2C output */
-#define ACT200L_BLKR    0x04
-
-/* Register 5: Receive Mode register */
-#define ACT200L_REG5    0x50
-#define ACT200L_RWIDL   0x01 /* fixed 1.6us pulse mode */
-
-/* Register 6: Receive Sensitivity register #1 */
-#define ACT200L_REG6    0x60
-#define ACT200L_RS0     0x01 /* receive threshold bit 0 */
-#define ACT200L_RS1     0x02 /* receive threshold bit 1 */
-
-/* Register 7: Receive Sensitivity register #2 */
-#define ACT200L_REG7    0x70
-#define ACT200L_ENPOS   0x04 /* Ignore the falling edge */
-
-/* Register 8,9: Baud Rate Dvider register #1,#2 */
-#define ACT200L_REG8    0x80
-#define ACT200L_REG9    0x90
-
-#define ACT200L_2400    0x5f
-#define ACT200L_9600    0x17
-#define ACT200L_19200   0x0b
-#define ACT200L_38400   0x05
-#define ACT200L_57600   0x03
-#define ACT200L_115200  0x01
-
-/* Register 13: Control register #3 */
-#define ACT200L_REG13   0xd0
-#define ACT200L_SHDW    0x01 /* Enable access to shadow registers */
-
-/* Register 15: Status register */
-#define ACT200L_REG15   0xf0
-
-/* Register 21: Control register #4 */
-#define ACT200L_REG21   0x50
-#define ACT200L_EXCK    0x02 /* Disable clock output driver */
-#define ACT200L_OSCL    0x04 /* oscillator in low power, medium accuracy mode */
-
-static struct dongle_reg dongle = {
-	.type = IRDA_ACT200L_DONGLE,
-	.open = act200l_open,
-	.close = act200l_close,
-	.reset = act200l_reset,
-	.change_speed = act200l_change_speed,
-	.owner = THIS_MODULE,
-};
-
-static int __init act200l_init(void)
-{
-	return irda_device_register_dongle(&dongle);
-}
-
-static void __exit act200l_cleanup(void)
-{
-	irda_device_unregister_dongle(&dongle);
-}
-
-static void act200l_open(dongle_t *self, struct qos_info *qos)
-{
-	IRDA_DEBUG(2, "%s()\n", __FUNCTION__ );
-
-	/* Power on the dongle */
-	self->set_dtr_rts(self->dev, TRUE, TRUE);
-
-	/* Set the speeds we can accept */
-	qos->baud_rate.bits &= IR_9600|IR_19200|IR_38400|IR_57600|IR_115200;
-	qos->min_turn_time.bits = 0x03;
-}
-
-static void act200l_close(dongle_t *self)
-{
-	IRDA_DEBUG(2, "%s()\n", __FUNCTION__ );
-
-	/* Power off the dongle */
-	self->set_dtr_rts(self->dev, FALSE, FALSE);
-}
-
-/*
- * Function act200l_change_speed (dev, speed)
- *
- *    Set the speed for the ACTiSYS ACT-IR200L type dongle.
- *
- */
-static int act200l_change_speed(struct irda_task *task)
-{
-	dongle_t *self = (dongle_t *) task->instance;
-	__u32 speed = (__u32) task->param;
-	__u8 control[3];
-	int ret = 0;
-
-	IRDA_DEBUG(2, "%s()\n", __FUNCTION__ );
-
-	self->speed_task = task;
-
-	switch (task->state) {
-	case IRDA_TASK_INIT:
-		if (irda_task_execute(self, act200l_reset, NULL, task,
-				(void *) speed))
-		{
-			/* Dongle need more time to reset */
-			irda_task_next_state(task, IRDA_TASK_CHILD_WAIT);
-
-			/* Give reset 1 sec to finish */
-			ret = msecs_to_jiffies(1000);
-		}
-		break;
-	case IRDA_TASK_CHILD_WAIT:
-		IRDA_WARNING("%s(), resetting dongle timed out!\n",
-			     __FUNCTION__);
-		ret = -1;
-		break;
-	case IRDA_TASK_CHILD_DONE:
-		/* Clear DTR and set RTS to enter command mode */
-		self->set_dtr_rts(self->dev, FALSE, TRUE);
-
-		switch (speed) {
-		case 9600:
-		default:
-			control[0] = ACT200L_REG8 |  (ACT200L_9600       & 0x0f);
-			control[1] = ACT200L_REG9 | ((ACT200L_9600 >> 4) & 0x0f);
-			break;
-		case 19200:
-			control[0] = ACT200L_REG8 |  (ACT200L_19200       & 0x0f);
-			control[1] = ACT200L_REG9 | ((ACT200L_19200 >> 4) & 0x0f);
-			break;
-		case 38400:
-			control[0] = ACT200L_REG8 |  (ACT200L_38400       & 0x0f);
-			control[1] = ACT200L_REG9 | ((ACT200L_38400 >> 4) & 0x0f);
-			break;
-		case 57600:
-			control[0] = ACT200L_REG8 |  (ACT200L_57600       & 0x0f);
-			control[1] = ACT200L_REG9 | ((ACT200L_57600 >> 4) & 0x0f);
-			break;
-		case 115200:
-			control[0] = ACT200L_REG8 |  (ACT200L_115200       & 0x0f);
-			control[1] = ACT200L_REG9 | ((ACT200L_115200 >> 4) & 0x0f);
-			break;
-		}
-		control[2] = ACT200L_REG1 | ACT200L_LODB | ACT200L_WIDE;
-
-		/* Write control bytes */
-		self->write(self->dev, control, 3);
-		irda_task_next_state(task, IRDA_TASK_WAIT);
-		ret = msecs_to_jiffies(5);
-		break;
-	case IRDA_TASK_WAIT:
-		/* Go back to normal mode */
-		self->set_dtr_rts(self->dev, TRUE, TRUE);
-
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->speed_task = NULL;
-		break;
-	default:
-		IRDA_ERROR("%s(), unknown state %d\n",
-			   __FUNCTION__, task->state);
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->speed_task = NULL;
-		ret = -1;
-		break;
-	}
-	return ret;
-}
-
-/*
- * Function act200l_reset (driver)
- *
- *    Reset the ACTiSYS ACT-IR200L type dongle.
- */
-static int act200l_reset(struct irda_task *task)
-{
-	dongle_t *self = (dongle_t *) task->instance;
-	__u8 control[9] = {
-		ACT200L_REG15,
-		ACT200L_REG13 | ACT200L_SHDW,
-		ACT200L_REG21 | ACT200L_EXCK | ACT200L_OSCL,
-		ACT200L_REG13,
-		ACT200L_REG7  | ACT200L_ENPOS,
-		ACT200L_REG6  | ACT200L_RS0  | ACT200L_RS1,
-		ACT200L_REG5  | ACT200L_RWIDL,
-		ACT200L_REG4  | ACT200L_OP0  | ACT200L_OP1 | ACT200L_BLKR,
-		ACT200L_REG0  | ACT200L_TXEN | ACT200L_RXEN
-	};
-	int ret = 0;
-
-	IRDA_DEBUG(2, "%s()\n", __FUNCTION__ );
-
-	self->reset_task = task;
-
-	switch (task->state) {
-	case IRDA_TASK_INIT:
-		/* Power on the dongle */
-		self->set_dtr_rts(self->dev, TRUE, TRUE);
-
-		irda_task_next_state(task, IRDA_TASK_WAIT1);
-		ret = msecs_to_jiffies(50);
-		break;
-	case IRDA_TASK_WAIT1:
-		/* Reset the dongle : set RTS low for 25 ms */
-		self->set_dtr_rts(self->dev, TRUE, FALSE);
-
-		irda_task_next_state(task, IRDA_TASK_WAIT2);
-		ret = msecs_to_jiffies(50);
-		break;
-	case IRDA_TASK_WAIT2:
-		/* Clear DTR and set RTS to enter command mode */
-		self->set_dtr_rts(self->dev, FALSE, TRUE);
-
-		/* Write control bytes */
-		self->write(self->dev, control, 9);
-		irda_task_next_state(task, IRDA_TASK_WAIT3);
-		ret = msecs_to_jiffies(15);
-		break;
-	case IRDA_TASK_WAIT3:
-		/* Go back to normal mode */
-		self->set_dtr_rts(self->dev, TRUE, TRUE);
-
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->reset_task = NULL;
-		break;
-	default:
-		IRDA_ERROR("%s(), unknown state %d\n",
-			   __FUNCTION__, task->state);
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->reset_task = NULL;
-		ret = -1;
-		break;
-	}
-	return ret;
-}
-
-MODULE_AUTHOR("SHIMIZU Takuya <tshimizu@ga2.so-net.ne.jp>");
-MODULE_DESCRIPTION("ACTiSYS ACT-IR200L dongle driver");
-MODULE_LICENSE("GPL");
-MODULE_ALIAS("irda-dongle-10"); /* IRDA_ACT200L_DONGLE */
-
-/*
- * Function init_module (void)
- *
- *    Initialize ACTiSYS ACT-IR200L module
- *
- */
-module_init(act200l_init);
-
-/*
- * Function cleanup_module (void)
- *
- *    Cleanup ACTiSYS ACT-IR200L module
- *
- */
-module_exit(act200l_cleanup);
Index: net-2.6.25/drivers/net/irda/actisys.c
===================================================================
--- net-2.6.25.orig/drivers/net/irda/actisys.c	2008-01-18 09:34:17.000000000 +0100
+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
@@ -1,288 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      actisys.c
- * Version:       1.0
- * Description:   Implementation for the ACTiSYS IR-220L and IR-220L+ 
- *                dongles
- * Status:        Beta.
- * Authors:       Dag Brattli <dagb@cs.uit.no> (initially)
- *		  Jean Tourrilhes <jt@hpl.hp.com> (new version)
- * Created at:    Wed Oct 21 20:02:35 1998
- * Modified at:   Fri Dec 17 09:10:43 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1998-1999 Dag Brattli, All Rights Reserved.
- *     Copyright (c) 1999 Jean Tourrilhes
- *      
- *     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.
- *  
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *     
- ********************************************************************/
-
-/*
- * Changelog
- *
- * 0.8 -> 0.9999 - Jean
- *	o New initialisation procedure : much safer and correct
- *	o New procedure the change speed : much faster and simpler
- *	o Other cleanups & comments
- *	Thanks to Lichen Wang @ Actisys for his excellent help...
- */
-
-#include <linux/module.h>
-#include <linux/delay.h>
-#include <linux/tty.h>
-#include <linux/init.h>
-
-#include <net/irda/irda.h>
-#include <net/irda/irda_device.h>
-
-/* 
- * Define the timing of the pulses we send to the dongle (to reset it, and
- * to toggle speeds). Basically, the limit here is the propagation speed of
- * the signals through the serial port, the dongle being much faster.  Any
- * serial port support 115 kb/s, so we are sure that pulses 8.5 us wide can
- * go through cleanly . If you are on the wild side, you can try to lower
- * this value (Actisys recommended me 2 us, and 0 us work for me on a P233!)
- */
-#define MIN_DELAY 10	/* 10 us to be on the conservative side */
-
-static int  actisys_change_speed(struct irda_task *task);
-static int  actisys_reset(struct irda_task *task);
-static void actisys_open(dongle_t *self, struct qos_info *qos);
-static void actisys_close(dongle_t *self);
-
-/* These are the baudrates supported, in the order available */
-/* Note : the 220L doesn't support 38400, but we will fix that below */
-static __u32 baud_rates[] = { 9600, 19200, 57600, 115200, 38400 };
-#define MAX_SPEEDS 5
-
-static struct dongle_reg dongle = {
-	.type = IRDA_ACTISYS_DONGLE,
-	.open = actisys_open,
-	.close = actisys_close,
-	.reset = actisys_reset,
-	.change_speed = actisys_change_speed,
-	.owner = THIS_MODULE,
-};
-
-static struct dongle_reg dongle_plus = {
-	.type = IRDA_ACTISYS_PLUS_DONGLE,
-	.open = actisys_open,
-	.close = actisys_close,
-	.reset = actisys_reset,
-	.change_speed = actisys_change_speed,
-	.owner = THIS_MODULE,
-};
-
-/*
- * Function actisys_change_speed (task)
- *
- *	There is two model of Actisys dongle we are dealing with,
- * the 220L and 220L+. At this point, only irattach knows with
- * kind the user has requested (it was an argument on irattach
- * command line).
- *	So, we register a dongle of each sort and let irattach
- * pick the right one...
- */
-static int __init actisys_init(void)
-{
-	int ret;
-
-	/* First, register an Actisys 220L dongle */
-	ret = irda_device_register_dongle(&dongle);
-	if (ret < 0)
-		return ret;
-	/* Now, register an Actisys 220L+ dongle */
-	ret = irda_device_register_dongle(&dongle_plus);
-	if (ret < 0) {
-		irda_device_unregister_dongle(&dongle);
-		return ret;
-	}	
-	return 0;
-}
-
-static void __exit actisys_cleanup(void)
-{
-	/* We have to remove both dongles */
-	irda_device_unregister_dongle(&dongle);
-	irda_device_unregister_dongle(&dongle_plus);
-}
-
-static void actisys_open(dongle_t *self, struct qos_info *qos)
-{
-	/* Power on the dongle */
-	self->set_dtr_rts(self->dev, TRUE, TRUE);
-
-	/* Set the speeds we can accept */
-	qos->baud_rate.bits &= IR_9600|IR_19200|IR_38400|IR_57600|IR_115200;
-
-	/* Remove support for 38400 if this is not a 220L+ dongle */
-	if (self->issue->type == IRDA_ACTISYS_DONGLE)
-		qos->baud_rate.bits &= ~IR_38400;
-	
-	qos->min_turn_time.bits = 0x7f; /* Needs 0.01 ms */
-}
-
-static void actisys_close(dongle_t *self)
-{
-	/* Power off the dongle */
-	self->set_dtr_rts(self->dev, FALSE, FALSE);
-}
-
-/*
- * Function actisys_change_speed (task)
- *
- *    Change speed of the ACTiSYS IR-220L and IR-220L+ type IrDA dongles.
- *    To cycle through the available baud rates, pulse RTS low for a few us.
- *
- *	First, we reset the dongle to always start from a known state.
- *	Then, we cycle through the speeds by pulsing RTS low and then up.
- *	The dongle allow us to pulse quite fast, se we can set speed in one go,
- * which is must faster ( < 100 us) and less complex than what is found
- * in some other dongle drivers...
- *	Note that even if the new speed is the same as the current speed,
- * we reassert the speed. This make sure that things are all right,
- * and it's fast anyway...
- *	By the way, this function will work for both type of dongles,
- * because the additional speed is at the end of the sequence...
- */
-static int actisys_change_speed(struct irda_task *task)
-{
-	dongle_t *self = (dongle_t *) task->instance;
-	__u32 speed = (__u32) task->param;	/* Target speed */
-	int ret = 0;
-	int i = 0;
-
-        IRDA_DEBUG(4, "%s(), speed=%d (was %d)\n", __FUNCTION__, speed, 
-		   self->speed);
-
-	/* Go to a known state by reseting the dongle */
-
-	/* Reset the dongle : set DTR low for 10 us */
-	self->set_dtr_rts(self->dev, FALSE, TRUE);
-	udelay(MIN_DELAY);
-
-	/* Go back to normal mode (we are now at 9600 b/s) */
-	self->set_dtr_rts(self->dev, TRUE, TRUE);
- 
-	/* 
-	 * Now, we can set the speed requested. Send RTS pulses until we
-         * reach the target speed 
-	 */
-	for (i=0; i<MAX_SPEEDS; i++) {
-		if (speed == baud_rates[i]) {
-			self->speed = baud_rates[i];
-			break;
-		}
-		/* Make sure previous pulse is finished */
-		udelay(MIN_DELAY);
-
-		/* Set RTS low for 10 us */
-		self->set_dtr_rts(self->dev, TRUE, FALSE);
-		udelay(MIN_DELAY);
-
-		/* Set RTS high for 10 us */
-		self->set_dtr_rts(self->dev, TRUE, TRUE);
-	}
-
-	/* Check if life is sweet... */
-	if (i >= MAX_SPEEDS)
-		ret = -1;  /* This should not happen */
-
-	/* Basta lavoro, on se casse d'ici... */
-	irda_task_next_state(task, IRDA_TASK_DONE);
-
-	return ret;
-}
-
-/*
- * Function actisys_reset (task)
- *
- *      Reset the Actisys type dongle. Warning, this function must only be
- *      called with a process context!
- *
- * We need to do two things in this function :
- *	o first make sure that the dongle is in a state where it can operate
- *	o second put the dongle in a know state
- *
- *	The dongle is powered of the RTS and DTR lines. In the dongle, there
- * is a big capacitor to accommodate the current spikes. This capacitor
- * takes a least 50 ms to be charged. In theory, the Bios set those lines
- * up, so by the time we arrive here we should be set. It doesn't hurt
- * to be on the conservative side, so we will wait...
- *	Then, we set the speed to 9600 b/s to get in a known state (see in
- * change_speed for details). It is needed because the IrDA stack
- * has tried to set the speed immediately after our first return,
- * so before we can be sure the dongle is up and running.
- */
-static int actisys_reset(struct irda_task *task)
-{
-	dongle_t *self = (dongle_t *) task->instance;
-	int ret = 0;
-
-	IRDA_ASSERT(task != NULL, return -1;);
-
-	self->reset_task = task;
-
-	switch (task->state) {
-	case IRDA_TASK_INIT:
-		/* Set both DTR & RTS to power up the dongle */
-		/* In theory redundant with power up in actisys_open() */
-		self->set_dtr_rts(self->dev, TRUE, TRUE);
-		
-		/* Sleep 50 ms to make sure capacitor is charged */
-		ret = msecs_to_jiffies(50);
-		irda_task_next_state(task, IRDA_TASK_WAIT);
-		break;
-	case IRDA_TASK_WAIT:			
-		/* Reset the dongle : set DTR low for 10 us */
-		self->set_dtr_rts(self->dev, FALSE, TRUE);
-		udelay(MIN_DELAY);
-
-		/* Go back to normal mode */
-		self->set_dtr_rts(self->dev, TRUE, TRUE);
-	
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->reset_task = NULL;
-		self->speed = 9600;	/* That's the default */
-		break;
-	default:
-		IRDA_ERROR("%s(), unknown state %d\n",
-			   __FUNCTION__, task->state);
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->reset_task = NULL;
-		ret = -1;
-		break;
-	}
-	return ret;
-}
-
-MODULE_AUTHOR("Dag Brattli <dagb@cs.uit.no> - Jean Tourrilhes <jt@hpl.hp.com>");
-MODULE_DESCRIPTION("ACTiSYS IR-220L and IR-220L+ dongle driver");	
-MODULE_LICENSE("GPL");
-MODULE_ALIAS("irda-dongle-2"); /* IRDA_ACTISYS_DONGLE */
-MODULE_ALIAS("irda-dongle-3"); /* IRDA_ACTISYS_PLUS_DONGLE */
-
-		
-/*
- * Function init_module (void)
- *
- *    Initialize Actisys module
- *
- */
-module_init(actisys_init);
-
-/*
- * Function cleanup_module (void)
- *
- *    Cleanup Actisys module
- *
- */
-module_exit(actisys_cleanup);
Index: net-2.6.25/drivers/net/irda/ep7211_ir.c
===================================================================
--- net-2.6.25.orig/drivers/net/irda/ep7211_ir.c	2008-01-18 09:34:17.000000000 +0100
+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
@@ -1,125 +0,0 @@
-/*
- * IR port driver for the Cirrus Logic EP7211 processor.
- *
- * Copyright 2001, Blue Mug Inc.  All rights reserved.
- */
-
-#include <linux/module.h>
-#include <linux/delay.h>
-#include <linux/tty.h>
-#include <linux/init.h>
-#include <linux/spinlock.h>
-
-#include <net/irda/irda.h>
-#include <net/irda/irda_device.h>
-
-#include <asm/io.h>
-#include <asm/hardware.h>
-
-#define MIN_DELAY 25      /* 15 us, but wait a little more to be sure */
-#define MAX_DELAY 10000   /* 1 ms */
-
-static void ep7211_ir_open(dongle_t *self, struct qos_info *qos);
-static void ep7211_ir_close(dongle_t *self);
-static int  ep7211_ir_change_speed(struct irda_task *task);
-static int  ep7211_ir_reset(struct irda_task *task);
-
-static DEFINE_SPINLOCK(ep7211_lock);
-
-static struct dongle_reg dongle = {
-	.type = IRDA_EP7211_IR,
-	.open = ep7211_ir_open,
-	.close = ep7211_ir_close,
-	.reset = ep7211_ir_reset,
-	.change_speed = ep7211_ir_change_speed,
-	.owner = THIS_MODULE,
-};
-
-static void ep7211_ir_open(dongle_t *self, struct qos_info *qos)
-{
-	unsigned int syscon1, flags;
-
-	spin_lock_irqsave(&ep7211_lock, flags);
-
-	/* Turn on the SIR encoder. */
-	syscon1 = clps_readl(SYSCON1);
-	syscon1 |= SYSCON1_SIREN;
-	clps_writel(syscon1, SYSCON1);
-
-	/* XXX: We should disable modem status interrupts on the first
-		UART (interrupt #14). */
-
-	spin_unlock_irqrestore(&ep7211_lock, flags);
-}
-
-static void ep7211_ir_close(dongle_t *self)
-{
-	unsigned int syscon1, flags;
-
-	spin_lock_irqsave(&ep7211_lock, flags);
-
-	/* Turn off the SIR encoder. */
-	syscon1 = clps_readl(SYSCON1);
-	syscon1 &= ~SYSCON1_SIREN;
-	clps_writel(syscon1, SYSCON1);
-
-	/* XXX: If we've disabled the modem status interrupts, we should
-		reset them back to their original state. */
-
-	spin_unlock_irqrestore(&ep7211_lock, flags);
-}
-
-/*
- * Function ep7211_ir_change_speed (task)
- *
- *    Change speed of the EP7211 I/R port. We don't really have to do anything
- *    for the EP7211 as long as the rate is being changed at the serial port
- *    level.
- */
-static int ep7211_ir_change_speed(struct irda_task *task)
-{
-	irda_task_next_state(task, IRDA_TASK_DONE);
-	return 0;
-}
-
-/*
- * Function ep7211_ir_reset (task)
- *
- *      Reset the EP7211 I/R. We don't really have to do anything.
- *
- */
-static int ep7211_ir_reset(struct irda_task *task)
-{
-	irda_task_next_state(task, IRDA_TASK_DONE);
-	return 0;
-}
-
-/*
- * Function ep7211_ir_init(void)
- *
- *    Initialize EP7211 I/R module
- *
- */
-static int __init ep7211_ir_init(void)
-{
-	return irda_device_register_dongle(&dongle);
-}
-
-/*
- * Function ep7211_ir_cleanup(void)
- *
- *    Cleanup EP7211 I/R module
- *
- */
-static void __exit ep7211_ir_cleanup(void)
-{
-	irda_device_unregister_dongle(&dongle);
-}
-
-MODULE_AUTHOR("Jon McClintock <jonm@bluemug.com>");
-MODULE_DESCRIPTION("EP7211 I/R driver");
-MODULE_LICENSE("GPL");
-MODULE_ALIAS("irda-dongle-8"); /* IRDA_EP7211_IR */
-		
-module_init(ep7211_ir_init);
-module_exit(ep7211_ir_cleanup);
Index: net-2.6.25/drivers/net/irda/esi.c
===================================================================
--- net-2.6.25.orig/drivers/net/irda/esi.c	2008-01-18 09:34:17.000000000 +0100
+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
@@ -1,149 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      esi.c
- * Version:       1.5
- * Description:   Driver for the Extended Systems JetEye PC dongle
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Sat Feb 21 18:54:38 1998
- * Modified at:   Fri Dec 17 09:14:04 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1999 Dag Brattli, <dagb@cs.uit.no>,
- *     Copyright (c) 1998 Thomas Davis, <ratbert@radiks.net>,
- *     All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- * 
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- *     GNU General Public License for more details.
- * 
- *     You should have received a copy of the GNU General Public License 
- *     along with this program; if not, write to the Free Software 
- *     Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
- *     MA 02111-1307 USA
- *     
- ********************************************************************/
-
-#include <linux/module.h>
-#include <linux/delay.h>
-#include <linux/tty.h>
-#include <linux/init.h>
-
-#include <net/irda/irda.h>
-#include <net/irda/irda_device.h>
-
-static void esi_open(dongle_t *self, struct qos_info *qos);
-static void esi_close(dongle_t *self);
-static int  esi_change_speed(struct irda_task *task);
-static int  esi_reset(struct irda_task *task);
-
-static struct dongle_reg dongle = {
-	.type = IRDA_ESI_DONGLE,
-	.open = esi_open,
-	.close = esi_close,
-	.reset = esi_reset,
-	.change_speed = esi_change_speed,
-	.owner = THIS_MODULE,
-};
-
-static int __init esi_init(void)
-{
-	return irda_device_register_dongle(&dongle);
-}
-
-static void __exit esi_cleanup(void)
-{
-	irda_device_unregister_dongle(&dongle);
-}
-
-static void esi_open(dongle_t *self, struct qos_info *qos)
-{
-	qos->baud_rate.bits &= IR_9600|IR_19200|IR_115200;
-	qos->min_turn_time.bits = 0x01; /* Needs at least 10 ms */
-}
-
-static void esi_close(dongle_t *dongle)
-{		
-	/* Power off dongle */
-	dongle->set_dtr_rts(dongle->dev, FALSE, FALSE);
-}
-
-/*
- * Function esi_change_speed (task)
- *
- *    Set the speed for the Extended Systems JetEye PC ESI-9680 type dongle
- *
- */
-static int esi_change_speed(struct irda_task *task)
-{
-	dongle_t *self = (dongle_t *) task->instance;
-	__u32 speed = (__u32) task->param;
-	int dtr, rts;
-	
-	switch (speed) {
-	case 19200:
-		dtr = TRUE;
-		rts = FALSE;
-		break;
-	case 115200:
-		dtr = rts = TRUE;
-		break;
-	case 9600:
-	default:
-		dtr = FALSE;
-		rts = TRUE;
-		break;
-	}
-
-	/* Change speed of dongle */
-	self->set_dtr_rts(self->dev, dtr, rts);
-	self->speed = speed;
-
-	irda_task_next_state(task, IRDA_TASK_DONE);
-
-	return 0;
-}
-
-/*
- * Function esi_reset (task)
- *
- *    Reset dongle;
- *
- */
-static int esi_reset(struct irda_task *task)
-{
-	dongle_t *self = (dongle_t *) task->instance;
-	
-	self->set_dtr_rts(self->dev, FALSE, FALSE);
-	irda_task_next_state(task, IRDA_TASK_DONE);
-
-	return 0;
-}
-
-MODULE_AUTHOR("Dag Brattli <dagb@cs.uit.no>");
-MODULE_DESCRIPTION("Extended Systems JetEye PC dongle driver");
-MODULE_LICENSE("GPL");
-MODULE_ALIAS("irda-dongle-1"); /* IRDA_ESI_DONGLE */
-
-/*
- * Function init_module (void)
- *
- *    Initialize ESI module
- *
- */
-module_init(esi_init);
-
-/*
- * Function cleanup_module (void)
- *
- *    Cleanup ESI module
- *
- */
-module_exit(esi_cleanup);
-
Index: net-2.6.25/drivers/net/irda/girbil.c
===================================================================
--- net-2.6.25.orig/drivers/net/irda/girbil.c	2008-01-18 09:34:17.000000000 +0100
+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
@@ -1,250 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      girbil.c
- * Version:       1.2
- * Description:   Implementation for the Greenwich GIrBIL dongle
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Sat Feb  6 21:02:33 1999
- * Modified at:   Fri Dec 17 09:13:20 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
- *      
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *  
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *     
- ********************************************************************/
-
-#include <linux/module.h>
-#include <linux/delay.h>
-#include <linux/tty.h>
-#include <linux/init.h>
-
-#include <net/irda/irda.h>
-#include <net/irda/irda_device.h>
-
-static int  girbil_reset(struct irda_task *task);
-static void girbil_open(dongle_t *self, struct qos_info *qos);
-static void girbil_close(dongle_t *self);
-static int  girbil_change_speed(struct irda_task *task);
-
-/* Control register 1 */
-#define GIRBIL_TXEN    0x01 /* Enable transmitter */
-#define GIRBIL_RXEN    0x02 /* Enable receiver */
-#define GIRBIL_ECAN    0x04 /* Cancel self emmited data */
-#define GIRBIL_ECHO    0x08 /* Echo control characters */
-
-/* LED Current Register (0x2) */
-#define GIRBIL_HIGH    0x20
-#define GIRBIL_MEDIUM  0x21
-#define GIRBIL_LOW     0x22
-
-/* Baud register (0x3) */
-#define GIRBIL_2400    0x30
-#define GIRBIL_4800    0x31	
-#define GIRBIL_9600    0x32
-#define GIRBIL_19200   0x33
-#define GIRBIL_38400   0x34	
-#define GIRBIL_57600   0x35	
-#define GIRBIL_115200  0x36
-
-/* Mode register (0x4) */
-#define GIRBIL_IRDA    0x40
-#define GIRBIL_ASK     0x41
-
-/* Control register 2 (0x5) */
-#define GIRBIL_LOAD    0x51 /* Load the new baud rate value */
-
-static struct dongle_reg dongle = {
-	.type = IRDA_GIRBIL_DONGLE,
-	.open = girbil_open,
-	.close = girbil_close,
-	.reset = girbil_reset,
-	.change_speed = girbil_change_speed,
-	.owner = THIS_MODULE,
-};
-
-static int __init girbil_init(void)
-{
-	return irda_device_register_dongle(&dongle);
-}
-
-static void __exit girbil_cleanup(void)
-{
-	irda_device_unregister_dongle(&dongle);
-}
-
-static void girbil_open(dongle_t *self, struct qos_info *qos)
-{
-	qos->baud_rate.bits &= IR_9600|IR_19200|IR_38400|IR_57600|IR_115200;
-	qos->min_turn_time.bits = 0x03;
-}
-
-static void girbil_close(dongle_t *self)
-{
-	/* Power off dongle */
-	self->set_dtr_rts(self->dev, FALSE, FALSE);
-}
-
-/*
- * Function girbil_change_speed (dev, speed)
- *
- *    Set the speed for the Girbil type dongle.
- *
- */
-static int girbil_change_speed(struct irda_task *task)
-{
-	dongle_t *self = (dongle_t *) task->instance;
-	__u32 speed = (__u32) task->param;
-	__u8 control[2];
-	int ret = 0;
-
-	self->speed_task = task;
-
-	switch (task->state) {
-	case IRDA_TASK_INIT:
-		/* Need to reset the dongle and go to 9600 bps before
-                   programming */
-		if (irda_task_execute(self, girbil_reset, NULL, task, 
-				      (void *) speed))
-		{
-			/* Dongle need more time to reset */
-			irda_task_next_state(task, IRDA_TASK_CHILD_WAIT);
-
-			/* Give reset 1 sec to finish */
-			ret = msecs_to_jiffies(1000);
-		}
-		break;
-	case IRDA_TASK_CHILD_WAIT:
-		IRDA_WARNING("%s(), resetting dongle timed out!\n",
-			     __FUNCTION__);
-		ret = -1;
-		break;
-	case IRDA_TASK_CHILD_DONE:
-		/* Set DTR and Clear RTS to enter command mode */
-		self->set_dtr_rts(self->dev, FALSE, TRUE);
-
-		switch (speed) {
-		case 9600:
-		default:
-			control[0] = GIRBIL_9600;
-			break;
-		case 19200:
-			control[0] = GIRBIL_19200;
-			break;
-		case 34800:
-			control[0] = GIRBIL_38400;
-			break;
-		case 57600:
-			control[0] = GIRBIL_57600;
-			break;
-		case 115200:
-			control[0] = GIRBIL_115200;
-			break;
-		}
-		control[1] = GIRBIL_LOAD;
-		
-		/* Write control bytes */
-		self->write(self->dev, control, 2);
-		irda_task_next_state(task, IRDA_TASK_WAIT);
-		ret = msecs_to_jiffies(100);
-		break;
-	case IRDA_TASK_WAIT:
-		/* Go back to normal mode */
-		self->set_dtr_rts(self->dev, TRUE, TRUE);
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->speed_task = NULL;
-		break;
-	default:
-		IRDA_ERROR("%s(), unknown state %d\n",
-			   __FUNCTION__, task->state);
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->speed_task = NULL;
-		ret = -1;
-		break;
-	}
-	return ret;
-}
-
-/*
- * Function girbil_reset (driver)
- *
- *      This function resets the girbil dongle.
- *
- *      Algorithm:
- *    	  0. set RTS, and wait at least 5 ms 
- *        1. clear RTS 
- */
-static int girbil_reset(struct irda_task *task)
-{
-	dongle_t *self = (dongle_t *) task->instance;
-	__u8 control = GIRBIL_TXEN | GIRBIL_RXEN;
-	int ret = 0;
-
-	self->reset_task = task;
-
-	switch (task->state) {
-	case IRDA_TASK_INIT:
-		/* Reset dongle */
-		self->set_dtr_rts(self->dev, TRUE, FALSE);
-		irda_task_next_state(task, IRDA_TASK_WAIT1);
-		/* Sleep at least 5 ms */
-		ret = msecs_to_jiffies(20);
-		break;
-	case IRDA_TASK_WAIT1:
-		/* Set DTR and clear RTS to enter command mode */
-		self->set_dtr_rts(self->dev, FALSE, TRUE);
-		irda_task_next_state(task, IRDA_TASK_WAIT2);
-		ret = msecs_to_jiffies(20);
-		break;
-	case IRDA_TASK_WAIT2:
-		/* Write control byte */
-		self->write(self->dev, &control, 1);
-		irda_task_next_state(task, IRDA_TASK_WAIT3);
-		ret = msecs_to_jiffies(20);
-		break;
-	case IRDA_TASK_WAIT3:
-		/* Go back to normal mode */
-		self->set_dtr_rts(self->dev, TRUE, TRUE);
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->reset_task = NULL;
-		break;
-	default:
-		IRDA_ERROR("%s(), unknown state %d\n",
-			   __FUNCTION__, task->state);
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->reset_task = NULL;
-		ret = -1;
-		break;
-	}
-	return ret;
-}
-
-MODULE_AUTHOR("Dag Brattli <dagb@cs.uit.no>");
-MODULE_DESCRIPTION("Greenwich GIrBIL dongle driver");
-MODULE_LICENSE("GPL");
-MODULE_ALIAS("irda-dongle-4"); /* IRDA_GIRBIL_DONGLE */
-	
-/*
- * Function init_module (void)
- *
- *    Initialize Girbil module
- *
- */
-module_init(girbil_init);
-
-/*
- * Function cleanup_module (void)
- *
- *    Cleanup Girbil module
- *
- */
-module_exit(girbil_cleanup);
-
Index: net-2.6.25/drivers/net/irda/litelink.c
===================================================================
--- net-2.6.25.orig/drivers/net/irda/litelink.c	2008-01-18 09:34:17.000000000 +0100
+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
@@ -1,179 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      litelink.c
- * Version:       1.1
- * Description:   Driver for the Parallax LiteLink dongle
- * Status:        Stable
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Fri May  7 12:50:33 1999
- * Modified at:   Fri Dec 17 09:14:23 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1999 Dag Brattli, All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- * 
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- *     GNU General Public License for more details.
- * 
- *     You should have received a copy of the GNU General Public License 
- *     along with this program; if not, write to the Free Software 
- *     Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
- *     MA 02111-1307 USA
- *     
- ********************************************************************/
-
-#include <linux/module.h>
-#include <linux/delay.h>
-#include <linux/tty.h>
-#include <linux/init.h>
-
-#include <net/irda/irda.h>
-#include <net/irda/irda_device.h>
-
-#define MIN_DELAY 25      /* 15 us, but wait a little more to be sure */
-#define MAX_DELAY 10000   /* 1 ms */
-
-static void litelink_open(dongle_t *self, struct qos_info *qos);
-static void litelink_close(dongle_t *self);
-static int  litelink_change_speed(struct irda_task *task);
-static int  litelink_reset(struct irda_task *task);
-
-/* These are the baudrates supported */
-static __u32 baud_rates[] = { 115200, 57600, 38400, 19200, 9600 };
-
-static struct dongle_reg dongle = {
-	.type = IRDA_LITELINK_DONGLE,
-	.open = litelink_open,
-	.close = litelink_close,
-	.reset = litelink_reset,
-	.change_speed = litelink_change_speed,
-	.owner = THIS_MODULE,
-};
-
-static int __init litelink_init(void)
-{
-	return irda_device_register_dongle(&dongle);
-}
-
-static void __exit litelink_cleanup(void)
-{
-	irda_device_unregister_dongle(&dongle);
-}
-
-static void litelink_open(dongle_t *self, struct qos_info *qos)
-{
-	qos->baud_rate.bits &= IR_9600|IR_19200|IR_38400|IR_57600|IR_115200;
-	qos->min_turn_time.bits = 0x7f; /* Needs 0.01 ms */
-}
-
-static void litelink_close(dongle_t *self)
-{
-	/* Power off dongle */
-	self->set_dtr_rts(self->dev, FALSE, FALSE);
-}
-
-/*
- * Function litelink_change_speed (task)
- *
- *    Change speed of the Litelink dongle. To cycle through the available 
- *    baud rates, pulse RTS low for a few ms.  
- */
-static int litelink_change_speed(struct irda_task *task)
-{
-	dongle_t *self = (dongle_t *) task->instance;
-	__u32 speed = (__u32) task->param;
-        int i;
-	
-	/* Clear RTS to reset dongle */
-	self->set_dtr_rts(self->dev, TRUE, FALSE);
-
-	/* Sleep a minimum of 15 us */
-	udelay(MIN_DELAY);
-
-	/* Go back to normal mode */
-	self->set_dtr_rts(self->dev, TRUE, TRUE);
-	
-	/* Sleep a minimum of 15 us */
-	udelay(MIN_DELAY);
-	
-	/* Cycle through avaiable baudrates until we reach the correct one */
-	for (i=0; i<5 && baud_rates[i] != speed; i++) {
-		/* Set DTR, clear RTS */
-		self->set_dtr_rts(self->dev, FALSE, TRUE);
-		
-		/* Sleep a minimum of 15 us */
-		udelay(MIN_DELAY);
-		
-		/* Set DTR, Set RTS */
-		self->set_dtr_rts(self->dev, TRUE, TRUE);
-		
-		/* Sleep a minimum of 15 us */
-		udelay(MIN_DELAY);
-        }
-	irda_task_next_state(task, IRDA_TASK_DONE);
-
-	return 0;
-}
-
-/*
- * Function litelink_reset (task)
- *
- *      Reset the Litelink type dongle.
- *
- */
-static int litelink_reset(struct irda_task *task)
-{
-	dongle_t *self = (dongle_t *) task->instance;
-
-	/* Power on dongle */
-	self->set_dtr_rts(self->dev, TRUE, TRUE);
-
-	/* Sleep a minimum of 15 us */
-	udelay(MIN_DELAY);
-
-	/* Clear RTS to reset dongle */
-	self->set_dtr_rts(self->dev, TRUE, FALSE);
-
-	/* Sleep a minimum of 15 us */
-	udelay(MIN_DELAY);
-
-	/* Go back to normal mode */
-	self->set_dtr_rts(self->dev, TRUE, TRUE);
-	
-	/* Sleep a minimum of 15 us */
-	udelay(MIN_DELAY);
-
-	/* This dongles speed defaults to 115200 bps */
-	self->speed = 115200;
-
-	irda_task_next_state(task, IRDA_TASK_DONE);
-
-	return 0;
-}
-
-MODULE_AUTHOR("Dag Brattli <dagb@cs.uit.no>");
-MODULE_DESCRIPTION("Parallax Litelink dongle driver");	
-MODULE_LICENSE("GPL");
-MODULE_ALIAS("irda-dongle-5"); /* IRDA_LITELINK_DONGLE */
-		
-/*
- * Function init_module (void)
- *
- *    Initialize Litelink module
- *
- */
-module_init(litelink_init);
-
-/*
- * Function cleanup_module (void)
- *
- *    Cleanup Litelink module
- *
- */
-module_exit(litelink_cleanup);
Index: net-2.6.25/drivers/net/irda/ma600.c
===================================================================
--- net-2.6.25.orig/drivers/net/irda/ma600.c	2008-01-18 09:34:16.000000000 +0100
+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
@@ -1,354 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      ma600.c
- * Version:       0.1
- * Description:   Implementation of the MA600 dongle
- * Status:        Experimental.
- * Author:        Leung <95Etwl@alumni.ee.ust.hk> http://www.engsvr.ust/~eetwl95
- * Created at:    Sat Jun 10 20:02:35 2000
- * Modified at:   
- * Modified by:   
- *
- * Note: very thanks to Mr. Maru Wang <maru@mobileaction.com.tw> for providing 
- *       information on the MA600 dongle
- * 
- *     Copyright (c) 2000 Leung, All Rights Reserved.
- *      
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *  
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- *     GNU General Public License for more details.
- * 
- *     You should have received a copy of the GNU General Public License 
- *     along with this program; if not, write to the Free Software 
- *     Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
- *     MA 02111-1307 USA
- *     
- ********************************************************************/
-
-/* define this macro for release version */
-//#define NDEBUG
-
-#include <linux/module.h>
-#include <linux/delay.h>
-#include <linux/tty.h>
-#include <linux/init.h>
-
-#include <net/irda/irda.h>
-#include <net/irda/irda_device.h>
-
-#ifndef NDEBUG
-	#undef IRDA_DEBUG
-	#define IRDA_DEBUG(n, args...) (printk(KERN_DEBUG args))
-
-	#undef ASSERT
-	#define ASSERT(expr, func) \
-	if(!(expr)) { \
-	        printk( "Assertion failed! %s,%s,%s,line=%d\n",\
-        	#expr,__FILE__,__FUNCTION__,__LINE__); \
-	        func}
-#endif
-
-/* convert hex value to ascii hex */
-static const char hexTbl[] = "0123456789ABCDEF";
-
-
-static void ma600_open(dongle_t *self, struct qos_info *qos);
-static void ma600_close(dongle_t *self);
-static int  ma600_change_speed(struct irda_task *task);
-static int  ma600_reset(struct irda_task *task);
-
-/* control byte for MA600 */
-#define MA600_9600	0x00
-#define MA600_19200	0x01
-#define MA600_38400	0x02
-#define MA600_57600	0x03
-#define MA600_115200	0x04
-#define MA600_DEV_ID1	0x05
-#define MA600_DEV_ID2	0x06
-#define MA600_2400	0x08
-
-static struct dongle_reg dongle = {
-	.type = IRDA_MA600_DONGLE,
-	.open = ma600_open,
-	.close = ma600_close,
-	.reset = ma600_reset,
-	.change_speed = ma600_change_speed,
-	.owner = THIS_MODULE,
-};
-
-static int __init ma600_init(void)
-{
-	IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
-	return irda_device_register_dongle(&dongle);
-}
-
-static void __exit ma600_cleanup(void)
-{
-	IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
-	irda_device_unregister_dongle(&dongle);
-}
-
-/*
-	Power on:
-		(0) Clear RTS and DTR for 1 second
-		(1) Set RTS and DTR for 1 second
-		(2) 9600 bps now
-	Note: assume RTS, DTR are clear before
-*/
-static void ma600_open(dongle_t *self, struct qos_info *qos)
-{
-	IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
-
-	qos->baud_rate.bits &= IR_2400|IR_9600|IR_19200|IR_38400
-				|IR_57600|IR_115200;
-	qos->min_turn_time.bits = 0x01;		/* Needs at least 1 ms */	
-	irda_qos_bits_to_value(qos);
-
-	//self->set_dtr_rts(self->dev, FALSE, FALSE);
-	// should wait 1 second
-
-	self->set_dtr_rts(self->dev, TRUE, TRUE);
-	// should wait 1 second
-}
-
-static void ma600_close(dongle_t *self)
-{
-	IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
-
-	/* Power off dongle */
-	self->set_dtr_rts(self->dev, FALSE, FALSE);
-}
-
-static __u8 get_control_byte(__u32 speed)
-{
-	__u8 byte;
-
-	switch (speed) {
-	default:
-	case 115200:
-		byte = MA600_115200;
-		break;
-	case 57600:
-		byte = MA600_57600;
-		break;
-	case 38400:
-		byte = MA600_38400;
-		break;
-	case 19200:
-		byte = MA600_19200;
-		break;
-	case 9600:
-		byte = MA600_9600;
-		break;
-	case 2400:
-		byte = MA600_2400;
-		break;
-	}
-
-	return byte;
-}
-
-/*
- * Function ma600_change_speed (dev, state, speed)
- *
- *    Set the speed for the MA600 type dongle. Warning, this 
- *    function must be called with a process context!
- *
- *    Algorithm
- *    1. Reset
- *    2. clear RTS, set DTR and wait for 1ms
- *    3. send Control Byte to the MA600 through TXD to set new baud rate
- *       wait until the stop bit of Control Byte is sent (for 9600 baud rate, 
- *       it takes about 10 msec)
- *    4. set RTS, set DTR (return to NORMAL Operation)
- *    5. wait at least 10 ms, new setting (baud rate, etc) takes effect here 
- *       after
- */
-static int ma600_change_speed(struct irda_task *task)
-{
-	dongle_t *self = (dongle_t *) task->instance;
-	__u32 speed = (__u32) task->param;
-	static __u8 byte;
-	__u8 byte_echo;
-	int ret = 0;
-	
-	IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
-
-	ASSERT(task != NULL, return -1;);
-
-	if (self->speed_task && self->speed_task != task) {
-		IRDA_DEBUG(0, "%s(), busy!\n", __FUNCTION__);
-		return msecs_to_jiffies(10);
-	} else {
-		self->speed_task = task;
-	}
-
-	switch (task->state) {
-	case IRDA_TASK_INIT:
-	case IRDA_TASK_CHILD_INIT:
-		/* 
-		 * Need to reset the dongle and go to 9600 bps before
-                 * programming 
-		 */
-		if (irda_task_execute(self, ma600_reset, NULL, task, 
-				      (void *) speed)) {
-			/* Dongle need more time to reset */
-			irda_task_next_state(task, IRDA_TASK_CHILD_WAIT);
-	
-			/* give 1 second to finish */
-			ret = msecs_to_jiffies(1000);
-		} else {
-			irda_task_next_state(task, IRDA_TASK_CHILD_DONE);
-		}
-		break;
-
-	case IRDA_TASK_CHILD_WAIT:
-		IRDA_WARNING("%s(), resetting dongle timed out!\n",
-			     __FUNCTION__);
-		ret = -1;
-		break;
-
-	case IRDA_TASK_CHILD_DONE:
-		/* Set DTR, Clear RTS */
-		self->set_dtr_rts(self->dev, TRUE, FALSE);
-	
-		ret = msecs_to_jiffies(1);		/* Sleep 1 ms */
-		irda_task_next_state(task, IRDA_TASK_WAIT);
-		break;
-
-	case IRDA_TASK_WAIT:
-		speed = (__u32) task->param;
-		byte = get_control_byte(speed);
-
-		/* Write control byte */
-		self->write(self->dev, &byte, sizeof(byte));
-		
-		irda_task_next_state(task, IRDA_TASK_WAIT1);
-
-		/* Wait at least 10 ms */
-		ret = msecs_to_jiffies(15);
-		break;
-
-	case IRDA_TASK_WAIT1:
-		/* Read control byte echo */
-		self->read(self->dev, &byte_echo, sizeof(byte_echo));
-
-		if(byte != byte_echo) {
-			/* if control byte != echo, I don't know what to do */
-			printk(KERN_WARNING "%s() control byte written != read!\n", __FUNCTION__);
-			printk(KERN_WARNING "control byte = 0x%c%c\n", 
-			       hexTbl[(byte>>4)&0x0f], hexTbl[byte&0x0f]);
-			printk(KERN_WARNING "byte echo = 0x%c%c\n", 
-			       hexTbl[(byte_echo>>4) & 0x0f], 
-			       hexTbl[byte_echo & 0x0f]);
-		#ifndef NDEBUG
-		} else {
-			IRDA_DEBUG(2, "%s() control byte write read OK\n", __FUNCTION__);
-		#endif
-		}
-
-		/* Set DTR, Set RTS */
-		self->set_dtr_rts(self->dev, TRUE, TRUE);
-
-		irda_task_next_state(task, IRDA_TASK_WAIT2);
-
-		/* Wait at least 10 ms */
-		ret = msecs_to_jiffies(10);
-		break;
-
-	case IRDA_TASK_WAIT2:
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->speed_task = NULL;
-		break;
-
-	default:
-		IRDA_ERROR("%s(), unknown state %d\n",
-			   __FUNCTION__, task->state);
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->speed_task = NULL;
-		ret = -1;
-		break;
-	}
-	return ret;
-}
-
-/*
- * Function ma600_reset (driver)
- *
- *      This function resets the ma600 dongle. Warning, this function 
- *      must be called with a process context!! 
- *
- *      Algorithm:
- *    	  0. DTR=0, RTS=1 and wait 10 ms
- *    	  1. DTR=1, RTS=1 and wait 10 ms
- *        2. 9600 bps now
- */
-int ma600_reset(struct irda_task *task)
-{
-	dongle_t *self = (dongle_t *) task->instance;
-	int ret = 0;
-
-	IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
-
-	ASSERT(task != NULL, return -1;);
-
-	if (self->reset_task && self->reset_task != task) {
-		IRDA_DEBUG(0, "%s(), busy!\n", __FUNCTION__);
-		return msecs_to_jiffies(10);
-	} else
-		self->reset_task = task;
-	
-	switch (task->state) {
-	case IRDA_TASK_INIT:
-		/* Clear DTR and Set RTS */
-		self->set_dtr_rts(self->dev, FALSE, TRUE);
-		irda_task_next_state(task, IRDA_TASK_WAIT1);
-		ret = msecs_to_jiffies(10);		/* Sleep 10 ms */
-		break;
-	case IRDA_TASK_WAIT1:
-		/* Set DTR and RTS */
-		self->set_dtr_rts(self->dev, TRUE, TRUE);
-		irda_task_next_state(task, IRDA_TASK_WAIT2);
-		ret = msecs_to_jiffies(10);		/* Sleep 10 ms */
-		break;
-	case IRDA_TASK_WAIT2:
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->reset_task = NULL;
-		break;
-	default:
-		IRDA_ERROR("%s(), unknown state %d\n",
-			   __FUNCTION__, task->state);
-		irda_task_next_state(task, IRDA_TASK_DONE);		
-		self->reset_task = NULL;
-		ret = -1;
-	}
-	return ret;
-}
-
-MODULE_AUTHOR("Leung <95Etwl@alumni.ee.ust.hk> http://www.engsvr.ust/~eetwl95");
-MODULE_DESCRIPTION("MA600 dongle driver version 0.1");
-MODULE_LICENSE("GPL");
-MODULE_ALIAS("irda-dongle-11"); /* IRDA_MA600_DONGLE */
-		
-/*
- * Function init_module (void)
- *
- *    Initialize MA600 module
- *
- */
-module_init(ma600_init);
-
-/*
- * Function cleanup_module (void)
- *
- *    Cleanup MA600 module
- *
- */
-module_exit(ma600_cleanup);
-
Index: net-2.6.25/drivers/net/irda/mcp2120.c
===================================================================
--- net-2.6.25.orig/drivers/net/irda/mcp2120.c	2008-01-18 09:34:17.000000000 +0100
+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
@@ -1,240 +0,0 @@
-/*********************************************************************
- *            
- *    
- * Filename:      mcp2120.c
- * Version:       1.0
- * Description:   Implementation for the MCP2120 (Microchip)
- * Status:        Experimental.
- * Author:        Felix Tang (tangf@eyetap.org)
- * Created at:    Sun Mar 31 19:32:12 EST 2002
- * Based on code by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 2002 Felix Tang, All Rights Reserved.
- *      
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *  
- ********************************************************************/
-
-#include <linux/module.h>
-#include <linux/delay.h>
-#include <linux/tty.h>
-#include <linux/init.h>
-
-#include <net/irda/irda.h>
-#include <net/irda/irda_device.h>
-
-static int  mcp2120_reset(struct irda_task *task);
-static void mcp2120_open(dongle_t *self, struct qos_info *qos);
-static void mcp2120_close(dongle_t *self);
-static int  mcp2120_change_speed(struct irda_task *task);
-
-#define MCP2120_9600    0x87
-#define MCP2120_19200   0x8B
-#define MCP2120_38400   0x85
-#define MCP2120_57600   0x83
-#define MCP2120_115200  0x81
-
-#define MCP2120_COMMIT  0x11
-
-static struct dongle_reg dongle = {
-	.type = IRDA_MCP2120_DONGLE,
-	.open = mcp2120_open,
-	.close = mcp2120_close,
-	.reset = mcp2120_reset,
-	.change_speed = mcp2120_change_speed,
-	.owner = THIS_MODULE,
-};
-
-static int __init mcp2120_init(void)
-{
-	return irda_device_register_dongle(&dongle);
-}
-
-static void __exit mcp2120_cleanup(void)
-{
-	irda_device_unregister_dongle(&dongle);
-}
-
-static void mcp2120_open(dongle_t *self, struct qos_info *qos)
-{
-	qos->baud_rate.bits &= IR_9600|IR_19200|IR_38400|IR_57600|IR_115200;
-	qos->min_turn_time.bits = 0x01;
-}
-
-static void mcp2120_close(dongle_t *self)
-{
-	/* Power off dongle */
-        /* reset and inhibit mcp2120 */
-	self->set_dtr_rts(self->dev, TRUE, TRUE);
-	//self->set_dtr_rts(self->dev, FALSE, FALSE);
-}
-
-/*
- * Function mcp2120_change_speed (dev, speed)
- *
- *    Set the speed for the MCP2120.
- *
- */
-static int mcp2120_change_speed(struct irda_task *task)
-{
-	dongle_t *self = (dongle_t *) task->instance;
-	__u32 speed = (__u32) task->param;
-	__u8 control[2];
-	int ret = 0;
-
-	self->speed_task = task;
-
-	switch (task->state) {
-	case IRDA_TASK_INIT:
-		/* Need to reset the dongle and go to 9600 bps before
-                   programming */
-                //printk("Dmcp2120_change_speed irda_task_init\n");
-		if (irda_task_execute(self, mcp2120_reset, NULL, task, 
-				      (void *) speed))
-		{
-			/* Dongle need more time to reset */
-			irda_task_next_state(task, IRDA_TASK_CHILD_WAIT);
-
-			/* Give reset 1 sec to finish */
-			ret = msecs_to_jiffies(1000);
-		}
-		break;
-	case IRDA_TASK_CHILD_WAIT:
-		IRDA_WARNING("%s(), resetting dongle timed out!\n",
-			     __FUNCTION__);
-		ret = -1;
-		break;
-	case IRDA_TASK_CHILD_DONE:
-		/* Set DTR to enter command mode */
-		self->set_dtr_rts(self->dev, TRUE, FALSE);
-                udelay(500);
-
-		switch (speed) {
-		case 9600:
-		default:
-			control[0] = MCP2120_9600;
-                        //printk("mcp2120 9600\n");
-			break;
-		case 19200:
-			control[0] = MCP2120_19200;
-                        //printk("mcp2120 19200\n");
-			break;
-		case 34800:
-			control[0] = MCP2120_38400;
-                        //printk("mcp2120 38400\n");
-			break;
-		case 57600:
-			control[0] = MCP2120_57600;
-                        //printk("mcp2120 57600\n");
-			break;
-		case 115200:
-                        control[0] = MCP2120_115200;
-                        //printk("mcp2120 115200\n");
-			break;
-		}
-	        control[1] = MCP2120_COMMIT;
-	
-		/* Write control bytes */
-                self->write(self->dev, control, 2);
- 
-                irda_task_next_state(task, IRDA_TASK_WAIT);
-		ret = msecs_to_jiffies(100);
-                //printk("mcp2120_change_speed irda_child_done\n");
-		break;
-	case IRDA_TASK_WAIT:
-		/* Go back to normal mode */
-		self->set_dtr_rts(self->dev, FALSE, FALSE);
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->speed_task = NULL;
-                //printk("mcp2120_change_speed irda_task_wait\n");
-		break;
-	default:
-		IRDA_ERROR("%s(), unknown state %d\n",
-			   __FUNCTION__, task->state);
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->speed_task = NULL;
-		ret = -1;
-		break;
-	}
-	return ret;
-}
-
-/*
- * Function mcp2120_reset (driver)
- *
- *      This function resets the mcp2120 dongle.
- *      
- *      Info: -set RTS to reset mcp2120
- *            -set DTR to set mcp2120 software command mode
- *            -mcp2120 defaults to 9600 baud after reset
- *
- *      Algorithm:
- *      0. Set RTS to reset mcp2120.
- *      1. Clear RTS and wait for device reset timer of 30 ms (max).
- *      
- */
-
-
-static int mcp2120_reset(struct irda_task *task)
-{
-	dongle_t *self = (dongle_t *) task->instance;
-	int ret = 0;
-
-	self->reset_task = task;
-
-	switch (task->state) {
-	case IRDA_TASK_INIT:
-                //printk("mcp2120_reset irda_task_init\n");
-		/* Reset dongle by setting RTS*/
-		self->set_dtr_rts(self->dev, TRUE, TRUE);
-		irda_task_next_state(task, IRDA_TASK_WAIT1);
-		ret = msecs_to_jiffies(50);
-		break;
-	case IRDA_TASK_WAIT1:
-                //printk("mcp2120_reset irda_task_wait1\n");
-                /* clear RTS and wait for at least 30 ms. */
-		self->set_dtr_rts(self->dev, FALSE, FALSE);
-		irda_task_next_state(task, IRDA_TASK_WAIT2);
-		ret = msecs_to_jiffies(50);
-		break;
-	case IRDA_TASK_WAIT2:
-                //printk("mcp2120_reset irda_task_wait2\n");
-		/* Go back to normal mode */
-		self->set_dtr_rts(self->dev, FALSE, FALSE);
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->reset_task = NULL;
-		break;
-	default:
-		IRDA_ERROR("%s(), unknown state %d\n",
-			   __FUNCTION__, task->state);
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->reset_task = NULL;
-		ret = -1;
-		break;
-	}
-	return ret;
-}
-
-MODULE_AUTHOR("Felix Tang <tangf@eyetap.org>");
-MODULE_DESCRIPTION("Microchip MCP2120");
-MODULE_LICENSE("GPL");
-MODULE_ALIAS("irda-dongle-9"); /* IRDA_MCP2120_DONGLE */
-	
-/*
- * Function init_module (void)
- *
- *    Initialize MCP2120 module
- *
- */
-module_init(mcp2120_init);
-
-/*
- * Function cleanup_module (void)
- *
- *    Cleanup MCP2120 module
- *
- */
-module_exit(mcp2120_cleanup);
Index: net-2.6.25/drivers/net/irda/old_belkin.c
===================================================================
--- net-2.6.25.orig/drivers/net/irda/old_belkin.c	2008-01-18 09:34:17.000000000 +0100
+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
@@ -1,164 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      old_belkin.c
- * Version:       1.1
- * Description:   Driver for the Belkin (old) SmartBeam dongle
- * Status:        Experimental...
- * Author:        Jean Tourrilhes <jt@hpl.hp.com>
- * Created at:    22/11/99
- * Modified at:   Fri Dec 17 09:13:32 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1999 Jean Tourrilhes, All Rights Reserved.
- *     
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- * 
- *     This program is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- *     GNU General Public License for more details.
- * 
- *     You should have received a copy of the GNU General Public License 
- *     along with this program; if not, write to the Free Software 
- *     Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
- *     MA 02111-1307 USA
- *     
- ********************************************************************/
-
-#include <linux/module.h>
-#include <linux/delay.h>
-#include <linux/tty.h>
-#include <linux/init.h>
-
-#include <net/irda/irda.h>
-#include <net/irda/irda_device.h>
-
-/*
- * Belkin is selling a dongle called the SmartBeam.
- * In fact, there is two hardware version of this dongle, of course with
- * the same name and looking the exactly same (grrr...).
- * I guess that I've got the old one, because inside I don't have
- * a jumper for IrDA/ASK...
- *
- * As far as I can make it from info on their web site, the old dongle 
- * support only 9600 b/s, which make our life much simpler as far as
- * the driver is concerned, but you might not like it very much ;-)
- * The new SmartBeam does 115 kb/s, and I've not tested it...
- *
- * Belkin claim that the correct driver for the old dongle (in Windows)
- * is the generic Parallax 9500a driver, but the Linux LiteLink driver
- * fails for me (probably because Linux-IrDA doesn't rate fallback),
- * so I created this really dumb driver...
- *
- * In fact, this driver doesn't do much. The only thing it does is to
- * prevent Linux-IrDA to use any other speed than 9600 b/s ;-) This
- * driver is called "old_belkin" so that when the new SmartBeam is supported
- * its driver can be called "belkin" instead of "new_belkin".
- *
- * Note : this driver was written without any info/help from Belkin,
- * so a lot of info here might be totally wrong. Blame me ;-)
- */
-
-/* Let's guess */
-#define MIN_DELAY 25      /* 15 us, but wait a little more to be sure */
-
-static void old_belkin_open(dongle_t *self, struct qos_info *qos);
-static void old_belkin_close(dongle_t *self);
-static int  old_belkin_change_speed(struct irda_task *task);
-static int  old_belkin_reset(struct irda_task *task);
-
-/* These are the baudrates supported */
-/* static __u32 baud_rates[] = { 9600 }; */
-
-static struct dongle_reg dongle = {
-	.type = IRDA_OLD_BELKIN_DONGLE,
-	.open = old_belkin_open,
-	.close = old_belkin_close,
-	.reset = old_belkin_reset,
-	.change_speed = old_belkin_change_speed,
-	.owner = THIS_MODULE,
-};
-
-static int __init old_belkin_init(void)
-{
-	return irda_device_register_dongle(&dongle);
-}
-
-static void __exit old_belkin_cleanup(void)
-{
-	irda_device_unregister_dongle(&dongle);
-}
-
-static void old_belkin_open(dongle_t *self, struct qos_info *qos)
-{
-	/* Not too fast, please... */
-	qos->baud_rate.bits &= IR_9600;
-	/* Needs at least 10 ms (totally wild guess, can do probably better) */
-	qos->min_turn_time.bits = 0x01;
-}
-
-static void old_belkin_close(dongle_t *self)
-{
-	/* Power off dongle */
-	self->set_dtr_rts(self->dev, FALSE, FALSE);
-}
-
-/*
- * Function old_belkin_change_speed (task)
- *
- *    With only one speed available, not much to do...
- */
-static int old_belkin_change_speed(struct irda_task *task)
-{
-	irda_task_next_state(task, IRDA_TASK_DONE);
-
-	return 0;
-}
-
-/*
- * Function old_belkin_reset (task)
- *
- *      Reset the Old-Belkin type dongle.
- *
- */
-static int old_belkin_reset(struct irda_task *task)
-{
-	dongle_t *self = (dongle_t *) task->instance;
-
-	/* Power on dongle */
-	self->set_dtr_rts(self->dev, TRUE, TRUE);
-
-	/* Sleep a minimum of 15 us */
-	udelay(MIN_DELAY);
-
-	/* This dongles speed "defaults" to 9600 bps ;-) */
-	self->speed = 9600;
-
-	irda_task_next_state(task, IRDA_TASK_DONE);
-
-	return 0;
-}
-
-MODULE_AUTHOR("Jean Tourrilhes <jt@hpl.hp.com>");
-MODULE_DESCRIPTION("Belkin (old) SmartBeam dongle driver");	
-MODULE_LICENSE("GPL");
-MODULE_ALIAS("irda-dongle-7"); /* IRDA_OLD_BELKIN_DONGLE */
-
-/*
- * Function init_module (void)
- *
- *    Initialize Old-Belkin module
- *
- */
-module_init(old_belkin_init);
-
-/*
- * Function cleanup_module (void)
- *
- *    Cleanup Old-Belkin module
- *
- */
-module_exit(old_belkin_cleanup);
Index: net-2.6.25/drivers/net/irda/tekram.c
===================================================================
--- net-2.6.25.orig/drivers/net/irda/tekram.c	2008-01-18 09:34:16.000000000 +0100
+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
@@ -1,282 +0,0 @@
-/*********************************************************************
- *                
- * Filename:      tekram.c
- * Version:       1.2
- * Description:   Implementation of the Tekram IrMate IR-210B dongle
- * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
- * Created at:    Wed Oct 21 20:02:35 1998
- * Modified at:   Fri Dec 17 09:13:09 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
- * 
- *     Copyright (c) 1998-1999 Dag Brattli, All Rights Reserved.
- *      
- *     This program is free software; you can redistribute it and/or 
- *     modify it under the terms of the GNU General Public License as 
- *     published by the Free Software Foundation; either version 2 of 
- *     the License, or (at your option) any later version.
- *  
- *     Neither Dag Brattli nor University of Tromsø admit liability nor
- *     provide warranty for any of this software. This material is 
- *     provided "AS-IS" and at no charge.
- *     
- ********************************************************************/
-
-#include <linux/module.h>
-#include <linux/delay.h>
-#include <linux/tty.h>
-#include <linux/init.h>
-
-#include <net/irda/irda.h>
-#include <net/irda/irda_device.h>
-
-static void tekram_open(dongle_t *self, struct qos_info *qos);
-static void tekram_close(dongle_t *self);
-static int  tekram_change_speed(struct irda_task *task);
-static int  tekram_reset(struct irda_task *task);
-
-#define TEKRAM_115200 0x00
-#define TEKRAM_57600  0x01
-#define TEKRAM_38400  0x02
-#define TEKRAM_19200  0x03
-#define TEKRAM_9600   0x04
-
-#define TEKRAM_PW     0x10 /* Pulse select bit */
-
-static struct dongle_reg dongle = {
-	.type = IRDA_TEKRAM_DONGLE,
-	.open  = tekram_open,
-	.close = tekram_close,
-	.reset = tekram_reset,
-	.change_speed = tekram_change_speed,
-	.owner = THIS_MODULE,
-};
-
-static int __init tekram_init(void)
-{
-	return irda_device_register_dongle(&dongle);
-}
-
-static void __exit tekram_cleanup(void)
-{
-	irda_device_unregister_dongle(&dongle);
-}
-
-static void tekram_open(dongle_t *self, struct qos_info *qos)
-{
-	IRDA_DEBUG(2, "%s()\n", __FUNCTION__ );
-
-	qos->baud_rate.bits &= IR_9600|IR_19200|IR_38400|IR_57600|IR_115200;
-	qos->min_turn_time.bits = 0x01; /* Needs at least 10 ms */	
-	irda_qos_bits_to_value(qos);
-}
-
-static void tekram_close(dongle_t *self)
-{
-	IRDA_DEBUG(2, "%s()\n", __FUNCTION__ );
-
-	/* Power off dongle */
-	self->set_dtr_rts(self->dev, FALSE, FALSE);
-
-	if (self->reset_task)
-		irda_task_delete(self->reset_task);
-	if (self->speed_task)
-		irda_task_delete(self->speed_task);
-}
-
-/*
- * Function tekram_change_speed (dev, state, speed)
- *
- *    Set the speed for the Tekram IRMate 210 type dongle. Warning, this 
- *    function must be called with a process context!
- *
- *    Algorithm
- *    1. clear DTR 
- *    2. set RTS, and wait at least 7 us
- *    3. send Control Byte to the IR-210 through TXD to set new baud rate
- *       wait until the stop bit of Control Byte is sent (for 9600 baud rate, 
- *       it takes about 100 msec)
- *    5. clear RTS (return to NORMAL Operation)
- *    6. wait at least 50 us, new setting (baud rate, etc) takes effect here 
- *       after
- */
-static int tekram_change_speed(struct irda_task *task)
-{
-	dongle_t *self = (dongle_t *) task->instance;
-	__u32 speed = (__u32) task->param;
-	__u8 byte;
-	int ret = 0;
-	
-	IRDA_DEBUG(2, "%s()\n", __FUNCTION__ );
-
-	IRDA_ASSERT(task != NULL, return -1;);
-
-	if (self->speed_task && self->speed_task != task) {
-		IRDA_DEBUG(0, "%s(), busy!\n", __FUNCTION__ );
-		return msecs_to_jiffies(10);
-	} else
-		self->speed_task = task;
-
-	switch (speed) {
-	default:
-	case 9600:
-		byte = TEKRAM_PW|TEKRAM_9600;
-		break;
-	case 19200:
-		byte = TEKRAM_PW|TEKRAM_19200;
-		break;
-	case 38400:
-		byte = TEKRAM_PW|TEKRAM_38400;
-		break;
-	case 57600:
-		byte = TEKRAM_PW|TEKRAM_57600;
-		break;
-	case 115200:
-		byte = TEKRAM_115200;
-		break;
-	}
-
-	switch (task->state) {
-	case IRDA_TASK_INIT:
-	case IRDA_TASK_CHILD_INIT:		
-		/* 
-		 * Need to reset the dongle and go to 9600 bps before
-                 * programming 
-		 */
-		if (irda_task_execute(self, tekram_reset, NULL, task, 
-				      (void *) speed))
-		{
-			/* Dongle need more time to reset */
-			irda_task_next_state(task, IRDA_TASK_CHILD_WAIT);
-
-			/* Give reset 1 sec to finish */
-			ret = msecs_to_jiffies(1000);
-		} else
-			irda_task_next_state(task, IRDA_TASK_CHILD_DONE);
-		break;
-	case IRDA_TASK_CHILD_WAIT:
-		IRDA_WARNING("%s(), resetting dongle timed out!\n",
-			     __FUNCTION__);
-		ret = -1;
-		break;
-	case IRDA_TASK_CHILD_DONE:
-		/* Set DTR, Clear RTS */
-		self->set_dtr_rts(self->dev, TRUE, FALSE);
-	
-		/* Wait at least 7us */
-		udelay(14);
-
-		/* Write control byte */
-		self->write(self->dev, &byte, 1);
-		
-		irda_task_next_state(task, IRDA_TASK_WAIT);
-
-		/* Wait at least 100 ms */
-		ret = msecs_to_jiffies(150);
-		break;
-	case IRDA_TASK_WAIT:
-		/* Set DTR, Set RTS */
-		self->set_dtr_rts(self->dev, TRUE, TRUE);
-
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->speed_task = NULL;
-		break;
-	default:
-		IRDA_ERROR("%s(), unknown state %d\n",
-			   __FUNCTION__, task->state);
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->speed_task = NULL;
-		ret = -1;
-		break;
-	}
-	return ret;
-}
-
-/*
- * Function tekram_reset (driver)
- *
- *      This function resets the tekram dongle. Warning, this function 
- *      must be called with a process context!! 
- *
- *      Algorithm:
- *    	  0. Clear RTS and DTR, and wait 50 ms (power off the IR-210 )
- *        1. clear RTS 
- *        2. set DTR, and wait at least 1 ms 
- *        3. clear DTR to SPACE state, wait at least 50 us for further 
- *         operation
- */
-int tekram_reset(struct irda_task *task)
-{
-	dongle_t *self = (dongle_t *) task->instance;
-	int ret = 0;
-
-	IRDA_DEBUG(2, "%s()\n", __FUNCTION__ );
-
-	IRDA_ASSERT(task != NULL, return -1;);
-
-	if (self->reset_task && self->reset_task != task) {
-		IRDA_DEBUG(0, "%s(), busy!\n", __FUNCTION__ );
-		return msecs_to_jiffies(10);
-	} else
-		self->reset_task = task;
-	
-	/* Power off dongle */
-	//self->set_dtr_rts(self->dev, FALSE, FALSE);
-	self->set_dtr_rts(self->dev, TRUE, TRUE);
-
-	switch (task->state) {
-	case IRDA_TASK_INIT:
-		irda_task_next_state(task, IRDA_TASK_WAIT1);
-
-		/* Sleep 50 ms */
-		ret = msecs_to_jiffies(50);
-		break;
-	case IRDA_TASK_WAIT1:
-		/* Clear DTR, Set RTS */
-		self->set_dtr_rts(self->dev, FALSE, TRUE); 
-
-		irda_task_next_state(task, IRDA_TASK_WAIT2);
-		
-		/* Should sleep 1 ms */
-		ret = msecs_to_jiffies(1);
-		break;
-	case IRDA_TASK_WAIT2:
-		/* Set DTR, Set RTS */
-		self->set_dtr_rts(self->dev, TRUE, TRUE);
-	
-		/* Wait at least 50 us */
-		udelay(75);
-
-		irda_task_next_state(task, IRDA_TASK_DONE);
-		self->reset_task = NULL;
-		break;
-	default:
-		IRDA_ERROR("%s(), unknown state %d\n",
-			   __FUNCTION__, task->state);
-		irda_task_next_state(task, IRDA_TASK_DONE);		
-		self->reset_task = NULL;
-		ret = -1;
-	}
-	return ret;
-}
-
-MODULE_AUTHOR("Dag Brattli <dagb@cs.uit.no>");
-MODULE_DESCRIPTION("Tekram IrMate IR-210B dongle driver");
-MODULE_LICENSE("GPL");
-MODULE_ALIAS("irda-dongle-0"); /* IRDA_TEKRAM_DONGLE */
-		
-/*
- * Function init_module (void)
- *
- *    Initialize Tekram module
- *
- */
-module_init(tekram_init);
-
-/*
- * Function cleanup_module (void)
- *
- *    Cleanup Tekram module
- *
- */
-module_exit(tekram_cleanup);

-- 


^ permalink raw reply

* Re: sctp use-uninitialized warning in net-2.6.25
From: Vlad Yasevich @ 2008-01-18 16:03 UTC (permalink / raw)
  To: David Miller; +Cc: akpm, netdev
In-Reply-To: <20080118.044911.64979691.davem@davemloft.net>

David Miller wrote:
> From: Andrew Morton <akpm@linux-foundation.org>
> Date: Wed, 16 Jan 2008 13:59:57 -0800
> 
>> net/sctp/sm_statefuns.c: In function 'sctp_sf_do_5_1C_ack':
>> net/sctp/sm_statefuns.c:484: warning: 'error' may be used uninitialized in this function
>>
>> It is not obvious that this is a false positive.
> 
> I'll check in the following for now.
> 
> Vlad, please take a look.
> 
> diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c
> index b126751..6e12757 100644
> --- a/net/sctp/sm_statefuns.c
> +++ b/net/sctp/sm_statefuns.c
> @@ -481,7 +481,7 @@ sctp_disposition_t sctp_sf_do_5_1C_ack(const struct sctp_endpoint *ep,
>  	sctp_init_chunk_t *initchunk;
>  	struct sctp_chunk *err_chunk;
>  	struct sctp_packet *packet;
> -	sctp_error_t error;
> +	sctp_error_t error = SCTP_ERROR_NO_ERROR;
>  
>  	if (!sctp_vtag_verify(chunk, asoc))
>  		return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
> 

Hi David

We can do that, or move the declaration to the only block that uses it.
Like this:

diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c
index f02ce3d..193c0c2 100644
--- a/net/sctp/sm_statefuns.c
+++ b/net/sctp/sm_statefuns.c
@@ -442,7 +442,6 @@ sctp_disposition_t sctp_sf_do_5_1C_ack(const struct sctp_endpoint *ep,
 	sctp_init_chunk_t *initchunk;
 	struct sctp_chunk *err_chunk;
 	struct sctp_packet *packet;
-	sctp_error_t error;
 
 	if (!sctp_vtag_verify(chunk, asoc))
 		return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
@@ -466,6 +465,7 @@ sctp_disposition_t sctp_sf_do_5_1C_ack(const struct sctp_endpoint *ep,
 	if (!sctp_verify_init(asoc, chunk->chunk_hdr->type,
 			      (sctp_init_chunk_t *)chunk->chunk_hdr, chunk,
 			      &err_chunk)) {
+		sctp_error_t error;
 
 		SCTP_INC_STATS(SCTP_MIB_ABORTEDS);

-vlad

^ permalink raw reply related

* Re: Performance issue : GRE tunneling
From: Badalian Vyacheslav @ 2008-01-18 15:08 UTC (permalink / raw)
  To: Jeba Anandhan; +Cc: netdev, matthew.hattersley
In-Reply-To: <1200664092.22132.3.camel@vglwks010.vgl2.office.vaioni.com>

Jeba Anandhan пишет:
> Hi All,
> When i send the traffic outside of GRE tunnel, The speed is in 3-4Mbps.
> When i use the tunnel for traffic, the speed get reduced huge. It is
> around 100-300Kbps. What are the factors affects the performance when we
> use tunneling [ ex:GRE tunneling ]?
>   
Hello. You may try get slow place. Get pc without CPU load (console mode 
and etc).
Try compile gre support in kernel. Turn on OPROFILE support.
Install oprofile utils.
do
opcontrol --vmlinux=/usr/src/linux/vmlinux
opcontrol -s
#do connect and try do traffic.
opreport -l | vi -
# you see that functions in kernel use cpu...
opcontrol -h #to stop

Maybe its help for you. Thanks!
> Thanks
> Jeba
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
>   


^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox