05 Aug, 2009
40 commits
-
Some of the recent MLME rework I did broke powersave
because the ps_sdata isn't assigned at the right time,
and the work item wasn't removed from the list before
calling ieee80211_recalc_ps(). To be more specific,
this broke the case where you'd enabled PS before
associating, either automatically or with iwconfig.Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville -
Organize key data in private structure better and store WPA keys, so
they can be restored as WEP keys.Signed-off-by: Jussi Kivilinna
Signed-off-by: John W. Linville -
OID_802_11_REMOVE_KEY failed with invalid length error, add missing padding to
structure fix this.Signed-off-by: Jussi Kivilinna
Signed-off-by: John W. Linville -
Add handling for 802.11 specific rndis indications.
Signed-off-by: Jussi Kivilinna
Signed-off-by: John W. Linville -
Allow rndis_wlan to see all indications. Currently rndis_host lets rndis_wlan to
know about link state changes only, but there is whole set of other
802.11-specific indications that rndis_wlan should handle properly. So rename
link_change() to indication() and convert rndis_wlan to use it.Signed-off-by: Jussi Kivilinna
Cc: David Brownell
Signed-off-by: John W. Linville -
Add better debugging for failed OID queries.
Signed-off-by: Jussi Kivilinna
Signed-off-by: John W. Linville -
Set current packet filter to zero to block receiving data packets from
device.Signed-off-by: Jussi Kivilinna
Signed-off-by: John W. Linville -
Reset device properly with RNDIS_MSG_RESET in rndis_wlan_reset() and restore
multicast list afterwards.Signed-off-by: Jussi Kivilinna
Signed-off-by: John W. Linville -
Scanning gets stuck if device is stopped when scan is active. Fix by
clearing/aborting cfg80211 scan on rndis_wlan_stop().Signed-off-by: Jussi Kivilinna
Signed-off-by: John W. Linville -
Driver doesn't need to poll statistics/link status when stopped.
Signed-off-by: Jussi Kivilinna
Signed-off-by: John W. Linville -
rndis_wlan devices freeze after running usbnet_stop several times. It appears
that firmware freezes in state where it does not respond to any RNDIS commands
and device have to be physically unplugged/replugged. This patch lets
minidrivers to disable unlink_urbs on usbnet_stop through new info flag.Signed-off-by: Jussi Kivilinna
Cc: David Brownell
Signed-off-by: John W. Linville -
It's possible to get the NETDEV_UNREGISTER callback multiple
times (see net/core/dev.c:netdev_wait_allrefs) and this will
completely mess up our cleanup code. To avoid that, clean up
only when the interface is still on the wiphy interface list
from which it's removed on the first NETDEV_UNREGISTER call.Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville -
Even with the split into iwlcore/agn/3945 not all symbols
that cross file boundaries are needed in other modules, a
few are only used within iwlcore, for example.Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville -
The mac80211 workqueue exists to enable mac80211 and drivers
to queue their own work on a single threaded workqueue. mac80211
takes care to flush the workqueue during suspend but we never
really had requirements on drivers for how they should use
the workqueue in consideration for suspend.We extend mac80211 to document how the mac80211 workqueue should
be used, how it should not be used and finally move raw access to
the workqueue to mac80211 only. Drivers and mac80211 use helpers
to queue work onto the mac80211 workqueue:* ieee80211_queue_work()
* ieee80211_queue_delayed_work()These helpers will now warn if mac80211 already completed its
suspend cycle and someone is trying to queue work. mac80211
flushes the mac80211 workqueue prior to suspend a few times,
but we haven't taken the care to ensure drivers won't add more
work after suspend. To help with this we add a warning when
someone tries to add work and mac80211 already completed the
suspend cycle.Drivers should ensure they cancel any work or delayed work
in the mac80211 stop() callback.Signed-off-by: Luis R. Rodriguez
Signed-off-by: John W. Linville -
This driver only uses the mac80211 workqueue and mac80211 requires us to
cancel all work at driver stop. Since we now have the cancels in the right
places at stop() we really don't need to flush the mac80211 workqueue so
remove it.Signed-off-by: Luis R. Rodriguez
Acked-by: Kalle Valo
Signed-off-by: John W. Linville -
We need to process tx descriptors for all queues (currently main tx
queue and cabq) which may have triggered the TX completion interrupt.
Otherwise, the queues can get stuck after sending a few frames.Signed-off-by: Bob Copeland
Signed-off-by: John W. Linville -
Signed-off-by: Holger Schurig
Signed-off-by: John W. Linville -
Cc: Christian Lamparter
Signed-off-by: Luis R. Rodriguez
Signed-off-by: John W. Linville -
As shown in http://thread.gmane.org/gmane.linux.kernel.wireless.general/36497,
mac80211 has a bug that allows a call to the TX routine after the queues have
been stopped. This situation will only occur under extreme stress. Although
b43 does not crash when this condition occurs, it does generate a WARN_ON and
also logs a queue overrun message. This patch recognizes b43 is not at fault
and logs a message only when the most verbose debugging mode is enabled. In
the unlikely event that the queue is not stopped when the DMA queue becomes
full, then a warning is issued.During testing of this patch with one output stream running repeated tcpperf
writes and a second running a flood ping, this routine was entered with
the DMA ring stopped about once per hour. The condition where the DMA queue is
full but the ring has not been stopped has never been seen by me.Signed-off-by: Larry Finger
Signed-off-by: John W. Linville -
Previously, we would store the operating mode at interface up time,
but only update the PCU registers when the next reset happened.
The result is that if beacon configuration (ops->bss_info_changed)
happens before ops->config, we will program the wrong things into
the timer registers. Consequently, beacons won't work in AP mode
until after a reset (channel change, scan etc.).This is fragile anyway so just program the opmode as soon as
mac80211 gives it to us.Signed-off-by: Bob Copeland
Signed-off-by: John W. Linville -
sparse complains about a shadowed variable, which
we can just rename, and lots of stuff if the API
tracer is enabled, so kick out the tracer code in
a sparse run -- the macros just confuse it.Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville -
Signed-off-by: Vasanthakumar Thiagarajan
Signed-off-by: John W. Linville -
Monotonicity of packet error rate should be kept when moving
from one phy to another (legacy to ht, ht single stream to dual,
etc). Current code skips updating per for other phys.Signed-off-by: Vasanthakumar Thiagarajan
Signed-off-by: John W. Linville -
Now the lowest rate in 11na ht40 mode is 13.5Mbps this shortens the
range when compared to 11na ht20 mode where the lowest rate is 6.5Mbps.
To improve the range, make 6.5Mbps as the lowest rate in 11na ht40 mode,
this improves the range by approximately 2dB. 11ng ht40 does not have
this issue as it also has basic rates (1, 2, 5.5 and 11).Signed-off-by: Vasanthakumar Thiagarajan
Signed-off-by: John W. Linville -
When a userspace SME is active, we're currently not
keeping track of the BSS properly for reporting the
current link and for internal use. Additionally, it
looks like there is a possible BSS leak in that the
BSS never gets removed from auth_bsses[]. To fix it,
pass the BSS struct to __cfg80211_connect_result in
this case.Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville -
When downing interfaces, it's a good idea to tell the driver to
stop sending beacons; that way the driver doesn't need special
code in ops->remove_interface() when it should already handle the
case in bss_info_changed().This fixes a potential crash with at least ath5k since the vif
pointer will be nullified while beacon interrupts are still active.Signed-off-by: Bob Copeland
Signed-off-by: Johannes Berg
Signed-off-by: John W. Linville -
When only rt2400pci or rt2500pci is compiled without any of the other
rt2x00 modules, then CONFIG_RT2X00_LIB_CRYPTO will not be enabled.However rt2x00mac_set_tim() implemented within #ifdef CONFIG_RT2X00_LIB_CRYPTO
statements while the declaration is placed outside the definition. This results in linking
errors as reporte by Ken.rt2x00_set_tim() has nothing to do with crypto, and thus should be moved outside
of the #ifdef statements.Signed-off-by: Ivo van Doorn
Signed-off-by: John W. Linville -
These drivers have been around for a while, if there are issues
they should be reported. rt2800usb is still a bit flaky though.Signed-off-by: Luis R. Rodriguez
Acked-by: Ivo van Doorn
Signed-off-by: John W. Linville -
This should make it very clear which are pre-802.11 or not
Signed-off-by: Luis R. Rodriguez
Signed-off-by: John W. Linville -
Signed-off-by: Luis R. Rodriguez
Signed-off-by: John W. Linville -
Signed-off-by: Luis R. Rodriguez
Signed-off-by: John W. Linville -
Make atheros wireless drivers visible when you select
"Atheros wirless drivers". Adds links to ath.ko page,
and Atheros drivers page on the wiki.Signed-off-by: Luis R. Rodriguez
Signed-off-by: John W. Linville -
The ath.ko module itself depends on cfg80211
Signed-off-by: Luis R. Rodriguez
Signed-off-by: John W. Linville -
Signed-off-by: Luis R. Rodriguez
Signed-off-by: John W. Linville -
cancel_delayed_work_sync() and cancel_work_sync() are already being
used therefore already waiting for all pending work by the driver
to have been completed, no need to flush the mac80211 workqueue.Cc: Christian Lamparter
Signed-off-by: Luis R. Rodriguez
Signed-off-by: John W. Linville -
This should fix suspend as mac80211 expects all work queued
to the mac80211 workqueue to be canceled at driver stop().Signed-off-by: Luis R. Rodriguez
Acked-by: Kalle Valo
Signed-off-by: John W. Linville -
We weren't ever cancelling this.
Signed-off-by: Luis R. Rodriguez
Acked-by: Kalle Valo
Signed-off-by: John W. Linville -
We should be cancelling our work at the stop callback since
we are borrowing the mac80211 workqueue for our work. As it
stands mac80211 expects this for suspend purposes.The ath9k specific virtual wiphy stuff need only be
cancelled only when the we have no secondary virtual wiphys.Signed-off-by: Luis R. Rodriguez
Signed-off-by: John W. Linville -
We do this as we'll be moving the cancel elsewhere later.
Signed-off-by: Luis R. Rodriguez
Signed-off-by: John W. Linville -
ath9k uses the mac80211 workqueue for 4 different types of work:
* Led blink work
* TX hang monitoring work
* internal wiphy schedular work
* channel change work done for internal wiphy schedularSince the internal wiphy schedular can end up kicking off some
channel channel change work we should first cancel the wiphy
schedular work and then the channel change work.The TX hang work can be cancelled second since we're going down
anyway.Signed-off-by: Luis R. Rodriguez
Signed-off-by: John W. Linville