* [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
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox