aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/wireless/p54
AgeCommit message (Collapse)Author
2009-01-29p54spi: stlc45xx eeprom blobChristian Lamparter
Usually every prism54 design hardware has a tiny eeprom chip in which all device specific data for calibration and link-tuning is stored. The stlc45xx chips are the only exception. They are made for embedded devices, where space is scarce. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-29p54: longbow frontend supportChristian Lamparter
This patch adds support for longbow RF chip. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-29p54: prepare the eeprom parser routines for longbowChristian Lamparter
This patch adds support to upload pre-calculated calibration data to the firmware. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-29p54: upgrade memrecord to p54_tx_infoChristian Lamparter
mac80211 reserves 24 bytes in skb->cb for the driver. So far, we only used them to keep track of used and free device memory. But p54spi will need a slice of it, as well as the stuck frame detection. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-29p54: refactor p54_alloc_skbChristian Lamparter
Old firmwares had no problems processing frames which filled eighth of the memory window. However we have to be a bit more careful with fat frames when we talk to new firmwares. Apart from that, I confess the old logic was a bit weird and not very sophisticated. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-29p54: return NETDEV_TX_OK in p54_tx and fix sparse warningsChristian Lamparter
This patch addresses all recent comments from Johannes Berg: 1st: (reference http://marc.info/?l=linux-wireless&m=123124685019631 ) >First off: all those should return NETDEV_TX_OK/BUSY. >iwl-agn: returns 0 (== NETDEV_TX_OK, but still should be changed) >[...] >p54: same (some paths) 2nd: > due to your PS patch ("p54: power save management"), please run sparse: > make C=2 CF=-D__CHECK_ENDIAN__ M=... > +drivers/net/wireless/p54/p54common.c:1753:8: warning: incorrect type in assignment (different base types) > +drivers/net/wireless/p54/p54common.c:1769:29: warning: incorrect type in assignment (different base types) The cpu_to_le16 ended up in the wrong line... Sorry! Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-29p54: power save managementChristian Lamparter
This patch implements dynamic power save feature for p54. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-29p54: implement FIF_OTHER_BSS filter settingChristian Lamparter
According to STMicroelectronics' LMAC documentation, the P54_FILTER_TYPE_TRANSPARENT flag "configures the receive frame filter to pass all frames without regard to type and address matching." Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-29p54: enable rx/tx antenna diversity by eeprom bitsChristian Lamparter
Respect all documented bits in the eeprom about the device diversity features. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-29mac80211: clean up set_key callbackJohannes Berg
The set_key callback now seems rather odd, passing a MAC address instead of a station struct, and a local address instead of a vif struct. Change that. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Acked-by: Bob Copeland <me@bobcopeland.com> [ath5k] Acked-by: Ivo van Doorn <ivdoorn@gmail.com> [rt2x00] Acked-by: Christian Lamparter <chunkeey@web.de> [p54] Tested-by: Kalle Valo <kalle.valo@nokia.com> [iwl3945] Tested-by: Samuel Ortiz <samuel@sortiz.org> [iwl3945] Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-29p54: regulatory domain hintsChristian Lamparter
This patch adds a sub-routine that parses the default country eeprom entry and forwards the obtained Alpha2 identifier to the regulatory sub-system. Note: I dropped the p54 specific regdomain<->alpha2 conversion code for now. But it will be added as soon as there's the common library function is ready. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-29p54: prevent upload of wrong firmwaresChristian Lamparter
This patch will prevent anyone to upload a firmware which was not designed for his device. There's still a catch: There is no easy way to detect if a firmware is for PCI or for USB (1st Gen), because they all share the same LM86 identifier. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-29p54usb: utilize usb_reset_device for 3887Christian Lamparter
Sometimes on unload or reboot the 3887 USB devices become stuck. <usual log entry> kernel: usbcore: registered new interface driver p54usb kernel: usb 2-10: (p54usb) reset failed! (-110) kernel: p54usb: probe of 2-10:1.0 failed with error -110 [...] and a physical unplug and replug was necessary. However we should be able to do this in software as well, without any user interaction. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-29p54: enable proper frame injectionChristian Lamparter
This patch enables frame injection in monitor mode for all p54 devices. As a result, any user can finally use the aircrack-ng suite out of the box. e.g: aireplay-ng --test wlan0 Trying broadcast probe requests... Injection is working! Found 1 AP Trying directed probe requests... XX:XX:XX:XX:XX:XX - channel: i - 'SSID' Ping (min/avg/max): 1.536ms/3.193ms/4.377ms Power: 193.00 30/30: 100% Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-29p54: label queues with their corresponding namesChristian Lamparter
This patch introduce new shiny named labels for our 8 (4 - on old firmware) queues. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-23p54usb: fix packet loss with first generation devicesChristian Lamparter
Artur Skawina confirmed that the first generation devices needs the same URB_ZERO_PACKET flag, in oder to finish the pending transfer properly. The second generation has been successfully fixed by "p54usb: fix random traffic stalls (LM87)" (43af18f06d5) Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-22p54usb: fix nasty use after freeChristian Lamparter
In theory, the firmware acks the received a data frame, before signaling the driver to free it again. However Artur Skawina <art.08.09@gmail.com> has shown that it can happen in reverse order as well. This is very bad and could lead to memory corruptions, oopses and panics. Thanks to Artur Skawina <art.08.09@gmail.com> for reporting and debugging this issue. Signed-off-by: Christian Lamparter <chunkeey@web.de> Tested-by: Artur Skawina <art.08.09@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-22p54: more cryptographic accelerator fixesChristian Lamparter
If we let the firmware do the data encryption, we have to remove the ICV and (M)MIC at the end of the frame before we can give it back to mac80211. Or, these data frames have a few trailing bytes on cooked monitor interfaces. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-22p54: add missing break in eeprom parserChr
This patch fixes a obvious memory leak in the eeprom parser. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-16p54: fix p54_set_key's return codeChristian Lamparter
p54 doesn't support AES-128-CMAC offload. This patch will fix the noisy mac80211 warnings, when 802.11w is enabled: mac80211-phy189: failed to set key (4, ff:ff:ff:ff:ff:ff) to hardware (-22) mac80211-phy189: failed to set key (5, ff:ff:ff:ff:ff:ff) to hardware (-22) Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-16p54: set_tim must be atomic.Artur Skawina
Fix for: BUG: scheduling while atomic: named/2004/0x10000200 Pid: 2004, comm: named Not tainted 2.6.29-rc1-00271-ge9fa6b0 #45 Call Trace: [<c04d4ef7>] schedule+0x2a7/0x320 [<c03aed74>] __alloc_skb+0x34/0x110 [<c011f5b3>] __cond_resched+0x13/0x30 [<c04d501d>] _cond_resched+0x2d/0x40 [<c016d8c5>] kmem_cache_alloc+0x95/0xc0 [<c016b8d4>] check_object+0xc4/0x230 [<c03aed74>] __alloc_skb+0x34/0x110 [<c02ede91>] p54_alloc_skb+0x71/0xf0 [<c02ee36f>] p54_set_tim+0x3f/0xa0 [<c04ae064>] sta_info_set_tim_bit+0x64/0x80 [<c04c1017>] invoke_tx_handlers+0xd57/0xd80 [<c016c397>] free_debug_processing+0x197/0x210 [<c03ae215>] pskb_expand_head+0xf5/0x170 [<c04bfd94>] __ieee80211_tx_prepare+0x164/0x2f0 [<c04c1a8d>] ieee80211_skb_resize+0x6d/0xe0 [<c04c250f>] ieee80211_master_start_xmit+0x23f/0x550 [<c016d188>] __slab_alloc+0x2b8/0x4f0 [<c013a711>] getnstimeofday+0x51/0x120 [<c03b5e7b>] dev_hard_start_xmit+0x1db/0x240 [<c03c6a4b>] __qdisc_run+0x1ab/0x200 [<c0136aa1>] __run_hrtimer+0x31/0xf0 [<c03b6247>] dev_queue_xmit+0x247/0x500 [<c04c1e56>] ieee80211_subif_start_xmit+0x356/0x7d0 [<c0466ff7>] packet_rcv_spkt+0x37/0x150 [<c0466ff7>] packet_rcv_spkt+0x37/0x150 [<c03b5e7b>] dev_hard_start_xmit+0x1db/0x240 [<c03c6a4b>] __qdisc_run+0x1ab/0x200 [<c03b6247>] dev_queue_xmit+0x247/0x500 [<c03bc1e2>] neigh_resolve_output+0xe2/0x200 [<c0410080>] ip_finish_output+0x0/0x290 [<c0410267>] ip_finish_output+0x1e7/0x290 [<c040f355>] ip_local_out+0x15/0x20 [<c040f5d2>] ip_push_pending_frames+0x272/0x380 [<c042bbc6>] udp_push_pending_frames+0x146/0x3a0 [<c042d52a>] udp_sendmsg+0x2fa/0x6b0 [<c0433bc7>] inet_sendmsg+0x37/0x70 [<c03a7b7e>] sock_sendmsg+0xbe/0x100 [<c0133cd0>] autoremove_wake_function+0x0/0x50 [<c011c043>] __wake_up_common+0x43/0x70 [<c024a892>] copy_from_user+0x32/0x130 [<c024a892>] copy_from_user+0x32/0x130 [<c03b001e>] verify_iovec+0x2e/0xb0 [<c03a7d3f>] sys_sendmsg+0x17f/0x290 [<c017730a>] pipe_write+0x29a/0x570 [<c013a172>] update_wall_time+0x492/0x8e0 [<c013a711>] getnstimeofday+0x51/0x120 [<c011b05d>] sched_slice+0x3d/0x80 [<c013a711>] getnstimeofday+0x51/0x120 [<c0136657>] hrtimer_forward+0x147/0x1a0 [<c01101b0>] lapic_next_event+0x10/0x20 [<c013ccb3>] clockevents_program_event+0xa3/0x170 [<c03a9054>] sys_socketcall+0xa4/0x290 [<c0110920>] smp_apic_timer_interrupt+0x40/0x70 [<c0103165>] sysenter_do_call+0x12/0x25 Signed-off-by: Artur Skawina <art.08.09@gmail.com> Acked-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-16p54: fix oops caused by bad eepromsChristian Lamparter
This patch fixes a bug that could occur, if it the eeprom is incomplete or partly corrupted. BUG: unable to handle kernel NULL pointer dereference at 00000008 IP: p54_assign_address+0x108/0x15d [p54common] Oops: 0002 [#1] SMP Pid: 12988, comm: phy1 Tainted: P W 2.6.28-rc6-wl #3 RIP: 0010: p54_assign_address+0x108/0x15d [p54common] [...] Call Trace: p54_alloc_skb+0xa3/0xc0 [p54common] p54_scan+0x37/0x204 [p54common] [...] Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-13p54: fix "‘ret’ may be used uninitialized" warningJohn W. Linville
drivers/net/wireless/p54/p54common.c: In function ‘p54_config’: drivers/net/wireless/p54/p54common.c:1853: warning: ‘ret’ may be used uninitialized in this function Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-12p54: fix WARN_ON at line 2247 of net/mac80211/rx.cChristian Lamparter
This patch hopefully fixes a mac80211<->p54 interaction problem, which was described by Larry Finger (ref: http://marc.info/?l=linux-wireless&m=123009889327707 ) I guess the warning was triggered by pending frames in the receive queue, while we're doing a band change 5GHz. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-12p54usb: fix random traffic stalls (LM87)Christian Lamparter
All LM87 firmwares need a explicit termination "packet", in oder to finish the pending transfer properly. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-12p54: crypto offload fixesChristian Lamparter
This patch fixes two small flaws: - restore the original TKIP IV if we altered it. - reserve & initialize ICV with zeros. This is actually only necessary for some obsolete p54usb firmwares. But we don't know yet, if all devices are compatible with the new revisions. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-12p54usb: Add USB ID for Thomson Speedtouch 121gMichiel
Add the USB ID for Thomson Speedtouch 121g to p54usb. Signed-off-by: Michiel <michiel@ettema.net> Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-01-12p54usb: Fix to prevent SKB memory allocation errors with 4K page sizeLarry Finger
On x86_64 architecture with 4K page size and SLUB debugging enabled, stress testing on p54usb has resulted in skb allocation failures of O(1) and extreme page fragmentation. Reducing rx_mtu fixes this problem by reducing the size of all receive skb allocations to be of O(0). This change does not impact performance in any way. Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-12-19p54usb: bring first generation devices back to lifeChristian Lamparter
This patch fixes a serious regression (introduced by: "p54: fix memory management") that affected isl3886+net2280 usb devices operation. Signed-off-by: Christian Lamparter <chunkeey@web.de> Tested-by: Artur Skawina <art.08.09@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-12-19p54: remove free_on_tx parameterChristian Lamparter
This patch simplifies the tx code a bit and will be necessary for the upcoming stlc45xx<->p54 port. In detail: we no longer have to tell all back-end drivers directly, if we want to free a frame right after it was send to the firmware, or if we do it in the library callback later. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-12-19p54: more accurate rssi to dBm conversionChristian Lamparter
This patch replaces the static rssi auto calibration data with more precise values out of the device's eeprom. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-12-19p54: update ACK failure statistic counter in real-timeChristian Lamparter
Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-12-19p54: move statistic timer update routine into a workqueueChristian Lamparter
This patch moves a good chunk of code from the former statistic update timer routine into a workqueue, which is kindly provided by mac80211. Also as a nice side-effect we can lay the foundation for other essential housekeeping features we want to do in the future. e.g: - drain the (clogged) tx_queue. - initiate bursts. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-12-12p54: fix oops on faulty devicesChristian Lamparter
This patch fixes an oops when the devices suddenly starts to receive martian data frames. bug reference: http://marc.info/?l=linux-wireless&m=122872280317635&w=2 Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-12-12p54: enforce strict tx_queue limitsChristian Lamparter
The patch fixes an old FIXME in p54pci.c by moving the "queue full" check into the common library, where we can deal with it properly. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-12-12mac80211: integrate sta_notify_ps cmds into sta_notifyChristian Lamparter
This patch replaces the newly introduced sta_notify_ps function, which can be used to notify the driver about every power state transition for all associated stations, by integrating its functionality back into the original sta_notify callback. Signed-off-by: Christian Lamparter <chunkeey@web.de> Acked-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-12-12p54usb: rewriting rx/tx routines to make use of usb_anchor's facilitiesChristian Lamparter
Alan Stern found several flaws in p54usb's implementation and annotated: "usb_kill_urb() and similar routines do not expect an URB's completion routine to deallocate it.  This is almost obvious -- if the URB is deallocated before the completion routine returns then there's no way for usb_kill_urb to detect when the URB actually is complete." This patch addresses all known limitations in the old implementation and fixes khub's "use-after-freed" hang, when SLUB debug's poisoning option is enabled. Signed-off-by: Christian Lamparter <chunkeey@web.de> Cc: stable@kernel.org Tested-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-12-05p54: fix lm87 checksum endiannessJohannes Berg
This fixes the checksum calculation for lm87 firmwares on big endian platforms, the device treats the data as an array of 32-bit little endian values so the driver needs to do that as well. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Acked-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-12-05p54: per-device namesChristian Lamparter
This patch replaces the static "p54:" strings in front of most printk's with their corresponding per-device names. It was always a bit of a hassle to check which device was generating all the messages. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-12-05p54: refactoringChristian Lamparter
Thanks to the introduction of "changed" flags, we no longer have to do the bookkeeping of p54's firmware state for everything. Thus we can cut down redundancy code. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-12-05p54: include support for 2.13.24.0 USB LM87 FirmwaresChristian Lamparter
Those firmwares are probably capable of reprogramming the device's eeprom. We better support them officially, before all the accidents happen. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-12-05p54: utilize cryptographic acceleratorChristian Lamparter
This patch allows p54 to utilize its WEP, TKIP and CCMP accelerator. Tested-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-12-05p54: revamp station power save management in access point modeChristian Lamparter
This patch addresses the problem in: http://marc.info/?l=linux-wireless&m=122727674810057&w=2 Thanks to Stefan Steuerwald <salsasepp@googlemail.com> extensive iPod touch tests. We could finally squash some bugs in p54's master mode / access point implementation. Let's hope we got everything right this time and all stations from now on will wake up on TIM and receive their queued frames and go to sleep again without any hiccups. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-11-26p54: fix wmm queue settingsChristian Lamparter
This patch fixes a regression (introduced by "p54: more definitions form lmac_longbow.h and pda.h") It turned out that the "ret" variable wasn't initialized and this caused the following warnings/errors to appear: wmaster1: failed to set TX queue parameters for queue 2 wmaster1: failed to set TX queue parameters for queue 3 wmaster1: failed to set TX queue parameters for queue 1 wmaster1: failed to set TX queue parameters for queue 0 Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-11-25p54: honour bss_info_changed's basic_rates and other settingsChristian Lamparter
As was pointed out in "p54: honour bss_info_changed's short slot time settings", bss_info_changed provides more useful settings that can be used by the driver. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-11-25p54pci: cache firmware for suspend/resumeChristian Lamparter
Johannes pointed out that the driver has cache the firmware for suspend/resume cycles. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-11-25p54: minor fixesChristian Lamparter
This patch contains only contains a one-liner fixes and enhancements Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-11-25p54: enable Mesh Point supportChristian Lamparter
This patch enables Mesh Point operation for any p54 device. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-11-10p54: initialize all deprecated fieldsChr
The new mechanism for allocing space for control frames, didn't "zero" out the payload data... However I haven't heard of any hiccups so far... Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-11-10p54: don't report known but unhandled EEPROM codes as unknownPavel Roskin
Signed-off-by: Pavel Roskin <proski@gnu.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>