Age | Commit message (Collapse) | Author |
|
The mac field of the rt2x00_intf structure is written to once and used
twice. In both these uses the mac address is available via other means.
Remove this field as it does not appear to be necessary.
Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
The bssid field in struct rt2x00_intf is only written to once, and is
never read from.
Remove this field, as it appears to not be needed.
Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
When DRIVER_REQUIRE_TXSTATUS_FIFO is set, intialize the
txstatus_fifo, but initialize rt2x00dev->txstatus_tasklet
only when both DRIVER_REQUIRE_TXSTATUS_FIFO and
rt2x00dev->ops->lib->txstatus_tasklet are set.
This allows the txstatus_fifo to be used by rt2800usb which
does not use txstatus_tasklet.
Signed-off-by: Johannes Stezenbach <js@sig21.net>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Signed-off-by: Johannes Stezenbach <js@sig21.net>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
This patch revamps some common code-paths which are
shared between (re-)initialization and suspend/resume
subroutines. It also adds some helpful comments
about quirks and associated difficulties.
It's quite big, but it should fix #25382:
<https://bugzilla.kernel.org/show_bug.cgi?id=25382>
And hopefully the code is robust enough to deal with
all possible suspend/resume scenarios without requiring
the user to do any sort of manual and possibly
dangerous work.
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
By removing two "safety" msleeps (and an echo nop), the
channel change delay is effectively halved. Previously,
the delay could be as long as 260 ms and the device
could not go off-channel without risking to miss the
next DTIM beacon [interval ~307 ms].
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
This patch adds a forgotten bail-out path.
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
ath5k_reset is called from process context and takes the cc_lock
with plain spin_lock(), but cc_lock can also be taken from tasklets
in softirq context. Thus we need to at least use spin_lock_bh.
This fixes the following lockdep warning:
[ 19.967874] sky2 0000:01:00.0: eth0: enabling interface
[ 19.982761] ieee80211 phy0: device now idle
[ 20.904809] NET: Registered protocol family 17
[ 21.243857] ieee80211 phy0: device no longer idle - scanning
[ 21.404343]
[ 21.404346] =================================
[ 21.404450] [ INFO: inconsistent lock state ]
[ 21.404518] 2.6.37-rc7-wl+ #242
[ 21.404582] ---------------------------------
[ 21.404650] inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage.
[ 21.404721] kworker/u:4/982 [HC0[0]:SC1[3]:HE1:SE0] takes:
[ 21.404792] (&(&common->cc_lock)->rlock){+.?...}, at: [<f8115780>] ath5k_ani_calibration+0x29/0x5d9 [ath5k]
[ 21.405011] {SOFTIRQ-ON-W} state was registered at:
[ 21.405011] [<c105cadd>] __lock_acquire+0x62f/0x13c1
[ 21.405011] [<c105d944>] lock_acquire+0xd5/0xf1
[ 21.405011] [<c12c978d>] _raw_spin_lock+0x45/0x72
[ 21.405011] [<f8111533>] ath5k_reset+0x2c0/0x349 [ath5k]
[ 21.405011] [<f8111a7a>] ath5k_start+0xb8/0x139 [ath5k]
[ 21.405011] [<f849c714>] ieee80211_do_open+0x13f/0x819 [mac80211]
[ 21.405011] [<f849ce51>] ieee80211_open+0x63/0x66 [mac80211]
[ 21.405011] [<c1258b2e>] __dev_open+0x8d/0xb6
[ 21.405011] [<c1255c64>] __dev_change_flags+0x9d/0x114
[ 21.405011] [<c1258a75>] dev_change_flags+0x18/0x44
[ 21.405011] [<c1262990>] do_setlink+0x23f/0x521
[ 21.405011] [<c1262d58>] rtnl_setlink+0xe6/0xea
[ 21.405011] [<c126347c>] rtnetlink_rcv_msg+0x18a/0x1a0
[ 21.405011] [<c126d5f0>] netlink_rcv_skb+0x35/0x7b
[ 21.405011] [<c12632eb>] rtnetlink_rcv+0x20/0x27
[ 21.405011] [<c126d370>] netlink_unicast+0x1bb/0x21e
[ 21.405011] [<c126db21>] netlink_sendmsg+0x23b/0x288
[ 21.405011] [<c124823c>] sock_sendmsg+0xac/0xc4
[ 21.405011] [<c1248680>] sys_sendmsg+0x152/0x1a2
[ 21.405011] [<c1249b0d>] sys_socketcall+0x214/0x275
[ 21.405011] [<c10029d0>] sysenter_do_call+0x12/0x36
[ 21.405011] irq event stamp: 138032
[ 21.405011] hardirqs last enabled at (138032): [<c12ca252>] _raw_spin_unlock_irqrestore+0x3b/0x5e
[ 21.405011] hardirqs last disabled at (138031): [<c12c98cc>] _raw_spin_lock_irqsave+0x18/0x7e
[ 21.405011] softirqs last enabled at (138024): [<f84a570e>] ieee80211_tx_skb+0x47/0x49 [mac80211]
[ 21.405011] softirqs last disabled at (138027): [<c100452b>] do_softirq+0x63/0xb4
[ 21.405011]
[ 21.405011] other info that might help us debug this:
[ 21.405011] 3 locks held by kworker/u:4/982:
[ 21.405011] #0: (name){+.+.+.}, at: [<c1046158>] process_one_work+0x1b8/0x41b
[ 21.405011] #1: ((&(&local->scan_work)->work)){+.+.+.}, at: [<c1046158>] process_one_work+0x1b8/0x41b
[ 21.405011] #2: (&local->mtx){+.+.+.}, at: [<f84920fb>] ieee80211_scan_work+0x32/0x4a4 [mac80211]
[ 21.405011]
[ 21.405011] stack backtrace:
[ 21.405011] Pid: 982, comm: kworker/u:4 Not tainted 2.6.37-rc7-wl+ #242
[ 21.405011] Call Trace:
[ 21.405011] [<c12c6e68>] ? printk+0x1d/0x25
[ 21.405011] [<c105a742>] print_usage_bug+0x181/0x18b
[ 21.405011] [<c105b196>] ? check_usage_forwards+0x0/0xb6
[ 21.405011] [<c105a9ec>] mark_lock+0x2a0/0x4aa
[ 21.405011] [<c1059f6d>] ? trace_hardirqs_off+0xb/0xd
[ 21.405011] [<c105ca68>] __lock_acquire+0x5ba/0x13c1
[ 21.405011] [<c1059eed>] ? trace_hardirqs_off_caller+0x18/0x8d
[ 21.405011] [<c1059f6d>] ? trace_hardirqs_off+0xb/0xd
[ 21.405011] [<c1050411>] ? local_clock+0x2c/0x4f
[ 21.405011] [<c1059e00>] ? save_trace+0x2/0xa0
[ 21.405011] [<c105ac39>] ? mark_held_locks+0x43/0x5b
[ 21.405011] [<c12ca252>] ? _raw_spin_unlock_irqrestore+0x3b/0x5e
[ 21.405011] [<f8115780>] ? ath5k_ani_calibration+0x29/0x5d9 [ath5k]
[ 21.405011] [<c105d944>] lock_acquire+0xd5/0xf1
[ 21.405011] [<f8115780>] ? ath5k_ani_calibration+0x29/0x5d9 [ath5k]
[ 21.405011] [<c12c9b1a>] _raw_spin_lock_bh+0x4a/0x77
[ 21.405011] [<f8115780>] ? ath5k_ani_calibration+0x29/0x5d9 [ath5k]
[ 21.405011] [<f8115780>] ath5k_ani_calibration+0x29/0x5d9 [ath5k]
[ 21.405011] [<c105ac39>] ? mark_held_locks+0x43/0x5b
[ 21.405011] [<f8113496>] ath5k_tasklet_ani+0x1d/0x27 [ath5k]
[ 21.405011] [<c1037304>] tasklet_action+0x96/0x137
[ 21.405011] [<c10379b5>] __do_softirq+0xde/0x1c3
[ 21.405011] [<c10b0cef>] ? arch_get_unmapped_area_topdown+0x3b/0x127
[ 21.405011] [<c10378d7>] ? __do_softirq+0x0/0x1c3
[ 21.405011] <IRQ> [<c1036dee>] ? irq_exit+0x3d/0x49
[ 21.405011] [<c1003b4f>] ? do_IRQ+0x98/0xac
[ 21.405011] [<c1002eee>] ? common_interrupt+0x2e/0x34
[ 21.405011] [<c103007b>] ? sys_unshare+0x57/0x226
[ 21.405011] [<c1047fee>] ? queue_delayed_work+0x1/0x27
[ 21.405011] [<f84a83a0>] ? ieee80211_queue_delayed_work+0x2e/0x33 [mac80211]
[ 21.405011] [<f8492528>] ? ieee80211_scan_work+0x45f/0x4a4 [mac80211]
[ 21.405011] [<c104620e>] ? process_one_work+0x26e/0x41b
[ 21.405011] [<c1046158>] ? process_one_work+0x1b8/0x41b
[ 21.405011] [<f84920c9>] ? ieee80211_scan_work+0x0/0x4a4 [mac80211]
[ 21.405011] [<c10466b6>] ? worker_thread+0x18a/0x2a5
[ 21.405011] [<c12ca25e>] ? _raw_spin_unlock_irqrestore+0x47/0x5e
[ 21.405011] [<c104652c>] ? worker_thread+0x0/0x2a5
[ 21.405011] [<c104abe7>] ? kthread+0x67/0x6c
[ 21.405011] [<c104ab80>] ? kthread+0x0/0x6c
[ 21.405011] [<c1002efa>] ? kernel_thread_helper+0x6/0x10
Signed-off-by: Bob Copeland <me@bobcopeland.com>
Acked-by: Bruno Randolf <br1@einfach.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
For the AR9002, the spur frequency read from the EEPROM is mangled
before being compared against AR_NO_SPUR. This results in the driver
trying to set up the spur mitigation for bogus spurs, rather than
cleanly breaking out.
Signed-off-by: Brian Prodoehl <bprodoehl@nomadio.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Simplify write file operation for /proc files by using
simple_write_to_buffer().
Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: "John W. Linville" <linville@tuxdriver.com>
Cc: linux-wireless@vger.kernel.org
Cc: netdev@vger.kernel.org
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Disabling BH is not required while running from a tasklet context
and so replace spin_lock_bh with just spin_lock.
Signed-off-by: Senthil Balasubramanian <senthilkumar@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Looks that we do not set correctly antennas when scanning
on 5Ghz band and when bluetooth is enabled, because
priv->cfg->scan_tx_antennas[band] is only defined for
IEEE80211_BAND_2GHZ.
To fix we check band before limiting antennas to first one.
This allow to remove hard coded cfg->scan_tx_antennas[band].
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Move mac80211 functions into new file mac80211-ops.c to have a better
separation and to make base.c smaller.
Signed-off-by: Bruno Randolf <br1@einfach.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-2.6
|
|
master.kernel.org:/pub/scm/linux/kernel/git/padovan/bluetooth-next-2.6
|
|
The correct name should be used for the newer devices, remove
reference to Gen2
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
|
# iw wlan0 interface add moni0 type monitor flags control
# ip link set moni0 up
causes a continuous spew of FH_ERROR from the
device. Fix this by not setting the CTL2HOST
filter by itself -- CTL + promisc works fine.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
|
For "led_mode" module parameters, string "led_mode" is duplicated twice,
remove one.
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
|
|
Does not allow any channel different of HCI_CHANNEL_RAW and
HCI_CHANNEL_CONTROL to bind.
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
|
|
The initialization function used by hci_open_dev (hci_init_req) sends
many different HCI commands. The __hci_request function should only
return when all of these commands have completed (or a timeout occurs).
Several of these commands cause hci_req_complete to be called which
causes __hci_request to return prematurely.
This patch fixes the issue by adding a new hdev->req_last_cmd variable
which is set during the initialization procedure. The hci_req_complete
function will no longer mark the request as complete until the command
matching hdev->req_last_cmd completes.
Signed-off-by: Johan Hedberg <johan.hedberg@nokia.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
|
|
This patch adds Bluetooth Management interface events for controller
addition and removal. The events correspond to the existing HCI_DEV_REG
and HCI_DEV_UNREG stack internal events.
Signed-off-by: Johan Hedberg <johan.hedberg@nokia.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
|
|
This patch implements the read_info command which is used to fetch basic
info about an adapter.
Signed-off-by: Johan Hedberg <johan.hedberg@nokia.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
|
|
This patch implements the read_index_list command through which
userspace can get a list of current adapter indices.
Signed-off-by: Johan Hedberg <johan.hedberg@nokia.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
|
|
This patch implements the initial read_version command that userspace
will use before any other management interface operations.
Signed-off-by: Johan Hedberg <johan.hedberg@nokia.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
|
|
The command handlers for bluetooth management messaging should be able
to report errors (such as memory allocation failures) to the higher
levels in the call stack.
Signed-off-by: Johan Hedberg <johan.hedberg@nokia.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
|
|
An RX buffer is set to 9100 bytes to receive 8K AMSDU; however, an skb
of this size fails in the kernel.
Signed-off-by: Chaoming Li <chaoming_li@realsil.com.cn>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
There's a redundant rcu_read_lock/unlock pair, a
redundant variable, and a few redundant accesses
to the 1d_to_ac array. Fix this to make the code
neater and easier to follow.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
It looks like some hardware registers are left into undefined state
after suspend/resume. At minimum, this can cause odd issues related to
key cache and hardware trying to encrypt/decrypt frames unexpectedly.
This seems to happen even when there is no keys configured, i.e., hardware
can end up touching TX frames just based of invalid key cache context
even if the driver is not asking a specific entry to be used. In
addition, RX can likely be affected. This patch fixes this issue.
Signed-off-by: Jouni Malinen <Jouni.Malinen@Atheros.com>
Signed-off-by: Mohammed Shafi Shajakhan <mshajakhan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
If the radio enable switch is off when the driver is loaded, it is not
possible to get radio output until the driver is unloaded and reloaded
with the switch on.
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Device poller already reads current RSSI, so add support for
set_cqm_rssi_config there.
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Radio should be off when interface is down.
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
rndis_set_default_key did call add_wep_key to set default key on device, even
if key is WPA. This caused rndis_wlan not work with wpa_supplicant in nl80211
mode (causing disconnect from AP).
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
count.
Sometimes device returns wrong number of items in bssid-list. Appears that
some specific beacons trigger this problem and leads to very poor scanning
results. Workaround by ignoring num_items received from device and walkthrough
full bssid-list buffer.
v2: Fix buffer range checks and reading next item length. Old code read
behind buffer on last item but didn't use those values as 'count' would
also reach zero. Also fix resizing of buffer if device has larger buffer,
old code assumed that BSSID-list OID would return same buffer size
when it really can return yet another new larger length.
Tested-by: Luís Picciochi <Pitxyoki@gmail.com>
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
The size of the eeprom data is 1088 bytes for AR9485. But
a sanity check is done against 4K which would result in a
'potential read past the end of the buffer' smatch complaint.
Reported-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Introduce a helper function to get the EEPROM mode from channel and remove
multiple similar switch statements. Also since it's now easy to get the EEPROM
mode from the channel, use them inside the functions which need it, instead of
passing a redundant ee_mode parameter.
Signed-off-by: Bruno Randolf <br1@einfach.org>
Acked-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Remove redundant defines.
Signed-off-by: Bruno Randolf <br1@einfach.org>
Acked-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Add a new variable to keep track of the currently configured tx power. Before
max_pwr was re-used for keeping the maximum allowed power as well as the
current configuration. Doing a min() on it allows you to lower the txpower, but
how would you be able to make it higher again?
This patch fixes that by adding a new variable ah_cur_pwr which is used instead
of txp_max_pwr to keep the current configuration. txp_max_pwr is used to check
if we are within the limits.
Another problem fixed by this patch is that it avoids setting a zero txpower
when things are initialized first and the current power is not yet set.
Signed-off-by: Bruno Randolf <br1@einfach.org>
Acked-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
And rename functions which write the powertable to make it clearer.
Signed-off-by: Bruno Randolf <br1@einfach.org>
Acked-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
Let ath5k_hw_txpower() decide if it can re-use the powertable or if it has to
be recalculated instead of passing a 'fast' flag from the outside.
Signed-off-by: Bruno Randolf <br1@einfach.org>
Acked-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|
|
There is a missing unlock when we hit the "No beacon slot available"
error condition.
Signed-off-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
|