* [PATCH 1/2] mac80211: constify ieee802_11_parse_elems() argument
From: Johannes Berg @ 2013-05-28 8:59 UTC (permalink / raw)
To: linux-wireless; +Cc: Johannes Berg
From: Johannes Berg <johannes.berg@intel.com>
It only returns pointers into the data, so there's no
reason not to mark the input data const.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
net/mac80211/ieee80211_i.h | 5 +++--
net/mac80211/util.c | 4 ++--
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 9eed6f1..923e177 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -1512,10 +1512,11 @@ static inline void ieee80211_tx_skb(struct ieee80211_sub_if_data *sdata,
ieee80211_tx_skb_tid(sdata, skb, 7);
}
-u32 ieee802_11_parse_elems_crc(u8 *start, size_t len, bool action,
+u32 ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,
struct ieee802_11_elems *elems,
u64 filter, u32 crc);
-static inline void ieee802_11_parse_elems(u8 *start, size_t len, bool action,
+static inline void ieee802_11_parse_elems(const u8 *start, size_t len,
+ bool action,
struct ieee802_11_elems *elems)
{
ieee802_11_parse_elems_crc(start, len, action, elems, 0, 0);
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 2a8d759..efc06d2 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -661,12 +661,12 @@ void ieee80211_queue_delayed_work(struct ieee80211_hw *hw,
}
EXPORT_SYMBOL(ieee80211_queue_delayed_work);
-u32 ieee802_11_parse_elems_crc(u8 *start, size_t len, bool action,
+u32 ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,
struct ieee802_11_elems *elems,
u64 filter, u32 crc)
{
size_t left = len;
- u8 *pos = start;
+ const u8 *pos = start;
bool calc_crc = filter != 0;
DECLARE_BITMAP(seen_elems, 256);
const u8 *ie;
--
1.8.0
^ permalink raw reply related
* [PATCH 2/2] mac80211: work around broken APs not including HT info
From: Johannes Berg @ 2013-05-28 8:59 UTC (permalink / raw)
To: linux-wireless; +Cc: Johannes Berg
In-Reply-To: <1369731594-16303-1-git-send-email-johannes@sipsolutions.net>
From: Johannes Berg <johannes.berg@intel.com>
There are some APs, notably 2G/3G/4G Wifi routers, specifically
the "Onda PN51T", "Vodafone PocketWiFi 2" and a similar T-Mobile
branded device [1] that erroneously don't include all the needed
information in (re)association response frames. Work around this
by assuming the information is the same as it was in the beacon
or probe response and using the data from there instead.
This fixes https://bugzilla.kernel.org/show_bug.cgi?id=58881.
[1] https://bbs.archlinux.org/viewtopic.php?pid=1277305
Cc: stable@vger.kernel.org
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
net/mac80211/mlme.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 80 insertions(+), 7 deletions(-)
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index f44f4ca..8571294 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -2486,8 +2486,11 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
u16 capab_info, aid;
struct ieee802_11_elems elems;
struct ieee80211_bss_conf *bss_conf = &sdata->vif.bss_conf;
+ const struct cfg80211_bss_ies *bss_ies = NULL;
+ struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data;
u32 changed = 0;
int err;
+ bool ret;
/* AssocResp and ReassocResp have identical structure */
@@ -2519,21 +2522,86 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
ifmgd->aid = aid;
/*
+ * Some APs are erroneously not including some information in their
+ * (re)association response frames. Try to recover by using the data
+ * from the beacon or probe response. This seems to afflict mobile
+ * 2G/3G/4G wifi routers, reported models include the "Onda PN51T",
+ * "Vodafone PocketWiFi 2" and a similar T-Mobile branded device.
+ */
+ if ((assoc_data->wmm && !elems.wmm_param) ||
+ (!(ifmgd->flags & IEEE80211_STA_DISABLE_HT) &&
+ (!elems.ht_cap_elem || !elems.ht_operation)) ||
+ (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT) &&
+ (!elems.vht_cap_elem || !elems.vht_operation))) {
+ const struct cfg80211_bss_ies *ies;
+ struct ieee802_11_elems bss_elems;
+
+ rcu_read_lock();
+ ies = rcu_dereference(cbss->ies);
+ if (ies)
+ bss_ies = kmemdup(ies, sizeof(*ies) + ies->len,
+ GFP_ATOMIC);
+ rcu_read_unlock();
+ if (!bss_ies)
+ return false;
+
+ ieee802_11_parse_elems(bss_ies->data, bss_ies->len,
+ false, &bss_elems);
+ if (assoc_data->wmm &&
+ !elems.wmm_param && bss_elems.wmm_param) {
+ elems.wmm_param = bss_elems.wmm_param;
+ sdata_info(sdata,
+ "AP bug: WMM param missing from AssocResp\n");
+ }
+
+ /*
+ * Also check if we requested HT/VHT, otherwise the AP doesn't
+ * have to include the IEs in the (re)association response.
+ */
+ if (!elems.ht_cap_elem && bss_elems.ht_cap_elem &&
+ !(ifmgd->flags & IEEE80211_STA_DISABLE_HT)) {
+ elems.ht_cap_elem = bss_elems.ht_cap_elem;
+ sdata_info(sdata,
+ "AP bug: HT capability missing from AssocResp\n");
+ }
+ if (!elems.ht_operation && bss_elems.ht_operation &&
+ !(ifmgd->flags & IEEE80211_STA_DISABLE_HT)) {
+ elems.ht_operation = bss_elems.ht_operation;
+ sdata_info(sdata,
+ "AP bug: HT operation missing from AssocResp\n");
+ }
+ if (!elems.vht_cap_elem && bss_elems.vht_cap_elem &&
+ !(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) {
+ elems.vht_cap_elem = bss_elems.vht_cap_elem;
+ sdata_info(sdata,
+ "AP bug: VHT capa missing from AssocResp\n");
+ }
+ if (!elems.vht_operation && bss_elems.vht_operation &&
+ !(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) {
+ elems.vht_operation = bss_elems.vht_operation;
+ sdata_info(sdata,
+ "AP bug: VHT operation missing from AssocResp\n");
+ }
+ }
+
+ /*
* We previously checked these in the beacon/probe response, so
* they should be present here. This is just a safety net.
*/
if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HT) &&
(!elems.wmm_param || !elems.ht_cap_elem || !elems.ht_operation)) {
sdata_info(sdata,
- "HT AP is missing WMM params or HT capability/operation in AssocResp\n");
- return false;
+ "HT AP is missing WMM params or HT capability/operation\n");
+ ret = false;
+ goto out;
}
if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT) &&
(!elems.vht_cap_elem || !elems.vht_operation)) {
sdata_info(sdata,
- "VHT AP is missing VHT capability/operation in AssocResp\n");
- return false;
+ "VHT AP is missing VHT capability/operation\n");
+ ret = false;
+ goto out;
}
mutex_lock(&sdata->local->sta_mtx);
@@ -2544,7 +2612,8 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
sta = sta_info_get(sdata, cbss->bssid);
if (WARN_ON(!sta)) {
mutex_unlock(&sdata->local->sta_mtx);
- return false;
+ ret = false;
+ goto out;
}
sband = local->hw.wiphy->bands[ieee80211_get_sdata_band(sdata)];
@@ -2597,7 +2666,8 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
sta->sta.addr);
WARN_ON(__sta_info_destroy(sta));
mutex_unlock(&sdata->local->sta_mtx);
- return false;
+ ret = false;
+ goto out;
}
mutex_unlock(&sdata->local->sta_mtx);
@@ -2637,7 +2707,10 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
ieee80211_sta_rx_notify(sdata, (struct ieee80211_hdr *)mgmt);
ieee80211_sta_reset_beacon_monitor(sdata);
- return true;
+ ret = true;
+ out:
+ kfree(bss_ies);
+ return ret;
}
static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata,
--
1.8.0
^ permalink raw reply related
* Re: [PATCH v2] wireless: ath6kl: re-use native helper to parse MAC
From: Kalle Valo @ 2013-05-28 8:51 UTC (permalink / raw)
To: Andy Shevchenko; +Cc: linux-wireless, John W . Linville, ath6kl-devel
In-Reply-To: <1369730853.29283.222.camel@smile>
Andy Shevchenko <andriy.shevchenko@linux.intel.com> writes:
> On Thu, 2013-04-25 at 16:31 +0300, Andy Shevchenko wrote:
>> There is native mac_pton() function which helps to parse MAC.
>>
>> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
[...]
>
> John, do you have any comment on this one?
ath6kl patches go through my tree. Sorry for not being able to look at
your patch yet as I have been very busy with something else, will do
that soon.
--
Kalle Valo
^ permalink raw reply
* Re: [PATCH v2] wireless: ath6kl: re-use native helper to parse MAC
From: Andy Shevchenko @ 2013-05-28 8:47 UTC (permalink / raw)
To: linux-wireless; +Cc: Kalle Valo, John W . Linville
In-Reply-To: <1366896682-2023-1-git-send-email-andriy.shevchenko@linux.intel.com>
On Thu, 2013-04-25 at 16:31 +0300, Andy Shevchenko wrote:
> There is native mac_pton() function which helps to parse MAC.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
> drivers/net/wireless/ath/ath6kl/debug.c | 8 +-------
> 1 file changed, 1 insertion(+), 7 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath6kl/debug.c b/drivers/net/wireless/ath/ath6kl/debug.c
> index fe38b83..dbfd17d 100644
> --- a/drivers/net/wireless/ath/ath6kl/debug.c
> +++ b/drivers/net/wireless/ath/ath6kl/debug.c
> @@ -1240,20 +1240,14 @@ static ssize_t ath6kl_force_roam_write(struct file *file,
> char buf[20];
> size_t len;
> u8 bssid[ETH_ALEN];
> - int i;
> - int addr[ETH_ALEN];
>
> len = min(count, sizeof(buf) - 1);
> if (copy_from_user(buf, user_buf, len))
> return -EFAULT;
> buf[len] = '\0';
>
> - if (sscanf(buf, "%02x:%02x:%02x:%02x:%02x:%02x",
> - &addr[0], &addr[1], &addr[2], &addr[3], &addr[4], &addr[5])
> - != ETH_ALEN)
> + if (!mac_pton(buf, bssid))
> return -EINVAL;
> - for (i = 0; i < ETH_ALEN; i++)
> - bssid[i] = addr[i];
>
> ret = ath6kl_wmi_force_roam_cmd(ar->wmi, bssid);
> if (ret)
John, do you have any comment on this one?
--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
^ permalink raw reply
* Compact-wireless build issue
From: Rohini Srinivas @ 2013-05-28 8:39 UTC (permalink / raw)
To: linux-wireless@vger.kernel.org
Hi,
This is Rohini Srinivas from Sasken Communication Technologies, Bangalore. I am trying to build the compact wireless for wilink8 with our dm814x specific ezsdk kernel version 2.6.37.
We are currently facing issues with regard to the same.
I have followed the steps as mentioned in http://processors.wiki.ti.com/index.php/WL18xx_Build_System_Scripts .Procedure under "System Build Scripts".
The dm81x ezsdk version details - http://processors.wiki.ti.com/index.php/EZSDK_Feature_List .The ezsdk version we are using is 5.04.
As per the README document in compat-wireless downloaded for wilink8 "ol_r8.a6.01" tag, I see that kernel verison > 2.6.24 is compatible. I am trying to build this compact-wireless package with our 2.6.37 kernel, which is failing due to some variables been referred which are added post 3.2 kernel.
Script run - ./wl18xx_build.sh all
Error-
CC [M] /u/rohinis/ezsdk_dm814x-evm_5_04_00_11_setuplinux/wlan_settings/build-utilites/wlan_tools/compat-wireless/drivers/net/wireless/ti/wlcore/sdio.o
/u/rohinis/ezsdk_dm814x-evm_5_04_00_11_setuplinux/wlan_settings/build-utilites/wlan_tools/compat-wireless/drivers/net/wireless/ti/wlcore/sdio.c: In function 'wl1271_probe':
/u/rohinis/ezsdk_dm814x-evm_5_04_00_11_setuplinux/wlan_settings/build-utilites/wlan_tools/compat-wireless/drivers/net/wireless/ti/wlcore/sdio.c:272: error: 'SDIO_SDIO_REV_3_00' undeclared (first use in this function)
/u/rohinis/ezsdk_dm814x-evm_5_04_00_11_setuplinux/wlan_settings/build-utilites/wlan_tools/compat-wireless/drivers/net/wireless/ti/wlcore/sdio.c:272: error: (Each undeclared identifier is reported only once
/u/rohinis/ezsdk_dm814x-evm_5_04_00_11_setuplinux/wlan_settings/build-utilites/wlan_tools/compat-wireless/drivers/net/wireless/ti/wlcore/sdio.c:272: error: for each function it appears in.)
make[5]: *** [/u/rohinis/ezsdk_dm814x-evm_5_04_00_11_setuplinux/wlan_settings/build-utilites/wlan_tools/compat-wireless/drivers/net/wireless/ti/wlcore/sdio.o] Error 1
make[4]: *** [/u/rohinis/ezsdk_dm814x-evm_5_04_00_11_setuplinux/wlan_settings/build-utilites/wlan_tools/compat-wireless/drivers/net/wireless/ti/wlcore] Error 2
make[3]: *** [/u/rohinis/ezsdk_dm814x-evm_5_04_00_11_setuplinux/wlan_settings/build-utilites/wlan_tools/compat-wireless/drivers/net/wireless/ti] Error 2
make[2]: *** [/u/rohinis/ezsdk_dm814x-evm_5_04_00_11_setuplinux/wlan_settings/build-utilites/wlan_tools/compat-wireless/drivers/net/wireless] Error 2
make[1]: *** [_module_/u/rohinis/ezsdk_dm814x-evm_5_04_00_11_setuplinux/wlan_settings/build-utilites/wlan_tools/compat-wireless] Error 2
make[1]: Leaving directory `/u/rohinis/ezsdk_dm814x-evm_5_04_00_11_setuplinux/board-support/linux-2.6.37-psp04.04.00.01_roh'
make: *** [modules] Error 2
Could patches be provided to the kernel 2.6.37 wrt to wilink8 module only which may resolve this problem? Or any other suggestions if you have would be helpful.
Please could you provide me any pointers and help us resolve this issue.
Thanks and Regards,
Rohini
________________________________
SASKEN BUSINESS DISCLAIMER: This message may contain confidential, proprietary or legally privileged information. In case you are not the original intended Recipient of the message, you must not, directly or indirectly, use, disclose, distribute, print, or copy any part of this message and you are requested to delete it and inform the sender. Any views expressed in this message are those of the individual sender unless otherwise stated. Nothing contained in this message shall be construed as an offer or acceptance of any offer by Sasken Communication Technologies Limited ("Sasken") unless sent with that express intent and with due authority of Sasken. Sasken has taken enough precautions to prevent the spread of viruses. However the company accepts no liability for any damage caused by any virus transmitted by this email.
Read Disclaimer at http://www.sasken.com/extras/mail_disclaimer.html
^ permalink raw reply
* Fwd: Issues with Intel Centrino advanced-N 6235
From: Vamegh Hedayati @ 2013-05-28 1:37 UTC (permalink / raw)
To: ilw, linux-wireless
In-Reply-To: <CAM05XA78qnrsACiG3CRrGvUkaompbi9Owf-s4uKJDiMunXURGg@mail.gmail.com>
Hi,
I recently bought A Dell XPS 13 Developer edition (Ubuntu Based Laptop)
I had major problem with the wireless. After a while, the wireless
interface randomly drops and only a reboot will bring back the
wireless interface.
This issue was pretty bad using the default installation provided by
Dell (12.04). I then upgrade to 12.10 to see the same sort of issue,
currently I am running Ubuntu 13.04 running KDE and kernel 3.10
root@fl1ght:~# uname -a && lshw -class network
Linux fl1ght 3.10.0-999-generic #201305240428 SMP Fri May 24 08:28:59
UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
*-network
description: Wireless interface
product: Centrino Advanced-N 6235
vendor: Intel Corporation
physical id: 0
bus info: pci@0000:01:00.0
logical name: wlan0
version: 24
serial: ************
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress cap_list ethernet physical wireless
configuration: broadcast=yes driver=iwlwifi
driverversion=3.10.0-999-generic firmware=18.168.6.1 latency=0 link=no
multicast=yes wireless=IEEE 802.11abgn
resources: irq:44 memory:***********
*-network
description: Ethernet interface
physical id: 2
logical name: eth0
serial: ***************
size: 1Gbit/s
capacity: 1Gbit/s
capabilities: ethernet physical tp mii 10bt 10bt-fd 100bt
100bt-fd 1000bt 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=asix
driverversion=22-Dec-2011 duplex=full firmware=ASIX AX88178 USB 2.0
Ethernet ip=10.0.5.100 link=yes multicast=yes port=MII speed=1Gbit/s
root@fl1ght:/var/log# lsmod |grep iwl
iwldvm 249110 0
mac80211 615800 1 iwldvm
iwlwifi 181947 1 iwldvm
cfg80211 495341 3 iwlwifi,mac80211,iwldvm
I currently have a usb Gigabit Ethernet Adaptor attached, hence why
the the Ethernet interface (the laptop is an ultrabook with no
ethernet ports as standard)
I have downloaded the latest intel firmware from
http://wireless.kernel.org/en/users/Drivers/iwlwifi hoping it could be
firmware related or atleast different than whats provided with Ubuntu
and unfortunately no difference:
root@fl1ght:/var/log# ls -al /lib/firmware/|grep iwl
-rw-r--r-- 1 root root 335056 May 25 02:30 iwlwifi-1000-3.ucode
-rw-r--r-- 1 root root 337520 May 25 02:30 iwlwifi-1000-5.ucode
-rw-r--r-- 1 root root 337572 May 25 02:30 iwlwifi-100-5.ucode
-rw-r--r-- 1 root root 689680 May 25 02:30 iwlwifi-105-6.ucode
-rw-r--r-- 1 root root 701228 May 25 02:30 iwlwifi-135-6.ucode
-rw-r--r-- 1 root root 695876 May 25 02:30 iwlwifi-2000-6.ucode
-rw-r--r-- 1 root root 707392 May 25 02:30 iwlwifi-2030-6.ucode
-rw-r--r-- 1 root root 150100 May 25 02:30 iwlwifi-3945-2.ucode
-rw-r--r-- 1 root root 187972 May 25 02:30 iwlwifi-4965-2.ucode
-rw-r--r-- 1 root root 345008 May 25 02:30 iwlwifi-5000-1.ucode
-rw-r--r-- 1 root root 353240 May 25 02:30 iwlwifi-5000-2.ucode
-rw-r--r-- 1 root root 340696 May 25 02:30 iwlwifi-5000-5.ucode
-rw-r--r-- 1 root root 337400 May 25 02:30 iwlwifi-5150-2.ucode
-rw-r--r-- 1 root root 454608 May 25 02:30 iwlwifi-6000-4.ucode
-rw-r--r-- 1 root root 444128 May 25 02:30 iwlwifi-6000g2a-5.ucode
-rw-r--r-- 1 root root 677296 May 25 02:30 iwlwifi-6000g2a-6.ucode
-rw-r--r-- 1 root root 460236 May 25 02:30 iwlwifi-6000g2b-5.ucode
-rw-r--r-- 1 root root 679436 May 25 02:30 iwlwifi-6000g2b-6.ucode
-rw-r--r-- 1 root root 463692 May 25 02:30 iwlwifi-6050-4.ucode
-rw-r--r-- 1 root root 469780 May 25 02:30 iwlwifi-6050-5.ucode
I have tried enabling the following module parameters:
root@fl1ght:~# cat /etc/modprobe.d/iwlwifi.conf |grep option
#options iwlwifi 11n_disable=1 swcrypto=2 power_save=0
I had the exact same issue. Suddenly the interface just drops. Looking
in dmesg I get the following output:
May 27 05:26:49 fl1ght kernel: [17458.429125] iwlwifi 0000:01:00.0: Q
18 is active and mapped to fifo 2 ra_tid 0xa5a5 [90,1515870810]
May 27 05:26:49 fl1ght kernel: [17458.466540] ------------[ cut here
]------------
May 27 05:26:49 fl1ght kernel: [17458.466559] WARNING: at
/home/apw/COD/linux/drivers/net/wireless/iwlwifi/iwl-trans.h:757
iwl_trans_pcie_wait_txq_empty+0x36f/0x3e0 [iwlwifi]()
May 27 05:26:49 fl1ght kernel: [17458.466561] Modules linked in:
joydev uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_core
videodev btusb snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_intel
snd_hda_codec snd_
hwdep snd_pcm snd_page_alloc dell_wmi sparse_keymap snd_seq_midi
snd_seq_midi_event snd_rawmidi snd_seq dell_laptop arc4 dcdbas
snd_seq_device snd_timer iwldvm intel_powerclamp mac80211 coretemp
kvm_intel snd kvm iwlwif
i cfg80211 psmouse serio_raw soundcore lpc_ich bnep rfcomm bluetooth
parport_pc ppdev mac_hid nfsd auth_rpcgss nfs_acl nfs lockd
binfmt_misc sunrpc fscache lp parport dm_crypt crc32_pclmul
ghash_clmulni_intel i915 aesni
_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper i2c_algo_bit
cryptd drm_kms_helper microcode drm ahci libahci wmi video [last
unloaded: ipmi_msghandler]
May 27 05:26:49 fl1ght kernel: [17458.466599] CPU: 0 PID: 9760 Comm:
kworker/u16:1 Tainted: G W 3.10.0-999-generic #201305240428
May 27 05:26:49 fl1ght kernel: [17458.466601] Hardware name: Dell Inc.
Dell System XPS L322X/0PJHXN, BIOS A08 04/18/2013
May 27 05:26:49 fl1ght kernel: [17458.466616] Workqueue: phy0
ieee80211_iface_work [mac80211]
May 27 05:26:49 fl1ght kernel: [17458.466618] ffffffffa030d6b8
ffff88017398fa58 ffffffff816c1fc8 ffff88017398fa98
May 27 05:26:49 fl1ght kernel: [17458.466621] ffffffff81044c70
ffff8802301b4000 ffff88023142b000 ffff8802301b4000
May 27 05:26:49 fl1ght kernel: [17458.466623] 0000000000000013
0000000000a02e80 0000000000000806 ffff88017398faa8
May 27 05:26:49 fl1ght kernel: [17458.466626] Call Trace:
May 27 05:26:49 fl1ght kernel: [17458.466634] [<ffffffff816c1fc8>]
dump_stack+0x19/0x1b
May 27 05:26:49 fl1ght kernel: [17458.466638] [<ffffffff81044c70>]
warn_slowpath_common+0x70/0xa0
May 27 05:26:49 fl1ght kernel: [17458.466641] [<ffffffff81044cba>]
warn_slowpath_null+0x1a/0x20
May 27 05:26:49 fl1ght kernel: [17458.466648] [<ffffffffa02fc03f>]
iwl_trans_pcie_wait_txq_empty+0x36f/0x3e0 [iwlwifi]
May 27 05:26:49 fl1ght kernel: [17458.466656] [<ffffffffa0457b7e>]
iwlagn_mac_flush+0xae/0x1b0 [iwldvm]
May 27 05:26:49 fl1ght kernel: [17458.466668] [<ffffffffa053eca2>]
ieee80211_flush_queues+0xc2/0x180 [mac80211]
May 27 05:26:49 fl1ght kernel: [17458.466677] [<ffffffffa05278d6>]
__ieee80211_recalc_idle+0xf6/0x130 [mac80211]
May 27 05:26:49 fl1ght kernel: [17458.466687] [<ffffffffa0528078>]
ieee80211_recalc_idle+0x18/0x30 [mac80211]
May 27 05:26:49 fl1ght kernel: [17458.466698] [<ffffffffa0542802>]
ieee80211_free_chanctx+0xe2/0x210 [mac80211]
May 27 05:26:49 fl1ght kernel: [17458.466708] [<ffffffffa05437ab>]
__ieee80211_vif_release_channel+0x5b/0x70 [mac80211]
May 27 05:26:49 fl1ght kernel: [17458.466718] [<ffffffffa0543b31>]
ieee80211_vif_release_channel+0x51/0x70 [mac80211]
May 27 05:26:49 fl1ght kernel: [17458.466732] [<ffffffffa05561c7>]
ieee80211_set_disassoc+0x267/0x3c0 [mac80211]
May 27 05:26:49 fl1ght kernel: [17458.466748] [<ffffffffa055720e>]
ieee80211_sta_connection_lost.isra.25.constprop.26+0x3e/0x80
[mac80211]
May 27 05:26:49 fl1ght kernel: [17458.466765] [<ffffffffa055899a>]
ieee80211_sta_work+0x47a/0x490 [mac80211]
May 27 05:26:49 fl1ght kernel: [17458.466780] [<ffffffffa05276e8>]
ieee80211_iface_work+0x2b8/0x350 [mac80211]
May 27 05:26:49 fl1ght kernel: [17458.466786] [<ffffffff81064114>]
process_one_work+0x174/0x490
May 27 05:26:49 fl1ght kernel: [17458.466789] [<ffffffff8106513b>]
worker_thread+0x11b/0x370
May 27 05:26:49 fl1ght kernel: [17458.466792] [<ffffffff81065020>] ?
manage_workers.isra.20+0x160/0x160
May 27 05:26:49 fl1ght kernel: [17458.466796] [<ffffffff8106b890>]
kthread+0xc0/0xd0
May 27 05:26:49 fl1ght kernel: [17458.466799] [<ffffffff8106b7d0>] ?
flush_kthread_worker+0xb0/0xb0
May 27 05:26:49 fl1ght kernel: [17458.466803] [<ffffffff816d5adc>]
ret_from_fork+0x7c/0xb0
May 27 05:26:49 fl1ght kernel: [17458.466807] [<ffffffff8106b7d0>] ?
flush_kthread_worker+0xb0/0xb0
May 27 05:26:49 fl1ght kernel: [17458.466808] ---[ end trace
e108a1b1cb4883b9 ]---
May 27 05:26:49 fl1ght kernel: [17458.504367] iwlwifi 0000:01:00.0: Q
19 is active and mapped to fifo 2 ra_tid 0xa5a5 [90,1515870810]
May 27 05:26:51 fl1ght kernel: [17460.502865] iwlwifi 0000:01:00.0:
Error sending POWER_TABLE_CMD: time out after 2000ms.
May 27 05:26:51 fl1ght kernel: [17460.502882] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 204
May 27 05:26:51 fl1ght kernel: [17460.502890] iwlwifi 0000:01:00.0:
set power fail, ret = -110
May 27 05:26:53 fl1ght kernel: [17462.505175] iwlwifi 0000:01:00.0:
Error sending REPLY_RXON: time out after 2000ms.
May 27 05:26:53 fl1ght kernel: [17462.505198] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 205
May 27 05:26:53 fl1ght kernel: [17462.505215] iwlwifi 0000:01:00.0:
Error clearing ASSOC_MSK on BSS (-110)
May 27 05:26:55 fl1ght kernel: [17464.535431] iwlwifi 0000:01:00.0:
Error sending REPLY_ADD_STA: time out after 2000ms.
May 27 05:26:55 fl1ght kernel: [17464.535443] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 206
May 27 05:26:55 fl1ght kernel: [17464.535454] wlan0: failed to remove
key (1, ff:ff:ff:ff:ff:ff) from hardware (-110)
May 27 05:26:57 fl1ght kernel: [17466.537735] iwlwifi 0000:01:00.0:
Error sending REPLY_ADD_STA: time out after 2000ms.
May 27 05:26:57 fl1ght kernel: [17466.537749] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 207
May 27 05:26:57 fl1ght kernel: [17466.537760] wlan0: failed to remove
key (2, ff:ff:ff:ff:ff:ff) from hardware (-110)
May 27 05:26:57 fl1ght kernel: [17466.537986] cfg80211: Calling CRDA
to update world regulatory domain
May 27 05:26:59 fl1ght kernel: [17468.540019] iwlwifi 0000:01:00.0:
Error sending REPLY_SCAN_CMD: time out after 2000ms.
May 27 05:26:59 fl1ght kernel: [17468.540042] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 208
May 27 05:26:59 fl1ght kernel: [17468.540868] cfg80211: World
regulatory domain updated:
May 27 05:26:59 fl1ght kernel: [17468.540884] cfg80211: (start_freq
- end_freq @ bandwidth), (max_antenna_gain, max_eirp)
May 27 05:26:59 fl1ght kernel: [17468.540895] cfg80211: (2402000 KHz
- 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
May 27 05:26:59 fl1ght kernel: [17468.540906] cfg80211: (2457000 KHz
- 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
May 27 05:26:59 fl1ght kernel: [17468.540914] cfg80211: (2474000 KHz
- 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
May 27 05:26:59 fl1ght kernel: [17468.540922] cfg80211: (5170000 KHz
- 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
May 27 05:26:59 fl1ght kernel: [17468.540931] cfg80211: (5735000 KHz
- 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
May 27 05:27:02 fl1ght kernel: [17471.543442] iwlwifi 0000:01:00.0:
Error sending REPLY_SCAN_CMD: time out after 2000ms.
May 27 05:27:02 fl1ght kernel: [17471.543457] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 209
May 27 05:27:05 fl1ght kernel: [17474.546839] iwlwifi 0000:01:00.0:
Error sending REPLY_SCAN_CMD: time out after 2000ms.
May 27 05:27:05 fl1ght kernel: [17474.546861] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 210
May 27 05:27:08 fl1ght kernel: [17477.550214] iwlwifi 0000:01:00.0:
Error sending REPLY_SCAN_CMD: time out after 2000ms.
May 27 05:27:08 fl1ght kernel: [17477.550226] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 211
May 27 05:27:11 fl1ght kernel: [17480.553636] iwlwifi 0000:01:00.0:
Error sending REPLY_SCAN_CMD: time out after 2000ms.
May 27 05:27:11 fl1ght kernel: [17480.553649] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 212
May 27 05:27:14 fl1ght kernel: [17483.556987] iwlwifi 0000:01:00.0:
Error sending REPLY_SCAN_CMD: time out after 2000ms.
May 27 05:27:14 fl1ght kernel: [17483.556993] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 213
May 27 05:27:16 fl1ght kernel: [17485.623380] iwlwifi 0000:01:00.0:
Error sending REPLY_SCAN_CMD: time out after 2000ms.
May 27 05:27:16 fl1ght kernel: [17485.623398] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 214
May 27 05:27:19 fl1ght kernel: [17488.378470] iwlwifi 0000:01:00.0:
Error sending REPLY_SCAN_CMD: time out after 2000ms.
May 27 05:27:19 fl1ght kernel: [17488.378500] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 215
May 27 05:27:42 fl1ght kernel: [17511.404648] iwlwifi 0000:01:00.0:
Error sending REPLY_SCAN_CMD: time out after 2000ms.
May 27 05:27:42 fl1ght kernel: [17511.404663] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 217
May 27 05:28:15 fl1ght kernel: [17544.442184] iwlwifi 0000:01:00.0:
Error sending REPLY_SCAN_CMD: time out after 2000ms.
May 27 05:28:15 fl1ght kernel: [17544.442197] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 218
May 27 05:28:58 fl1ght kernel: [17587.495041] iwlwifi 0000:01:00.0:
Error sending REPLY_SCAN_CMD: time out after 2000ms.
May 27 05:28:58 fl1ght kernel: [17587.495054] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 219
May 27 05:29:51 fl1ght kernel: [17640.551248] iwlwifi 0000:01:00.0:
Error sending REPLY_SCAN_CMD: time out after 2000ms.
May 27 05:29:51 fl1ght kernel: [17640.551261] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 220
May 27 05:30:54 fl1ght kernel: [17703.626831] iwlwifi 0000:01:00.0:
Error sending REPLY_SCAN_CMD: time out after 2000ms.
May 27 05:30:54 fl1ght kernel: [17703.626845] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 221
May 27 05:31:57 fl1ght kernel: [17766.694371] iwlwifi 0000:01:00.0:
Error sending REPLY_SCAN_CMD: time out after 2000ms.
May 27 05:31:57 fl1ght kernel: [17766.694395] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 222
May 27 05:33:00 fl1ght kernel: [17829.766005] iwlwifi 0000:01:00.0:
Error sending REPLY_SCAN_CMD: time out after 2000ms.
May 27 05:33:00 fl1ght kernel: [17829.766018] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 223
May 27 05:34:03 fl1ght kernel: [17892.837530] iwlwifi 0000:01:00.0:
Error sending REPLY_SCAN_CMD: time out after 2000ms.
May 27 05:34:03 fl1ght kernel: [17892.837543] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 224
May 27 05:35:06 fl1ght kernel: [17955.909130] iwlwifi 0000:01:00.0:
Error sending REPLY_SCAN_CMD: time out after 2000ms.
May 27 05:35:06 fl1ght kernel: [17955.909143] iwlwifi 0000:01:00.0:
Current CMD queue read_ptr 195 write_ptr 225
May 27 05:36:07 fl1ght kernel: [18016.983211] iwlwifi 0000:01:00.0: No
space in command queue
May 27 05:36:07 fl1ght kernel: [18016.983229] iwlwifi 0000:01:00.0:
Restarting adapter queue is full
May 27 05:36:07 fl1ght kernel: [18016.983256] iwlwifi 0000:01:00.0:
Error sending REPLY_SCAN_CMD: enqueue_hcmd failed: -28
May 27 05:36:14 fl1ght kernel: [18018.876449] iwlwifi 0000:01:00.0:
Failing on timeout while stopping DMA channel 0 [0x5a5a5a5a]
May 27 05:36:14 fl1ght kernel: [18020.787884] iwlwifi 0000:01:00.0:
Failing on timeout while stopping DMA channel 2 [0x5a5a5a5a]
May 27 05:36:14 fl1ght kernel: [18022.735845] iwlwifi 0000:01:00.0:
Failing on timeout while stopping DMA channel 5 [0x5a5a5a5a]
May 27 05:36:14 fl1ght kernel: [18024.647588] iwlwifi 0000:01:00.0:
Failing on timeout while stopping DMA channel 7 [0x5a5a5a5a]
May 27 05:36:16 fl1ght kernel: [18026.525552] ieee80211 phy0: Hardware
restart was requested
May 27 05:36:16 fl1ght kernel: [18026.525631] iwlwifi 0000:01:00.0: L1
Disabled; Enabling L0S
May 27 05:36:16 fl1ght kernel: [18026.580811] iwlwifi 0000:01:00.0:
Radio type=0x2-0x1-0x0
May 27 05:36:30 fl1ght kernel: [18032.307919] iwlwifi 0000:01:00.0:
Failed to load firmware chunk!
May 27 05:36:30 fl1ght kernel: [18032.307932] iwlwifi 0000:01:00.0:
Could not load the [0] uCode section
May 27 05:36:30 fl1ght kernel: [18032.307943] iwlwifi 0000:01:00.0:
Failed to start RT ucode: -110
May 27 05:36:30 fl1ght kernel: [18034.200860] iwlwifi 0000:01:00.0:
Failing on timeout while stopping DMA channel 0 [0x5a5a5a5a]
May 27 05:36:30 fl1ght kernel: [18036.119354] iwlwifi 0000:01:00.0:
Failing on timeout while stopping DMA channel 2 [0x5a5a5a5a]
May 27 05:36:30 fl1ght kernel: [18038.079627] iwlwifi 0000:01:00.0:
Failing on timeout while stopping DMA channel 5 [0x5a5a5a5a]
May 27 05:36:30 fl1ght kernel: [18040.001556] iwlwifi 0000:01:00.0:
Failing on timeout while stopping DMA channel 7 [0x5a5a5a5a]
May 27 05:36:31 fl1ght kernel: [18041.888305] iwlwifi 0000:01:00.0:
Unable to initialize device.
At the end you will notice Failed to load firmware chunk. I do an
rmmod iwldvm and iwlwifi and the modules are successfully removed and
I can then reinsert both modules but the wireless interface completely
disappears and dmesg says that it could not load the firmware.
root@fl1ght:/var/log# dmesg |grep -i firmware
[ 0.143458] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored
[ 44.270456] iwlwifi 0000:01:00.0: loaded firmware version
18.168.6.1 op_mode iwldvm
[26486.356816] iwlwifi 0000:01:00.0: Failed to load firmware chunk!
Ive also noticed the onboard touchpad acts extremely weird and I end
up being forced to do a reboot (if I have external / mice keyboard and
usb ethernet adaptor everything is fine it runs normally -- when the
laptop has nothing plugged in and the wireless dies the laptop begins
to stall and needs to be rebooted - not sure why this other than the
kernel module crashing. )
The wireless usually works fine for at least a few hours, before this
happens. I can suspend and resume just fine everything works, but left
on and using wireless for a few hours it suddenly does this, in fact
the time it takes is completely random as well.
I am not sure at this point if it is a faulty wireless card or driver
/ firmware related.
The dell laptop itself has had the latest firmware installed (A08)
downloaded and installed from the dell support site.
Any help you could provide I would greatly appreciate, I can provide
you with any further information you require.
Thank you in advance,
Kind Regards,
Vamegh Hedayati
^ permalink raw reply
* Re: Realtek rtl8192se in AP mode?
From: Janice @ 2013-05-27 5:00 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <4F2172D4.9090208@lwfinger.net>
Larry Finger <Larry.Finger@...> writes:
Hi Larry, I'm having trouble installing the file
"92ce_se_de_linux_mac80211_0005.1230.2011.tar.gz".
1) Extracted it in Ubuntu 12.04 (installed using Wubi to avoid partitioning)
using the command "tar -xzvf
92ce_se_de_linux_mac80211_0005.1230.2011.tar.gz"
2) ls to search for dir name
3) cd dir
4) make
5) gets 2 errors.
2 questions:
I) is the vendor source you mentioned
"92ce_se_de_linux_mac80211_0005.1230.2011.tar.gz" ?
II) If not, would you please email the file you're talking about?
Thank you.
^ permalink raw reply
* Re: P2P Device support: how to deal with p2p_no_group_iface option
From: Johannes Berg @ 2013-05-27 19:27 UTC (permalink / raw)
To: Arend van Spriel
Cc: Jouni Malinen, hostap@lists.shmoo.com, linux-wireless,
Jithu Jance, Marcel Holtmann
In-Reply-To: <51A3B1F5.4070507@broadcom.com>
On Mon, 2013-05-27 at 21:20 +0200, Arend van Spriel wrote:
> Marcel suggested a different approach that sounds pretty compelling from
> a test perspective. However, that does change mac80211_hwsim behaviour
> more significantly. No pain, no gain :-)
Yeah, he's suggested it before, and it'd be a good thing to have.
Luckily this is a test tool so I don't think anyone would mind changing
the module parameters too much. Hopefully.
johannes
^ permalink raw reply
* Re: P2P Device support: how to deal with p2p_no_group_iface option
From: Arend van Spriel @ 2013-05-27 19:20 UTC (permalink / raw)
To: Johannes Berg
Cc: Jouni Malinen, hostap@lists.shmoo.com, linux-wireless,
Jithu Jance, Marcel Holtmann
In-Reply-To: <1369682153.14740.27.camel@jlt4.sipsolutions.net>
On 05/27/2013 09:15 PM, Johannes Berg wrote:
> On Mon, 2013-05-27 at 21:11 +0300, Jouni Malinen wrote:
>> On Mon, May 27, 2013 at 03:56:19PM +0200, Arend van Spriel wrote:
>>> In this mac80211_hwsim is a special case. We could make P2P_DEVICE
>>> support in mac80211_hwsim optional using module parameter to allow
>>> testing both cases.
>>
>> Yes, that would be helpful. I don't understand why my test setup moves
>> to using P2P Device by default when mac80211_hwsim is perfectly capable
>> of operating without that.. [...]
>>
>> In general, I don't think it is a good idea to change existing behavior
>> with a kernel or wpa_supplicant upgrade. It is obviously fine if this is
>> needed for the functionality to work in the first place, but that is not
>> the case with mac80211_hwsim.
>
> It's kinda a side effect of having "I support P2P-Device" also mean "I
> want P2P-Device to be used", but for everything other than hwsim that
> seems like the only reasonable choice, so ... I wouldn't mind changing
> the default in hwsim though to not support/desire P2P-Device w/o a
> configuration option or so.
Hi Johannes,
Marcel suggested a different approach that sounds pretty compelling from
a test perspective. However, that does change mac80211_hwsim behaviour
more significantly. No pain, no gain :-)
Regards,
Arend
^ permalink raw reply
* Re: P2P Device support: how to deal with p2p_no_group_iface option
From: Johannes Berg @ 2013-05-27 19:15 UTC (permalink / raw)
To: Jouni Malinen
Cc: Arend van Spriel, hostap@lists.shmoo.com, linux-wireless,
Jithu Jance
In-Reply-To: <20130527181112.GA20210@w1.fi>
On Mon, 2013-05-27 at 21:11 +0300, Jouni Malinen wrote:
> On Mon, May 27, 2013 at 03:56:19PM +0200, Arend van Spriel wrote:
> > In this mac80211_hwsim is a special case. We could make P2P_DEVICE
> > support in mac80211_hwsim optional using module parameter to allow
> > testing both cases.
>
> Yes, that would be helpful. I don't understand why my test setup moves
> to using P2P Device by default when mac80211_hwsim is perfectly capable
> of operating without that.. [...]
>
> In general, I don't think it is a good idea to change existing behavior
> with a kernel or wpa_supplicant upgrade. It is obviously fine if this is
> needed for the functionality to work in the first place, but that is not
> the case with mac80211_hwsim.
It's kinda a side effect of having "I support P2P-Device" also mean "I
want P2P-Device to be used", but for everything other than hwsim that
seems like the only reasonable choice, so ... I wouldn't mind changing
the default in hwsim though to not support/desire P2P-Device w/o a
configuration option or so.
johannes
^ permalink raw reply
* [PATCH for 3.10 3/7] brcmfmac: add additional parameter to brcmf_free_vif()
From: Arend van Spriel @ 2013-05-27 19:09 UTC (permalink / raw)
To: John W. Linville; +Cc: linux-wireless, Arend van Spriel
In-Reply-To: <1369681799-3163-1-git-send-email-arend@broadcom.com>
Pass the struct brcmf_cfg80211_info instance instead of obtaining
through vif itself using vif->wdev. This is needed as the netdev
associated with this vif is already unregistered.
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
drivers/net/wireless/brcm80211/brcmfmac/p2p.c | 25 ++++++++++----------
.../net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 17 +++++--------
.../net/wireless/brcm80211/brcmfmac/wl_cfg80211.h | 3 ++-
3 files changed, 20 insertions(+), 25 deletions(-)
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
index 17275ce..167b7af 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
@@ -1955,21 +1955,21 @@ s32 brcmf_p2p_attach(struct brcmf_cfg80211_info *cfg)
err = brcmf_fil_iovar_int_set(pri_ifp, "p2p_disc", 1);
if (err < 0) {
brcmf_err("set p2p_disc error\n");
- brcmf_free_vif(p2p_vif);
+ brcmf_free_vif(cfg, p2p_vif);
goto exit;
}
/* obtain bsscfg index for P2P discovery */
err = brcmf_fil_iovar_int_get(pri_ifp, "p2p_dev", &bssidx);
if (err < 0) {
brcmf_err("retrieving discover bsscfg index failed\n");
- brcmf_free_vif(p2p_vif);
+ brcmf_free_vif(cfg, p2p_vif);
goto exit;
}
/* Verify that firmware uses same bssidx as driver !! */
if (p2p_ifp->bssidx != bssidx) {
brcmf_err("Incorrect bssidx=%d, compared to p2p_ifp->bssidx=%d\n",
bssidx, p2p_ifp->bssidx);
- brcmf_free_vif(p2p_vif);
+ brcmf_free_vif(cfg, p2p_vif);
goto exit;
}
@@ -1997,7 +1997,7 @@ void brcmf_p2p_detach(struct brcmf_p2p_info *p2p)
brcmf_p2p_cancel_remain_on_channel(vif->ifp);
brcmf_p2p_deinit_discovery(p2p);
/* remove discovery interface */
- brcmf_free_vif(vif);
+ brcmf_free_vif(p2p->cfg, vif);
p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif = NULL;
}
/* just set it all to zero */
@@ -2222,7 +2222,7 @@ static struct wireless_dev *brcmf_p2p_create_p2pdev(struct brcmf_p2p_info *p2p,
return &p2p_vif->wdev;
fail:
- brcmf_free_vif(p2p_vif);
+ brcmf_free_vif(p2p->cfg, p2p_vif);
return ERR_PTR(err);
}
@@ -2231,13 +2231,12 @@ fail:
*
* @vif: virtual interface object to delete.
*/
-static void brcmf_p2p_delete_p2pdev(struct brcmf_cfg80211_vif *vif)
+static void brcmf_p2p_delete_p2pdev(struct brcmf_cfg80211_info *cfg,
+ struct brcmf_cfg80211_vif *vif)
{
- struct brcmf_p2p_info *p2p = &vif->ifp->drvr->config->p2p;
-
cfg80211_unregister_wdev(&vif->wdev);
- p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif = NULL;
- brcmf_free_vif(vif);
+ cfg->p2p.bss_idx[P2PAPI_BSSCFG_DEVICE].vif = NULL;
+ brcmf_free_vif(cfg, vif);
}
/**
@@ -2328,7 +2327,7 @@ struct wireless_dev *brcmf_p2p_add_vif(struct wiphy *wiphy, const char *name,
return &ifp->vif->wdev;
fail:
- brcmf_free_vif(vif);
+ brcmf_free_vif(cfg, vif);
return ERR_PTR(err);
}
@@ -2364,7 +2363,7 @@ int brcmf_p2p_del_vif(struct wiphy *wiphy, struct wireless_dev *wdev)
break;
case NL80211_IFTYPE_P2P_DEVICE:
- brcmf_p2p_delete_p2pdev(vif);
+ brcmf_p2p_delete_p2pdev(cfg, vif);
return 0;
default:
return -ENOTSUPP;
@@ -2392,7 +2391,7 @@ int brcmf_p2p_del_vif(struct wiphy *wiphy, struct wireless_dev *wdev)
err = 0;
}
brcmf_cfg80211_arm_vif_event(cfg, NULL);
- brcmf_free_vif(vif);
+ brcmf_free_vif(cfg, vif);
p2p->bss_idx[P2PAPI_BSSCFG_CONNECTION].vif = NULL;
return err;
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
index 94285f6..f8c86b5 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
@@ -4292,20 +4292,16 @@ struct brcmf_cfg80211_vif *brcmf_alloc_vif(struct brcmf_cfg80211_info *cfg,
return vif;
}
-void brcmf_free_vif(struct brcmf_cfg80211_vif *vif)
+void brcmf_free_vif(struct brcmf_cfg80211_info *cfg,
+ struct brcmf_cfg80211_vif *vif)
{
- struct brcmf_cfg80211_info *cfg;
- struct wiphy *wiphy;
-
- wiphy = vif->wdev.wiphy;
- cfg = wiphy_priv(wiphy);
list_del(&vif->list);
cfg->vif_cnt--;
kfree(vif);
if (!cfg->vif_cnt) {
- wiphy_unregister(wiphy);
- wiphy_free(wiphy);
+ wiphy_unregister(cfg->wiphy);
+ wiphy_free(cfg->wiphy);
}
}
@@ -4888,8 +4884,7 @@ cfg80211_p2p_attach_out:
wl_deinit_priv(cfg);
cfg80211_attach_out:
- brcmf_free_vif(vif);
- wiphy_free(wiphy);
+ brcmf_free_vif(cfg, vif);
return NULL;
}
@@ -4901,7 +4896,7 @@ void brcmf_cfg80211_detach(struct brcmf_cfg80211_info *cfg)
wl_deinit_priv(cfg);
brcmf_btcoex_detach(cfg);
list_for_each_entry_safe(vif, tmp, &cfg->vif_list, list) {
- brcmf_free_vif(vif);
+ brcmf_free_vif(cfg, vif);
}
}
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h
index a71cff8..d9bdaf9 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h
+++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h
@@ -487,7 +487,8 @@ enum nl80211_iftype brcmf_cfg80211_get_iftype(struct brcmf_if *ifp);
struct brcmf_cfg80211_vif *brcmf_alloc_vif(struct brcmf_cfg80211_info *cfg,
enum nl80211_iftype type,
bool pm_block);
-void brcmf_free_vif(struct brcmf_cfg80211_vif *vif);
+void brcmf_free_vif(struct brcmf_cfg80211_info *cfg,
+ struct brcmf_cfg80211_vif *vif);
s32 brcmf_vif_set_mgmt_ie(struct brcmf_cfg80211_vif *vif, s32 pktflag,
const u8 *vndr_ie_buf, u32 vndr_ie_len);
--
1.7.10.4
^ permalink raw reply related
* [PATCH for 3.10 4/7] brcmfmac: free net device when registration fails
From: Arend van Spriel @ 2013-05-27 19:09 UTC (permalink / raw)
To: John W. Linville; +Cc: linux-wireless, Arend van Spriel
In-Reply-To: <1369681799-3163-1-git-send-email-arend@broadcom.com>
When registration fails the net device is no longer needed. Free
the net device and remove reference to private data from the
driver.
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c | 10 +++++++---
drivers/net/wireless/brcm80211/brcmfmac/fweh.c | 3 ++-
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
index 59c2546..f04e355 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
@@ -656,7 +656,9 @@ int brcmf_net_attach(struct brcmf_if *ifp, bool rtnl_locked)
return 0;
fail:
+ drvr->iflist[ifp->bssidx] = NULL;
ndev->netdev_ops = NULL;
+ free_netdev(ndev);
return -EBADE;
}
@@ -720,6 +722,9 @@ static int brcmf_net_p2p_attach(struct brcmf_if *ifp)
return 0;
fail:
+ ifp->drvr->iflist[ifp->bssidx] = NULL;
+ ndev->netdev_ops = NULL;
+ free_netdev(ndev);
return -EBADE;
}
@@ -925,8 +930,6 @@ fail:
brcmf_fws_del_interface(ifp);
brcmf_fws_deinit(drvr);
}
- free_netdev(ifp->ndev);
- drvr->iflist[0] = NULL;
if (p2p_ifp) {
free_netdev(p2p_ifp->ndev);
drvr->iflist[1] = NULL;
@@ -934,7 +937,8 @@ fail:
return ret;
}
if ((brcmf_p2p_enable) && (p2p_ifp))
- brcmf_net_p2p_attach(p2p_ifp);
+ if (brcmf_net_p2p_attach(p2p_ifp) < 0)
+ brcmf_p2p_enable = 0;
return 0;
}
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/fweh.c b/drivers/net/wireless/brcm80211/brcmfmac/fweh.c
index 5a64280..83ee53a 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/fweh.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/fweh.c
@@ -202,7 +202,8 @@ static void brcmf_fweh_handle_if_event(struct brcmf_pub *drvr,
return;
brcmf_fws_add_interface(ifp);
if (!drvr->fweh.evt_handler[BRCMF_E_IF])
- err = brcmf_net_attach(ifp, false);
+ if (brcmf_net_attach(ifp, false) < 0)
+ return;
}
if (ifevent->action == BRCMF_E_IF_CHANGE)
--
1.7.10.4
^ permalink raw reply related
* [PATCH for 3.10 6/7] brcmfmac: Add multi channel support for P2P.
From: Arend van Spriel @ 2013-05-27 19:09 UTC (permalink / raw)
To: John W. Linville; +Cc: linux-wireless, Hante Meuleman, Arend van Spriel
In-Reply-To: <1369681799-3163-1-git-send-email-arend@broadcom.com>
From: Hante Meuleman <meuleman@broadcom.com>
Multi channel support was disabled. This patch will enable it and
configure the P2P GO on the correct frequency when multi channel
is used.
Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
.../net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 26 +++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
index 656ce87..6a87178 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
@@ -3672,10 +3672,28 @@ brcmf_config_ap_mgmt_ie(struct brcmf_cfg80211_vif *vif,
}
static s32
+brcmf_cfg80211_set_channel(struct brcmf_cfg80211_info *cfg,
+ struct brcmf_if *ifp,
+ struct ieee80211_channel *channel)
+{
+ u16 chanspec;
+ s32 err;
+
+ brcmf_dbg(TRACE, "band=%d, center_freq=%d\n", channel->band,
+ channel->center_freq);
+
+ chanspec = channel_to_chanspec(&cfg->d11inf, channel);
+ err = brcmf_fil_iovar_int_set(ifp, "chanspec", chanspec);
+
+ return err;
+}
+
+static s32
brcmf_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *ndev,
struct cfg80211_ap_settings *settings)
{
s32 ie_offset;
+ struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
struct brcmf_if *ifp = netdev_priv(ndev);
struct brcmf_tlv *ssid_ie;
struct brcmf_ssid_le ssid_le;
@@ -3746,6 +3764,12 @@ brcmf_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *ndev,
brcmf_config_ap_mgmt_ie(ifp->vif, &settings->beacon);
+ err = brcmf_cfg80211_set_channel(cfg, ifp, settings->chandef.chan);
+ if (err < 0) {
+ brcmf_err("Set Channel failed, %d\n", err);
+ goto exit;
+ }
+
if (settings->beacon_interval) {
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_BCNPRD,
settings->beacon_interval);
@@ -4184,7 +4208,7 @@ static const struct ieee80211_iface_limit brcmf_iface_limits[] = {
static const struct ieee80211_iface_combination brcmf_iface_combos[] = {
{
.max_interfaces = BRCMF_IFACE_MAX_CNT,
- .num_different_channels = 1, /* no multi-channel for now */
+ .num_different_channels = 2,
.n_limits = ARRAY_SIZE(brcmf_iface_limits),
.limits = brcmf_iface_limits
}
--
1.7.10.4
^ permalink raw reply related
* [PATCH for 3.10 0/7] brcmfmac: AP and P2P mode fixes
From: Arend van Spriel @ 2013-05-27 19:09 UTC (permalink / raw)
To: John W. Linville; +Cc: linux-wireless, Arend van Spriel
Here a couple of fixes for brcmfmac. AP mode was already
added since v3.7 so it is tagged for stable. The majority
of P2P fixes are solving issues with creation and deletion
of the P2P interfaces, ie. P2P_DEVICE, P2P_CLIENT, P2P_GO.
This series applies to the master branch of the wireless
repository.
Arend van Spriel (3):
brcmfmac: add additional parameter to brcmf_free_vif()
brcmfmac: free net device when registration fails
brcmfmac: use struct net_device::destructor to remove interfaces
Hante Meuleman (4):
brcmfmac: Turn off ARP offloading when configured for AP.
brcmfmac: Fix p2p setup when connected to ap on 5G.
brcmfmac: Add multi channel support for P2P.
brcmfmac: Disable powersave mode for P2P link.
.../net/wireless/brcm80211/brcmfmac/dhd_common.c | 18 ----
.../net/wireless/brcm80211/brcmfmac/dhd_linux.c | 16 ++--
drivers/net/wireless/brcm80211/brcmfmac/fweh.c | 3 +-
.../net/wireless/brcm80211/brcmfmac/fwil_types.h | 6 ++
drivers/net/wireless/brcm80211/brcmfmac/p2p.c | 74 +++++++++++-----
.../net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 89 +++++++++++++++++---
.../net/wireless/brcm80211/brcmfmac/wl_cfg80211.h | 3 +-
7 files changed, 149 insertions(+), 60 deletions(-)
--
1.7.10.4
^ permalink raw reply
* [PATCH for 3.10 5/7] brcmfmac: use struct net_device::destructor to remove interfaces
From: Arend van Spriel @ 2013-05-27 19:09 UTC (permalink / raw)
To: John W. Linville; +Cc: linux-wireless, Arend van Spriel
In-Reply-To: <1369681799-3163-1-git-send-email-arend@broadcom.com>
Upon deleting a P2P_CLIENT/GO interface the vif and consequently
the wdev is freed before the net_device is actually being unregistered
but cfg80211 still needs to access the wdev. Using destructor field
to free the net_device and vif.
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
.../net/wireless/brcm80211/brcmfmac/dhd_linux.c | 6 ++---
drivers/net/wireless/brcm80211/brcmfmac/p2p.c | 23 +++++++++++++++++++-
.../net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 1 -
3 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
index f04e355..b98f223 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
@@ -653,6 +653,7 @@ int brcmf_net_attach(struct brcmf_if *ifp, bool rtnl_locked)
brcmf_dbg(INFO, "%s: Broadcom Dongle Host Driver\n", ndev->name);
+ ndev->destructor = free_netdev;
return 0;
fail:
@@ -793,6 +794,7 @@ void brcmf_del_if(struct brcmf_pub *drvr, s32 bssidx)
struct brcmf_if *ifp;
ifp = drvr->iflist[bssidx];
+ drvr->iflist[bssidx] = NULL;
if (!ifp) {
brcmf_err("Null interface, idx=%d\n", bssidx);
return;
@@ -813,15 +815,13 @@ void brcmf_del_if(struct brcmf_pub *drvr, s32 bssidx)
cancel_work_sync(&ifp->setmacaddr_work);
cancel_work_sync(&ifp->multicast_work);
}
-
+ /* unregister will take care of freeing it */
unregister_netdev(ifp->ndev);
if (bssidx == 0)
brcmf_cfg80211_detach(drvr->config);
- free_netdev(ifp->ndev);
} else {
kfree(ifp);
}
- drvr->iflist[bssidx] = NULL;
}
int brcmf_attach(uint bus_hdrlen, struct device *dev)
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
index 167b7af..79555f0 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
@@ -2240,6 +2240,25 @@ static void brcmf_p2p_delete_p2pdev(struct brcmf_cfg80211_info *cfg,
}
/**
+ * brcmf_p2p_free_p2p_if() - free up net device related data.
+ *
+ * @ndev: net device that needs to be freed.
+ */
+static void brcmf_p2p_free_p2p_if(struct net_device *ndev)
+{
+ struct brcmf_cfg80211_info *cfg;
+ struct brcmf_cfg80211_vif *vif;
+ struct brcmf_if *ifp;
+
+ ifp = netdev_priv(ndev);
+ cfg = ifp->drvr->config;
+ vif = ifp->vif;
+
+ brcmf_free_vif(cfg, vif);
+ free_netdev(ifp->ndev);
+}
+
+/**
* brcmf_p2p_add_vif() - create a new P2P virtual interface.
*
* @wiphy: wiphy device of new interface.
@@ -2316,6 +2335,9 @@ struct wireless_dev *brcmf_p2p_add_vif(struct wiphy *wiphy, const char *name,
brcmf_err("Registering netdevice failed\n");
goto fail;
}
+ /* override destructor */
+ ifp->ndev->destructor = brcmf_p2p_free_p2p_if;
+
cfg->p2p.bss_idx[P2PAPI_BSSCFG_CONNECTION].vif = vif;
/* Disable firmware roaming for P2P interface */
brcmf_fil_iovar_int_set(ifp, "roam_off", 1);
@@ -2391,7 +2413,6 @@ int brcmf_p2p_del_vif(struct wiphy *wiphy, struct wireless_dev *wdev)
err = 0;
}
brcmf_cfg80211_arm_vif_event(cfg, NULL);
- brcmf_free_vif(cfg, vif);
p2p->bss_idx[P2PAPI_BSSCFG_CONNECTION].vif = NULL;
return err;
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
index f8c86b5..656ce87 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
@@ -4678,7 +4678,6 @@ static s32 brcmf_notify_vif_event(struct brcmf_if *ifp,
return 0;
case BRCMF_E_IF_DEL:
- ifp->vif = NULL;
mutex_unlock(&event->vif_event_lock);
/* event may not be upon user request */
if (brcmf_cfg80211_vif_event_armed(cfg))
--
1.7.10.4
^ permalink raw reply related
* [PATCH for 3.10 7/7] brcmfmac: Disable powersave mode for P2P link.
From: Arend van Spriel @ 2013-05-27 19:09 UTC (permalink / raw)
To: John W. Linville; +Cc: linux-wireless, Hante Meuleman, Arend van Spriel
In-Reply-To: <1369681799-3163-1-git-send-email-arend@broadcom.com>
From: Hante Meuleman <meuleman@broadcom.com>
For p2p client mode powersave mode should be kept disabled. It is
working but inefficient. In general p2p links do no benefit from this
mode, because these links are setup temporarily to transfer data.
Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
index 6a87178..301e572 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
@@ -2248,6 +2248,11 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev,
}
pm = enabled ? PM_FAST : PM_OFF;
+ /* Do not enable the power save after assoc if it is a p2p interface */
+ if (ifp->vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT) {
+ brcmf_dbg(INFO, "Do not enable power save for P2P clients\n");
+ pm = PM_OFF;
+ }
brcmf_dbg(INFO, "power save %s\n", (pm ? "enabled" : "disabled"));
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_PM, pm);
--
1.7.10.4
^ permalink raw reply related
* [PATCH for 3.10 2/7] brcmfmac: Fix p2p setup when connected to ap on 5G.
From: Arend van Spriel @ 2013-05-27 19:09 UTC (permalink / raw)
To: John W. Linville; +Cc: linux-wireless, Hante Meuleman, Arend van Spriel
In-Reply-To: <1369681799-3163-1-git-send-email-arend@broadcom.com>
From: Hante Meuleman <meuleman@broadcom.com>
The firmware requires that on p2p setup when net interfaces
are created or updated that they start initially with the same
channel as the channel in use for the current connection
(if any). If none exists take default channel 11.
Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
drivers/net/wireless/brcm80211/brcmfmac/p2p.c | 28 ++++++++++++++++++-------
1 file changed, 21 insertions(+), 7 deletions(-)
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
index e7a1a47..17275ce 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
@@ -47,6 +47,7 @@
#define IS_P2P_SOCIAL_CHANNEL(channel) ((channel == SOCIAL_CHAN_1) || \
(channel == SOCIAL_CHAN_2) || \
(channel == SOCIAL_CHAN_3))
+#define BRCMF_P2P_TEMP_CHAN SOCIAL_CHAN_3
#define SOCIAL_CHAN_CNT 3
#define AF_PEER_SEARCH_CNT 2
@@ -2013,17 +2014,30 @@ static void brcmf_p2p_get_current_chanspec(struct brcmf_p2p_info *p2p,
u16 *chanspec)
{
struct brcmf_if *ifp;
- struct brcmf_fil_chan_info_le ci;
+ u8 mac_addr[ETH_ALEN];
struct brcmu_chan ch;
- s32 err;
+ struct brcmf_bss_info_le *bi;
+ u8 *buf;
ifp = p2p->bss_idx[P2PAPI_BSSCFG_PRIMARY].vif->ifp;
- ch.chnum = 11;
-
- err = brcmf_fil_cmd_data_get(ifp, BRCMF_C_GET_CHANNEL, &ci, sizeof(ci));
- if (!err)
- ch.chnum = le32_to_cpu(ci.hw_channel);
+ if (brcmf_fil_cmd_data_get(ifp, BRCMF_C_GET_BSSID, mac_addr,
+ ETH_ALEN) == 0) {
+ buf = kzalloc(WL_BSS_INFO_MAX, GFP_KERNEL);
+ if (buf != NULL) {
+ *(__le32 *)buf = cpu_to_le32(WL_BSS_INFO_MAX);
+ if (brcmf_fil_cmd_data_get(ifp, BRCMF_C_GET_BSS_INFO,
+ buf, WL_BSS_INFO_MAX) == 0) {
+ bi = (struct brcmf_bss_info_le *)(buf + 4);
+ *chanspec = le16_to_cpu(bi->chanspec);
+ kfree(buf);
+ return;
+ }
+ kfree(buf);
+ }
+ }
+ /* Use default channel for P2P */
+ ch.chnum = BRCMF_P2P_TEMP_CHAN;
ch.bw = BRCMU_CHAN_BW_20;
p2p->cfg->d11inf.encchspec(&ch);
*chanspec = ch.chspec;
--
1.7.10.4
^ permalink raw reply related
* [PATCH for 3.10 1/7] brcmfmac: Turn off ARP offloading when configured for AP.
From: Arend van Spriel @ 2013-05-27 19:09 UTC (permalink / raw)
To: John W. Linville; +Cc: linux-wireless, Hante Meuleman, stable, Arend van Spriel
In-Reply-To: <1369681799-3163-1-git-send-email-arend@broadcom.com>
From: Hante Meuleman <meuleman@broadcom.com>
ARP offloading should only be used in STA or P2P client mode. It
is currently configured once at init. When being configured for AP
ARP offloading should be turned off and when AP mode is left it can
be turned back on.
Cc: stable@vger.kernel.org
Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
.../net/wireless/brcm80211/brcmfmac/dhd_common.c | 18 ---------
.../net/wireless/brcm80211/brcmfmac/fwil_types.h | 6 +++
.../net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 40 +++++++++++++++++++-
3 files changed, 45 insertions(+), 19 deletions(-)
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c
index be0787c..9431af2 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c
@@ -27,7 +27,6 @@
#include "tracepoint.h"
#define PKTFILTER_BUF_SIZE 128
-#define BRCMF_ARPOL_MODE 0xb /* agent|snoop|peer_autoreply */
#define BRCMF_DEFAULT_BCN_TIMEOUT 3
#define BRCMF_DEFAULT_SCAN_CHANNEL_TIME 40
#define BRCMF_DEFAULT_SCAN_UNASSOC_TIME 40
@@ -338,23 +337,6 @@ int brcmf_c_preinit_dcmds(struct brcmf_if *ifp)
goto done;
}
- /* Try to set and enable ARP offload feature, this may fail */
- err = brcmf_fil_iovar_int_set(ifp, "arp_ol", BRCMF_ARPOL_MODE);
- if (err) {
- brcmf_dbg(TRACE, "failed to set ARP offload mode to 0x%x, err = %d\n",
- BRCMF_ARPOL_MODE, err);
- err = 0;
- } else {
- err = brcmf_fil_iovar_int_set(ifp, "arpoe", 1);
- if (err) {
- brcmf_dbg(TRACE, "failed to enable ARP offload err = %d\n",
- err);
- err = 0;
- } else
- brcmf_dbg(TRACE, "successfully enabled ARP offload to 0x%x\n",
- BRCMF_ARPOL_MODE);
- }
-
/* Setup packet filter */
brcmf_c_pktfilter_offload_set(ifp, BRCMF_DEFAULT_PACKET_FILTER);
brcmf_c_pktfilter_offload_enable(ifp, BRCMF_DEFAULT_PACKET_FILTER,
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/fwil_types.h b/drivers/net/wireless/brcm80211/brcmfmac/fwil_types.h
index 0f2c83b..665ef69 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/fwil_types.h
+++ b/drivers/net/wireless/brcm80211/brcmfmac/fwil_types.h
@@ -23,6 +23,12 @@
#define BRCMF_FIL_ACTION_FRAME_SIZE 1800
+/* ARP Offload feature flags for arp_ol iovar */
+#define BRCMF_ARP_OL_AGENT 0x00000001
+#define BRCMF_ARP_OL_SNOOP 0x00000002
+#define BRCMF_ARP_OL_HOST_AUTO_REPLY 0x00000004
+#define BRCMF_ARP_OL_PEER_AUTO_REPLY 0x00000008
+
enum brcmf_fil_p2p_if_types {
BRCMF_FIL_P2P_IF_CLIENT,
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
index 761f501..94285f6 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
@@ -459,6 +459,38 @@ send_key_to_dongle(struct net_device *ndev, struct brcmf_wsec_key *key)
return err;
}
+static s32
+brcmf_configure_arp_offload(struct brcmf_if *ifp, bool enable)
+{
+ s32 err;
+ u32 mode;
+
+ if (enable)
+ mode = BRCMF_ARP_OL_AGENT | BRCMF_ARP_OL_PEER_AUTO_REPLY;
+ else
+ mode = 0;
+
+ /* Try to set and enable ARP offload feature, this may fail, then it */
+ /* is simply not supported and err 0 will be returned */
+ err = brcmf_fil_iovar_int_set(ifp, "arp_ol", mode);
+ if (err) {
+ brcmf_dbg(TRACE, "failed to set ARP offload mode to 0x%x, err = %d\n",
+ mode, err);
+ err = 0;
+ } else {
+ err = brcmf_fil_iovar_int_set(ifp, "arpoe", enable);
+ if (err) {
+ brcmf_dbg(TRACE, "failed to configure (%d) ARP offload err = %d\n",
+ enable, err);
+ err = 0;
+ } else
+ brcmf_dbg(TRACE, "successfully configured (%d) ARP offload to 0x%x\n",
+ enable, mode);
+ }
+
+ return err;
+}
+
static struct wireless_dev *brcmf_cfg80211_add_iface(struct wiphy *wiphy,
const char *name,
enum nl80211_iftype type,
@@ -3683,6 +3715,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *ndev,
}
brcmf_set_mpc(ifp, 0);
+ brcmf_configure_arp_offload(ifp, false);
/* find the RSN_IE */
rsn_ie = brcmf_parse_tlvs((u8 *)settings->beacon.tail,
@@ -3789,8 +3822,10 @@ brcmf_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *ndev,
set_bit(BRCMF_VIF_STATUS_AP_CREATED, &ifp->vif->sme_state);
exit:
- if (err)
+ if (err) {
brcmf_set_mpc(ifp, 1);
+ brcmf_configure_arp_offload(ifp, true);
+ }
return err;
}
@@ -3831,6 +3866,7 @@ static int brcmf_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev)
brcmf_err("bss_enable config failed %d\n", err);
}
brcmf_set_mpc(ifp, 1);
+ brcmf_configure_arp_offload(ifp, true);
set_bit(BRCMF_VIF_STATUS_AP_CREATING, &ifp->vif->sme_state);
clear_bit(BRCMF_VIF_STATUS_AP_CREATED, &ifp->vif->sme_state);
@@ -5229,6 +5265,8 @@ static s32 brcmf_config_dongle(struct brcmf_cfg80211_info *cfg)
if (err)
goto default_conf_out;
+ brcmf_configure_arp_offload(ifp, true);
+
cfg->dongle_up = true;
default_conf_out:
--
1.7.10.4
^ permalink raw reply related
* Re: P2P Device support: how to deal with p2p_no_group_iface option
From: Marcel Holtmann @ 2013-05-27 18:51 UTC (permalink / raw)
To: Arend van Spriel
Cc: Johannes Berg, Jouni Malinen, hostap@lists.shmoo.com,
linux-wireless, Jithu Jance
In-Reply-To: <51A36603.7020403@broadcom.com>
Hi Arend,
>>> I looked into issues around hwsim p2p tests and got all but one p2p test
>>> passing now (test_autogo_tdls). I had to remove the p2p_no_group_iface
>>> option from the p2px.conf files, because otherwise it tries to change
>>> the P2P management interface into a P2P group interface. When using
>>> P2P_DEVICE and P2P management interface this is not allowed by
>>> mac80211_hwsim. Also for brcmfmac the P2P_DEVICE interface is dedicated
>>> and can only be added/deleted, but not changed. Not sure if that is true
>>> for iwlmvm as well.
>>>
>>> So I would like to discuss how to deal with the p2p_no_group_iface
>>> option. As P2P_DEVICE is a new concept the name of the option may no
>>> longer match what it intends. Is the option to force all P2P operations
>>> to be done on a single interface, ie. wlan0 (or whatever is specified on
>>> the command line) and no P2P_DEVICE is to be created. Or should it
>>> change the interface from the command line as P2P group interface.
>>
>> I don't think I'd do either of those. Not creating P2P_DEVICE will
>> simply not work with drivers expecting it, and changing iftype to/from
>> P2P-Device isn't supported since it would delete/create the netdev.
>
> So should we check that in cfg80211 upon wiphy_register().
>
>> I don't really see much choice but reject (or ignore) this option for
>> drivers using P2P_DEVICE. Why would anyone *really* want P2P operation
>> on wlan0 when another interface can be used?
>
> In this mac80211_hwsim is a special case. We could make P2P_DEVICE support in mac80211_hwsim optional using module parameter to allow testing both cases.
or instead of overloading it with pointless module parameters, we allow dynamic device creation via its already existing netlink interface. I do actually have patches for this. I just never cleaned them up enough to submit them upstream. There is a bunch of required refactoring that has to go in first before this would be possible, but it does work in my setup that I have running on my test machine.
I would like to get to a state where mac80211_hwsim can be loaded all the time and starts out with radios=0. And you just add test radios one by one. Which then in fact can all have different features enabled or disabled. To that extend, the test cases for the regulatory subsystem could also be moved into userspace and do not need to be hardcoded in the kernel module anymore.
Regards
Marcel
^ permalink raw reply
* Re: P2P Device support: how to deal with p2p_no_group_iface option
From: Jouni Malinen @ 2013-05-27 18:11 UTC (permalink / raw)
To: Arend van Spriel
Cc: Johannes Berg, hostap@lists.shmoo.com, linux-wireless,
Jithu Jance
In-Reply-To: <51A36603.7020403@broadcom.com>
On Mon, May 27, 2013 at 03:56:19PM +0200, Arend van Spriel wrote:
> In this mac80211_hwsim is a special case. We could make P2P_DEVICE
> support in mac80211_hwsim optional using module parameter to allow
> testing both cases.
Yes, that would be helpful. I don't understand why my test setup moves
to using P2P Device by default when mac80211_hwsim is perfectly capable
of operating without that.. I have been thinking of applying the
wpa_supplicant changes in a way that would make them disabled by default
and use a runtime configuration parameter (e.g., driver_param to
driver_nl80211.c) to enable this functionality for now. This would allow
the patches to go in now and make it somewhat easier to test them.
Anyway, if mac80211_hwsim changes its default behavior, this would be of
lesser needed (well, once a new kernel release or compat-drivers gets
released).
In general, I don't think it is a good idea to change existing behavior
with a kernel or wpa_supplicant upgrade. It is obviously fine if this is
needed for the functionality to work in the first place, but that is not
the case with mac80211_hwsim.
--
Jouni Malinen PGP id EFC895FA
^ permalink raw reply
* Re: P2P Device support: how to deal with p2p_no_group_iface option
From: Arend van Spriel @ 2013-05-27 17:40 UTC (permalink / raw)
To: Johannes Berg
Cc: Jouni Malinen, hostap@lists.shmoo.com, linux-wireless,
Jithu Jance
In-Reply-To: <1369669990.14740.14.camel@jlt4.sipsolutions.net>
On 05/27/2013 05:53 PM, Johannes Berg wrote:
> On Mon, 2013-05-27 at 16:03 +0200, Arend van Spriel wrote:
>> On 05/27/2013 03:59 PM, Johannes Berg wrote:
>>> On Mon, 2013-05-27 at 15:56 +0200, Arend van Spriel wrote:
>>>
>>>>> I don't think I'd do either of those. Not creating P2P_DEVICE will
>>>>> simply not work with drivers expecting it, and changing iftype to/from
>>>>> P2P-Device isn't supported since it would delete/create the netdev.
>>>>
>>>> So should we check that in cfg80211 upon wiphy_register().
>>>
>>> Check what?
>>
>> Check that the interface combinations contain a iface limit with only
>> P2P_DEVICE:
>>
>> {
>> .max = 1,
>> .types = BIT(NL80211_IFTYPE_P2P_DEVICE)
>> }
>
> We have that, right?
>
> wiphy_verify_combinations:
> /* Only a single P2P_DEVICE can be allowed */
> if (WARN_ON(types &
> BIT(NL80211_IFTYPE_P2P_DEVICE) &&
> c->limits[j].max > 1))
> return -EINVAL;
I see. I did not search the code. my bad.
Gr. AvS
^ permalink raw reply
* Re: linux-firmware: pull-request Marvell mwifiex-firmware 2013-05-23
From: Ben Hutchings @ 2013-05-27 16:26 UTC (permalink / raw)
To: Bing Zhao; +Cc: linux-wireless, Frank Huang, David Woodhouse
In-Reply-To: <1369334992-10587-1-git-send-email-bzhao@marvell.com>
[-- Attachment #1: Type: text/plain, Size: 1018 bytes --]
On Thu, 2013-05-23 at 11:49 -0700, Bing Zhao wrote:
> The following changes since commit 07ea598af5b9dde3acdf279846b062fa1b2987b8:
>
> Merge branch 'linux-firmware' of git://github.com/TI-OpenLink/firmwares (2013-05-06 14:21:49 +0100)
>
> are available in the git repository at:
>
>
> git://git.marvell.com/mwifiex-firmware.git master
>
> for you to fetch changes up to 009719f9eca7a9d61b9c3cba5dbafbf937d93c80:
>
> linux-firmware: add Marvell PCIe8897-B0 WLAN firmware image (2013-05-22 18:23:52 -0700)
Pulled, thanks.
Ben.
> ----------------------------------------------------------------
> Bing Zhao (1):
> linux-firmware: add Marvell PCIe8897-B0 WLAN firmware image
>
> WHENCE | 5 ++++-
> mrvl/pcie8897_uapsta.bin | Bin 0 -> 350244 bytes
> 2 files changed, 4 insertions(+), 1 deletion(-)
> create mode 100644 mrvl/pcie8897_uapsta.bin
[...]
--
Ben Hutchings
Experience is what causes a person to make new mistakes instead of old ones.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]
^ permalink raw reply
* Re: P2P Device support: how to deal with p2p_no_group_iface option
From: Johannes Berg @ 2013-05-27 15:53 UTC (permalink / raw)
To: Arend van Spriel
Cc: Jouni Malinen, hostap@lists.shmoo.com, linux-wireless,
Jithu Jance
In-Reply-To: <51A367CB.9080503@broadcom.com>
On Mon, 2013-05-27 at 16:03 +0200, Arend van Spriel wrote:
> On 05/27/2013 03:59 PM, Johannes Berg wrote:
> > On Mon, 2013-05-27 at 15:56 +0200, Arend van Spriel wrote:
> >
> >>> I don't think I'd do either of those. Not creating P2P_DEVICE will
> >>> simply not work with drivers expecting it, and changing iftype to/from
> >>> P2P-Device isn't supported since it would delete/create the netdev.
> >>
> >> So should we check that in cfg80211 upon wiphy_register().
> >
> > Check what?
>
> Check that the interface combinations contain a iface limit with only
> P2P_DEVICE:
>
> {
> .max = 1,
> .types = BIT(NL80211_IFTYPE_P2P_DEVICE)
> }
We have that, right?
wiphy_verify_combinations:
/* Only a single P2P_DEVICE can be allowed */
if (WARN_ON(types &
BIT(NL80211_IFTYPE_P2P_DEVICE) &&
c->limits[j].max > 1))
return -EINVAL;
johannes
^ permalink raw reply
* [PATCH v2] cfg80211: Allow TDLS peer AID to be configured for VHT
From: Jouni Malinen @ 2013-05-27 15:24 UTC (permalink / raw)
To: Johannes Berg; +Cc: linux-wireless
In-Reply-To: <1369427943.13623.8.camel@johannes>
VHT uses peer AID in the PARTIAL_AID field in TDLS frames. The current
design for TDLS is to first add a dummy STA entry before completing TDLS
Setup and then update information on this STA entry based on what was
received from the peer during the setup exchange.
In theory, this could use NL80211_ATTR_STA_AID to set the peer AID just
like this is used in AP mode to set the AID of an association station.
However, existing cfg80211 validation rules prevent this attribute from
being used with set_station operation. To avoid interoperability issues
between different kernel and user space version combinations, introduce
a new nl80211 attribute for the purpose of setting TDLS peer AID. This
attribute can be used in both the new_station and set_station
operations. It is not supposed to be allowed to change the AID value
during the lifetime of the STA entry, but that validation is left for
drivers to do in the change_station callback.
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
---
include/uapi/linux/nl80211.h | 7 +++++++
net/wireless/nl80211.c | 17 +++++++++++++----
2 files changed, 20 insertions(+), 4 deletions(-)
v2:
- reject NL80211_ATTR_PEER_AID if not TDLS STA in nl80211_new_station()
- prefer NL80211_ATTR_PEER_AID in nl80211_new_station()
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index d1e48b5..a061437 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -1429,6 +1429,11 @@ enum nl80211_commands {
* @NL80211_ATTR_MAX_CRIT_PROT_DURATION: duration in milliseconds in which
* the connection should have increased reliability (u16).
*
+ * @NL80211_ATTR_PEER_AID: Association ID for the peer TDLS station (u16).
+ * This is similar to @NL80211_ATTR_STA_AID but with a difference of being
+ * allowed to be used with the first @NL80211_CMD_SET_STATION command to
+ * update a TDLS peer STA entry.
+ *
* @NL80211_ATTR_MAX: highest attribute number currently defined
* @__NL80211_ATTR_AFTER_LAST: internal use
*/
@@ -1727,6 +1732,8 @@ enum nl80211_attrs {
NL80211_ATTR_CRIT_PROT_ID,
NL80211_ATTR_MAX_CRIT_PROT_DURATION,
+ NL80211_ATTR_PEER_AID,
+
/* add attributes here, update the policy in nl80211.c */
__NL80211_ATTR_AFTER_LAST,
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index dfdb5e6..2963b8d 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -378,6 +378,7 @@ static const struct nla_policy nl80211_policy[NL80211_ATTR_MAX+1] = {
[NL80211_ATTR_MDID] = { .type = NLA_U16 },
[NL80211_ATTR_IE_RIC] = { .type = NLA_BINARY,
.len = IEEE80211_MAX_DATA_LEN },
+ [NL80211_ATTR_PEER_AID] = { .type = NLA_U16 },
};
/* policy for the key attributes */
@@ -3834,6 +3835,8 @@ static int nl80211_set_station_tdls(struct genl_info *info,
struct station_parameters *params)
{
/* Dummy STA entry gets updated once the peer capabilities are known */
+ if (info->attrs[NL80211_ATTR_PEER_AID])
+ params->aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]);
if (info->attrs[NL80211_ATTR_HT_CAPABILITY])
params->ht_capa =
nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]);
@@ -3974,7 +3977,8 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
if (!info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES])
return -EINVAL;
- if (!info->attrs[NL80211_ATTR_STA_AID])
+ if (!info->attrs[NL80211_ATTR_STA_AID] &&
+ !info->attrs[NL80211_ATTR_PEER_AID])
return -EINVAL;
mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]);
@@ -3985,7 +3989,10 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
params.listen_interval =
nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]);
- params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]);
+ if (info->attrs[NL80211_ATTR_PEER_AID])
+ params.aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]);
+ else
+ params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]);
if (!params.aid || params.aid > IEEE80211_MAX_AID)
return -EINVAL;
@@ -4037,7 +4044,8 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
params.sta_modify_mask &= ~STATION_PARAM_APPLY_UAPSD;
/* TDLS peers cannot be added */
- if (params.sta_flags_set & BIT(NL80211_STA_FLAG_TDLS_PEER))
+ if ((params.sta_flags_set & BIT(NL80211_STA_FLAG_TDLS_PEER)) ||
+ info->attrs[NL80211_ATTR_PEER_AID])
return -EINVAL;
/* but don't bother the driver with it */
params.sta_flags_mask &= ~BIT(NL80211_STA_FLAG_TDLS_PEER);
@@ -4063,7 +4071,8 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
if (params.sta_flags_mask & BIT(NL80211_STA_FLAG_ASSOCIATED))
return -EINVAL;
/* TDLS peers cannot be added */
- if (params.sta_flags_set & BIT(NL80211_STA_FLAG_TDLS_PEER))
+ if ((params.sta_flags_set & BIT(NL80211_STA_FLAG_TDLS_PEER)) ||
+ info->attrs[NL80211_ATTR_PEER_AID])
return -EINVAL;
break;
case NL80211_IFTYPE_STATION:
--
1.7.9.5
--
Jouni Malinen PGP id EFC895FA
^ permalink raw reply related
* Re: [PATCH] cfg80211: Allow TDLS peer AID to be configured for VHT
From: Jouni Malinen @ 2013-05-27 15:14 UTC (permalink / raw)
To: Johannes Berg; +Cc: linux-wireless
In-Reply-To: <1369427943.13623.8.camel@johannes>
On Fri, May 24, 2013 at 10:39:03PM +0200, Johannes Berg wrote:
> On Thu, 2013-05-16 at 20:11 +0300, Jouni Malinen wrote:
>
> > - if (!info->attrs[NL80211_ATTR_STA_AID])
> > + if (!info->attrs[NL80211_ATTR_STA_AID] &&
> > + !info->attrs[NL80211_ATTR_PEER_AID])
> > return -EINVAL;
>
> Technically here I think you could check that this attribute isn't used
> with non-TDLS stations, since in new_station you know what it's going to
> be, right?
Well, in this function yes, but not this early.. I'll add validation for
this within the iftype switch.
> > @@ -3985,7 +3989,10 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
> > - params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]);
> > + if (info->attrs[NL80211_ATTR_STA_AID])
> > + params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]);
> > + else
> > + params.aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]);
>
> This is a bit strange? Wouldn't you want to prefer the new attribute, so
> you can put some possibly invalid value into the old attribute for old
> kernels? Otherwise what's the reason for even reading the new attribute
> in this code at all, if new userspace code must set the old attribute
> for old kernels anyway?
This was something to allow the new attribute to be taken into use if we
ever get rid of the extra dummy STA for TDLS. I'd assume this ends up
having to get a new capability flag, so wpa_supplicant could figure out
which attribute to use. Anyway, I agree it makes more sense to reverse
the order here to prefer _PEER_AID.
--
Jouni Malinen PGP id EFC895FA
^ 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