31 Jan, 2013
3 commits
-
Currently, when the driver requires the DTIM period,
mac80211 will wait to hear a beacon before association.
This behavior is suboptimal since some drivers may be
able to deal with knowing the DTIM period after the
association, if they get it at all.To address this, notify the drivers with bss_info_changed
with the new BSS_CHANGED_DTIM_PERIOD flag when the DTIM
becomes known. This might be when changing to associated,
or later when the entire association was done with only
probe response information.Rename the hardware flag for the current behaviour to
IEEE80211_HW_NEED_DTIM_BEFORE_ASSOC to more accurately
reflect its behaviour. IEEE80211_HW_NEED_DTIM_PERIOD is
no longer accurate as all drivers get the DTIM period
now, just not before association.Signed-off-by: Emmanuel Grumbach
Signed-off-by: Johannes Berg -
The field is never used, so remove it.
Signed-off-by: Johannes Berg
-
When waking up from WoWLAN, it is useful to know
what triggered the wakeup. Support reporting the
wakeup reason(s) in cfg80211 (and a pass-through
in mac80211) to allow userspace to know.Signed-off-by: Johannes Berg
30 Jan, 2013
1 commit
-
The standard mandates mesh STAs to set the ERP Short Slot
Time capability info bit in beacons to 0. Even though this
is their way of disallowing short slot time for mesh STAs,
there should be no harm in enabling it if we determine all
STAs in the current MBSS support ERP rates.Increases throughput about 20% for legacy rates when
enabled.Signed-off-by: Thomas Pedersen
Signed-off-by: Johannes Berg
29 Jan, 2013
4 commits
-
The warning here occasionally triggers but we haven't
found the cause yet. It's a valid warning since if it
triggers the SME state got confused, so add the SME
state to it to help narrow it down in the future.Signed-off-by: Johannes Berg
-
This is basically a revert of:
commit 5b632fe85ec82e5c43740b52e74c66df50a37db3
Author: Stanislaw Gruszka
Date: Mon Dec 3 12:56:33 2012 +0100mac80211: introduce IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL
We do not need this flag any longer, rt2x00 BAR/BA problem was fixed
correctly by wireless-testing commit:commit 84e9e8ebd369679a958200a8baca96aafb2393bb
Author: Helmut Schaa
Date: Thu Jan 17 17:34:32 2013 +0100rt2x00: Improve TX status handling for BlockAckReq frames
Signed-off-by: Stanislaw Gruszka
Signed-off-by: Johannes Berg -
Conflicts:
drivers/net/wireless/ath/ath9k/main.c
drivers/net/wireless/iwlwifi/dvm/tx.c
28 Jan, 2013
1 commit
-
Before "mac80211: clean up mesh sta allocation warning"
was applied, mesh_sta_info_get() was reshuffled to please
sparse. As a result we neglect to initialize newly created
STAs. Fix this.Signed-off-by: Thomas Pedersen
Signed-off-by: Johannes Berg
26 Jan, 2013
2 commits
-
Add API to enable drivers to implement MAC address based
access control in AP/P2P GO mode. Capable drivers advertise
this capability by setting the maximum number of MAC
addresses in such a list in wiphy->max_acl_mac_addrs.An initial ACL may be given to the NL80211_CMD_START_AP
command and/or changed later with NL80211_CMD_SET_MAC_ACL.Black- and whitelists are supported, but not simultaneously.
Signed-off-by: Vasanthakumar Thiagarajan
[rewrite commit log, many cleanups]
Signed-off-by: Johannes Berg -
struct mac_address will be used by ACL related configuration ops.
Signed-off-by: Vasanthakumar Thiagarajan
Signed-off-by: Johannes Berg
25 Jan, 2013
1 commit
-
gcc cannot prove that the value of sdata->vif.type does not
change between the switch() statement and the second
comparison to NL80211_IFTYPE_AP, causing a harmless
warning.
Slightly reordering the code makes the warning go away
with no functional change.Without this patch, building ARM at91sam9g45_defconfig with
gcc-4.6 results in:net/mac80211/tx.c: In function 'ieee80211_subif_start_xmit':
net/mac80211/tx.c:1797:22: warning: 'chanctx_conf' may be used uninitialized in this function [-Wuninitialized]Signed-off-by: Arnd Bergmann
Cc: Johannes Berg
Cc: "John W. Linville"
Cc: "David S. Miller"
Cc: linux-wireless@vger.kernel.org
Cc: netdev@vger.kernel.org
Signed-off-by: Johannes Berg
24 Jan, 2013
7 commits
-
There's no need to have two checks for "associated"
in ieee80211_sta_restart(), make the first one locked
to not race (unlikely at this point during resume)
and remove the second check.Signed-off-by: Johannes Berg
-
In commit "cfg80211: check radar interface combinations" a regression
was introduced which might lead to NULL dereference if the argument
chan = NULL, which might happen in IBSS/wext case (and probably
others).Signed-off-by: Simon Wunderlich
Signed-off-by: Johannes Berg -
An existing mesh station entry may change its rate
capabilities, so call rate_control_rate_update() to notify
the rate control.Signed-off-by: Thomas Pedersen
[fix compilation]
Signed-off-by: Johannes Berg -
This refactoring fixes a "scheduling while atomic" warning
when allocating a mesh station entry while holding the RCU
read lock. Fix this by creating a new function
mesh_sta_info_get(), which correctly handles the locking
and returns under RCU.Also move some unnecessarily #ifdefed mesh station init
code from sta_info_alloc() to __mesh_sta_info_alloc().Signed-off-by: Thomas Pedersen
[change code flow to make sparse happy]
Signed-off-by: Johannes Berg -
Reference: IEEE 802.11-2012 8.4.2.27.3 "AKM suites"
Signed-off-by: Bing Zhao
Signed-off-by: Johannes Berg -
For drivers that don't actually flush their queues when
aggregation stop with the IEEE80211_AMPDU_TX_STOP_FLUSH
or IEEE80211_AMPDU_TX_STOP_FLUSH_CONT reasons is done,
like iwlwifi or iwlegacy, mac80211 can then transmit on
a TID that the driver still considers busy. This happens
in the following way:- IEEE80211_AMPDU_TX_STOP_FLUSH requested
- driver marks TID as emptying
- mac80211 removes tid_tx data, this can copy packets
to the TX pending queues and also let new packets
through to the driver
- driver gets unexpected TX as it wasn't completely
converted to the new APIIn iwlwifi, this lead to the following warning:
WARNING: at drivers/net/wireless/iwlwifi/dvm/tx.c:442 iwlagn_tx_skb+0xc47/0xce0
Tx while agg.state = 4
Modules linked in: [...]
Pid: 0, comm: kworker/0:0 Tainted: G W 3.1.0 #1
Call Trace:
[] warn_slowpath_common+0x72/0xa0
[] warn_slowpath_fmt+0x33/0x40
[] iwlagn_tx_skb+0xc47/0xce0 [iwldvm]
[] iwlagn_mac_tx+0x23/0x40 [iwldvm]
[] __ieee80211_tx+0xf6/0x3c0 [mac80211]
[] ieee80211_tx+0xd0/0x100 [mac80211]
[] ieee80211_xmit+0x96/0xe0 [mac80211]
[] ieee80211_subif_start_xmit+0x348/0xc80 [mac80211]
[] dev_hard_start_xmit+0x337/0x6d0
[] sch_direct_xmit+0xa9/0x210
[] dev_queue_xmit+0x1b0/0x8e0Fortunately, solving this problem is easy as the station
is being destroyed, so such transmit packets can only
happen due to races. Instead of trying to close the race
just let the race not reach the drivers by making two
changes:
1) remove the explicit aggregation session teardown in
the managed mode code, the same thing will be done
when the station is removed, in __sta_info_destroy.
2) When aggregation stop with AGG_STOP_DESTROY_STA is
requested, leave the tid_tx data around as stopped.
It will be cleared and freed in cleanup_single_sta
later, but until then any racy packets will be put
onto the tid_tx pending queue instead of transmitted
which is fine since the station is being removed.Signed-off-by: Johannes Berg
-
Since drivers can support several BSS / P2P Client
interfaces, the rssi callback needs to inform the driver
about the interface teh rssi event relates to.Signed-off-by: Emmanuel Grumbach
Signed-off-by: Johannes Berg
23 Jan, 2013
21 commits
-
&ah->curchan->ani can never be NULL
Signed-off-by: Felix Fietkau
Signed-off-by: John W. Linville -
It is kept per-channel, so removing unnecessary (or constant) fields from
it can save quite a bit of memory.Signed-off-by: Felix Fietkau
Signed-off-by: John W. Linville -
They are no longer needed for ANI functionality
Signed-off-by: Felix Fietkau
Signed-off-by: John W. Linville -
Signed-off-by: Felix Fietkau
Signed-off-by: John W. Linville -
Signed-off-by: Felix Fietkau
Signed-off-by: John W. Linville -
Dropping packets from aggregation sessions is usually not a good idea, as
it might upset the synchronization of the BlockAck receive window of the
remote node. The use of the retry_tx parameter to reset/tx-drain functions
also seemed a bit arbitrary.
This patch removes this parameter altogether and ensures that pending tx
frames are not dropped for no good reason.Signed-off-by: Felix Fietkau
Signed-off-by: John W. Linville -
Completing frame transmission can fail if the rx engine is stopped
prematurely, as the hw might be waiting for an ACK from the other side.
Shutting down tx before rx might make the DMA shutdown more reliable.Signed-off-by: Felix Fietkau
Signed-off-by: John W. Linville -
The use of variable packet_beacon might be uninitialized in the three files.
Signed-off-by: Cong Ding
Signed-off-by: John W. Linville -
If hardware is not ready, il4965_pci_probe() breaks off initialization,
deallocates all resources, but returns zero.
The patch adds -EIO as return value in this case.Found by Linux Driver Verification project (linuxtesting.org).
Signed-off-by: Alexey Khoroshilov
Signed-off-by: John W. Linville -
If pci_iomap() fails in mwl8k_probe(), it breaks off initialization,
deallocates all resources, but returns zero.
There is a similar issue when priv->rxd_ops is NULL in mwl8k_probe_hw().The patch adds proper error code return values.
Found by Linux Driver Verification project (linuxtesting.org).
Signed-off-by: Alexey Khoroshilov
Signed-off-by: John W. Linville -
When AP responds with appropriate status code, we forward that
code correctly to cfg80211. But sometimes when there is no
response from AP, our firmware uses proprietary status codes.
We will map authentication timeout to WLAN_STATUS_AUTH_TIMEOUT
and other proprietary codes to WLAN_STATUS_UNSPECIFIED_FAILURE.Signed-off-by: Amitkumar Karwar
Signed-off-by: Bing Zhao
Signed-off-by: John W. Linville -
Since rt2800 hardware isn't capable of reporting the TX status of
BlockAckReq frames implement the TX status handling of BARs in
rt2x00lib. We keep track of all BARs that are send out and try to
match incoming BAs to the appropriate BARs. This allows us to report a
more or less accurate TX status for BAR frames which in turn improves
BA session stability.This is loosley based on Christian Lamparter's patch for carl9170
"carl9170: fix HT peer BA session corruption".We have to walk the list of pending BARs for every rx'red BA even
though most BAs don't belong to any of these BARs as they are just
acknowledging an AMPDU. To keep that overhead low use RCU which allows
us to walk the list of pending BARs without the need to acquire a lock.
This however requires us to _copy_ relevant information from the BAR
(RA, TA, control field, start sequence number) into our BAR list entry.Signed-off-by: Helmut Schaa
Tested-by: Andreas Hartmann
Acked-by: Gertjan van Wingerde
Signed-off-by: John W. Linville -
There is a missing break statement so SHARED_KEY authentication doesn't
work.Signed-off-by: Dan Carpenter
Signed-off-by: John W. Linville -
There were no break statements in this switch statement so everything
used the default settings. Per Walter Harms's suggestion, I've replaced
the switch statement and done a little cleanup.Signed-off-by: Dan Carpenter
Signed-off-by: John W. Linville -
in ray_cs.c:
the a_current_ess_id is "Null terminated unless ESSID_SIZE long"
so we need buffer it with '\0' firstly, before using strlen or %s.additional information:
in drivers/net/wireless/rayctl.h:
"NULL terminated unless 32 long" is a comment at line 616, 664
ESSID_SIZE is 32, at line 190
in include/uapi/linux/wireless.h:
IW_ESSID_MAX_SIZE is also 32
in drivers/net/wireless/ray_cs.c:
use strncpy for it, without '\0' terminated, at line 639
use memcpy for it, assume not '\0' terminated in line 1092..1097
buffer it with '\0' firstly, before using %s, in line 2576, 2598..2600Signed-off-by: Chen Gang
Signed-off-by: John W. Linville -
ar900*_init_mode_regs needs to be called before RF banks are allocated,
otherwise the storage size of RF banks isn't known. This patch fixes
a memory overrun that can show up as a crash on unloading the module.Signed-off-by: Felix Fietkau
Signed-off-by: John W. Linville -
Add missing "!" as we are supposed to check "!card->adapter"
in PCIe suspend handler.Cc: "3.2+"
Signed-off-by: Avinash Patil
Signed-off-by: Bing Zhao
Reviewed-by: Sergey V.
Signed-off-by: John W. Linville -
Cc: stable@vger.kernel.org
Signed-off-by: Felix Fietkau
Signed-off-by: John W. Linville -
Chain swapping should only be enabled when the EEPROM chainmask is set to 5,
regardless of what the runtime chainmask is.Cc: stable@vger.kernel.org
Signed-off-by: Felix Fietkau
Signed-off-by: John W. Linville