* Re: [RFT/RFC 0/4] iwlegacy: workaround for firmware frame tx rejection
From: Stanislaw Gruszka @ 2013-06-11 16:09 UTC (permalink / raw)
To: Jake Edge; +Cc: linux-wireless, Johannes Berg
In-Reply-To: <20130610214134.36085c4b@chukar.edge2.net>
On Mon, Jun 10, 2013 at 09:41:34PM -0600, Jake Edge wrote:
> On Mon, 10 Jun 2013 14:38:48 -0600 Jake Edge wrote:
>
> > > Please apply it together with this mac80211 patch:
> > > http://marc.info/?l=linux-wireless&m=136879090123023&w=2
> > > which I already posted and is queued to upstream. Not having
> > > it may cause troubles and influence negatively this set test.
> >
> > I tried it on both 3.9 (without 4/4 since it doesn't have that
> > workaround in it) and on 3.10-rc4 and in both cases, i get the same
> > behavior: it tries to connect many times and fails, then eventually
> > connects (after like 20 tries from KDE network manager) ...
>
> actually, i spoke too soon, the 3.10-rc4 has not been able to connect
> at all, after many hours of trying. I manually went in and selected
> the other 2.4GHz SSID (rather than the 5GHz it had been trying) and it
> connected right away, fwiw ...
I found a bug in one patch, perhaps it is a reason of failure.
Please apply patch 5/4 from here:
http://marc.info/?l=linux-wireless&m=136947199729148&q=raw
and patch from the end of this email, which fix the bug.
Could you also recheck that "mac80211: fix direct probe auth" patch
is applied, note that it is included in 3.10-rc5 as commit
6211dd12da609bc6893b9c3182630b494737ec4b
If it still will not help, please provide dmesg with debug messages
gathered by following instructions:
dmesg -c
modprobe -r iwl4965
modprobe iwl4965 debug=0x00800001
# wait about 30 seconds until first connection try fail
modprobe -r iwl4965
dmesg > dmesg.txt
Kernel has to be compiled with CONFIG_IWLEGACY_DEBUG=y to print debug
messages.
Thanks
Stanislaw
diff --git a/drivers/net/wireless/iwlegacy/4965-mac.c b/drivers/net/wireless/iwlegacy/4965-mac.c
index 2c77431..d287fd2 100644
--- a/drivers/net/wireless/iwlegacy/4965-mac.c
+++ b/drivers/net/wireless/iwlegacy/4965-mac.c
@@ -2818,7 +2818,7 @@ il4965_hdl_tx(struct il_priv *il, struct il_rx_buf *rxb)
* note received beacon or other frame. We unblock queues in
* il4965_pass_packet_to_mac80211 or in il_mac_bss_info_changed.
*/
- if (unlikely(status == TX_STATUS_FAIL_PASSIVE_NO_RX) &&
+ if (unlikely((status & TX_STATUS_MSK) == TX_STATUS_FAIL_PASSIVE_NO_RX) &&
il->iw_mode == NL80211_IFTYPE_STATION) {
il_stop_queues_by_reason(il, IL_STOP_REASON_PASSIVE);
D_INFO("Stopped queues - RX waiting on passive channel\n");
^ permalink raw reply related
* Re: Power saving features for iwl4965
From: Stanislaw Gruszka @ 2013-06-11 16:19 UTC (permalink / raw)
To: Pedro Francisco; +Cc: Tino Keitel, ML linux-wireless
In-Reply-To: <CAJZjf_xGdvStOG0=FR2+2WsVcjyizQukH+RxysZf8f9-Tk9L9w@mail.gmail.com>
On Mon, Jun 10, 2013 at 08:31:33PM +0100, Pedro Francisco wrote:
> On Sun, Jun 9, 2013 at 1:28 AM, Pedro Francisco
> <pedrogfrancisco@gmail.com> wrote:
> > On Mon, Jun 3, 2013 at 3:18 PM, Stanislaw Gruszka <sgruszka@redhat.com> wrote:
> >> On Mon, Jun 03, 2013 at 10:52:39AM +0200, Tino Keitel wrote:
> >>> (...)
> >>> It would be really nice to have proper power management in a current
> >>> kernel, as the laptop gets noticeably hotter with the current iwlegacy
> >>> driver. That's why I still use a 3.1.10 kernel with an old
> >>> forward-ported iwlagn driver.
> >>
> >> Could you try this experimental patch? (...)
> >
> > I am trying the iwlegacy powersave patch along with CPU scheduler BFS
> > and IO scheduler BFQ.
> >
> > I've got this today: (...)
> >
> > $ uname -a
> > Linux s2 3.9.4-301.local.fc19.i686
> >
> > I have just made a clean boot (as in, this has not happened after a
> > resume for suspend or hibernation).
> >
> > May it be related to the patch? Or may heavy IO with out-of-tree CPU
> > scheduler BFS and out-of-tree IO scheduler BFQ be responsible for the
> > warnings?
>
> I also got a SYSASSERT:
> [Jun 9 10:35] iwl3945 0000:02:00.0: Read idx for DMA queue txq_id (2)
> idx 186 is out of range [0-256] 186 186
> (...)
> [ +0,000164] iwl3945 0000:02:00.0: Read idx for DMA queue txq_id (2)
> idx 185 is out of range [0-256] 186 186
> [Jun 9 10:36] iwl3945 0000:02:00.0: Microcode SW error detected.
> Restarting 0x82000008.
> [ +0,000008] iwl3945 0000:02:00.0: Loaded firmware version: 15.32.2.9
> [ +0,000034] iwl3945 0000:02:00.0: Start IWL Error Log Dump:
> [ +0,000004] iwl3945 0000:02:00.0: Status: 0x000302E4, count: 1
> [ +0,000004] iwl3945 0000:02:00.0: Desc Time asrtPC
> blink2 ilink1 nmiPC Line
> [ +0,000224] iwl3945 0000:02:00.0: SYSASSERT (0x5) 0228106348
> 0x008B6 0x0035E 0x0031C 0x00000 267
>
> [ +0,000010] iwl3945 0000:02:00.0: Error Reply type 0x00000001 cmd
> UNKNOWN (0xFC) seq 0x2099 ser 0x00FC0000
> [ +0,000466] iwl3945 0000:02:00.0: Can't stop Rx DMA.
> [ +0,001647] ieee80211 phy0: Hardware restart was requested
> [Jun 9 10:38] iwl3945 0000:02:00.0: Read idx for DMA queue txq_id (2)
> idx 186 is out of range [0-256] 186 186
> (...)
>
> I disabled powersave (but kept running the same kernel) and none of
> the errors appeared again.
Yes, this seems to be iwlegacy PS issue and has to be fixed before
this patch could be applied.
Thanks for testing.
Stanislaw
^ permalink raw reply
* where is ath9k debugfs?
From: George Nychis @ 2013-06-11 16:40 UTC (permalink / raw)
To: linux-wireless@vger.kernel.org
I have configured my kernel to use ath9k debugfs:
$ grep ATH9K_DEBUGFS /boot/config-`uname -r`
CONFIG_ATH9K_DEBUGFS=y
The location of these debugfs files should be in
/sys/kernel/debug/ath9k according to:
http://wireless.kernel.org/en/users/Drivers/ath9k/debug#Debugfs_files_for_ath9k
However, when I load the modules and plug in an ath9k device, I do not
get any ath9k debugfs files:
root@parallels:/sys# find /sys -name ath9k
root@parallels:/sys# find /sys -name rx_chainmask
root@parallels:/sys# find /sys -name disable_ani
root@parallels:/sys#
I do get the ieee80211 debug, though:
# ls -l /sys/kernel/debug/ieee80211/
total 0
drwxr-xr-x 6 root root 0 Jun 11 12:30 phy0
Do I need to pass some parameter to the kernel module on load to get
the ath9k debugfs? Am I missing something else?
Thanks!
George
^ permalink raw reply
* [PATCH 3.10] rt2800: fix RT5390 & RT3290 TX power settings regression
From: Stanislaw Gruszka @ 2013-06-11 16:48 UTC (permalink / raw)
To: linux-wireless; +Cc: users, Stanislaw Gruszka
My change:
commit cee2c7315f60beeff6137ee59e99acc77d636eeb
Author: Stanislaw Gruszka <sgruszka@redhat.com>
Date: Fri Oct 5 13:44:09 2012 +0200
rt2800: use BBP_R1 for setting tx power
unfortunately does not work well with RT5390 and RT3290 chips as they
require different temperature compensation TX power settings (TSSI
tuning). Since that commit make wireless connection very unstable on
those chips, restore previous behavior to fix regression. Once we
implement proper TSSI tuning on 5390/3290 we can restore back setting
TX power by BBP_R1 register for those chips.
Reported-and-tested-by: Mike Romberg <mike-romberg@comcast.net>
Cc: stable@vger.kernel.org
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
drivers/net/wireless/rt2x00/rt2800lib.c | 29 ++++++++++++++++++-----------
1 file changed, 18 insertions(+), 11 deletions(-)
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
index 92849e5..8b679df 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -2634,19 +2634,26 @@ static void rt2800_config_txpower(struct rt2x00_dev *rt2x00dev,
* TODO: we do not use +6 dBm option to do not increase power beyond
* regulatory limit, however this could be utilized for devices with
* CAPABILITY_POWER_LIMIT.
+ *
+ * TODO: add different temperature compensation code for RT3290 & RT5390
+ * to allow to use BBP_R1 for those chips.
*/
- rt2800_bbp_read(rt2x00dev, 1, &r1);
- if (delta <= -12) {
- power_ctrl = 2;
- delta += 12;
- } else if (delta <= -6) {
- power_ctrl = 1;
- delta += 6;
- } else {
- power_ctrl = 0;
+ if (!rt2x00_rt(rt2x00dev, RT3290) &&
+ !rt2x00_rt(rt2x00dev, RT5390)) {
+ rt2800_bbp_read(rt2x00dev, 1, &r1);
+ if (delta <= -12) {
+ power_ctrl = 2;
+ delta += 12;
+ } else if (delta <= -6) {
+ power_ctrl = 1;
+ delta += 6;
+ } else {
+ power_ctrl = 0;
+ }
+ rt2x00_set_field8(&r1, BBP1_TX_POWER_CTRL, power_ctrl);
+ rt2800_bbp_write(rt2x00dev, 1, r1);
}
- rt2x00_set_field8(&r1, BBP1_TX_POWER_CTRL, power_ctrl);
- rt2800_bbp_write(rt2x00dev, 1, r1);
+
offset = TX_PWR_CFG_0;
for (i = 0; i < EEPROM_TXPOWER_BYRATE_SIZE; i += 2) {
--
1.7.11.7
^ permalink raw reply related
* Re: [PATCH RESEND] mwifiex: enable/disable tx_amsdu support via module parameter
From: John W. Linville @ 2013-06-11 16:45 UTC (permalink / raw)
To: Bing Zhao
Cc: linux-wireless, Amitkumar Karwar, Avinash Patil,
Yogesh Ashok Powar, Nishant Sarmukadam, Frank Huang
In-Reply-To: <1370903998-10925-1-git-send-email-bzhao@marvell.com>
I have the original for this one too...
On Mon, Jun 10, 2013 at 03:39:58PM -0700, Bing Zhao wrote:
> From: Avinash Patil <patila@marvell.com>
>
> This patch disables tx_amsdu support in mwifiex by default.
> tx_amdsu support can be enabled via module parameter at load time.
>
> Signed-off-by: Avinash Patil <patila@marvell.com>
> Signed-off-by: Bing Zhao <bzhao@marvell.com>
> ---
> drivers/net/wireless/mwifiex/wmm.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/mwifiex/wmm.c b/drivers/net/wireless/mwifiex/wmm.c
> index 4be3d33..944e884 100644
> --- a/drivers/net/wireless/mwifiex/wmm.c
> +++ b/drivers/net/wireless/mwifiex/wmm.c
> @@ -37,6 +37,9 @@
> /* Offset for TOS field in the IP header */
> #define IPTOS_OFFSET 5
>
> +static bool enable_tx_amsdu;
> +module_param(enable_tx_amsdu, bool, 0644);
> +
> /* WMM information IE */
> static const u8 wmm_info_ie[] = { WLAN_EID_VENDOR_SPECIFIC, 0x07,
> 0x00, 0x50, 0xf2, 0x02,
> @@ -1233,7 +1236,7 @@ mwifiex_dequeue_tx_packet(struct mwifiex_adapter *adapter)
> mwifiex_send_delba(priv, tid_del, ra, 1);
> }
> }
> - if (mwifiex_is_amsdu_allowed(priv, tid) &&
> + if (enable_tx_amsdu && mwifiex_is_amsdu_allowed(priv, tid) &&
> mwifiex_is_11n_aggragation_possible(priv, ptr,
> adapter->tx_buf_size))
> mwifiex_11n_aggregate_pkt(priv, ptr, INTF_HEADER_LEN,
> --
> 1.8.2.3
>
>
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply
* Re: [PATCH RESEND] mwifiex: fix regression issue for usb interface
From: John W. Linville @ 2013-06-11 16:45 UTC (permalink / raw)
To: Bing Zhao
Cc: linux-wireless, Amitkumar Karwar, Avinash Patil,
Yogesh Ashok Powar, Nishant Sarmukadam, Frank Huang
In-Reply-To: <1370903981-10891-1-git-send-email-bzhao@marvell.com>
I have the original patch. Merging is a bit stalled at the moment,
related to last weeks rebase of the wireless tree...
On Mon, Jun 10, 2013 at 03:39:41PM -0700, Bing Zhao wrote:
> From: Amitkumar Karwar <akarwar@marvell.com>
>
> PATCH "mwifiex: scan delay timer cleanup in unload path" adds code
> to cancel scan delay timer in unload path. It causes a regression
> for USB interface.
>
> USB8797 card gets enumerated twice. First enumeration is for
> firmware download and second enumeration expects firmware
> initialization.
>
> It was observed that we are trying del_timer_sync() without setting
> up the timer when remove handler is called after first enumeration.
>
> This patch moves setup_timer() call to appropriate place so that
> timer is setup for both the enumerations.
>
> Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
> Signed-off-by: Bing Zhao <bzhao@marvell.com>
> ---
> drivers/net/wireless/mwifiex/init.c | 81 ------------------------------------
> drivers/net/wireless/mwifiex/main.c | 82 +++++++++++++++++++++++++++++++++++++
> 2 files changed, 82 insertions(+), 81 deletions(-)
>
> diff --git a/drivers/net/wireless/mwifiex/init.c b/drivers/net/wireless/mwifiex/init.c
> index c7f11c0..2fe31dc 100644
> --- a/drivers/net/wireless/mwifiex/init.c
> +++ b/drivers/net/wireless/mwifiex/init.c
> @@ -52,84 +52,6 @@ static int mwifiex_add_bss_prio_tbl(struct mwifiex_private *priv)
> return 0;
> }
>
> -static void scan_delay_timer_fn(unsigned long data)
> -{
> - struct mwifiex_private *priv = (struct mwifiex_private *)data;
> - struct mwifiex_adapter *adapter = priv->adapter;
> - struct cmd_ctrl_node *cmd_node, *tmp_node;
> - unsigned long flags;
> -
> - if (adapter->surprise_removed)
> - return;
> -
> - if (adapter->scan_delay_cnt == MWIFIEX_MAX_SCAN_DELAY_CNT) {
> - /*
> - * Abort scan operation by cancelling all pending scan
> - * commands
> - */
> - spin_lock_irqsave(&adapter->scan_pending_q_lock, flags);
> - list_for_each_entry_safe(cmd_node, tmp_node,
> - &adapter->scan_pending_q, list) {
> - list_del(&cmd_node->list);
> - mwifiex_insert_cmd_to_free_q(adapter, cmd_node);
> - }
> - spin_unlock_irqrestore(&adapter->scan_pending_q_lock, flags);
> -
> - spin_lock_irqsave(&adapter->mwifiex_cmd_lock, flags);
> - adapter->scan_processing = false;
> - adapter->scan_delay_cnt = 0;
> - adapter->empty_tx_q_cnt = 0;
> - spin_unlock_irqrestore(&adapter->mwifiex_cmd_lock, flags);
> -
> - if (priv->scan_request) {
> - dev_dbg(adapter->dev, "info: aborting scan\n");
> - cfg80211_scan_done(priv->scan_request, 1);
> - priv->scan_request = NULL;
> - } else {
> - priv->scan_aborting = false;
> - dev_dbg(adapter->dev, "info: scan already aborted\n");
> - }
> - goto done;
> - }
> -
> - if (!atomic_read(&priv->adapter->is_tx_received)) {
> - adapter->empty_tx_q_cnt++;
> - if (adapter->empty_tx_q_cnt == MWIFIEX_MAX_EMPTY_TX_Q_CNT) {
> - /*
> - * No Tx traffic for 200msec. Get scan command from
> - * scan pending queue and put to cmd pending queue to
> - * resume scan operation
> - */
> - adapter->scan_delay_cnt = 0;
> - adapter->empty_tx_q_cnt = 0;
> - spin_lock_irqsave(&adapter->scan_pending_q_lock, flags);
> - cmd_node = list_first_entry(&adapter->scan_pending_q,
> - struct cmd_ctrl_node, list);
> - list_del(&cmd_node->list);
> - spin_unlock_irqrestore(&adapter->scan_pending_q_lock,
> - flags);
> -
> - mwifiex_insert_cmd_to_pending_q(adapter, cmd_node,
> - true);
> - queue_work(adapter->workqueue, &adapter->main_work);
> - goto done;
> - }
> - } else {
> - adapter->empty_tx_q_cnt = 0;
> - }
> -
> - /* Delay scan operation further by 20msec */
> - mod_timer(&priv->scan_delay_timer, jiffies +
> - msecs_to_jiffies(MWIFIEX_SCAN_DELAY_MSEC));
> - adapter->scan_delay_cnt++;
> -
> -done:
> - if (atomic_read(&priv->adapter->is_tx_received))
> - atomic_set(&priv->adapter->is_tx_received, false);
> -
> - return;
> -}
> -
> /*
> * This function initializes the private structure and sets default
> * values to the members.
> @@ -211,9 +133,6 @@ int mwifiex_init_priv(struct mwifiex_private *priv)
>
> priv->scan_block = false;
>
> - setup_timer(&priv->scan_delay_timer, scan_delay_timer_fn,
> - (unsigned long)priv);
> -
> return mwifiex_add_bss_prio_tbl(priv);
> }
>
> diff --git a/drivers/net/wireless/mwifiex/main.c b/drivers/net/wireless/mwifiex/main.c
> index 5bc7ef8..4858719 100644
> --- a/drivers/net/wireless/mwifiex/main.c
> +++ b/drivers/net/wireless/mwifiex/main.c
> @@ -28,6 +28,84 @@ const char driver_version[] = "mwifiex " VERSION " (%s) ";
> static char *cal_data_cfg;
> module_param(cal_data_cfg, charp, 0);
>
> +static void scan_delay_timer_fn(unsigned long data)
> +{
> + struct mwifiex_private *priv = (struct mwifiex_private *)data;
> + struct mwifiex_adapter *adapter = priv->adapter;
> + struct cmd_ctrl_node *cmd_node, *tmp_node;
> + unsigned long flags;
> +
> + if (adapter->surprise_removed)
> + return;
> +
> + if (adapter->scan_delay_cnt == MWIFIEX_MAX_SCAN_DELAY_CNT) {
> + /*
> + * Abort scan operation by cancelling all pending scan
> + * commands
> + */
> + spin_lock_irqsave(&adapter->scan_pending_q_lock, flags);
> + list_for_each_entry_safe(cmd_node, tmp_node,
> + &adapter->scan_pending_q, list) {
> + list_del(&cmd_node->list);
> + mwifiex_insert_cmd_to_free_q(adapter, cmd_node);
> + }
> + spin_unlock_irqrestore(&adapter->scan_pending_q_lock, flags);
> +
> + spin_lock_irqsave(&adapter->mwifiex_cmd_lock, flags);
> + adapter->scan_processing = false;
> + adapter->scan_delay_cnt = 0;
> + adapter->empty_tx_q_cnt = 0;
> + spin_unlock_irqrestore(&adapter->mwifiex_cmd_lock, flags);
> +
> + if (priv->scan_request) {
> + dev_dbg(adapter->dev, "info: aborting scan\n");
> + cfg80211_scan_done(priv->scan_request, 1);
> + priv->scan_request = NULL;
> + } else {
> + priv->scan_aborting = false;
> + dev_dbg(adapter->dev, "info: scan already aborted\n");
> + }
> + goto done;
> + }
> +
> + if (!atomic_read(&priv->adapter->is_tx_received)) {
> + adapter->empty_tx_q_cnt++;
> + if (adapter->empty_tx_q_cnt == MWIFIEX_MAX_EMPTY_TX_Q_CNT) {
> + /*
> + * No Tx traffic for 200msec. Get scan command from
> + * scan pending queue and put to cmd pending queue to
> + * resume scan operation
> + */
> + adapter->scan_delay_cnt = 0;
> + adapter->empty_tx_q_cnt = 0;
> + spin_lock_irqsave(&adapter->scan_pending_q_lock, flags);
> + cmd_node = list_first_entry(&adapter->scan_pending_q,
> + struct cmd_ctrl_node, list);
> + list_del(&cmd_node->list);
> + spin_unlock_irqrestore(&adapter->scan_pending_q_lock,
> + flags);
> +
> + mwifiex_insert_cmd_to_pending_q(adapter, cmd_node,
> + true);
> + queue_work(adapter->workqueue, &adapter->main_work);
> + goto done;
> + }
> + } else {
> + adapter->empty_tx_q_cnt = 0;
> + }
> +
> + /* Delay scan operation further by 20msec */
> + mod_timer(&priv->scan_delay_timer, jiffies +
> + msecs_to_jiffies(MWIFIEX_SCAN_DELAY_MSEC));
> + adapter->scan_delay_cnt++;
> +
> +done:
> + if (atomic_read(&priv->adapter->is_tx_received))
> + atomic_set(&priv->adapter->is_tx_received, false);
> +
> + return;
> +}
> +
> /*
> * This function registers the device and performs all the necessary
> * initializations.
> @@ -75,6 +153,10 @@ static int mwifiex_register(void *card, struct mwifiex_if_ops *if_ops,
>
> adapter->priv[i]->adapter = adapter;
> adapter->priv_num++;
> +
> + setup_timer(&adapter->priv[i]->scan_delay_timer,
> + scan_delay_timer_fn,
> + (unsigned long)adapter->priv[i]);
> }
> mwifiex_init_lock_list(adapter);
>
> --
> 1.8.2.3
>
>
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply
* How to change channel type b/t HT20 and HT40 in driver code (ath9k)?
From: wen @ 2013-06-11 17:11 UTC (permalink / raw)
To: linux-wireless
Hello Developers!
I've been trying to implement Notify Channel Width for linux wireless
compat driver.
One thing need to be done is to change station's channel type between ht20
and ht40 without interrupting data transmission.
What I can do now is switching between ht20 rates and ht40 rates, but not
channel type. For ap side, ieee80211_set_channel_type() works fine when
called in function ieee80211_rx_h_action() to change ap channel type
between ht20 and ht40. But on station side, I couldn't find a proper
function within which to call ieee80211_set_channel_type(), and all my try
caused kernel panic. Even calling ieee80211_set_channel_type() exactly the
same way I do with ap on station side will crash system also.
Could anybody give some hint on possible way (e.g. API) to change channel
type between ht20 and ht40 on station side, please?
Thanks in advance!
Wen
^ permalink raw reply
* [PATCH] mac80211: ath9k: Use RCU protection calling ieee80211_get_tx_rates
From: Calvin Owens @ 2013-06-11 17:13 UTC (permalink / raw)
To: Johannes Berg, Luis R. Rodriguez, John W. Linville, Felix Fietkau
Cc: linux-wireless, linux-kernel, ath9k-devel, netdev, jcalvinowens
In-Reply-To: <1370950926.8356.14.camel@jlt4.sipsolutions.net>
Signed-off-by: Calvin Owens <jcalvinowens@gmail.com>
---
drivers/net/wireless/ath/ath9k/xmit.c | 2 ++
drivers/net/wireless/mac80211_hwsim.c | 6 ++++++
include/net/mac80211.h | 3 ++-
3 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index 1c9b1ba..1d57015 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -142,8 +142,10 @@ static void ath_send_bar(struct ath_atx_tid *tid, u16 seqno)
static void ath_set_rates(struct ieee80211_vif *vif, struct ieee80211_sta *sta,
struct ath_buf *bf)
{
+ rcu_read_lock();
ieee80211_get_tx_rates(vif, sta, bf->bf_mpdu, bf->rates,
ARRAY_SIZE(bf->rates));
+ rcu_read_unlock();
}
static void ath_tx_flush_tid(struct ath_softc *sc, struct ath_atx_tid *tid)
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
index cb34c78..468a5a6 100644
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
@@ -900,9 +900,11 @@ static void mac80211_hwsim_tx(struct ieee80211_hw *hw,
hwsim_check_sta_magic(control->sta);
if (rctbl)
+ rcu_read_lock();
ieee80211_get_tx_rates(txi->control.vif, control->sta, skb,
txi->control.rates,
ARRAY_SIZE(txi->control.rates));
+ rcu_read_unlock();
txi->rate_driver_data[0] = channel;
mac80211_hwsim_monitor_rx(hw, skb, channel);
@@ -1008,9 +1010,11 @@ static void mac80211_hwsim_tx_frame(struct ieee80211_hw *hw,
if (rctbl) {
struct ieee80211_tx_info *txi = IEEE80211_SKB_CB(skb);
+ rcu_read_lock();
ieee80211_get_tx_rates(txi->control.vif, NULL, skb,
txi->control.rates,
ARRAY_SIZE(txi->control.rates));
+ rcu_read_unlock();
}
mac80211_hwsim_monitor_rx(hw, skb, chan);
@@ -1044,9 +1048,11 @@ static void mac80211_hwsim_beacon_tx(void *arg, u8 *mac,
return;
info = IEEE80211_SKB_CB(skb);
if (rctbl)
+ rcu_read_lock();
ieee80211_get_tx_rates(vif, NULL, skb,
info->control.rates,
ARRAY_SIZE(info->control.rates));
+ rcu_read_unlock();
txrate = ieee80211_get_tx_rate(hw, info);
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 885898a..df345c1 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -3175,7 +3175,8 @@ void ieee80211_sta_set_buffered(struct ieee80211_sta *sta,
*
* Call this function in a driver with per-packet rate selection support
* to combine the rate info in the packet tx info with the most recent
- * rate selection table for the station entry.
+ * rate selection table for the station entry. Must be called with RCU
+ * protection.
*
* @vif: &struct ieee80211_vif pointer from the add_interface callback.
* @sta: the receiver station to which this packet is sent.
--
1.8.2.1
^ permalink raw reply related
* Re: [PATCH] carl9170: make use of the new rate control API
From: Christian Lamparter @ 2013-06-11 17:46 UTC (permalink / raw)
To: Thomas Huehn; +Cc: linville, linux-wireless, nbd, johannes
In-Reply-To: <1370966237-27716-1-git-send-email-thomas@net.t-labs.tu-berlin.de>
On Tuesday, June 11, 2013 05:57:17 PM Thomas Huehn wrote:
> This patch enabels carl9170 to use the new rate table to lookup each
> mrr rate and retry information per packet.
???
carl9170 already supports the new rate control API (Patch from 2013-04-23).
<http://permalink.gmane.org/gmane.linux.kernel.wireless.general/107657>
Can you please tell me what you think is missing?
Regards,
Chr
^ permalink raw reply
* pull-request: iwlwifi-next 2013-06-11
From: Johannes Berg @ 2013-06-11 18:15 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless
[-- Attachment #1: Type: text/plain, Size: 1299 bytes --]
Hi,
For iwlwifi-next I only have a few cleanups:
Emmanuel removed an unused field, fixed a comment and added a warning
for something that shouldn't happen in practice, and I removed the
declaration of a function that doesn't even exist.
johannes
The following changes since commit fded313ec045024d4f769ce6b3e41fe343c167b0:
iwlwifi: mvm: don't request SMPS on non-STA iface (2013-06-05 09:06:13 +0200)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next.git for-john
for you to fetch changes up to 476a9e09cbe37bad93de6e460b76f89f3ad22c9b:
iwlwifi: ignore 0-length PHY DB sections (2013-06-11 20:12:02 +0200)
----------------------------------------------------------------
Emmanuel Grumbach (3):
iwlwifi: mvm: remove unused wait_for_ba field
iwlwifi: mvm: fix irrelevant comment
iwlwifi: ignore 0-length PHY DB sections
Johannes Berg (1):
iwlwifi: mvm: remove iwl_mvm_dbgfs_set_fw_dbg_log declaration
drivers/net/wireless/iwlwifi/iwl-phy-db.c | 3 +++
drivers/net/wireless/iwlwifi/mvm/mac80211.c | 3 +--
drivers/net/wireless/iwlwifi/mvm/mvm.h | 5 -----
drivers/net/wireless/iwlwifi/mvm/sta.h | 2 --
4 files changed, 4 insertions(+), 9 deletions(-)
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply
* Re: pull-request: iwlwifi-next 2013-06-11
From: Johannes Berg @ 2013-06-11 18:18 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless
In-Reply-To: <1370974531.8356.56.camel@jlt4.sipsolutions.net>
On Tue, 2013-06-11 at 20:15 +0200, Johannes Berg wrote:
> Hi,
>
> For iwlwifi-next I only have a few cleanups:
I was wondering while writing this ... but didn't realize quickly enough
I'd applied a few patches to the wrong tree :(
Sorry about that, new one coming!
johannes
^ permalink raw reply
* Re: pull-request: iwlwifi-next 2013-06-11
From: Johannes Berg @ 2013-06-11 18:21 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless
In-Reply-To: <1370974531.8356.56.camel@jlt4.sipsolutions.net>
[-- Attachment #1: Type: text/plain, Size: 2051 bytes --]
Hi John,
Still it's mostly cleanups, with a few fixes thrown in. I had to merge
wireless-next/master to get the interface combinations revert that I had
to do due to my own stupidity :-)
Emmanuel contributed two AP mode fixes, removed an unused field, fixed a
comment and added a warning for something that shouldn't happen in
practice, and I removed the declaration of a function that doesn't even
exist and cleaned up a small include.
johannes
The following changes since commit 8b3e7be437a6b62118d0485ad971e724afe23fdf:
cw1200: Fix an assorted pile of checkpatch warnings. (2013-06-11 12:48:10 -0400)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next.git for-john
for you to fetch changes up to 8eb3871076875f247483f4a1fe6713e6d440c53e:
iwlwifi: mvm: Update the supported interface combinations (2013-06-11 20:17:06 +0200)
----------------------------------------------------------------
Emmanuel Grumbach (5):
iwlwifi: mvm: remove unused wait_for_ba field
iwlwifi: mvm: fix irrelevant comment
iwlwifi: ignore 0-length PHY DB sections
iwlwifi: mvm: properly tell the fw that a STA is awake
iwlwifi: mvm: don't set the MCAST queue in STA's queue list
Ilan Peer (1):
iwlwifi: mvm: Update the supported interface combinations
Johannes Berg (3):
iwlwifi: mvm: remove iwl_mvm_dbgfs_set_fw_dbg_log declaration
iwlwifi: include export.h instead of module.h
Merge remote-tracking branch 'wireless-next/master' into iwlwifi-next
drivers/net/wireless/iwlwifi/iwl-drv.h | 3 +--
drivers/net/wireless/iwlwifi/iwl-phy-db.c | 3 +++
drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c | 5 +----
drivers/net/wireless/iwlwifi/mvm/mac80211.c | 9 ++++-----
drivers/net/wireless/iwlwifi/mvm/mvm.h | 5 -----
drivers/net/wireless/iwlwifi/mvm/sta.c | 11 +----------
drivers/net/wireless/iwlwifi/mvm/sta.h | 2 --
7 files changed, 10 insertions(+), 28 deletions(-)
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply
* [PATCH] mac80211: track AP's beacon rate and give it to the driver
From: Johannes Berg @ 2013-06-11 18:21 UTC (permalink / raw)
To: linux-wireless; +Cc: Alexander Bondar
From: Alexander Bondar <alexander.bondar@intel.com>
Track the AP's beacon rate in the scan BSS data and in the
interface configuration to let the drivers know which rate
the AP is using. This information may be used by drivers,
in our case to let the firmware optimise beacon RX.
Signed-off-by: Alexander Bondar <alexander.bondar@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
include/net/mac80211.h | 2 ++
net/mac80211/ieee80211_i.h | 1 +
net/mac80211/mlme.c | 8 +++++++-
net/mac80211/scan.c | 9 +++++++++
4 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index a405a7a..5b7a3da 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -305,6 +305,7 @@ enum ieee80211_rssi_event {
* @basic_rates: bitmap of basic rates, each bit stands for an
* index into the rate table configured by the driver in
* the current band.
+ * @beacon_rate: associated AP's beacon TX rate
* @mcast_rate: per-band multicast rate index + 1 (0: disabled)
* @bssid: The BSSID for this BSS
* @enable_beacon: whether beaconing should be enabled or not
@@ -352,6 +353,7 @@ struct ieee80211_bss_conf {
u32 sync_device_ts;
u8 sync_dtim_count;
u32 basic_rates;
+ struct ieee80211_rate *beacon_rate;
int mcast_rate[IEEE80211_NUM_BANDS];
u16 ht_operation_mode;
s32 cqm_rssi_thold;
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 7a6f1a0..a4dfb0b 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -94,6 +94,7 @@ struct ieee80211_bss {
#define IEEE80211_MAX_SUPP_RATES 32
u8 supp_rates[IEEE80211_MAX_SUPP_RATES];
size_t supp_rates_len;
+ struct ieee80211_rate *beacon_rate;
/*
* During association, we save an ERP value from a probe response so
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index ad9bb9e..87f2d4d 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -1779,8 +1779,10 @@ static void ieee80211_set_associated(struct ieee80211_sub_if_data *sdata,
* probably just won't work at all.
*/
bss_conf->dtim_period = sdata->u.mgd.dtim_period ?: 1;
+ bss_conf->beacon_rate = bss->beacon_rate;
bss_info_changed |= BSS_CHANGED_BEACON_INFO;
} else {
+ bss_conf->beacon_rate = NULL;
bss_conf->dtim_period = 0;
}
@@ -1903,6 +1905,8 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
del_timer_sync(&sdata->u.mgd.chswitch_timer);
sdata->vif.bss_conf.dtim_period = 0;
+ sdata->vif.bss_conf.beacon_rate = NULL;
+
ifmgd->have_beacon = false;
ifmgd->flags = 0;
@@ -2754,8 +2758,10 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
bss = ieee80211_bss_info_update(local, rx_status, mgmt, len, elems,
channel);
- if (bss)
+ if (bss) {
ieee80211_rx_bss_put(local, bss);
+ sdata->vif.bss_conf.beacon_rate = bss->beacon_rate;
+ }
if (!sdata->u.mgd.associated ||
!ether_addr_equal(mgmt->bssid, sdata->u.mgd.associated->bssid))
diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c
index 99b10392..1b122a7 100644
--- a/net/mac80211/scan.c
+++ b/net/mac80211/scan.c
@@ -140,6 +140,15 @@ ieee80211_bss_info_update(struct ieee80211_local *local,
bss->valid_data |= IEEE80211_BSS_VALID_WMM;
}
+ if (beacon) {
+ struct ieee80211_supported_band *sband =
+ local->hw.wiphy->bands[rx_status->band];
+ if (!(rx_status->flag & RX_FLAG_HT) &&
+ !(rx_status->flag & RX_FLAG_VHT))
+ bss->beacon_rate =
+ &sband->bitrates[rx_status->rate_idx];
+ }
+
return bss;
}
--
1.8.0
^ permalink raw reply related
* [PATCH] mac80211: Fix VHT bandwidth change event
From: Johannes Berg @ 2013-06-11 18:21 UTC (permalink / raw)
To: linux-wireless; +Cc: Ilan Peer
From: Ilan Peer <ilan.peer@intel.com>
Signed-off-by: Ilan Peer <ilan.peer@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
net/mac80211/vht.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/mac80211/vht.c b/net/mac80211/vht.c
index 171344d..97c28941 100644
--- a/net/mac80211/vht.c
+++ b/net/mac80211/vht.c
@@ -396,7 +396,7 @@ void ieee80211_vht_handle_opmode(struct ieee80211_sub_if_data *sdata,
new_bw = ieee80211_sta_cur_vht_bw(sta);
if (new_bw != sta->sta.bandwidth) {
sta->sta.bandwidth = new_bw;
- changed |= IEEE80211_RC_NSS_CHANGED;
+ changed |= IEEE80211_RC_BW_CHANGED;
}
change:
--
1.8.0
^ permalink raw reply related
* Re: [PATCH 3.10] rt2800: fix RT5390 & RT3290 TX power settings regression
From: Gertjan van Wingerde @ 2013-06-11 18:25 UTC (permalink / raw)
To: Stanislaw Gruszka
Cc: linux-wireless@vger.kernel.org, users@rt2x00.serialmonkey.com,
Stanislaw Gruszka
In-Reply-To: <1370969333-4649-1-git-send-email-sgruszka@redhat.com>
Sent from my iPad
On 11 jun. 2013, at 18:48, Stanislaw Gruszka <sgruszka@redhat.com> wrote:
> My change:
>
> commit cee2c7315f60beeff6137ee59e99acc77d636eeb
> Author: Stanislaw Gruszka <sgruszka@redhat.com>
> Date: Fri Oct 5 13:44:09 2012 +0200
>
> rt2800: use BBP_R1 for setting tx power
>
> unfortunately does not work well with RT5390 and RT3290 chips as they
> require different temperature compensation TX power settings (TSSI
> tuning). Since that commit make wireless connection very unstable on
> those chips, restore previous behavior to fix regression. Once we
> implement proper TSSI tuning on 5390/3290 we can restore back setting
> TX power by BBP_R1 register for those chips.
>
> Reported-and-tested-by: Mike Romberg <mike-romberg@comcast.net>
> Cc: stable@vger.kernel.org
> Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
> ---
> drivers/net/wireless/rt2x00/rt2800lib.c | 29 ++++++++++++++++++-----------
> 1 file changed, 18 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
> index 92849e5..8b679df 100644
> --- a/drivers/net/wireless/rt2x00/rt2800lib.c
> +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
> @@ -2634,19 +2634,26 @@ static void rt2800_config_txpower(struct rt2x00_dev *rt2x00dev,
> * TODO: we do not use +6 dBm option to do not increase power beyond
> * regulatory limit, however this could be utilized for devices with
> * CAPABILITY_POWER_LIMIT.
> + *
> + * TODO: add different temperature compensation code for RT3290 & RT5390
> + * to allow to use BBP_R1 for those chips.
> */
> - rt2800_bbp_read(rt2x00dev, 1, &r1);
> - if (delta <= -12) {
> - power_ctrl = 2;
> - delta += 12;
> - } else if (delta <= -6) {
> - power_ctrl = 1;
> - delta += 6;
> - } else {
> - power_ctrl = 0;
> + if (!rt2x00_rt(rt2x00dev, RT3290) &&
> + !rt2x00_rt(rt2x00dev, RT5390)) {
> + rt2800_bbp_read(rt2x00dev, 1, &r1);
> + if (delta <= -12) {
> + power_ctrl = 2;
> + delta += 12;
> + } else if (delta <= -6) {
> + power_ctrl = 1;
> + delta += 6;
> + } else {
> + power_ctrl = 0;
> + }
> + rt2x00_set_field8(&r1, BBP1_TX_POWER_CTRL, power_ctrl);
> + rt2800_bbp_write(rt2x00dev, 1, r1);
> }
> - rt2x00_set_field8(&r1, BBP1_TX_POWER_CTRL, power_ctrl);
> - rt2800_bbp_write(rt2x00dev, 1, r1);
> +
> offset = TX_PWR_CFG_0;
>
> for (i = 0; i < EEPROM_TXPOWER_BYRATE_SIZE; i += 2) {
> --
> 1.7.11.7
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: [PATCH 00/13] rt2x00: get rid of static data queue descriptors
From: Gertjan van Wingerde @ 2013-06-11 18:29 UTC (permalink / raw)
To: Stanislaw Gruszka
Cc: Gabor Juhos, John Linville, linux-wireless@vger.kernel.org,
users@rt2x00.serialmonkey.com
In-Reply-To: <20130604135718.GC17229@redhat.com>
Sent from my iPad
On 4 jun. 2013, at 15:57, Stanislaw Gruszka <sgruszka@redhat.com> wrote:
> On Tue, Jun 04, 2013 at 01:40:37PM +0200, Gabor Juhos wrote:
>> The patch-set depends on the following patch:
>>
>> 'rt2x00: rt2x00queue: initialize data_queue fields earlier'
>> https://patchwork.kernel.org/patch/2655201/
>>
>> Gabor Juhos (13):
>> rt2x00: rt2x00queue: add priv_size field to struct data_queue
>> rt2x00: rt2x00queue: remove qdesc parameter of
>> rt2x00queue_alloc_entries
>> rt2x00: rt2x00dev: use rt2x00dev->bcn->limit
>> rt2x00: rt2x00queue: setup queue->threshold from queue->limit
>> rt2x00: add queue_init callback to rt2x00_ops
>> rt2x00: rt2800usb: implement queue_init callback
>> rt2x00: rt2800pci: implement queue_init callback
>> rt2x00: rt73usb: implement queue_init callback
>> rt2x00: rt2400pci: implement queue_init callback
>> rt2x00: rt2500pci: implement queue_init callback
>> rt2x00: rt61pci: implement queue_init callback
>> rt2x00: rt2500usb: implement queue_init callback
>> rt2x00: remove data_queue_desc struct
>
> Looks good. For set:
>
> Acked-by: Stanislaw Gruszka <sgruszka@redhat.com>
Looks good to me as well. So, an
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
from me as well for the whole series.
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: [PATCH v2 1/2] rt2x00: move extra_tx_headroom field from rt2x00_ops to rt2x00_dev
From: Gertjan van Wingerde @ 2013-06-11 18:31 UTC (permalink / raw)
To: Gabor Juhos
Cc: John Linville, linux-wireless@vger.kernel.org,
users@rt2x00.serialmonkey.com, Gabor Juhos
In-Reply-To: <1370504180-10950-1-git-send-email-juhosg@openwrt.org>
Sent from my iPad
On 6 jun. 2013, at 09:36, Gabor Juhos <juhosg@openwrt.org> wrote:
> The extra_tx_headroom field of struct rt2x00_ops
> indicates the extra TX headroom size required for
> a given device. This data is redundant, the value
> can be computed from the desc_size and winfo_size
> fields of the TX queues.
>
> Move the extra_tx_headroom field to struct rt2x00_dev,
> compute its value in the probe routine and use the
> cached value in the rest of the code.
>
> Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
> ---
> v2:
> - remove the callbacks and compute the extra_tx_headroom
> value from winfo_size and desc_size instead
> - change subject
>
> The patch depends on the 'rt2x00: get rid of static data queue descriptors'
> series.
> ---
> drivers/net/wireless/rt2x00/rt2400pci.c | 1 -
> drivers/net/wireless/rt2x00/rt2500pci.c | 1 -
> drivers/net/wireless/rt2x00/rt2500usb.c | 1 -
> drivers/net/wireless/rt2x00/rt2800pci.c | 1 -
> drivers/net/wireless/rt2x00/rt2800usb.c | 2 --
> drivers/net/wireless/rt2x00/rt2x00.h | 4 +++-
> drivers/net/wireless/rt2x00/rt2x00dev.c | 18 ++++++++++++++++--
> drivers/net/wireless/rt2x00/rt2x00queue.c | 6 +++---
> drivers/net/wireless/rt2x00/rt61pci.c | 1 -
> drivers/net/wireless/rt2x00/rt73usb.c | 1 -
> 10 files changed, 22 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c
> index e1ec9a4..3d53a09 100644
> --- a/drivers/net/wireless/rt2x00/rt2400pci.c
> +++ b/drivers/net/wireless/rt2x00/rt2400pci.c
> @@ -1813,7 +1813,6 @@ static const struct rt2x00_ops rt2400pci_ops = {
> .eeprom_size = EEPROM_SIZE,
> .rf_size = RF_SIZE,
> .tx_queues = NUM_TX_QUEUES,
> - .extra_tx_headroom = 0,
> .queue_init = rt2400pci_queue_init,
> .lib = &rt2400pci_rt2x00_ops,
> .hw = &rt2400pci_mac80211_ops,
> diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c
> index a1670e8..0ac5c58 100644
> --- a/drivers/net/wireless/rt2x00/rt2500pci.c
> +++ b/drivers/net/wireless/rt2x00/rt2500pci.c
> @@ -2102,7 +2102,6 @@ static const struct rt2x00_ops rt2500pci_ops = {
> .eeprom_size = EEPROM_SIZE,
> .rf_size = RF_SIZE,
> .tx_queues = NUM_TX_QUEUES,
> - .extra_tx_headroom = 0,
> .queue_init = rt2500pci_queue_init,
> .lib = &rt2500pci_rt2x00_ops,
> .hw = &rt2500pci_mac80211_ops,
> diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c
> index e5e5479..85acc79 100644
> --- a/drivers/net/wireless/rt2x00/rt2500usb.c
> +++ b/drivers/net/wireless/rt2x00/rt2500usb.c
> @@ -1913,7 +1913,6 @@ static const struct rt2x00_ops rt2500usb_ops = {
> .eeprom_size = EEPROM_SIZE,
> .rf_size = RF_SIZE,
> .tx_queues = NUM_TX_QUEUES,
> - .extra_tx_headroom = TXD_DESC_SIZE,
> .queue_init = rt2500usb_queue_init,
> .lib = &rt2500usb_rt2x00_ops,
> .hw = &rt2500usb_mac80211_ops,
> diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
> index 260c8b4..7c74782 100644
> --- a/drivers/net/wireless/rt2x00/rt2800pci.c
> +++ b/drivers/net/wireless/rt2x00/rt2800pci.c
> @@ -1231,7 +1231,6 @@ static const struct rt2x00_ops rt2800pci_ops = {
> .eeprom_size = EEPROM_SIZE,
> .rf_size = RF_SIZE,
> .tx_queues = NUM_TX_QUEUES,
> - .extra_tx_headroom = TXWI_DESC_SIZE,
> .queue_init = rt2800pci_queue_init,
> .lib = &rt2800pci_rt2x00_ops,
> .drv = &rt2800pci_rt2800_ops,
> diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
> index b81d509..68ea00e 100644
> --- a/drivers/net/wireless/rt2x00/rt2800usb.c
> +++ b/drivers/net/wireless/rt2x00/rt2800usb.c
> @@ -905,7 +905,6 @@ static const struct rt2x00_ops rt2800usb_ops = {
> .eeprom_size = EEPROM_SIZE,
> .rf_size = RF_SIZE,
> .tx_queues = NUM_TX_QUEUES,
> - .extra_tx_headroom = TXINFO_DESC_SIZE + TXWI_DESC_SIZE,
> .queue_init = rt2800usb_queue_init,
> .lib = &rt2800usb_rt2x00_ops,
> .drv = &rt2800usb_rt2800_ops,
> @@ -922,7 +921,6 @@ static const struct rt2x00_ops rt2800usb_ops_5592 = {
> .eeprom_size = EEPROM_SIZE,
> .rf_size = RF_SIZE,
> .tx_queues = NUM_TX_QUEUES,
> - .extra_tx_headroom = TXINFO_DESC_SIZE + TXWI_DESC_SIZE_5592,
> .queue_init = rt2800usb_queue_init,
> .lib = &rt2800usb_rt2x00_ops,
> .drv = &rt2800usb_rt2800_ops,
> diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
> index 2a17f7e..ee3fc57 100644
> --- a/drivers/net/wireless/rt2x00/rt2x00.h
> +++ b/drivers/net/wireless/rt2x00/rt2x00.h
> @@ -648,7 +648,6 @@ struct rt2x00_ops {
> const unsigned int eeprom_size;
> const unsigned int rf_size;
> const unsigned int tx_queues;
> - const unsigned int extra_tx_headroom;
> void (*queue_init)(struct data_queue *queue);
> const struct rt2x00lib_ops *lib;
> const void *drv;
> @@ -1007,6 +1006,9 @@ struct rt2x00_dev {
> */
> struct list_head bar_list;
> spinlock_t bar_list_lock;
> +
> + /* Extra TX headroom required for alignment purposes. */
> + unsigned int extra_tx_headroom;
> };
>
> struct rt2x00_bar_list_entry {
> diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
> index dff5012..f03e3bb 100644
> --- a/drivers/net/wireless/rt2x00/rt2x00dev.c
> +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
> @@ -334,7 +334,7 @@ void rt2x00lib_txdone(struct queue_entry *entry,
> /*
> * Remove the extra tx headroom from the skb.
> */
> - skb_pull(entry->skb, rt2x00dev->ops->extra_tx_headroom);
> + skb_pull(entry->skb, rt2x00dev->extra_tx_headroom);
>
> /*
> * Signal that the TX descriptor is no longer in the skb.
> @@ -1049,7 +1049,7 @@ static int rt2x00lib_probe_hw(struct rt2x00_dev *rt2x00dev)
> */
> rt2x00dev->hw->extra_tx_headroom =
> max_t(unsigned int, IEEE80211_TX_STATUS_HEADROOM,
> - rt2x00dev->ops->extra_tx_headroom);
> + rt2x00dev->extra_tx_headroom);
>
> /*
> * Take TX headroom required for alignment into account.
> @@ -1256,6 +1256,17 @@ static inline void rt2x00lib_set_if_combinations(struct rt2x00_dev *rt2x00dev)
> rt2x00dev->hw->wiphy->n_iface_combinations = 1;
> }
>
> +static unsigned int rt2x00dev_extra_tx_headroom(struct rt2x00_dev *rt2x00dev)
> +{
> + if (WARN_ON(!rt2x00dev->tx))
> + return 0;
> +
> + if (rt2x00_is_usb(rt2x00dev))
> + return rt2x00dev->tx[0].winfo_size + rt2x00dev->tx[0].desc_size;
> +
> + return rt2x00dev->tx[0].winfo_size;
> +}
> +
> /*
> * driver allocation handlers.
> */
> @@ -1330,6 +1341,9 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev)
> if (retval)
> goto exit;
>
> + /* Cache TX headroom value */
> + rt2x00dev->extra_tx_headroom = rt2x00dev_extra_tx_headroom(rt2x00dev);
> +
> /*
> * Determine which operating modes are supported, all modes
> * which require beaconing, depend on the availability of
> diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c
> index c4f1e2b..6c0a91f 100644
> --- a/drivers/net/wireless/rt2x00/rt2x00queue.c
> +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
> @@ -542,8 +542,8 @@ static int rt2x00queue_write_tx_data(struct queue_entry *entry,
> /*
> * Add the requested extra tx headroom in front of the skb.
> */
> - skb_push(entry->skb, rt2x00dev->ops->extra_tx_headroom);
> - memset(entry->skb->data, 0, rt2x00dev->ops->extra_tx_headroom);
> + skb_push(entry->skb, rt2x00dev->extra_tx_headroom);
> + memset(entry->skb->data, 0, rt2x00dev->extra_tx_headroom);
>
> /*
> * Call the driver's write_tx_data function, if it exists.
> @@ -596,7 +596,7 @@ static void rt2x00queue_bar_check(struct queue_entry *entry)
> {
> struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
> struct ieee80211_bar *bar = (void *) (entry->skb->data +
> - rt2x00dev->ops->extra_tx_headroom);
> + rt2x00dev->extra_tx_headroom);
> struct rt2x00_bar_list_entry *bar_entry;
>
> if (likely(!ieee80211_is_back_req(bar->frame_control)))
> diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
> index 17507d1..53754bc6 100644
> --- a/drivers/net/wireless/rt2x00/rt61pci.c
> +++ b/drivers/net/wireless/rt2x00/rt61pci.c
> @@ -3066,7 +3066,6 @@ static const struct rt2x00_ops rt61pci_ops = {
> .eeprom_size = EEPROM_SIZE,
> .rf_size = RF_SIZE,
> .tx_queues = NUM_TX_QUEUES,
> - .extra_tx_headroom = 0,
> .queue_init = rt61pci_queue_init,
> .lib = &rt61pci_rt2x00_ops,
> .hw = &rt61pci_mac80211_ops,
> diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
> index b2e346a..1616ed4 100644
> --- a/drivers/net/wireless/rt2x00/rt73usb.c
> +++ b/drivers/net/wireless/rt2x00/rt73usb.c
> @@ -2400,7 +2400,6 @@ static const struct rt2x00_ops rt73usb_ops = {
> .eeprom_size = EEPROM_SIZE,
> .rf_size = RF_SIZE,
> .tx_queues = NUM_TX_QUEUES,
> - .extra_tx_headroom = TXD_DESC_SIZE,
> .queue_init = rt73usb_queue_init,
> .lib = &rt73usb_rt2x00_ops,
> .hw = &rt73usb_mac80211_ops,
> --
> 1.7.10
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: [PATCH v2 2/2] rt2x00: rt2800usb: nuke rt2800usb_ops_5592
From: Gertjan van Wingerde @ 2013-06-11 18:31 UTC (permalink / raw)
To: Gabor Juhos
Cc: John Linville, linux-wireless@vger.kernel.org,
users@rt2x00.serialmonkey.com, Gabor Juhos
In-Reply-To: <1370504180-10950-2-git-send-email-juhosg@openwrt.org>
Sent from my iPad
On 6 jun. 2013, at 09:36, Gabor Juhos <juhosg@openwrt.org> wrote:
> It is exactly the same like the generic rt2800usb_ops.
> Remove the duplicate and use the generic ops for all
> devices.
>
> Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
> ---
> drivers/net/wireless/rt2x00/rt2800usb.c | 29 +++++------------------------
> 1 file changed, 5 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
> index 68ea00e..7edd903 100644
> --- a/drivers/net/wireless/rt2x00/rt2800usb.c
> +++ b/drivers/net/wireless/rt2x00/rt2800usb.c
> @@ -914,22 +914,6 @@ static const struct rt2x00_ops rt2800usb_ops = {
> #endif /* CONFIG_RT2X00_LIB_DEBUGFS */
> };
>
> -static const struct rt2x00_ops rt2800usb_ops_5592 = {
> - .name = KBUILD_MODNAME,
> - .drv_data_size = sizeof(struct rt2800_drv_data),
> - .max_ap_intf = 8,
> - .eeprom_size = EEPROM_SIZE,
> - .rf_size = RF_SIZE,
> - .tx_queues = NUM_TX_QUEUES,
> - .queue_init = rt2800usb_queue_init,
> - .lib = &rt2800usb_rt2x00_ops,
> - .drv = &rt2800usb_rt2800_ops,
> - .hw = &rt2800usb_mac80211_ops,
> -#ifdef CONFIG_RT2X00_LIB_DEBUGFS
> - .debugfs = &rt2800_rt2x00debug,
> -#endif /* CONFIG_RT2X00_LIB_DEBUGFS */
> -};
> -
> /*
> * rt2800usb module information.
> */
> @@ -1242,15 +1226,15 @@ static struct usb_device_id rt2800usb_device_table[] = {
> #endif
> #ifdef CONFIG_RT2800USB_RT55XX
> /* Arcadyan */
> - { USB_DEVICE(0x043e, 0x7a32), .driver_info = 5592 },
> + { USB_DEVICE(0x043e, 0x7a32) },
> /* AVM GmbH */
> - { USB_DEVICE(0x057c, 0x8501), .driver_info = 5592 },
> + { USB_DEVICE(0x057c, 0x8501) },
> /* D-Link DWA-160-B2 */
> - { USB_DEVICE(0x2001, 0x3c1a), .driver_info = 5592 },
> + { USB_DEVICE(0x2001, 0x3c1a) },
> /* Proware */
> - { USB_DEVICE(0x043e, 0x7a13), .driver_info = 5592 },
> + { USB_DEVICE(0x043e, 0x7a13) },
> /* Ralink */
> - { USB_DEVICE(0x148f, 0x5572), .driver_info = 5592 },
> + { USB_DEVICE(0x148f, 0x5572) },
> #endif
> #ifdef CONFIG_RT2800USB_UNKNOWN
> /*
> @@ -1355,9 +1339,6 @@ MODULE_LICENSE("GPL");
> static int rt2800usb_probe(struct usb_interface *usb_intf,
> const struct usb_device_id *id)
> {
> - if (id->driver_info == 5592)
> - return rt2x00usb_probe(usb_intf, &rt2800usb_ops_5592);
> -
> return rt2x00usb_probe(usb_intf, &rt2800usb_ops);
> }
>
> --
> 1.7.10
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* pull-request: mac80211-next 2013-06-11
From: Johannes Berg @ 2013-06-11 18:39 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless
[-- Attachment #1: Type: text/plain, Size: 5067 bytes --]
Hi,
And another one (last one for now!) for mac80211-next. This one's a
little bigger.
I have a number of mesh fixes and improvements from Colleen, Jacob,
Ashok and Thomas, powersave fixes in mac80211 from Alex, improved
management-TX from Antonio, and a few various things, including locking
fixes, from others and myself. Overall though, nothing really stands
out.
Thanks,
johannes
The following changes since commit 99e94940697adec4f84758adb2db71f4a82c7ba5:
brcmsmac: Reduce log spam in heavy tx, make err print in debug (2013-06-03 15:55:48 -0400)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git for-john
for you to fetch changes up to 940d0ac9dbe3fb9d4806e96f006286c2e476deed:
cfg80211: fix rtnl leak in wiphy dump error cases (2013-06-11 16:52:39 +0200)
----------------------------------------------------------------
Alexander Bondar (2):
mac80211: fix powersave bug and clean up ieee80211_rx_bss_info
mac80211: Use suitable semantics for beacon availability indication
Antonio Quartulli (4):
mac80211: make mgmt_tx accept a NULL channel
brcm80211: make mgmt_tx in brcmfmac accept a NULL channel
ath6kl: make mgmt_tx accept a NULL channel
nl80211: allow sending CMD_FRAME without specifying any frequency
Ashok Nagarajan (1):
{nl,mac,cfg}80211: Allow user to configure basic rates for mesh
Colleen Twitty (2):
{nl,cfg}80211: make peer link expiration time configurable
mac80211: expire mesh peers based on mesh configuration
Felix Fietkau (2):
mac80211: add a tx control flag to indicate PS-Poll/uAPSD response
nl80211: add kernel-doc for NL80211_FEATURE_ACTIVE_MONITOR
Jacob Minshall (1):
mac80211: set mesh formation field properly
Johannes Berg (10):
cfg80211: take WoWLAN support information out of wiphy struct
nl80211: remove bogus genlmsg_end() error checking
Merge remote-tracking branch 'wireless-next/master' into HEAD
cfg80211/mac80211: clean up cfg80211 SME APIs
cfg80211: separate internal SME implementation
regulatory: use proper enum return value
cfg80211: fix potential deadlock regression
cfg80211: make wiphy index start at 0 again
wireless: fix kernel-doc
cfg80211: fix rtnl leak in wiphy dump error cases
Jouni Malinen (1):
cfg80211: fix VHT TDLS peer AID verification
Pontus Fuchs (1):
mac80211: set IEEE80211_TX_CTL_REQ_TX_STATUS on nullframes
Thomas Pedersen (2):
mac80211: don't check local mesh TTL on TX
mac80211: fix mesh deadlock
Documentation/DocBook/80211.tmpl | 11 +-
drivers/net/wireless/ath/ath6kl/cfg80211.c | 51 +-
drivers/net/wireless/ath/ath9k/init.c | 18 +-
.../net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 15 +-
drivers/net/wireless/cw1200/main.c | 13 +-
drivers/net/wireless/iwlwifi/dvm/dev.h | 3 +
drivers/net/wireless/iwlwifi/dvm/mac80211.c | 17 +-
drivers/net/wireless/iwlwifi/mvm/mac80211.c | 28 +-
drivers/net/wireless/iwlwifi/mvm/mvm.h | 1 +
drivers/net/wireless/mwifiex/cfg80211.c | 16 +-
drivers/net/wireless/ti/wlcore/main.c | 19 +-
include/linux/ieee80211.h | 1 +
include/net/cfg80211.h | 115 ++---
include/net/mac80211.h | 11 +-
include/uapi/linux/nl80211.h | 9 +
net/mac80211/cfg.c | 20 +-
net/mac80211/ieee80211_i.h | 3 +-
net/mac80211/main.c | 3 +-
net/mac80211/mesh.c | 38 +-
net/mac80211/mesh.h | 5 +-
net/mac80211/mesh_plink.c | 7 +-
net/mac80211/mlme.c | 98 ++--
net/mac80211/rx.c | 26 +-
net/mac80211/sta_info.c | 4 +-
net/mac80211/sta_info.h | 3 +
net/mac80211/tx.c | 6 -
net/mac80211/util.c | 5 +-
net/wireless/core.c | 47 +-
net/wireless/core.h | 30 +-
net/wireless/ibss.c | 6 -
net/wireless/mesh.c | 12 +
net/wireless/mlme.c | 241 ++++-----
net/wireless/nl80211.c | 192 ++++----
net/wireless/reg.c | 2 +-
net/wireless/sme.c | 542 ++++++++++-----------
net/wireless/trace.h | 46 +-
net/wireless/wext-sme.c | 8 +-
37 files changed, 834 insertions(+), 838 deletions(-)
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply
* Re: Power saving features for iwl4965
From: Tino Keitel @ 2013-06-11 18:51 UTC (permalink / raw)
To: Stanislaw Gruszka; +Cc: linux-wireless
In-Reply-To: <20130603141804.GA2146@redhat.com>
On Mon, Jun 03, 2013 at 16:18:05 +0200, Stanislaw Gruszka wrote:
> Could you try this experimental patch?
Hi,
on top of kernel 3.9.4 (with TuxOnIce patch), iwconfig wlan0 power on
now saves more than 1 W on my ThinkPad X61s with iwl4965. I can finally
switch to a recent kernel. Thanks a lot.
Regards,
Tino
^ permalink raw reply
* Re: Power saving features for iwl4965
From: Tino Keitel @ 2013-06-11 18:55 UTC (permalink / raw)
To: Stanislaw Gruszka; +Cc: Pedro Francisco, ML linux-wireless
In-Reply-To: <20130611161924.GB1696@redhat.com>
Hi,
in my kernel log, I also see a SYSASSERT, but only once after resume
from suspend to RAM.
2013-06-11_18:40:58.80553 kern.notice: sd 0:0:0:0: [sda] Starting disk
2013-06-11_18:40:58.80554 kern.err: iwl4965 0000:03:00.0: Microcode SW
error detected. Restarting 0x82000000.
2013-06-11_18:40:58.80555 kern.err: iwl4965 0000:03:00.0: Loaded
firmware version: 228.61.2.24
2013-06-11_18:40:58.80556 kern.err: iwl4965 0000:03:00.0: Start IWL
Error Log Dump:
2013-06-11_18:40:58.80557 kern.err: iwl4965 0000:03:00.0: Status:
0x000313E4, count: 5
2013-06-11_18:40:58.80558 kern.err: iwl4965 0000:03:00.0: Desc
Time data1 data2 line
2013-06-11_18:40:58.80559 kern.err: iwl4965 0000:03:00.0: SYSASSERT
(0x0005) 0000000095 0x00000000 0x00000000 262
2013-06-11_18:40:58.80560 kern.err: iwl4965 0000:03:00.0: pc
blink1 blink2 ilink1 ilink2 hcmd
2013-06-11_18:40:58.80561 kern.err: iwl4965 0000:03:00.0: 0x0C924
0x0C90E 0x0C93A 0x006DA 0x00000 0x4090010
2013-06-11_18:40:58.80562 kern.err: iwl4965 0000:03:00.0: FH register
values:
2013-06-11_18:40:58.80563 kern.err: iwl4965 0000:03:00.0:
FH49_RSCSR_CHNL0_STTS_WPTR_REG: 0X0b101300
2013-06-11_18:40:58.80564 kern.err: iwl4965 0000:03:00.0:
FH49_RSCSR_CHNL0_RBDCB_BASE_REG: 0X00b10120
2013-06-11_18:40:58.80565 kern.err: iwl4965 0000:03:00.0:
FH49_RSCSR_CHNL0_WPTR: 0X00000008
2013-06-11_18:40:58.80565 kern.err: iwl4965 0000:03:00.0:
FH49_MEM_RCSR_CHNL0_CONFIG_REG: 0X80819000
2013-06-11_18:40:58.80566 kern.err: iwl4965 0000:03:00.0:
FH49_MEM_RSSR_SHARED_CTRL_REG: 0X0000003c
2013-06-11_18:40:58.80567 kern.err: iwl4965 0000:03:00.0:
FH49_MEM_RSSR_RX_STATUS_REG: 0X07030000
2013-06-11_18:40:58.80569 kern.err: iwl4965 0000:03:00.0:
FH49_MEM_RSSR_RX_ENABLE_ERR_IRQ2DRV: 0X00000000
2013-06-11_18:40:58.80570 kern.err: iwl4965 0000:03:00.0:
FH49_TSSR_TX_STATUS_REG: 0X07ff0002
2013-06-11_18:40:58.80571 kern.err: iwl4965 0000:03:00.0:
FH49_TSSR_TX_ERROR_REG: 0X00000000
2013-06-11_18:40:58.80572 kern.err: iwl4965 0000:03:00.0: Command
C_RXON failed: FW Error
2013-06-11_18:40:58.80575 kern.err: iwl4965 0000:03:00.0: Error setting
new RXON (-5)
2013-06-11_18:40:58.80576 kern.warn: iwl4965 0000:03:00.0: Try to add
interface when device not ready
Regards,
Tino
^ permalink raw reply
* kmemleak report in 3.9.5+, related to cfg80211_inform_bss_frame
From: Ben Greear @ 2013-06-11 19:00 UTC (permalink / raw)
To: linux-wireless@vger.kernel.org
I see several reports similar to the one below while doing some
kmemleak testing on my 3.9.5+ tree (with local patches applied):
http://dmz2.candelatech.com/git/gitweb.cgi?p=linux-3.9.dev.y/.git;a=summary
While looking through the code, I found this in scan.c:cfg80211_bss_update
} else {
/*
* Ok so we found a beacon, and don't have an entry. If
* it's a beacon with hidden SSID, we might be in for an
* expensive search for any probe responses that should
* be grouped with this beacon for updates ...
*/
if (!cfg80211_combine_bsses(dev, new)) {
kfree(new);
goto drop;
}
}
I don't know if this is the culprit that I am seeing, but I believe
we should be freeing the tmp.pub.beacon_ies (if it is not NULL)
before doing the 'goto drop'?
The kmemleak report is below:
unreferenced object 0xffff8801c8e41e78 (size 192):
comm "kworker/u:2", pid 157, jiffies 4295509873 (age 86582.869s)
hex dump (first 32 bytes):
41 0d 00 30 02 00 00 00 6b 6b 6b 6b 6b 6b 6b 6b A..0....kkkkkkkk
6b 6b 6b 6b 6b 6b 6b 6b 69 00 00 00 00 0c 2e 32 kkkkkkkki......2
backtrace:
[<ffffffff815de7bf>] kmemleak_alloc+0x73/0x98
[<ffffffff8118b4d4>] slab_post_alloc_hook+0x28/0x2a
[<ffffffff8118d605>] __kmalloc+0xf9/0x122
[<ffffffffa027cb27>] cfg80211_inform_bss_frame+0x114/0x1f8 [cfg80211]
[<ffffffffa03d6865>] ieee80211_bss_info_update+0x66/0x21f [mac80211]
[<ffffffffa040aec6>] ieee80211_rx_bss_info+0x12f/0x1ca [mac80211]
[<ffffffffa040b017>] ieee80211_rx_mgmt_probe_resp+0xb6/0x197 [mac80211]
[<ffffffffa040e8a3>] ieee80211_sta_rx_queued_mgmt+0xdd/0x60e [mac80211]
[<ffffffffa03df0ee>] ieee80211_iface_work+0x238/0x2cc [mac80211]
[<ffffffff810b0cd3>] process_one_work+0x292/0x42e
[<ffffffff810b36af>] worker_thread+0x14f/0x264
[<ffffffff810b7bea>] kthread+0xc7/0xcf
[<ffffffff815f64ec>] ret_from_fork+0x7c/0xb0
[<ffffffffffffffff>] 0xffffffffffffffff
(gdb) l *(cfg80211_inform_bss_frame+0x114)
0x8b27 is in cfg80211_inform_bss_frame (/home/greearb/git/linux-3.9.dev.y/net/wireless/scan.c:960).
955 ielen, channel);
956 if (!channel)
957 return NULL;
958
959 ies = kmalloc(sizeof(*ies) + ielen, gfp);
960 if (!ies)
961 return NULL;
962 ies->len = ielen;
963 ies->tsf = le64_to_cpu(mgmt->u.probe_resp.timestamp);
964 memcpy(ies->data, mgmt->u.probe_resp.variable, ielen);
(gdb)
Thanks,
Ben
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
^ permalink raw reply
* pull request: wireless-next 2013-06-11
From: John W. Linville @ 2013-06-11 19:05 UTC (permalink / raw)
To: davem; +Cc: linux-wireless, netdev
[-- Attachment #1: Type: text/plain, Size: 29344 bytes --]
Dave,
This pull request is intended for the 3.11 stream...
One big highlight is the cw1200 driver the ST-E CW1100 & CW1200
WLAN chipsets. This one has been lingering for a while, lacking
some review comments. Once started getting pulled into linux-next,
it got a bit more attention and a number of improvements were made
over the initial cut. No doubt there will be more changes ahead,
but I think it is looking alright at this point.
Along with that, there is the usual flurry of updates to the mac80211
core and the iwlwifi, mwifiex, ath9k, rt2x00, wil6210, and other
drivers. A few of the highlights are some rt2x00 refactoring/cleanup
by Gabor Juhos, some rt2800 hardware support enhancements by Stanislaw
Gruszka, some iwlwifi power management updates from Alexander Bondar,
some enhanced bcma SPROM support from Rafał Miłecki, and a variety
of other things here and there.
Please let me know if there are problems!
John
---
The following changes since commit 45203a3b380cee28f570475c0d28c169f908c209:
net_sched: add 64bit rate estimators (2013-06-11 02:51:03 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next.git for-davem
for you to fetch changes up to 3899ba90a4ab2f3cab8e0f91a76c14ff131c8293:
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem (2013-06-11 14:48:32 -0400)
----------------------------------------------------------------
Alexander Bondar (8):
mac80211: enable power save only if DTIM period is available
iwlwifi: mvm: Add number of DTIMs to skip
iwlwifi: mvm: configure power management in D3
iwlwifi: mvm: Add beacon abort enablement
iwlwifi: mvm: Change number of DTIMs to skip semantics
iwlwifi: mvm: add debugfs for powersave
iwlwifi: mvm: Change location of vif_count verification for PM
iwlwifi: mvm: enable PM always in unassociated mode
Amitkumar Karwar (12):
mwifiex: rename mwifiex_free_adapter() routine in init.c
mwifiex: scan delay timer cleanup in unload path
mwifiex: remove global user_scan_cfg variable
mwifiex: add calibration data download feature
mwifiex: use u32 variables for SDIO read/write port bitmap
mwifiex: store SDIO chip specific information in separate structure
mwifiex: replace unnecessary u32 variables with u8 in sdio.c
mwifiex: code rearrangement in mwifiex_get_rd_port()
mwifiex: do port calculations separately
mwifiex: define a macro for MPA base address
mwifiex: remove unnecessary macros in sdio.h
mwifiex: code rearrangement in multiport aggregation path
Andy Shevchenko (1):
mwifiex: dump small buffers with help of %*ph
Ashok Nagarajan (2):
mac80211: Move mesh estab_plinks outside mesh_stats debug group
{cfg,mac}80211: move mandatory rates calculation to cfg80211
Avinash Patil (3):
mwifiex: avoid deleting all stations during mwifiex_del_sta_entry()
mwifiex: add del_station handler
mwifiex: replace spin_lock_irqsave with spin_lock and fix warn_on
Bing Zhao (1):
mwifiex: abort remaining scan commands when association started
Colleen Twitty (2):
cfg80211: Userspace may inform kernel of mesh auth method.
mac80211: enable Auth Protocol Identifier on mesh config.
Dan Carpenter (2):
cw1200: read beyond end of array in debug code
cw1200: handle allocation failure in wsm_event_indication()
Emmanuel Grumbach (14):
iwlwifi: move BUILD_RAxTID to transport
iwlwifi: pcie: prefer to load the firmware in one shot
iwlwifi: enable shadow registers for 7000
iwlwifi: mvm: add a missing define in firmware API
iwlwifi: constify the source buffer of iwl_trans_write_mem
iwlwifi: mvm: use proper scan type for P2P
iwlwifi: take valid ant for HT caps from TLV
iwlwifi: mvm: fix the LUT for BT Coex
iwlwifi: mvm: limit the length of the AMPDU when BT is running
iwlwifi: mvm: don't start BA agreement when BT is active
iwlwifi: mvm: don't enable MIMO when BT is active
iwlwifi: mvm: reorder Rx handler for performance purposes
iwlwifi: mvm: correctly configure MCAST in AP mode
iwlwifi: mvm: fix MCAST in AP mode
Eran Harary (3):
iwlwifi: support loading NVM data from file
iwlwifi: fix initialisation while RF-kill is asserted
iwlwifi: don't return -ERFKILL if SEND_IF_RFKILL is set
Eytan Lifshitz (2):
iwlwifi: mvm: add thermal throttling and CT kill
iwlwifi: mvm: don't request SMPS on non-STA iface
Felix Fietkau (6):
cfg80211: add support for per-chain signal strength reporting
mac80211: add support for per-chain signal strength reporting
cfg80211: support an active monitor interface flag
mac80211: support active monitor interfaces
ath9k_hw: fix PA predistortion miscalibration
ath9k: advertise support for active monitor interfaces
Gabor Juhos (7):
rt2x00: rt2x00dev: use rt2x00dev->tx->limit
rt2x00: rt61pci: use rt2x00dev->tx->limit
rt2x00: rt2800pci: use rt2x00dev->tx->limit
rt2x00: rt2800usb: use rt2x00dev->rx->limit
rt2x00: rt2800lib: use rt2x00dev->bcn->winfo_size
rt2x00: rt2x00dev: defer operational mode detection
rt2x00: rt2x00queue: initialize data_queue fields earlier
Hila Gonen (2):
iwlwifi: mvm: Add beacon filtering support
iwlwifi: mvm: Add support for connection monitor offload
Ilan Peer (4):
iwlwifi: mvm: Loosen the channel context/phy context coupling
iwlwifi: mvm: Change PHY context handling
iwlwifi: mvm: Allow P2P Device to use an existing PHY context
iwlwifi: mvm: Fix quota command settings
Jakub Kicinski (1):
rt2x00pci: Use PCI MSIs whenever possible
Javier Cardona (2):
ath9k_htc: Add support for mesh interfaces
ath9k_htc: Claim support for mgmt frame protection
Joe Perches (1):
cw1200: hwio: Remove an unnecessary goto
Johannes Berg (41):
iwlwifi: mvm: don't assume data section is at 0x800000
iwlwifi: pcie: dump stack on NIC error in sync commands
iwlwifi: nvm: honour VHT enable flag
iwlwifi: mvm: optionally store D3 SRAM after resume
iwlwifi: mvm: sanity check context in iwl_mvm_phy_ctxt_unref()
mac80211: fix HT beacon-based channel switch handling
wireless: move crypto constants to ieee80211.h
mac80211: write memcpy differently for smatch
cfg80211: use C99 initialisers to simplify code a bit
iwlwifi: mvm: fix NVM parsing error path
iwlwifi: reverse DATA/INST section order
iwlwifi: nvm: don't print NVM section reads by default
iwlwifi: mvm: don't store section offset/length in debugfs
iwlwifi: mvm: adjust firmware D3 configuration API
iwlwifi: mvm: remove P2P_DEVICE support
mac80211_hwsim: remove P2P_DEVICE support
mac80211: assign AP_VLAN hw queues correctly
mac80211: close AP_VLAN interfaces before unregistering all
Merge remote-tracking branch 'mac80211/master' into mac80211-next
cfg80211: move cfg80211_get_dev_from_ifindex under wext
cfg80211: use atomic_t for wiphy counter
cfg80211: vastly simplify locking
cfg80211/mac80211: use cfg80211 wdev mutex in mac80211
cfg80211: simplify and correct P2P-Device scan check
regulatory: use RCU in regulatory_hint_11d()
regulatory: remove reg_mutex
cfg80211: remove some locked wrappers from mlme API
cfg80211: remove some locked wrappers from sme API
iwlwifi: move D3_CFG_COMPLETE handling into DVM
iwlwifi: dvm: rename iwl_lib_ops to iwl_dvm_cfg
iwlwifi: move some configuration parameters into DVM
iwlwifi: dvm: constify configuration structs
Merge remote-tracking branch 'iwlwifi-fixes/master' into HEAD
cfg80211: make WoWLAN configuration available to drivers
cfg80211: remove cleanup_work kernel-doc
mac80211: always send multicast on CAB queue
Merge remote-tracking branch 'wireless-next/master' into iwlwifi-next
iwlwifi: mvm: implement D3 testing
Revert "iwlwifi: mvm: remove P2P_DEVICE support"
Revert "mac80211_hwsim: remove P2P_DEVICE support"
mac80211: fix sdata locking around __ieee80211_request_smps
John Greene (1):
brcmsmac: Reduce log spam in heavy tx, make err print in debug
John W. Linville (5):
Merge branch 'for-john' of git://git.kernel.org/.../iwlwifi/iwlwifi-next
Merge branch 'for-john' of git://git.kernel.org/.../jberg/mac80211-next
Merge branch 'for-john' of git://git.kernel.org/.../jberg/mac80211-next
Merge branch 'for-john' of git://git.kernel.org/.../iwlwifi/iwlwifi-next
Merge branch 'master' of git://git.kernel.org/.../linville/wireless-next into for-davem
Jouni Malinen (1):
cfg80211: Allow TDLS peer AID to be configured for VHT
Libo Chen (1):
drivers/net/wireless/brcm80211/brcmfmac: add missing platform_driver owner
Marcel Holtmann (1):
nl80211: Add generic netlink module alias for cfg80211/nl80211
Nishant Sarmukadam (1):
mwl8k: Fix the firmware hang issue for 8764
Oleksij Rempel (3):
mac80211: add STBC flag for radiotap
ath9k: remove useless flag conversation.
ath9k: check for Rx-STBC flag and pass it to ieee80211
Oren Givon (1):
iwlwifi: add new 7260 and 3160 series device IDs
Rafał Miłecki (3):
bcma: don't hardcode SPROM length
bcma: prepare for supporting more SPROM sizes
bcma: support SPROM rev 10
Robert P. J. Day (1):
wireless: fix kerneldoc content in *80211.h files.
Sachin Kamat (2):
net: wireless: p54spi: Use module_spi_driver macro
net: wireless: p54spi: Fix commenting style
Solomon Peachy (12):
cw1200: add driver for the ST-E CW1100 & CW1200 WLAN chipsets
cw1200: Fix compile with CONFIG_PM=n
cw1200: Rename 'sbus' to 'hwbus'
cw1200: move platform_data header to correct location.
cw1200: Reference correct 'powerup' GPIO signal.
cw1200: Replace use of 'struct resource' with 'int' for GPIO fields.
cw1200: Rework SDIO platform support to prevent build problems.
cw1200: rename the cw1200 platform definition header
cw1200: Sanity-check arguments in copy_from_user()
cw1200: Remove "ITP" debug subsystem.
cw1200: Eliminate the ETF debug/engineering code.
cw1200: Fix an assorted pile of checkpatch warnings.
Stanislaw Gruszka (32):
rt2800: make rt2800_init_bbp return void
rt2800: prepare for rt2800_init_bbp spit
rt2800: add rt2800_init_bbp_305x_soc subroutine
rt2800: move 3352 bbp specific code
rt2800: move rt2800_bbp4_mac_if_ctrl to proper subroutines
rt2800: initialize BBP_R31 on proper subroutines
rt2800: initialize BBP_R47 on 3352 subroutine
rt2800: initialize BBP_R65 & BBP_R66 on all subroutines (except 5592)
rt2800: initialize BBP_R68 on proper subroutines
rt2800: initialize BBP_R69 - BBP_R77 on proper subroutines
rt2800: initialize BBP_R70 on all subroutines (except 5592)
rt2800: initialize BBP_R74 - BBP_R80 on all subroutines (except 5592)
rt2800: initialize BBP_R82 on all subroutines (except 5592)
rt2800: initialize BBP_R83 on all subroutines (except 5592)
rt2800: initialize BBP_R84 on all subroutines (except 5592)
rt2800: initialize BBP_R86 on all subroutines (except 5592)
rt2800: initialize BBP_R88 on proper subroutines
rt2800: initialize BBP_R91 on all subroutines (except 5592)
rt2800: initialize BBP_R92 on all subroutines (except 5592)
rt2800: move initialization of BBP_95 & BBP_98 to 53xx subroutine
rt2800: initialize BBP_R103 on all subroutines (except 5592)
rt2800: initialize BBP_R104 on proper subroutines
rt2800: initialize BBP_R105 on all subroutines (except 5592)
rt2800: initialize BBP_R106 on all subroutines (except 5592)
rt2800: initialize BBP_R120 on 3352 subroutine
rt2800: initialize BBP_R128 on proper subroutines
rt2800: initialize BBP_R134 & BBP_R135 on 53xx subroutine
rt2800: initialize BBP_R104 on 3352 subroutine
rt2800: initialize BBP_R108 on proper subroutines
rt2800: move 3352 specific bbp initialization
rt2800: move 3290 specific bbp initialization
rt2800: move 53xx specific bbp initialization
Sujith Manoharan (10):
ath9k: Remove MAC_DEBUG
ath9k: Use bitops for scan flag
ath9k: Do not use local_bh_disable in ampdu_action
ath9k: Return early for invalid rates
ath9k: Enable WoW only for AR9462
ath9k: Remove unused structure ath_dbg_bb_mac_samp
ath9k: Simplify ANI initialization
ath9k: Set ofdmWeakSigDetect directly
ath9k: Print ANI statistics in debugfs
ath9k: Do not maintain ANI state per-channel
Thomas Pedersen (1):
ath9k: use ap style beaconing for mesh
Vladimir Kondratiev (10):
cfg80211: add 60GHz regulatory class
wil6210: 'length' in Tx/Rx descriptors is little endian
wil6210: Sanity check for reported DMA length
wil6210: debug dump packet content right after DMA
wil6210: trace support
wil6210: use NAPI
wil6210: fix remaining use of non-cached copy of tx/rx descriptors
wil6210: do not stop Tx queue on packet drop
wil6210: channel off by 1
wil6210: Don't use wdev->sme_state
Wei Yongjun (5):
wil6210: use kfree_skb() instead of kfree()
cw1200: remove duplicated include from wsm.c
cw1200: convert to use simple_open()
cw1200: use module_spi_driver to simplify the code
cw1200: remove unused including <linux/version.h>
Yijing Wang (1):
net, ipw2x00: remove redundant D0 power state set
Yogesh Ashok Powar (1):
mwifiex: add support for Marvell SD8897 chipset
Yunlian Jiang (1):
rtlwifi: initialize local array and set value.
Documentation/DocBook/80211.tmpl | 2 -
MAINTAINERS | 5 +
drivers/bcma/sprom.c | 71 +-
drivers/net/wireless/Kconfig | 1 +
drivers/net/wireless/Makefile | 2 +
drivers/net/wireless/ath/ath9k/Kconfig | 8 -
drivers/net/wireless/ath/ath9k/ani.c | 57 +-
drivers/net/wireless/ath/ath9k/ani.h | 12 +-
drivers/net/wireless/ath/ath9k/ar5008_phy.c | 6 +-
drivers/net/wireless/ath/ath9k/ar9002_hw.c | 4 -
drivers/net/wireless/ath/ath9k/ar9002_initvals.h | 14 -
drivers/net/wireless/ath/ath9k/ar9003_mac.c | 5 +-
drivers/net/wireless/ath/ath9k/ar9003_paprd.c | 19 +-
drivers/net/wireless/ath/ath9k/ar9003_phy.c | 6 +-
drivers/net/wireless/ath/ath9k/ath9k.h | 2 +-
drivers/net/wireless/ath/ath9k/beacon.c | 8 +-
drivers/net/wireless/ath/ath9k/debug.c | 418 +---
drivers/net/wireless/ath/ath9k/debug.h | 59 -
drivers/net/wireless/ath/ath9k/htc.h | 7 +
drivers/net/wireless/ath/ath9k/htc_drv_beacon.c | 5 +-
drivers/net/wireless/ath/ath9k/htc_drv_init.c | 7 +-
drivers/net/wireless/ath/ath9k/htc_drv_main.c | 35 +-
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 2 +-
drivers/net/wireless/ath/ath9k/hw.c | 17 +-
drivers/net/wireless/ath/ath9k/hw.h | 13 +-
drivers/net/wireless/ath/ath9k/init.c | 19 +-
drivers/net/wireless/ath/ath9k/link.c | 9 +-
drivers/net/wireless/ath/ath9k/mac.c | 16 +-
drivers/net/wireless/ath/ath9k/mac.h | 4 +-
drivers/net/wireless/ath/ath9k/main.c | 47 +-
drivers/net/wireless/ath/ath9k/recv.c | 9 +-
drivers/net/wireless/ath/ath9k/wow.c | 168 +-
drivers/net/wireless/ath/wil6210/Kconfig | 12 +
drivers/net/wireless/ath/wil6210/Makefile | 21 +-
drivers/net/wireless/ath/wil6210/cfg80211.c | 4 +
drivers/net/wireless/ath/wil6210/debug.c | 69 +
drivers/net/wireless/ath/wil6210/debugfs.c | 8 +-
drivers/net/wireless/ath/wil6210/interrupt.c | 29 +-
drivers/net/wireless/ath/wil6210/main.c | 24 +-
drivers/net/wireless/ath/wil6210/netdev.c | 54 +
drivers/net/wireless/ath/wil6210/trace.c | 20 +
drivers/net/wireless/ath/wil6210/trace.h | 235 ++
drivers/net/wireless/ath/wil6210/txrx.c | 175 +-
drivers/net/wireless/ath/wil6210/txrx.h | 32 +-
drivers/net/wireless/ath/wil6210/wil6210.h | 27 +-
drivers/net/wireless/ath/wil6210/wmi.c | 13 +-
.../net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c | 3 +-
drivers/net/wireless/brcm80211/brcmsmac/ampdu.c | 2 +-
drivers/net/wireless/cw1200/Kconfig | 30 +
drivers/net/wireless/cw1200/Makefile | 21 +
drivers/net/wireless/cw1200/bh.c | 619 +++++
drivers/net/wireless/cw1200/bh.h | 28 +
drivers/net/wireless/cw1200/cw1200.h | 323 +++
drivers/net/wireless/cw1200/cw1200_sdio.c | 425 ++++
drivers/net/wireless/cw1200/cw1200_spi.c | 463 ++++
drivers/net/wireless/cw1200/debug.c | 428 ++++
drivers/net/wireless/cw1200/debug.h | 93 +
drivers/net/wireless/cw1200/fwio.c | 520 +++++
drivers/net/wireless/cw1200/fwio.h | 39 +
drivers/net/wireless/cw1200/hwbus.h | 33 +
drivers/net/wireless/cw1200/hwio.c | 310 +++
drivers/net/wireless/cw1200/hwio.h | 246 ++
drivers/net/wireless/cw1200/main.c | 600 +++++
drivers/net/wireless/cw1200/pm.c | 367 +++
drivers/net/wireless/cw1200/pm.h | 43 +
drivers/net/wireless/cw1200/queue.c | 583 +++++
drivers/net/wireless/cw1200/queue.h | 116 +
drivers/net/wireless/cw1200/scan.c | 461 ++++
drivers/net/wireless/cw1200/scan.h | 56 +
drivers/net/wireless/cw1200/sta.c | 2404 ++++++++++++++++++++
drivers/net/wireless/cw1200/sta.h | 123 +
drivers/net/wireless/cw1200/txrx.c | 1474 ++++++++++++
drivers/net/wireless/cw1200/txrx.h | 106 +
drivers/net/wireless/cw1200/wsm.c | 1823 +++++++++++++++
drivers/net/wireless/cw1200/wsm.h | 1873 +++++++++++++++
drivers/net/wireless/ipw2x00/ipw2100.c | 2 -
drivers/net/wireless/iwlegacy/commands.h | 8 -
drivers/net/wireless/iwlwifi/dvm/agn.h | 21 +-
drivers/net/wireless/iwlwifi/dvm/calib.c | 8 +-
drivers/net/wireless/iwlwifi/dvm/commands.h | 12 -
drivers/net/wireless/iwlwifi/dvm/dev.h | 57 +-
drivers/net/wireless/iwlwifi/dvm/devices.c | 107 +-
drivers/net/wireless/iwlwifi/dvm/lib.c | 20 +-
drivers/net/wireless/iwlwifi/dvm/mac80211.c | 18 +-
drivers/net/wireless/iwlwifi/dvm/main.c | 45 +-
drivers/net/wireless/iwlwifi/dvm/power.c | 6 +-
drivers/net/wireless/iwlwifi/dvm/rs.c | 8 +-
drivers/net/wireless/iwlwifi/dvm/rx.c | 2 +-
drivers/net/wireless/iwlwifi/dvm/scan.c | 12 +-
drivers/net/wireless/iwlwifi/dvm/tt.c | 2 +-
drivers/net/wireless/iwlwifi/dvm/tx.c | 12 +-
drivers/net/wireless/iwlwifi/dvm/ucode.c | 10 +-
drivers/net/wireless/iwlwifi/iwl-1000.c | 3 -
drivers/net/wireless/iwlwifi/iwl-2000.c | 39 +-
drivers/net/wireless/iwlwifi/iwl-5000.c | 4 -
drivers/net/wireless/iwlwifi/iwl-6000.c | 32 +-
drivers/net/wireless/iwlwifi/iwl-7000.c | 53 +-
drivers/net/wireless/iwlwifi/iwl-config.h | 49 +-
drivers/net/wireless/iwlwifi/iwl-csr.h | 19 +
drivers/net/wireless/iwlwifi/iwl-drv.c | 3 +
drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c | 15 +-
drivers/net/wireless/iwlwifi/iwl-eeprom-parse.h | 3 +-
drivers/net/wireless/iwlwifi/iwl-fw.h | 7 +-
drivers/net/wireless/iwlwifi/iwl-modparams.h | 1 +
drivers/net/wireless/iwlwifi/iwl-nvm-parse.c | 20 +-
drivers/net/wireless/iwlwifi/iwl-nvm-parse.h | 2 +-
drivers/net/wireless/iwlwifi/iwl-prph.h | 12 +
drivers/net/wireless/iwlwifi/iwl-trans.h | 21 +-
drivers/net/wireless/iwlwifi/mvm/Makefile | 2 +-
drivers/net/wireless/iwlwifi/mvm/bt-coex.c | 8 +-
drivers/net/wireless/iwlwifi/mvm/d3.c | 176 +-
drivers/net/wireless/iwlwifi/mvm/debugfs.c | 428 +++-
drivers/net/wireless/iwlwifi/mvm/fw-api-d3.h | 4 +-
drivers/net/wireless/iwlwifi/mvm/fw-api-mac.h | 8 +-
drivers/net/wireless/iwlwifi/mvm/fw-api-power.h | 93 +-
drivers/net/wireless/iwlwifi/mvm/fw-api-tx.h | 1 +
drivers/net/wireless/iwlwifi/mvm/fw-api.h | 233 ++
drivers/net/wireless/iwlwifi/mvm/fw.c | 37 +-
drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c | 36 +-
drivers/net/wireless/iwlwifi/mvm/mac80211.c | 262 ++-
drivers/net/wireless/iwlwifi/mvm/mvm.h | 200 +-
drivers/net/wireless/iwlwifi/mvm/nvm.c | 212 +-
drivers/net/wireless/iwlwifi/mvm/ops.c | 37 +-
drivers/net/wireless/iwlwifi/mvm/phy-ctxt.c | 76 +-
drivers/net/wireless/iwlwifi/mvm/power.c | 196 +-
drivers/net/wireless/iwlwifi/mvm/quota.c | 25 +-
drivers/net/wireless/iwlwifi/mvm/rs.c | 141 +-
drivers/net/wireless/iwlwifi/mvm/rs.h | 17 +
drivers/net/wireless/iwlwifi/mvm/rx.c | 22 +
drivers/net/wireless/iwlwifi/mvm/scan.c | 6 -
drivers/net/wireless/iwlwifi/mvm/sta.c | 13 +-
drivers/net/wireless/iwlwifi/mvm/sta.h | 6 +
drivers/net/wireless/iwlwifi/mvm/tt.c | 512 +++++
drivers/net/wireless/iwlwifi/mvm/tx.c | 2 +-
drivers/net/wireless/iwlwifi/mvm/utils.c | 41 +
drivers/net/wireless/iwlwifi/pcie/drv.c | 50 +-
drivers/net/wireless/iwlwifi/pcie/trans.c | 51 +-
drivers/net/wireless/iwlwifi/pcie/tx.c | 17 +-
drivers/net/wireless/mwifiex/Kconfig | 4 +-
drivers/net/wireless/mwifiex/cfg80211.c | 77 +-
drivers/net/wireless/mwifiex/cmdevt.c | 1 +
drivers/net/wireless/mwifiex/fw.h | 17 +
drivers/net/wireless/mwifiex/init.c | 53 +-
drivers/net/wireless/mwifiex/join.c | 5 +-
drivers/net/wireless/mwifiex/main.c | 14 +
drivers/net/wireless/mwifiex/main.h | 5 +-
drivers/net/wireless/mwifiex/scan.c | 23 +-
drivers/net/wireless/mwifiex/sdio.c | 463 ++--
drivers/net/wireless/mwifiex/sdio.h | 340 ++-
drivers/net/wireless/mwifiex/sta_cmd.c | 62 +
drivers/net/wireless/mwifiex/sta_cmdresp.c | 17 +
drivers/net/wireless/mwifiex/uap_cmd.c | 21 +
drivers/net/wireless/mwifiex/uap_event.c | 25 +-
drivers/net/wireless/mwl8k.c | 11 +-
drivers/net/wireless/p54/p54spi.c | 37 +-
drivers/net/wireless/rt2x00/rt2800lib.c | 782 ++++---
drivers/net/wireless/rt2x00/rt2800pci.c | 2 +-
drivers/net/wireless/rt2x00/rt2800usb.c | 2 +-
drivers/net/wireless/rt2x00/rt2x00dev.c | 36 +-
drivers/net/wireless/rt2x00/rt2x00pci.c | 9 +-
drivers/net/wireless/rt2x00/rt2x00queue.c | 44 +-
drivers/net/wireless/rt2x00/rt61pci.c | 2 +-
drivers/net/wireless/rtlwifi/rtl8192de/dm.c | 2 +-
include/linux/ieee80211.h | 9 +
include/linux/platform_data/net-cw1200.h | 81 +
include/linux/ssb/ssb_regs.h | 1 +
include/net/cfg80211.h | 89 +-
include/net/ieee80211_radiotap.h | 7 +
include/net/mac80211.h | 14 +-
include/uapi/linux/nl80211.h | 24 +
net/mac80211/aes_ccm.c | 6 +-
net/mac80211/cfg.c | 33 +-
net/mac80211/debugfs_netdev.c | 15 +-
net/mac80211/driver-ops.h | 3 +-
net/mac80211/ht.c | 4 +-
net/mac80211/ibss.c | 49 +-
net/mac80211/ieee80211_i.h | 28 +-
net/mac80211/iface.c | 29 +-
net/mac80211/key.c | 24 +-
net/mac80211/key.h | 15 +-
net/mac80211/main.c | 4 +-
net/mac80211/mesh.c | 38 +-
net/mac80211/mesh_plink.c | 7 +-
net/mac80211/mlme.c | 345 +--
net/mac80211/rx.c | 30 +-
net/mac80211/sta_info.c | 2 +
net/mac80211/sta_info.h | 5 +
net/mac80211/tx.c | 5 +-
net/mac80211/util.c | 36 +-
net/mac80211/wep.c | 48 +-
net/mac80211/wpa.c | 68 +-
net/wireless/core.c | 224 +-
net/wireless/core.h | 93 +-
net/wireless/debugfs.c | 4 +-
net/wireless/ibss.c | 10 +-
net/wireless/mesh.c | 3 +-
net/wireless/mlme.c | 216 +-
net/wireless/nl80211.c | 350 ++-
net/wireless/reg.c | 136 +-
net/wireless/scan.c | 47 +-
net/wireless/sme.c | 107 +-
net/wireless/sysfs.c | 8 +-
net/wireless/trace.h | 4 +-
net/wireless/util.c | 39 +-
net/wireless/wext-compat.c | 22 +-
net/wireless/wext-sme.c | 41 +-
206 files changed, 19923 insertions(+), 3391 deletions(-)
create mode 100644 drivers/net/wireless/ath/wil6210/debug.c
create mode 100644 drivers/net/wireless/ath/wil6210/trace.c
create mode 100644 drivers/net/wireless/ath/wil6210/trace.h
create mode 100644 drivers/net/wireless/cw1200/Kconfig
create mode 100644 drivers/net/wireless/cw1200/Makefile
create mode 100644 drivers/net/wireless/cw1200/bh.c
create mode 100644 drivers/net/wireless/cw1200/bh.h
create mode 100644 drivers/net/wireless/cw1200/cw1200.h
create mode 100644 drivers/net/wireless/cw1200/cw1200_sdio.c
create mode 100644 drivers/net/wireless/cw1200/cw1200_spi.c
create mode 100644 drivers/net/wireless/cw1200/debug.c
create mode 100644 drivers/net/wireless/cw1200/debug.h
create mode 100644 drivers/net/wireless/cw1200/fwio.c
create mode 100644 drivers/net/wireless/cw1200/fwio.h
create mode 100644 drivers/net/wireless/cw1200/hwbus.h
create mode 100644 drivers/net/wireless/cw1200/hwio.c
create mode 100644 drivers/net/wireless/cw1200/hwio.h
create mode 100644 drivers/net/wireless/cw1200/main.c
create mode 100644 drivers/net/wireless/cw1200/pm.c
create mode 100644 drivers/net/wireless/cw1200/pm.h
create mode 100644 drivers/net/wireless/cw1200/queue.c
create mode 100644 drivers/net/wireless/cw1200/queue.h
create mode 100644 drivers/net/wireless/cw1200/scan.c
create mode 100644 drivers/net/wireless/cw1200/scan.h
create mode 100644 drivers/net/wireless/cw1200/sta.c
create mode 100644 drivers/net/wireless/cw1200/sta.h
create mode 100644 drivers/net/wireless/cw1200/txrx.c
create mode 100644 drivers/net/wireless/cw1200/txrx.h
create mode 100644 drivers/net/wireless/cw1200/wsm.c
create mode 100644 drivers/net/wireless/cw1200/wsm.h
create mode 100644 drivers/net/wireless/iwlwifi/mvm/tt.c
create mode 100644 include/linux/platform_data/net-cw1200.h
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply
* Re: kmemleak report in 3.9.5+, related to cfg80211_inform_bss_frame
From: Ben Greear @ 2013-06-11 19:08 UTC (permalink / raw)
To: linux-wireless@vger.kernel.org
In-Reply-To: <51B773B7.5090301@candelatech.com>
On 06/11/2013 12:00 PM, Ben Greear wrote:
> I see several reports similar to the one below while doing some
> kmemleak testing on my 3.9.5+ tree (with local patches applied):
>
> http://dmz2.candelatech.com/git/gitweb.cgi?p=linux-3.9.dev.y/.git;a=summary
>
>
> While looking through the code, I found this in scan.c:cfg80211_bss_update
>
> } else {
> /*
> * Ok so we found a beacon, and don't have an entry. If
> * it's a beacon with hidden SSID, we might be in for an
> * expensive search for any probe responses that should
> * be grouped with this beacon for updates ...
> */
> if (!cfg80211_combine_bsses(dev, new)) {
> kfree(new);
> goto drop;
> }
> }
>
> I don't know if this is the culprit that I am seeing, but I believe
> we should be freeing the tmp.pub.beacon_ies (if it is not NULL)
> before doing the 'goto drop'?
Err, I guess not. Seems the only way that combine_bsses can return false is
if beacon_ies is null. So, I guess it must be something else...
>
>
> The kmemleak report is below:
>
>
> unreferenced object 0xffff8801c8e41e78 (size 192):
> comm "kworker/u:2", pid 157, jiffies 4295509873 (age 86582.869s)
> hex dump (first 32 bytes):
> 41 0d 00 30 02 00 00 00 6b 6b 6b 6b 6b 6b 6b 6b A..0....kkkkkkkk
> 6b 6b 6b 6b 6b 6b 6b 6b 69 00 00 00 00 0c 2e 32 kkkkkkkki......2
> backtrace:
> [<ffffffff815de7bf>] kmemleak_alloc+0x73/0x98
> [<ffffffff8118b4d4>] slab_post_alloc_hook+0x28/0x2a
> [<ffffffff8118d605>] __kmalloc+0xf9/0x122
> [<ffffffffa027cb27>] cfg80211_inform_bss_frame+0x114/0x1f8 [cfg80211]
> [<ffffffffa03d6865>] ieee80211_bss_info_update+0x66/0x21f [mac80211]
> [<ffffffffa040aec6>] ieee80211_rx_bss_info+0x12f/0x1ca [mac80211]
> [<ffffffffa040b017>] ieee80211_rx_mgmt_probe_resp+0xb6/0x197 [mac80211]
> [<ffffffffa040e8a3>] ieee80211_sta_rx_queued_mgmt+0xdd/0x60e [mac80211]
> [<ffffffffa03df0ee>] ieee80211_iface_work+0x238/0x2cc [mac80211]
> [<ffffffff810b0cd3>] process_one_work+0x292/0x42e
> [<ffffffff810b36af>] worker_thread+0x14f/0x264
> [<ffffffff810b7bea>] kthread+0xc7/0xcf
> [<ffffffff815f64ec>] ret_from_fork+0x7c/0xb0
> [<ffffffffffffffff>] 0xffffffffffffffff
>
>
> (gdb) l *(cfg80211_inform_bss_frame+0x114)
> 0x8b27 is in cfg80211_inform_bss_frame (/home/greearb/git/linux-3.9.dev.y/net/wireless/scan.c:960).
> 955 ielen, channel);
> 956 if (!channel)
> 957 return NULL;
> 958
> 959 ies = kmalloc(sizeof(*ies) + ielen, gfp);
> 960 if (!ies)
> 961 return NULL;
> 962 ies->len = ielen;
> 963 ies->tsf = le64_to_cpu(mgmt->u.probe_resp.timestamp);
> 964 memcpy(ies->data, mgmt->u.probe_resp.variable, ielen);
> (gdb)
>
>
>
> Thanks,
> Ben
>
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
^ permalink raw reply
* Re: [RFC 4/5] mac80211: enforce address verification on monitors
From: Jakub Kiciński @ 2013-06-11 19:13 UTC (permalink / raw)
To: Johannes Berg
Cc: Felix Fietkau, linux-wireless, Helmut Schaa,
nietrywialneprzejscie
In-Reply-To: <1370963652.8356.51.camel@jlt4.sipsolutions.net>
On Tue, 11 Jun 2013 17:14:12 +0200, Johannes Berg wrote:
>
>>> I think we should "just" move ieee80211_verify_mac() into do_open().
>>> Semantically anyway, I'm clearly handwaving a bit. But I would argue
>>> that you can set any MAC address that you like, as long as you don't
>>> bring the interface up, hence the verification really shouldn't be done
>>> when you assign the address but when you bring it up.
>>
>> I've considered this initially. Two reasons that made me
>> think the current approach is cleaner are:
>> - it's nice when user gets the error during the action that
>> puts system in inconsistent state not some time later. I
>> personally hate to get vague EBUSY and have to figure out
>> what's wrong.
>> - suppose there are two interfaces, both down with
>> incompatible addresses. User adds third ifc, what address
>> should we assign to it?
>
> Right now you can assign the same addresses to multiple interfaces and
> then you can't bring them up. This happens for example if there are no
> more addresses to assign.
I didn't realise that. I will move the check into do_open() path as
suggested then.
-- kuba
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox