The patch fixes a couple of errors regarding QoS, which results in
compile warnings and malfunction of the driver.
Signed-off-by: Henrik Brix Andersen <brix@gentoo.org>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Checking the stack usage of my kernel, showed that ipw2200 had a few bad
offenders. This is on i386 32-bit:
0x00002876 ipw_send_associate: 544
0x000028ee ipw_send_associate: 544
0x000027dc ipw_send_scan_request_ext: 520
0x00002864 ipw_set_sensitivity: 520
0x00005eac ipw_set_rsn_capa: 520
The reason is the host_cmd structure is large (500 bytes). All other
functions currently using ipw_send_cmd() suffer from the same problem.
This patch introduces ipw_send_cmd_simple() for commands with no data
transfer, and ipw_send_cmd_pdu() for commands with a data payload and
makes the payload a pointer to the buffer passed in from the caller.
As an added bonus, the diffstat looks like this:
ipw2200.c | 260 +++++++++++++++++++++-----------------------------------------
ipw2200.h | 2
2 files changed, 92 insertions(+), 170 deletions(-)
and it shrinks the module a lot as well:
Before:
text data bss dec hex filename
75177 2472 44 77693 12f7d drivers/net/wireless/ipw2200.ko
After:
text data bss dec hex filename
61363 2488 44 63895 f997 drivers/net/wireless/ipw2200.ko
So about a ~18% reduction in module size.
Signed-off-by: Jens Axboe <axboe@suse.de>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
I can't really help with why restarts happen, but the following patch
greatly increases the likelihood that a firmware reload will succeed
afterward on my thinkpad. It addresses two issues. First, sysfs module
loading and hotplug are asynchronous, and as such file operations on the
"loading" and "data" files are racy when you load 2 firmwares in quick
succession. Second, the timeout for DMAing the firmware needs to scale
with the size of the firmware being loaded. That is, the watchdog needs
to be on throughput, not on time alone.
I no longer get the firmware load errors, though this is at best a hacky
workaround for a racy interface. (Obviously, this does nothing to address
the fatal errors in firmware which cause reloads; it just causes the
initial loading and the reloads to work more often.)
Signed-off-by: Peter Jones <pjones@redhat.com>
Signed-off-by: Ben M Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This substitutes Linux jiffies_to_msec() wherever there is a
computation for determining milliseconds from jiffies,
following lead from ieee80211 code. And it does a little cleanup.
"it's" == "it is" ... "its" == possessive "it". Indulge me. ;-)
Signed-off-by: Cahill, Ben M <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
I've added a new module param "bt_coexist" which defaults to OFF.
This does not seem to fix the firmware restarts, but it does do "the
right thing" and disables something that we were enabling by default:
signaling the Bluetooth h/w which channel we're on (whether or not the
BT h/w was out there).
Signed-off-by: Ben M Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Nick Kralevich <nick.ipw2200@kralevich.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
The indirect SRAM/register 8/16-bit write routines are broken for
non-dword-aligned destination addresses.
Fortunately, these routines are, so far, not used for non-dword-aligned
destinations, but here's a patch that fixes them, anyway.
The attached patch also adds comments for all direct/indirect I/O routine
variations.
Signed-off-by: Ben M Cahill <ben.m.cahill@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This patch contains the following possible cleanups:
- make needlessly global functions static
- "extern inline" -> "static inline"
- #if 0 the unused global function ipw_led_activity_on()
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Drivers should not sleep for very long inside an ioctl -
so return EAGAIN and let wpa_supplicant handle the problem.
Signed-off-by: Olaf Kirch <okir@suse.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Remove the "inline" keyword from a bunch of big functions in the kernel with
the goal of shrinking it by 30kb to 40kb
Signed-off-by: Arjan van de Ven <arjan@infradead.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Acked-by: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
From: Stephen Hemminger <shemminger@osdl.org>
is_multicast_ether_addr() accepts broadcast too, so the
is_broadcast_ether_addr() calls are redundant.
Signed-off-by: David S. Miller <davem@davemloft.net>
There are currently two IPW_DEBUG options in drivers/net/wireless/Kconfig
(one for ipw2100 and one for ipw2200). The attached patch splits it into
IPW2100_DEBUG and IPW2200_DEBUG.
Signed-off-by: Brice Goglin <Brice.Goglin@ens-lyon.org>
Cc: "James P. Ketrenos" <ipw2100-admin@linux.intel.com>
Cc: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
- Use kzalloc for IPW2200
- Fix config dependency for IPW2200
Signed-off-by: Panagiotis Issaris <takis@issaris.org>
Cc: James Ketrenos <jketreno@linux.intel.com>
Cc: Yi Zhu <yi.zhu@intel.com>
Cc: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
This fixes a slab corruption issue in the ipw2200 driver: it essentially
multiplied the error log number _twice_ by the size of the error element
entry (once explicitly in the code, and once implicitly as part of the
regular pointer arithmetic).
Cc: Henrik Brix Andersen <brix@gentoo.org>
Cc: Bernard Blackham <bernard@blackham.com.au>
Cc: Zilvinas Valinskas <zilvinas@gemtek.lt>
Cc: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
--
The function ipw_request_direct_scan() should bail out when the device
is down. This fixes a lockup caused by wpa_supplicant triggering
ipw_request_direct_scan() while the driver was in a middle of a reset
due to firmware errors.
Thanks to Zilvinas Valinskas for reporting the bug and helping me
debug it.
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Acked-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This patch removes almost all inclusions of linux/version.h. The 3
#defines are unused in most of the touched files.
A few drivers use the simple KERNEL_VERSION(a,b,c) macro, which is
unfortunatly in linux/version.h.
There are also lots of #ifdef for long obsolete kernels, this was not
touched. In a few places, the linux/version.h include was move to where
the LINUX_VERSION_CODE was used.
quilt vi `find * -type f -name "*.[ch]"|xargs grep -El '(UTS_RELEASE|LINUX_VERSION_CODE|KERNEL_VERSION|linux/version.h)'|grep -Ev '(/(boot|coda|drm)/|~$)'`
search pattern:
/UTS_RELEASE\|LINUX_VERSION_CODE\|KERNEL_VERSION\|linux\/\(utsname\|version\).h
Signed-off-by: Olaf Hering <olh@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
configured.
Countermeasures default to being turned off when wpa_supplicant runs,
regardless of if TKIP is being used. They are only turned on if a TKIP
is running. The warning we were printing is therefore not needed.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
Wireless extensions moved the get_wireless_stats handler from being
in net_device into wireless_handler.
Signed-off-by: Benoit Boissinot <benoit.boissinot@ens-lyon.org>
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
The problem is caused by the patch in bug455 -- Channel change flood
generates fatal error.
The patch set the DISASSOCIATING status bit after sending the command.
The process was scheduled out when waiting for the command to be sent to
the card. The disassociated notification clears the DISASSOCIATING bit
in the tasklet before the process set the bit.
Move the bit setting code before sending the command now.
Signed-off-by: Hong Liu <hong.liu@intel.com>
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
error when it tries to auth to a WPA ap. The patch filters out WPA
networks if the card is not wpa enabled when selecting network to
associate to.
Signed-off-by: Hong Liu <hong.liu@intel.com>
Because of the frequent channel change, it is possible that when we are
try to associate with channel 1 (authenticated but not associated).
Another channel change comes at this time, then the driver will issue
disassociate command to the firmware which will cause the fatal error.
It seems that the association/disassociation procedure should not be
interrupted.
The patch attached adds test on STATUS_ASSOCIATING | STATUS_DISASSOCIATING
in ipw_send_cmd(), when ensures that commands will not be sent to firmware
when we are in these two status.
Signed-off-by: Hong Liu <hong.liu@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
(handle_probe_response, handle_beacon, handle_association_response).
Fixed a problem with ipw_send_cmd() returning non-zero on success.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
You can now specify via the module parameter 'cmdlog' to allocate a
ring buffer for caching host commands sent to the firmware. They can
then be dumped at any time via the sysfs entry 'cmd_log'
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
codes to the caller and changed ipw_send_cmd itself to print the error
message to the syslog indicating which command failed to be sent.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
via sysfs even if debugging disabled. When a firmware error is
captured, it will be dumped to the kernel log (if debug enabled) and
captured in memory to be retrieved via sysfs.
If an error has already been captured, subsequent errors will be
dropped.
The existing error can be cleared by writing to the error log entry.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
with request_scan being called before initialized if invoked from
insmod, resulting in no association occurring during boot until iwlist
scan is run.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
If we configure the wep keys after creating the ibss network, the
beacons of this network will not show correctly (it still shows "key
off" in iwlist scan report). This is because we don't update the
beacon info in firmware.
Signed-off-by: Hong Liu <hong.liu@intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
iwconfig matches what their hardware can actually do in regard to
supported channel maps, etc.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
We send SYSTEM_CONFIG command after the TGI_KEY command if hardware
encryption is enabled. It sometimes causes a firmware stall (firmware
doesn't respond to any request) and finally bungs up the Tx send queue.
The solution is to send SYSTEM_CONFIG command in the post association
stage from a workqueue.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
* Fixed#452 problem with setting retry limit (thanks to Hong Liu)
* Fixed#592 race condition during association causing firmware errors
* Fixed#602 problem with building in 64-bit environment
* Fixed#625 problem with SCAN_REQUEST_EXT sometimes failing
* Fixed#645 problem with bit rate not decreasing when moving laptop
farther from AP
* Fixed#656 problem with 'iwconfig eth1 mode auto' and 'modprobe'
locking the system
* Fixed#667 problem with "No space for Tx" for hwcrypto=1
* Fixed#685 kernel panic in rmmod caused by led work is still queued
* Fixed#695 problem with network doesn't reassociate after suspend/resume
* Fixed#701 problem with 'iwprvi sw_reset' not resetting the card from
monitor mode
* Fixed#710 problem with monitor mode being used after a WEP key has
been configured
* Fixed network->mode vs. priv->ieee->iw_mode checking (thanks to Ben Cahill)
* Fixed "Unknown management packet %d" warning
* Fixed setting channels multiple times in monitor mode causes scan stopped
* Fixed ipw_wx_sw_reset doesn't switch firmware if mode is changed.
* Add duplicate packet checking code (kill ping DUP! and TKIP replay warning)
* Fix hardware encryption (both WEP and AES) doesn't work with fragmentation.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
* Fixed#627 problem with open APs not working with wpa_supplicant
* Fixed#632 problem with 'txpower auto' setting power incorrectly (thanks
to Kai Groner)
* Fixed#634 problem with 'iwconfig eth1 frag 0' hanging the shell
* Fixed problem with adapter not fully powering off during suspend to RAM or
when module unloaded.
* Fixed#645 problem with turning fixed rates off not taking effect until
you reload the driver
* Fixed problem with firmware restart if wpa_supplicant was used to set a key
that wasn't exactly 5 or 13 bytes in length.
* Fixed#623 Added iwpriv sw_reset extension to reset sw parameters
* Added managment frame export to user space with frame statistics
* Fixed#652 Modified the driver to load the EEPROM data even if RF KILL is
active during driver load
* Global s:CX2_:IPW_:g to make code more consistent
* Fixed#572 problem with setting txpower to auto
* Fixed#656 problem with kernel oops if mode auto; modprobe -r ipw2200
* Added QoS (CONFIG_IPW_QOS) support. This is being actively developed but
is the first step in getting WMM support into the driver and the kernel.
* Fixed some race conditions with channel changes, association, and scan
abort that could periodically cause a firmware restart.
* Added some extensions to export scan and network statistics to user space
(exposed through speed_scan and net_stats sysfs entries)
* Fixed a few bugs in how monitor mode was supported (scan lists
weren't quite right)
* Updated the firmware requirement from 2.2 to 2.3 which supports
monitor mode.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
* Fix#616 problem with OOPS on module load (thanks to Yi Zhu)
* Fixed problem with led module parameter being described as
'auto_create'
* Added support to merge between adhoc networks (thanks to Mohamed Abbas)
* Added semaphore lock at the driver's entry points to protect against
re-entry (thanks to Mohamed Abbas)
* Added semaphore lock to background scheduled driver actions (thanks to
Mohamed Abbas)
* Changed how signal quality is reported for scan output (thanks to
Peter Jones)
* Fixed how high/low clamp values of signal quality are reported so a
more consistent ramp is provided (thanks to Bill Moss)
* Fix#624 problem with duplicate addresses (again) (thanks to Bernard
Blackham)
* Fix#385 problem with fragmentation and certain sized packets (thanks
to Mohamed Abbas)
* Modified iwconfig network name if RF kill is enabled to say 'radio off'
* Fix#382 problem with driver not responding to probe requests in Ad-Hoc
mode (thanks to Mohamed Abbas)
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
Removed unneeded parenthesis around numeric constant defines
Added support for iwspy
Put in fix for Ad-Hoc mode not passing through all packets (thanks to KKH)
Put in fix for fragmentation not working for fragment sizes between
441-464 bytes (thanks to Mohamed Abbas)
Fixed#592 problem of CONFIG_IEEE80211_WPA_MODULE not including WPA
support into the driver -- fixed as a result of no longer limiting WPAs
inclusion
Fixed#594 problem with user rates mask causing lack of association if
AP mandatory rate is masked out. We now add back in as a supported rate
any mandatory rate.
Fixed#597 kernel oops due to calling dev_kfree_skb on an skb multiple times.
Added code to control LEDs that can be controlled through the wireless
NIC (vs. non-wireless HW interfaces) -- this is currently disabled by
default due to reports by some users of it hanging their laptop.
Added some more debug messages around fragmentation logic
Added locking around STATUS_HCMD_ACTIVE to prevent re-entry race
conditions
Moved ipw_adapter_restart to only execute on the priv->workqueue to
keep keyboard errors from occuring during adapter restart
Added CFG_BACKGROUND_SCAN to easily allow people to play with
background scanning implementations
Modified WPA logic to send WPA IE if one is set (vs. being based on
wpa_enabled)
Modified scan result logic to report WPA and RSN IEs if set (vs. being
based on wpa_enabled)
Fixed issues with endianess compatability between the host and
wireless adapter (thanks to York Liu and Yi Zhu)
Fixed problem with Ad-Hoc network creation causing a firmware error if
a scan was actively running (thanks to Mohamed Abbas)
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
This commit contains the following fixes:
Fixed#559: iwconfig rate support (thanks to Florian Hackenberger)
Improved link signal quality calculation (thanks to Bill Moss)
Fixed a problem with sensitivity threshold during association
Added iwpriv for turning forcing long preamble support:
% iwpriv eth1 set_preamble 1|0
Fixed#542 and #377 support for short preamble
Fixed locked BSSID reporting channel number (thanks to Pedro
Ramalhais)
Fixed type-o with scan watchdog timeout message (thanks to Pedro
Ramalhais)
Changed logic for displaying get_mode output so the code is easier to
follow (thanks to Pedro Ramalhais)
Added initial support for WPA (thanks to Yi Zhu) -- tested with
wpa_supplicant (either tip w/ ipw driver, or with -Dipw2100) with
both CCMP and TKIP
Fixed problem with CCMP not working due to uninitialized 802.11
header fields (thanks to Pedro Ramalhais)
Bug references are to defects stored on http://bughost.org
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
The ipw2200 driver code in current GIT contains a kmalloc() followed by
a memset() without handling a possible memory allocation failure.
Signed-off-by: Panagiotis Issaris <panagiotis.issaris@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
tree 713b6ff3311decfe42d5209f7b2508736d144b85
parent 6465beff0e89779330450dffc2a5e6dc5154eebf
author James Ketrenos <jketreno@linux.intel.com> 1126716726 -0500
committer James Ketrenos <jketreno@linux.intel.com> 1127316162 -0500
Updated ipw2200 to be compatible with ieee80211's hard_start_xmit change.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
tree 9f86c7b4f59249c05c96c360dfaa817995e8a44f
parent 9b09701b2c6254f2fddb009004a14eb5a908714f
author James Ketrenos <jketreno@linux.intel.com> 1126714305 -0500
committer James Ketrenos <jketreno@linux.intel.com> 1127316074 -0500
Updated ipw2200 to be compatible with ieee80211_hdr changes.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
author James Ketrenos <jketreno@linux.intel.com> 1126713327 -0500
committer James Ketrenos <jketreno@linux.intel.com> 1126713327 -0500
Updated ipw2200 to compile with ieee80211 abg_ture to abg_true change.
Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
No code changes, just Lindent + manual fixups.
This prepares us for updating to the latest Intel driver code, plus
gives the source code a nice facelift.
This should bits from -mm tree that are affected by pm_message_t
conversion. [I'm not 100% sure I got all of them, but I certainly got all
the errors on make allyesconfig build, and most of warnings, too. I'll go
through the buildlog tommorow and fix any remaining bits].
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This removes one trap for a programmer, few unused macros, and one
unused struct.
Signed-off-by: Pavel Machek <pavel@suse.cz>
Signed-off-by: Jiri Benc <jbenc@suse.cz>
IEEE 802.11 has a capability field flag called ESS, but ieee80211 had
renamed this to BSS for some reason. hostap has been using
WLAN_CAPABILITY_ESS and since that matches with the standard, lets use
it as the name for this define. Add WLAN_CAPABILITY_BSS as a backwards
compatibility name for the same bit since ieee80211 and ipw2200 are
using this and there are versions outside kernel tree that expect to
find this define name.
Signed-off-by: Jouni Malinen <jkmaline@cc.hut.fi>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
More fixes for greg depredations.
Also nuke lots of pointless typecasts.
All this new wireless code adds near-infinite amounts of trailing whitespace.
Cc: Jeff Garzik <jgarzik@pobox.com>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Use the DMA_32BIT_MASK constant from dma-mapping.h when calling
pci_set_dma_mask() or pci_set_consistent_dma_mask() instead of custom macros.
This patch includes dma-mapping.h explicitly because it caused errors on some
architectures otherwise. See
http://marc.theaimsgroup.com/?t=108001993000001&r=1&w=2 for details
Signed-off-by: Tobias Klauser <tklauser@nuerscht.ch>
Cc: Jeff Garzik <jgarzik@pobox.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
On Mon, 06 Jun 2005 14:29:52 +0800, Zhu Yi wrote:
> ("%zd", sizeof()) should be better.
Thanks. This is a corrected version of the patch.
This patch fixes warnings when compiling ipw2100 and ipw2200 on x86_64.
Signed-off-by: Jiri Benc <jbenc@suse.cz>
Signed-off-by: Jirka Bohac <jbohac@suse.cz>