Linux wireless drivers development
 help / color / mirror / Atom feed
* [PATCH v2 4/4] iw:  Print out HotSpot2 IE information.
From: greearb @ 2013-08-29 22:23 UTC (permalink / raw)
  To: linux-wireless; +Cc: Ben Greear
In-Reply-To: <1377815027-3736-1-git-send-email-greearb@candelatech.com>

From: Ben Greear <greearb@candelatech.com>

Example:

	HotSpot 2.0 Indication:
		DGAF: 0

Signed-off-by: Ben Greear <greearb@candelatech.com>
---
:100644 100644 14a4272... 2686ff3... M	scan.c
 scan.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/scan.c b/scan.c
index 14a4272..2686ff3 100644
--- a/scan.c
+++ b/scan.c
@@ -1390,8 +1390,21 @@ static inline void print_p2p(const uint8_t type, uint8_t len, const uint8_t *dat
 	}
 }
 
+static inline void print_hs20_ind(const uint8_t type, uint8_t len, const uint8_t *data)
+{
+	/* I can't find the spec for this...just going off what wireshark uses. */
+	printf("\n");
+	if (len > 0) {
+		printf("\t\tDGAF: %i\n", (int)(data[0] & 0x1));
+	}
+	else {
+		printf("\t\tUnexpected length: %i\n", len);
+	}
+}
+
 static const struct ie_print wfa_printers[] = {
 	[9] = { "P2P", print_p2p, 2, 255, BIT(PRINT_SCAN), },
+	[16] = { "HotSpot 2.0 Indication", print_hs20_ind, 1, 255, BIT(PRINT_SCAN), },
 };
 
 static void print_vendor(unsigned char len, unsigned char *data,
-- 
1.7.3.4


^ permalink raw reply related

* [PATCH v2 3/4] iw:  Print 802.11u roaming consortium IE in scan results.
From: greearb @ 2013-08-29 22:23 UTC (permalink / raw)
  To: linux-wireless; +Cc: Ben Greear
In-Reply-To: <1377815027-3736-1-git-send-email-greearb@candelatech.com>

From: Ben Greear <greearb@candelatech.com>

Example output:

	802.11u Roaming Consortium:
		ANQP OIs: 0
		OI 1: 01010101

Signed-off-by: Ben Greear <greearb@candelatech.com>
---
:100644 100644 53cef39... 14a4272... M	scan.c
 scan.c |   53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 53 insertions(+), 0 deletions(-)

diff --git a/scan.c b/scan.c
index 53cef39..14a4272 100644
--- a/scan.c
+++ b/scan.c
@@ -711,6 +711,58 @@ static void print_11u_advert(const uint8_t type, uint8_t len, const uint8_t *dat
 	}
 }
 
+static void print_11u_rcon(const uint8_t type, uint8_t len, const uint8_t *data)
+{
+	/* See Section 7.3.2.96 in the 802.11u spec. */
+	int idx = 0;
+	int ln0 = data[1] & 0xf;
+	int ln1 = ((data[1] & 0xf0) >> 4);
+	int ln2 = 0;
+	printf("\n");
+
+	if (ln1) {
+		ln2 = len - 2 - ln0 - ln1;
+	}
+	printf("\t\tANQP OIs: %i\n", data[0]);
+
+	if (ln0 > 0) {
+		printf("\t\tOI 1: ");
+		if (2 + ln0 > len) {
+			printf("Invalid IE length.\n");
+		}
+		else {
+			for (idx = 0; idx < ln0; idx++) {
+				printf("%02hx", data[2 + idx]);
+			}
+			printf("\n");
+		}
+	}
+	if (ln1 > 0) {
+		printf("\t\tOI 2: ");
+		if (2 + ln0 + ln1 > len) {
+			printf("Invalid IE length.\n");
+		}
+		else {
+			for (idx = 0; idx < ln1; idx++) {
+				printf("%02hx", data[2 + ln0 + idx]);
+			}
+			printf("\n");
+		}
+	}
+	if (ln2 > 0) {
+		printf("\t\tOI 3: ");
+		if (2 + ln0 + ln1 + ln2 > len) {
+			printf("Invalid IE length.\n");
+		}
+		else {
+			for (idx = 0; idx < ln2; idx++) {
+				printf("%02hx", data[2 + ln0 + ln1 + idx]);
+			}
+			printf("\n");
+		}
+	}
+}
+
 static const char *ht_secondary_offset[4] = {
 	"no secondary",
 	"above",
@@ -990,6 +1042,7 @@ static const struct ie_print ieprinters[] = {
 	[127] = { "Extended capabilities", print_capabilities, 0, 255, BIT(PRINT_SCAN), },
 	[107] = { "802.11u Interworking", print_interworking, 0, 255, BIT(PRINT_SCAN), },
 	[108] = { "802.11u Advertisement", print_11u_advert, 0, 255, BIT(PRINT_SCAN), },
+	[111] = { "802.11u Roaming Consortium", print_11u_rcon, 0, 255, BIT(PRINT_SCAN), },
 };
 
 static void print_wifi_wpa(const uint8_t type, uint8_t len, const uint8_t *data)
-- 
1.7.3.4


^ permalink raw reply related

* [PATCH v2 2/4] iw:  Print 802.11u Advertisement IE info in scan results.
From: greearb @ 2013-08-29 22:23 UTC (permalink / raw)
  To: linux-wireless; +Cc: Ben Greear
In-Reply-To: <1377815027-3736-1-git-send-email-greearb@candelatech.com>

From: Ben Greear <greearb@candelatech.com>

Sample output looks like:

	802.11u Advertisement:
		Query Response Info: 0x7f
			Query Response Length Limit: 127
			ANQP

Signed-off-by: Ben Greear <greearb@candelatech.com>
---
:100644 100644 e8957d1... 53cef39... M	scan.c
 scan.c |   33 +++++++++++++++++++++++++++++++++
 1 files changed, 33 insertions(+), 0 deletions(-)

diff --git a/scan.c b/scan.c
index e8957d1..53cef39 100644
--- a/scan.c
+++ b/scan.c
@@ -679,6 +679,38 @@ static void print_interworking(const uint8_t type, uint8_t len, const uint8_t *d
 		       data[1], data[2], data[3], data[4], data[5], data[6]);
 }
 
+static void print_11u_advert(const uint8_t type, uint8_t len, const uint8_t *data)
+{
+	/* See Section 7.3.2.93 in the 802.11u spec. */
+	/* TODO: This code below does not decode private protocol IDs */
+	int idx = 0;
+	printf("\n");
+	while (idx < (len - 1)) {
+		uint8_t qri = data[idx];
+		uint8_t proto_id = data[idx + 1];
+		printf("\t\tQuery Response Info: 0x%hx\n", (unsigned short)(qri));
+		printf("\t\t\tQuery Response Length Limit: %i\n",
+		       (qri & 0x7f));
+		if (qri & (1<<7))
+			printf("\t\t\tPAME-BI\n");
+		switch(proto_id) {
+		case 0:
+			printf("\t\t\tANQP\n"); break;
+		case 1:
+			printf("\t\t\tMIH Information Service\n"); break;
+		case 2:
+			printf("\t\t\tMIH Command and Event Services Capability Discovery\n"); break;
+		case 3:
+			printf("\t\t\tEmergency Alert System (EAS)\n"); break;
+		case 221:
+			printf("\t\t\tVendor Specific\n"); break;
+		default:
+			printf("\t\t\tReserved: %i\n", proto_id); break;
+		}
+		idx += 2;
+	}
+}
+
 static const char *ht_secondary_offset[4] = {
 	"no secondary",
 	"above",
@@ -957,6 +989,7 @@ static const struct ie_print ieprinters[] = {
 	[114] = { "MESH ID", print_ssid, 0, 32, BIT(PRINT_SCAN) | BIT(PRINT_LINK), },
 	[127] = { "Extended capabilities", print_capabilities, 0, 255, BIT(PRINT_SCAN), },
 	[107] = { "802.11u Interworking", print_interworking, 0, 255, BIT(PRINT_SCAN), },
+	[108] = { "802.11u Advertisement", print_11u_advert, 0, 255, BIT(PRINT_SCAN), },
 };
 
 static void print_wifi_wpa(const uint8_t type, uint8_t len, const uint8_t *data)
-- 
1.7.3.4


^ permalink raw reply related

* [PATCH v2 1/4] iw:  Print Interworking IE details in scan results.
From: greearb @ 2013-08-29 22:23 UTC (permalink / raw)
  To: linux-wireless; +Cc: Ben Greear

From: Ben Greear <greearb@candelatech.com>

Output looks like:

	802.11u Interworking:
		Network Options: 0xf1
			Network Type: 1 (Private with Guest)
			Internet
			ASRA
			ESR
			UESA
		Venue Group: 2 (Business)
		Venue Type: 1
		HESSID: 00:00:00:00:00:01

Signed-off-by: Ben Greear <greearb@candelatech.com>
---

v2:  Fix bracket whitespace as requested.
     Fix typo in patch description.

:100644 100644 af21cbc... e8957d1... M	scan.c
 scan.c |   66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 66 insertions(+), 0 deletions(-)

diff --git a/scan.c b/scan.c
index af21cbc..e8957d1 100644
--- a/scan.c
+++ b/scan.c
@@ -614,6 +614,71 @@ static void print_ht_capa(const uint8_t type, uint8_t len, const uint8_t *data)
 	print_ht_mcs(data + 3);
 }
 
+static const char* ntype_11u(uint8_t t)
+{
+	switch (t) {
+	case 0: return "Private";
+	case 1: return "Private with Guest";
+	case 2: return "Chargeable Public";
+	case 3: return "Free Public";
+	case 4: return "Personal Device";
+	case 5: return "Emergency Services Only";
+	case 14: return "Test or Experimental";
+	case 15: return "Wildcard";
+	default: return "Reserved";
+	}
+}
+
+static const char* vgroup_11u(uint8_t t)
+{
+	switch (t) {
+	case 0: return "Unspecified";
+	case 1: return "Assembly";
+	case 2: return "Business";
+	case 3: return "Educational";
+	case 4: return "Factory and Industrial";
+	case 5: return "Institutional";
+	case 6: return "Mercantile";
+	case 7: return "Residential";
+	case 8: return "Storage";
+	case 9: return "Utility and Miscellaneous";
+	case 10: return "Vehicular";
+	case 11: return "Outdoor";
+	default: return "Reserved";
+	}
+}
+
+static void print_interworking(const uint8_t type, uint8_t len, const uint8_t *data)
+{
+	/* See Section 7.3.2.92 in the 802.11u spec. */
+	printf("\n");
+	if (len >= 1) {
+		uint8_t ano = data[0];
+		printf("\t\tNetwork Options: 0x%hx\n", (unsigned short)(ano));
+		printf("\t\t\tNetwork Type: %i (%s)\n",
+		       (int)(ano & 0xf), ntype_11u(ano & 0xf));
+		if (ano & (1<<4))
+			printf("\t\t\tInternet\n");
+		if (ano & (1<<5))
+			printf("\t\t\tASRA\n");
+		if (ano & (1<<6))
+			printf("\t\t\tESR\n");
+		if (ano & (1<<7))
+			printf("\t\t\tUESA\n");
+	}
+	if ((len == 3) || (len == 9)) {
+		printf("\t\tVenue Group: %i (%s)\n",
+		       (int)(data[1]), vgroup_11u(data[1]));
+		printf("\t\tVenue Type: %i\n", (int)(data[2]));
+	}
+	if (len == 9)
+		printf("\t\tHESSID: %02hx:%02hx:%02hx:%02hx:%02hx:%02hx\n",
+		       data[3], data[4], data[5], data[6], data[7], data[8]);
+	else if (len == 7)
+		printf("\t\tHESSID: %02hx:%02hx:%02hx:%02hx:%02hx:%02hx\n",
+		       data[1], data[2], data[3], data[4], data[5], data[6]);
+}
+
 static const char *ht_secondary_offset[4] = {
 	"no secondary",
 	"above",
@@ -891,6 +956,7 @@ static const struct ie_print ieprinters[] = {
 	[113] = { "MESH Configuration", print_mesh_conf, 7, 7, BIT(PRINT_SCAN), },
 	[114] = { "MESH ID", print_ssid, 0, 32, BIT(PRINT_SCAN) | BIT(PRINT_LINK), },
 	[127] = { "Extended capabilities", print_capabilities, 0, 255, BIT(PRINT_SCAN), },
+	[107] = { "802.11u Interworking", print_interworking, 0, 255, BIT(PRINT_SCAN), },
 };
 
 static void print_wifi_wpa(const uint8_t type, uint8_t len, const uint8_t *data)
-- 
1.7.3.4


^ permalink raw reply related

* [PATCH] mac80211: Remove superfluous is_multicast_ether_addr() call
From: Sergey Ryazanov @ 2013-08-29 21:35 UTC (permalink / raw)
  To: linux-wireless; +Cc: Johannes Berg, Sergey Ryazanov

Remove superfluous call and use locally stored previous result.

Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
---
 net/mac80211/tx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 3456c04..102ce8a 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1981,7 +1981,7 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
 	 * EAPOL frames from the local station.
 	 */
 	if (unlikely(!ieee80211_vif_is_mesh(&sdata->vif) &&
-		     !is_multicast_ether_addr(hdr.addr1) && !authorized &&
+		     !multicast && !authorized &&
 		     (cpu_to_be16(ethertype) != sdata->control_port_protocol ||
 		      !ether_addr_equal(sdata->vif.addr, skb->data + ETH_ALEN)))) {
 #ifdef CONFIG_MAC80211_VERBOSE_DEBUG
-- 
1.8.1.5


^ permalink raw reply related

* pull request: wireless-next 2013-08-29
From: John W. Linville @ 2013-08-29 18:53 UTC (permalink / raw)
  To: davem; +Cc: linux-wireless, netdev

[-- Attachment #1: Type: text/plain, Size: 32630 bytes --]

Dave,

Please accept this batch of updates intended for the 3.12 stream.

For the mac80211 bits, Johannes says this:

"This time I have various improvements all over the place: IBSS, mesh,
testmode, AP client powersave handling, one of the rare rfkill patches
and some code cleanup."

Also for mac80211:

"And I also have some more changes for -next, just a few small fixes and
improvements, nothing really stands out."

And for iwlwifi:

"This time I have some powersave work (notably uAPSD support), CQM
offloads, support for a new firmware API and various code cleanups."

Regarding the Bluetooth bits, Gustavo says:

"Patches to 3.12, here we have:

* implementation of a proper tty_port for RFCOMM devices, this fixes some
issues people were seeing lately in the kernel.
* Add voice_setting option for SCO, it is used for SCO Codec selection
* bugfixes, small improvements and clean ups"

For the NFC bits, Samuel says:

"With this one we have:

- A few pn533 improvements and minor fixes. Testing our pn533 driver
  against Google's NCI stack triggered a few issues that we fixed now.
  We also added Tx fragmentation support to this driver.

- More NFC secure element handling. We added a GET_SE netlink command
  for getting all the discovered secure elements, and we defined 2
  additional secure element netlink event (transaction and connectivity).
  We also fixed a couple of typos and copy-paste bugs from the secure
  element handling code.

- Firmware download support for the pn544 driver. This chipset can enter a
  special mode where it's waiting for firmware blobs to replace the
  already flashed one. We now support that mode."

With repect to the ath tree, Kalle says:

"New features in ath10k are rx/tx checsumming in hw and survey scan
implemented by Michal. Also he made fixes to different areas of the
driver, most notable being fixing the case when using two streams and
reducing the number of interface combinations to avoid firmware crashes.
Bartosz did a clean related to how we handle SoC power save in PCI
layer.

For ath6kl Mohammed and Vasanth sent each a patch to fix two infrequent
crashes."

I also pulled the wireless tree into wireless-next to support a
request from Johannes.  On top of all that, there are the usual
sort of driver updates.  The mwifiex, brcmfmac, brcmsmac, ath9k,
and rt2x00 drivers all get some attention, as does the bcma bus and
a few other random bits here and there.

Please let me know if there are problems!

Thanks,

John

---

The following changes since commit 4c9d546f6c522f541dfb01e192ab7101eca0053b:

  Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/bwh/sfc-next (2013-08-29 01:56:01 -0400)

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 0d8165e9fca119b804de2cf35674e07c36c9704f:

  Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem (2013-08-29 14:08:24 -0400)

----------------------------------------------------------------

Alexander Bondar (3):
      iwlwifi: mvm: Fix beacon filtering enablement via debugfs
      iwlwifi: mvm: Add basic uAPSD client support
      iwlwifi: mvm: Add PBW snoozing enablement

Amitkumar Karwar (1):
      mwifiex: fix driver unload problem for usb chipsets

Andrea Merello (1):
      Update e-mail address for Andrea Merello (resubmit)

Andrei Otcheretianski (1):
      iwlwifi: mvm: Implement CQM offloading

Andy Shevchenko (1):
      Bluetooth: use DIV_ROUND_UP in suitable places in btmrvl_sdio

Antonio Quartulli (1):
      mac80211: ibss - do not scan if not needed when creating an IBSS

Arend van Spriel (17):
      brcmfmac: use irq safe spinlock in brcmf_sdbrcm_txdata()
      brcmfmac: .txdata() bus callback should not call brcmf_txcomplete()
      brcmfmac: add AMPDU reordering functionality
      brcmfmac: ignore IF event if firmware indicates it
      brcmfmac: add support for manual TDLS operations
      brcmsmac: cosmetic change in phy_lcn.c
      brcmsmac: change pa_gain for bcm4313 iPA
      brcmsmac: use ARRAY_SIZE in phytbl_lcn.c
      brcmsmac: add debug info message providing phy and radio info
      brcmsmac: update transmit gain table for lcn phy
      brcmsmac: change lcnphy receive i/q calibration routine
      brcmsmac: fix TSSI idle estimation
      brcmsmac: avoid calling set_txpwr_by_index() twice
      brcmsmac: rework switch control table init including iPA BT-combo
      brcmsmac: correct phy registers for TSSI-based power control
      brcmsmac: reinitialize TSSI power control upon channel switch
      brcmsmac: add support for BCM4313 iPA variant

Arron Wang (2):
      NFC: Fix secure element state check
      NFC: Update secure element state

Avinash Patil (2):
      mwifiex: fix ext_capab IE structure definition
      mwifiex: drop gratuitous ARP frames

Bartosz Markowski (1):
      ath10k: add SoC power save option to PCI features map

Benjamin Tissoires (2):
      Bluetooth: hidp: implement hidinput_input_event callback
      Bluetooth: hidp: remove wrong send_report at init

Bing Zhao (2):
      mwifiex: do not create AP and P2P interfaces upon driver loading
      mwifiex: break a long line into two lines

Bob Copeland (1):
      mac80211: assign seqnums for group QoS frames

Chun-Yeow Yeoh (2):
      mac80211: allow lowest basic rate for unicast management for mesh
      mac80211: only respond to probe request with mesh ID

Dan Carpenter (2):
      iwlwifi: pcie: returning positive instead of negative
      NFC: hci: Fix enable/disable confusion

David Spinadel (2):
      cfg80211: add wdev to testmode cmd
      mac80211: add vif to testmode cmd

Djalal Harouni (1):
      ath5k: debugfs: NULL-terminate strings

Eliad Peller (1):
      iwlwifi: mvm: don't clear tbl->win mistakenly

Eric Lapuyade (5):
      NFC: Move nfc_fw_download_done() definition from private to public
      NFC: pn544: i2c: Add firmware download mode power-on support
      NFC: netlink: Add result of firmware operation to completion event
      NFC: pn544: Add firmware operations hci ops
      NFC: pn544: i2c: Add firmware download implementation for pn544

Eyal Shapira (4):
      iwlwifi: mvm: remove rate_scale_data debugfs entry
      iwlwifi: mvm: remove unused fields of iwl_rs_rate_info
      iwlwifi: mvm: remove MIMO3 from rate scale code
      iwlwifi: mvm: remove unused param of rs_dbgfs_set_mcs

Eytan Lifshitz (1):
      iwlwifi: mvm: add support to the new FW time event API

Felix Fietkau (8):
      ath9k: fix rx descriptor related race condition
      ath9k: shrink a few data structures by reordering fields
      ath9k: remove ath9k_sta_remove_debugfs
      ath9k: simplify debugfs chainmask handling
      ath9k: avoid accessing MRC registers on single-chain devices
      ath9k: simplify ath_tid_drain
      ath9k: reset buffer stale flag in ath_tx_get_tid_subframe
      mac80211: add a flag to indicate CCK support for HT clients

Franky Lin (4):
      brcmfmac: abstract tx packet processing functions
      brcmfmac: remove align from brcmf_bus structure
      brcmfmac: streamline sdio bus header code
      brcmfmac: use configurable sdio bus header length for tx packet

Frédéric Dalleau (10):
      Bluetooth: Use hci_connect_sco directly
      Bluetooth: Remove unused mask parameter in sco_conn_defer_accept
      Bluetooth: Add Bluetooth socket voice option
      Bluetooth: Add constants for SCO airmode
      Bluetooth: Use voice setting in deferred SCO connection request
      Bluetooth: Parameters for outgoing SCO connections
      Bluetooth: Add constants and macro declaration for transparent data
      Bluetooth: Prevent transparent SCO on older devices
      Bluetooth: Handle specific error for SCO connection fallback
      Bluetooth: Add SCO connection fallback

Gabor Juhos (12):
      rt2x00: rt2800lib: introduce rt2800_get_txwi_rxwi_size helper
      rt2x00: rt2800pci: fix AUX_CTRL register setup for RT3090/3390/3593/5592
      rt2x00: rt2800: rename HW_BEACON_OFFSET macro
      rt2x00: rt2800lib: pass beacon index to rt2800_clear_beacon_register
      rt2x00: rt2800lib: fix frequency offset boundary calculation
      rt2x00: rt2800lib: optimize frequency offset adjustment
      rt2x00: rt2800lib: use a MCU command for frequency adjustment on USB devices
      rt2x00: rt2800lib: use step-by-step frequency offset adjustment on MMIO devices
      rt2x00: rt2800lib: move rt2800_adjust_freq_offset function
      rt2x00: rt2800lib: adjust frequency offset for RF3053
      rt2x00: rt2800lib: add rt2800_hw_beacon_base helper
      rt2x00: rt2800lib: don't hardcode beacon offsets

Gianluca Anzolin (6):
      Bluetooth: Take proper tty_struct references
      Bluetooth: Remove the device from the list in the destructor
      Bluetooth: Move the tty initialization and cleanup out of open/close
      Bluetooth: Implement .activate, .shutdown and .carrier_raised methods
      Bluetooth: Fix the reference counting of tty_port
      Bluetooth: Purge the dlc->tx_queue to avoid circular dependency

Gustavo Padovan (1):
      Bluetooth: Add missing braces to an "else if"

Hante Meuleman (2):
      brcmfmac: always use worker thread for tx data.
      brcmfmac: no fws locking outside fws module.

Hauke Mehrtens (6):
      bcma: change max PCI read request size to 128
      bcma: add method to power up and down the PCIe core by wifi driver
      brcmsmac: use bcma PCIe up and down functions
      bcma: do not export bcma_core_pci_extend_L1timer()
      bcma: add bcma_core_pci_power_save()
      b43: call PCIe up and down functions

Helmut Schaa (1):
      ath9k_htc: Restore skb headroom when returning skb to mac80211

Ido Yariv (3):
      iwlwifi: pcie: Refactor iwl_queue_space
      iwlwifi: pcie: Refactor iwl_rxq_space
      iwlwifi: pcie: Remove duplicate code from pcie irq handlers

Jingoo Han (1):
      Bluetooth: replace strict_strtol() with kstrtol()

Johan Almbladh (1):
      mac80211: perform power save processing before decryption

Johan Hedberg (1):
      Bluetooth: Fix getting SCO socket options in deferred state

Johannes Berg (10):
      wireless: make TU conversion macros available
      nl80211: clean up CQM settings code
      mac80211: add control port protocol TX control flag
      iwlwifi: mvm: refactor resume from WoWLAN code
      mac80211: add APIs to allow keeping connections after WoWLAN
      mac80211: add missing channel context release
      mac80211: minstrel_ht: don't use control.flags in TX status path
      mac80211: move setting WIPHY_FLAG_SUPPORTS_SCHED_SCAN into drivers
      mac80211: ignore (E)CSA in probe response frames
      mac80211: fix change_interface queue assignments

John W. Linville (12):
      Merge branch 'for-linville' of git://github.com/kvalo/ath
      Merge tag 'nfc-next-3.12-1' of git://git.kernel.org/.../sameo/nfc-next
      brcmsmac: Fix WARNING caused by lack of calls to dma_mapping_error()
      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 'for-john' of git://git.kernel.org/.../jberg/mac80211
      Merge branch 'master' of git://git.kernel.org/.../bluetooth/bluetooth-next
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless
      ath9k: ar9003_eeprom.c:3618 fix variable name typo
      Merge branch 'for-john' of git://git.kernel.org/.../jberg/mac80211
      Merge branch 'for-john' of git://git.kernel.org/.../jberg/mac80211-next
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-next into for-davem

Luciano Coelho (4):
      iwlwifi: pcie: don't swallow error codes in iwl_trans_pcie_alloc()
      iwlwifi: use a macro for default probe length
      iwlwifi: Kconfig: fix help texts wrt 7260 and 3160 devices
      iwlwifi: return -ENOMEM instead of NULL when OOM in iwl_drv_start()

Luis Henriques (1):
      net: rfkill: Do not ignore errors from regulator_enable()

Marcel Holtmann (2):
      Bluetooth: Fix simple whitespace vs tab style issue
      Bluetooth: Set different event mask for LE-only controllers

Mark Schulte (1):
      rtlwifi: sparse warnings: cast to restricted type

Masami Ichikawa (1):
      rt2800usb: Add WLI-UC-G300HP's Product ID.

Matti Gottlieb (1):
      iwlwifi: introduce external debug level

Michal Kazior (11):
      ath10k: improve tx throughput on slow machines
      ath10k: detect the number of spatial streams supported by hw
      ath10k: implement rx checksum offloading
      ath10k: implement tx checksum offloading
      ath10k: implement get_survey()
      ath10k: prevent using invalid ringbuffer indexes
      ath10k: make sure to use passive scan when n_ssids is 0
      ath10k: advertise more conservative intf combinations
      ath10k: zero arvif memory on add_interface()
      ath10k: fix failpath in MSI-X setup
      ath10k: fix device teardown

Mikel Astiz (3):
      Bluetooth: Add HCI authentication capabilities macros
      Bluetooth: Use defines in in hci_get_auth_req()
      Bluetooth: Use defines instead of integer literals

Mohammed Shafi Shajakhan (1):
      ath6kl: Fix invalid pointer access on fuzz testing with AP mode

Oleksij Rempel (1):
      ath9k_htc: do not use bulk on EP3 and EP4

Olivier Guiter (3):
      NFC: pn533: Add extended information frame decoding support
      NFC: pn533: Split large Tx frames in chunks
      NFC: pn533: Store the correct frame size (normal vs ext)

Samuel Ortiz (12):
      MAINTAINERS: Change the NFC subsystem status to Supported
      NFC: Document secure element addition/removal netlink events
      NFC: Define secure element connectivity and transaction events
      NFC: pn533: Fix hardware busy loop when establishing the LLCP link
      NFC: pn533: Fix the pn533 polling loop
      NFC: pn533: Request System code from SENSF_REQ
      NFC: pn533: Unconditionaly select the highest p2p bit rate
      NFC: pn533: Enable AUTO RFCA
      NFC: Fix SE discovery failure warning condition
      NFC: Add a GET_SE netlink API
      NFC: pn533: Add delay between each poll frame
      NFC: pn533: Add some polling entropy

Simon Wunderlich (12):
      mac80211: fix ieee80211_sta_process_chanswitch for 5/10 MHz channels
      mac80211: move ibss presp generation in own function
      ath9k: always use SIFS times from OFDM for 5/10 MHz
      ath9k: use chandef instead of channel_type
      ath9k: report 5/10 MHz channels
      ath9k: set 5/10 MHz supported channels and fix bitrate
      ath9k: announce that ath9k supports 5/10 MHz
      ath5k: report 5/10 MHz channels
      ath5k: set 5/10 MHz supported channels and fix duration
      ath5k: enable support for 5 MHz and 10 MHz channels
      ath9k: enable CSA functionality in ath9k
      mac80211: ibss: fix ignored channel parameter

Solomon Peachy (2):
      cw1200: Display the correct default reference clock.
      cw1200: When debug is enabled, display all wakeup conditions for the wait_event_interruptible_timeout() call.

Stanislaw Gruszka (2):
      iwl4965: fix rfkill set state regression
      rt2800: fix wrong TX power compensation

Sujith Manoharan (28):
      ath9k: Use a subroutine to check for "mybeacon"
      ath9k: Fix phy error handling for DFS
      ath9k: Discard invalid frames early
      ath9k: Fix RX crypto processing
      ath9k: Fix TSF processing
      ath9k: Reorder some functions
      ath9k: Fix PHY error processing
      ath9k: Fix RX debug statistics
      ath9k: Fix RX packet counter
      ath9k: Fix RX beacon processing
      ath9k: Move the RX poll check to preprocess()
      ath9k: Handle corrupt descriptors properly
      ath9k: Fix error condition for corrupt descriptors
      ath9k: Remove unused function argument
      ath9k: Handle invalid RSSI
      ath9k: Identify first subframe in an A-MPDU
      ath9k: Optimize LNA check
      ath9k: Use lockless variant to initialize RX fifo
      ath9k: Enable PLL fix only for AR9340/AR9330
      ath9k: Add support for AR9485 1.2
      ath9k: Add antenna diversity tweak for CUS198
      ath9k: Add one more PCI ID for CUS198
      ath9k: Fix ASPM for AR9462
      ath9k: Fix ASPM workaround usage
      ath9k: Fix TX poll work locking
      ath9k: Fix DEBUG_FS dependency for ath9k
      ath9k: Remove unused ANI commands
      ath9k: Enable D3/L1 ASPM fix for AR9462

Thierry Escande (1):
      NFC: Fix missing static declarations

Tobias Waldekranz (1):
      mwifiex: add missing endian conversions

Vasanthakumar Thiagarajan (1):
      ath6kl: Fix race in heart beat polling

Vladimir Kondratiev (2):
      wil6210: let IP stack re-check HW TCP/UDP csum errors
      cfg80211: add flags to cfg80211_rx_mgmt()

Wei Yongjun (2):
      mac80211_hwsim: fix error return code in init_mac80211_hwsim()
      zd1201: fix error return code

 Documentation/DocBook/80211.tmpl                   |   1 +
 MAINTAINERS                                        |   2 +-
 drivers/bcma/driver_pci.c                          |  65 ++-
 drivers/bcma/driver_pci_host.c                     |   6 +
 drivers/bluetooth/btmrvl_debugfs.c                 |   6 +-
 drivers/bluetooth/btmrvl_sdio.c                    |   4 +-
 drivers/net/wireless/ath/ath10k/ce.c               |   5 +
 drivers/net/wireless/ath/ath10k/core.h             |   8 +
 drivers/net/wireless/ath/ath10k/htt_rx.c           |  40 ++
 drivers/net/wireless/ath/ath10k/htt_tx.c           |   2 +
 drivers/net/wireless/ath/ath10k/mac.c              |  79 +++-
 drivers/net/wireless/ath/ath10k/pci.c              |  70 ++-
 drivers/net/wireless/ath/ath10k/pci.h              |  11 +-
 drivers/net/wireless/ath/ath10k/wmi.c              |  87 +++-
 drivers/net/wireless/ath/ath10k/wmi.h              |   5 +
 drivers/net/wireless/ath/ath5k/ath5k.h             |   1 +
 drivers/net/wireless/ath/ath5k/base.c              |  59 ++-
 drivers/net/wireless/ath/ath5k/base.h              |   2 +-
 drivers/net/wireless/ath/ath5k/debug.c             |  24 +-
 drivers/net/wireless/ath/ath5k/mac80211-ops.c      |   2 +-
 drivers/net/wireless/ath/ath5k/pcu.c               |   2 +
 drivers/net/wireless/ath/ath5k/qcu.c               |  25 +-
 drivers/net/wireless/ath/ath6kl/init.c             |   3 +
 drivers/net/wireless/ath/ath6kl/main.c             |   3 +
 drivers/net/wireless/ath/ath6kl/testmode.c         |   3 +-
 drivers/net/wireless/ath/ath6kl/testmode.h         |   7 +-
 drivers/net/wireless/ath/ath6kl/wmi.c              |   7 +-
 drivers/net/wireless/ath/ath9k/Kconfig             |   2 +-
 drivers/net/wireless/ath/ath9k/ani.c               |   3 -
 drivers/net/wireless/ath/ath9k/ani.h               |  13 +-
 drivers/net/wireless/ath/ath9k/ar5008_phy.c        |   2 -
 drivers/net/wireless/ath/ath9k/ar9002_hw.c         |  29 +-
 drivers/net/wireless/ath/ath9k/ar9003_eeprom.c     |   9 +-
 drivers/net/wireless/ath/ath9k/ar9003_hw.c         |  39 +-
 drivers/net/wireless/ath/ath9k/ar9003_mac.c        |   1 +
 drivers/net/wireless/ath/ath9k/ar9003_phy.c        |   8 +-
 drivers/net/wireless/ath/ath9k/ar9003_phy.h        |   2 +
 drivers/net/wireless/ath/ath9k/ath9k.h             |  24 +-
 drivers/net/wireless/ath/ath9k/beacon.c            |  21 +
 drivers/net/wireless/ath/ath9k/common.c            |  67 +--
 drivers/net/wireless/ath/ath9k/common.h            |   3 +-
 drivers/net/wireless/ath/ath9k/debug.c             | 104 +----
 drivers/net/wireless/ath/ath9k/debug.h             |   4 -
 drivers/net/wireless/ath/ath9k/hif_usb.c           |  38 +-
 drivers/net/wireless/ath/ath9k/htc_drv_main.c      |   5 +-
 drivers/net/wireless/ath/ath9k/htc_drv_txrx.c      |  10 +
 drivers/net/wireless/ath/ath9k/hw.c                |  19 +-
 drivers/net/wireless/ath/ath9k/hw.h                |   2 +
 drivers/net/wireless/ath/ath9k/init.c              |  39 +-
 drivers/net/wireless/ath/ath9k/link.c              |   2 +-
 drivers/net/wireless/ath/ath9k/mac.c               |   4 +-
 drivers/net/wireless/ath/ath9k/mac.h               |   2 +
 drivers/net/wireless/ath/ath9k/main.c              |  29 +-
 drivers/net/wireless/ath/ath9k/pci.c               |  67 +++
 drivers/net/wireless/ath/ath9k/rc.c                |   9 +-
 drivers/net/wireless/ath/ath9k/recv.c              | 506 ++++++++++++---------
 drivers/net/wireless/ath/ath9k/reg.h               |   6 +-
 drivers/net/wireless/ath/ath9k/xmit.c              |  32 +-
 drivers/net/wireless/ath/carl9170/main.c           |   3 +-
 drivers/net/wireless/ath/wil6210/txrx.c            |  12 +-
 drivers/net/wireless/ath/wil6210/wmi.c             |   2 +-
 drivers/net/wireless/b43/main.c                    |  14 +
 drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c   |  16 +-
 .../net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c |   1 -
 drivers/net/wireless/brcm80211/brcmfmac/dhd.h      |  31 +-
 drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h  |   8 +-
 .../net/wireless/brcm80211/brcmfmac/dhd_linux.c    | 279 ++++++++++--
 drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c | 481 ++++++++++++--------
 drivers/net/wireless/brcm80211/brcmfmac/fweh.c     |   4 +
 .../net/wireless/brcm80211/brcmfmac/fwil_types.h   |  21 +
 drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c | 228 +++++-----
 drivers/net/wireless/brcm80211/brcmfmac/p2p.c      |   4 +-
 .../net/wireless/brcm80211/brcmfmac/sdio_host.h    |   2 +-
 drivers/net/wireless/brcm80211/brcmfmac/usb.c      |   1 -
 .../net/wireless/brcm80211/brcmfmac/wl_cfg80211.c  |  61 ++-
 drivers/net/wireless/brcm80211/brcmsmac/aiutils.c  |  21 -
 drivers/net/wireless/brcm80211/brcmsmac/aiutils.h  |   3 -
 drivers/net/wireless/brcm80211/brcmsmac/dma.c      |  15 +-
 drivers/net/wireless/brcm80211/brcmsmac/main.c     |  12 +-
 .../net/wireless/brcm80211/brcmsmac/phy/phy_lcn.c  | 399 ++++++++++------
 .../wireless/brcm80211/brcmsmac/phy/phytbl_lcn.c   | 405 +++++++++--------
 .../wireless/brcm80211/brcmsmac/phy/phytbl_lcn.h   |   1 +
 drivers/net/wireless/cw1200/bh.c                   |   4 +-
 drivers/net/wireless/cw1200/main.c                 |   2 +-
 drivers/net/wireless/iwlegacy/4965-mac.c           |   2 +-
 drivers/net/wireless/iwlwifi/Kconfig               |  13 +-
 drivers/net/wireless/iwlwifi/dvm/tx.c              |   2 +-
 drivers/net/wireless/iwlwifi/iwl-debug.h           |   2 +
 drivers/net/wireless/iwlwifi/iwl-devtrace.h        |   7 +-
 drivers/net/wireless/iwlwifi/iwl-drv.c             |  10 +-
 drivers/net/wireless/iwlwifi/iwl-fw.h              |   5 +
 drivers/net/wireless/iwlwifi/mvm/constants.h       |   9 +
 drivers/net/wireless/iwlwifi/mvm/d3.c              | 151 +++---
 drivers/net/wireless/iwlwifi/mvm/debugfs.c         |  17 +-
 drivers/net/wireless/iwlwifi/mvm/fw-api-power.h    |  24 +-
 drivers/net/wireless/iwlwifi/mvm/fw-api.h          | 228 +++++++---
 drivers/net/wireless/iwlwifi/mvm/mac80211.c        |  29 +-
 drivers/net/wireless/iwlwifi/mvm/mvm.h             |  27 +-
 drivers/net/wireless/iwlwifi/mvm/power.c           | 199 +++++++-
 drivers/net/wireless/iwlwifi/mvm/rs.c              | 474 +++----------------
 drivers/net/wireless/iwlwifi/mvm/rs.h              |  64 +--
 drivers/net/wireless/iwlwifi/mvm/rx.c              |  61 ++-
 drivers/net/wireless/iwlwifi/mvm/time-event.c      | 103 +++--
 drivers/net/wireless/iwlwifi/mvm/tx.c              |   9 +-
 drivers/net/wireless/iwlwifi/pcie/drv.c            |   6 +-
 drivers/net/wireless/iwlwifi/pcie/rx.c             |  43 +-
 drivers/net/wireless/iwlwifi/pcie/trans.c          |  31 +-
 drivers/net/wireless/iwlwifi/pcie/tx.c             |  38 +-
 drivers/net/wireless/mac80211_hwsim.c              |   5 +-
 drivers/net/wireless/mwifiex/11n.c                 |  16 +-
 drivers/net/wireless/mwifiex/11n_aggr.c            |   3 +-
 drivers/net/wireless/mwifiex/cfg80211.c            |   1 +
 drivers/net/wireless/mwifiex/decl.h                |   9 +
 drivers/net/wireless/mwifiex/fw.h                  |   2 +-
 drivers/net/wireless/mwifiex/init.c                |   1 +
 drivers/net/wireless/mwifiex/main.c                |  14 -
 drivers/net/wireless/mwifiex/main.h                |   3 +-
 drivers/net/wireless/mwifiex/sdio.c                |   6 +-
 drivers/net/wireless/mwifiex/sta_cmdresp.c         |   2 +-
 drivers/net/wireless/mwifiex/sta_rx.c              |  49 ++
 drivers/net/wireless/mwifiex/usb.c                 |  50 +-
 drivers/net/wireless/mwifiex/util.c                |   4 +-
 drivers/net/wireless/rt2x00/rt2800.h               |   5 +-
 drivers/net/wireless/rt2x00/rt2800lib.c            | 142 ++++--
 drivers/net/wireless/rt2x00/rt2800lib.h            |   4 +
 drivers/net/wireless/rt2x00/rt2800pci.c            |  19 +-
 drivers/net/wireless/rt2x00/rt2800usb.c            |  12 +-
 drivers/net/wireless/rtl818x/rtl8180/dev.c         |   6 +-
 drivers/net/wireless/rtl818x/rtl8180/grf5101.c     |   2 +-
 drivers/net/wireless/rtl818x/rtl8180/grf5101.h     |   2 +-
 drivers/net/wireless/rtl818x/rtl8180/max2820.c     |   2 +-
 drivers/net/wireless/rtl818x/rtl8180/max2820.h     |   2 +-
 drivers/net/wireless/rtl818x/rtl8180/rtl8225.c     |   4 +-
 drivers/net/wireless/rtl818x/rtl8180/sa2400.c      |   2 +-
 drivers/net/wireless/rtl818x/rtl8180/sa2400.h      |   2 +-
 drivers/net/wireless/rtl818x/rtl8187/dev.c         |   6 +-
 drivers/net/wireless/rtl818x/rtl8187/rtl8187.h     |   4 +-
 drivers/net/wireless/rtl818x/rtl8187/rtl8225.c     |   4 +-
 drivers/net/wireless/rtl818x/rtl8187/rtl8225.h     |   4 +-
 drivers/net/wireless/rtl818x/rtl818x.h             |   4 +-
 drivers/net/wireless/rtlwifi/ps.c                  |  16 +-
 drivers/net/wireless/ti/wlcore/main.c              |   3 +-
 drivers/net/wireless/ti/wlcore/testmode.c          |   3 +-
 drivers/net/wireless/ti/wlcore/testmode.h          |   3 +-
 drivers/net/wireless/zd1201.c                      |   8 +-
 drivers/nfc/nfcsim.c                               |   6 +-
 drivers/nfc/pn533.c                                | 389 ++++++++++++----
 drivers/nfc/pn544/i2c.c                            | 360 ++++++++++++++-
 drivers/nfc/pn544/mei.c                            |   2 +-
 drivers/nfc/pn544/pn544.c                          |  20 +-
 drivers/nfc/pn544/pn544.h                          |   7 +-
 drivers/staging/rtl8187se/ieee80211/ieee80211.h    |   2 +-
 drivers/staging/rtl8187se/ieee80211/ieee80211_rx.c |   2 +-
 .../rtl8187se/ieee80211/ieee80211_softmac.c        |   2 +-
 .../rtl8187se/ieee80211/ieee80211_softmac_wx.c     |   2 +-
 drivers/staging/rtl8187se/ieee80211/ieee80211_tx.c |   2 +-
 drivers/staging/rtl8187se/r8180.h                  |   2 +-
 drivers/staging/rtl8187se/r8180_93cx6.h            |   2 +-
 drivers/staging/rtl8187se/r8180_core.c             |   4 +-
 drivers/staging/rtl8187se/r8180_hw.h               |   2 +-
 drivers/staging/rtl8187se/r8180_rtl8225.h          |   2 +-
 drivers/staging/rtl8187se/r8180_rtl8225z2.c        |   2 +-
 drivers/staging/rtl8187se/r8180_wx.c               |   2 +-
 drivers/staging/rtl8187se/r8180_wx.h               |   2 +-
 drivers/staging/rtl8192e/rtl8192e/r8192E_dev.c     |   2 +-
 drivers/staging/rtl8192e/rtl8192e/r8192E_dev.h     |   2 +-
 drivers/staging/rtl8192e/rtl8192e/rtl_cam.c        |   2 +-
 drivers/staging/rtl8192e/rtl8192e/rtl_cam.h        |   2 +-
 drivers/staging/rtl8192e/rtl8192e/rtl_core.c       |   2 +-
 drivers/staging/rtl8192e/rtl8192e/rtl_core.h       |   2 +-
 drivers/staging/rtl8192e/rtl8192e/rtl_eeprom.c     |   2 +-
 drivers/staging/rtl8192e/rtl8192e/rtl_eeprom.h     |   2 +-
 drivers/staging/rtl8192e/rtl8192e/rtl_ethtool.c    |   2 +-
 drivers/staging/rtl8192e/rtl8192e/rtl_pci.c        |   2 +-
 drivers/staging/rtl8192e/rtl8192e/rtl_pci.h        |   2 +-
 drivers/staging/rtl8192e/rtl8192e/rtl_ps.c         |   2 +-
 drivers/staging/rtl8192e/rtl8192e/rtl_ps.h         |   2 +-
 drivers/staging/rtl8192e/rtllib.h                  |   2 +-
 drivers/staging/rtl8192e/rtllib_debug.h            |   2 +-
 drivers/staging/rtl8192e/rtllib_rx.c               |   2 +-
 drivers/staging/rtl8192e/rtllib_softmac.c          |   2 +-
 drivers/staging/rtl8192e/rtllib_softmac_wx.c       |   2 +-
 drivers/staging/rtl8192e/rtllib_tx.c               |   2 +-
 drivers/staging/rtl8192u/authors                   |   2 +-
 drivers/staging/rtl8192u/ieee80211/ieee80211.h     |   2 +-
 drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c  |   2 +-
 .../staging/rtl8192u/ieee80211/ieee80211_softmac.c |   2 +-
 .../rtl8192u/ieee80211/ieee80211_softmac_wx.c      |   2 +-
 drivers/staging/rtl8192u/ieee80211/ieee80211_tx.c  |   2 +-
 drivers/staging/rtl8192u/r8180_93cx6.c             |   2 +-
 drivers/staging/rtl8192u/r8180_93cx6.h             |   2 +-
 drivers/staging/rtl8192u/r8180_pm.c                |   2 +-
 drivers/staging/rtl8192u/r8180_pm.h                |   2 +-
 drivers/staging/rtl8192u/r8190_rtl8256.h           |   2 +-
 drivers/staging/rtl8192u/r8192U.h                  |   2 +-
 drivers/staging/rtl8192u/r8192U_core.c             |   2 +-
 drivers/staging/rtl8192u/r8192U_hw.h               |   2 +-
 drivers/staging/rtl8192u/r8192U_wx.c               |   2 +-
 drivers/staging/rtl8192u/r8192U_wx.h               |   2 +-
 include/linux/bcma/bcma_driver_pci.h               |  24 +-
 include/linux/ieee80211.h                          |   4 +
 include/linux/platform_data/brcmfmac-sdio.h        |   6 +
 include/net/bluetooth/bluetooth.h                  |   8 +
 include/net/bluetooth/hci.h                        |   7 +
 include/net/bluetooth/hci_core.h                   |  10 +-
 include/net/bluetooth/sco.h                        |   1 +
 include/net/cfg80211.h                             |   8 +-
 include/net/mac80211.h                             | 110 ++++-
 include/net/nfc/nfc.h                              |   3 +
 include/uapi/linux/nfc.h                           |  20 +
 include/uapi/linux/nl80211.h                       |  16 +
 net/bluetooth/hci_conn.c                           |  62 ++-
 net/bluetooth/hci_core.c                           |  14 +-
 net/bluetooth/hci_event.c                          |  29 +-
 net/bluetooth/hidp/core.c                          |  40 +-
 net/bluetooth/l2cap_core.c                         |   3 +-
 net/bluetooth/rfcomm/tty.c                         | 271 +++++------
 net/bluetooth/sco.c                                |  85 +++-
 net/mac80211/cfg.c                                 |  15 +-
 net/mac80211/ibss.c                                | 226 +++++----
 net/mac80211/ieee80211_i.h                         |   3 -
 net/mac80211/iface.c                               |  19 +-
 net/mac80211/key.c                                 | 154 ++++++-
 net/mac80211/main.c                                |   3 -
 net/mac80211/mesh.c                                |   3 +
 net/mac80211/mlme.c                                |  20 +-
 net/mac80211/rate.c                                |  23 +-
 net/mac80211/rc80211_minstrel_ht.c                 |   5 +-
 net/mac80211/rx.c                                  | 407 +++++++++--------
 net/mac80211/tx.c                                  |  14 +-
 net/mac80211/util.c                                |   2 +-
 net/nfc/core.c                                     |  22 +-
 net/nfc/hci/core.c                                 |   2 +-
 net/nfc/netlink.c                                  |  95 +++-
 net/nfc/nfc.h                                      |   5 +-
 net/rfkill/rfkill-regulator.c                      |   8 +-
 net/wireless/mlme.c                                |   4 +-
 net/wireless/nl80211.c                             |  80 ++--
 net/wireless/nl80211.h                             |   2 +-
 net/wireless/rdev-ops.h                            |   5 +-
 net/wireless/trace.h                               |   8 +-
 241 files changed, 5440 insertions(+), 2926 deletions(-)
-- 
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: [BUG] iwlwifi Microcode SW error (firmware version: 18.168.6.1)
From: adam.gradzki @ 2013-08-29 16:35 UTC (permalink / raw)
  To: Luciano Coelho, linux-wireless
In-Reply-To: <1377751965.4418.4.camel@porter.coelho.fi>

Hi Luca,

I have been having wireless connectivity problems indoors on campus with this 
Intel card since I bought this laptop in September 2012. Quite often the 
wireless is completely unusable.

I can reliably reproduce this problem whenever I attempt to connect to the 
University of Pittsburgh network in several locations indoors around campus. 
The problem is very prominent when I am around APs with 6+ clients around me.

I have attached a link to my complete system log dump over 3 reboot cycles 
today.

I can connect sporadically and send a few bytes here and there before the 
wireless becomes completely unusable

I have tried connecting in Windows 8 x64 and I also experience the same 
issues, except that my network adapter goes into "Limited connectivity" mode 
and gives me a 169.x.x.x address with no IPv4 gateway.

Here is the link to my logs:
http://paste.ubuntu.com/6040891/

~ Adam

On Thursday, August 29, 2013 07:52:45 AM Luciano Coelho wrote:
> On Thu, 2013-08-29 at 00:38 -0400, adam.gradzki@gmail.com wrote:
> > Hi Luca,
> > 
> > I was browsing the web while in a large hall with many connected wireless
> > clients. There were also several routers sharing a common SSID. I remember
> > playing with various RTS and fragmentation thresholds so this may have
> > been
> > the trigger. The connection itself involved WPA2 Enterprise PEAP w/
> > MSCHAPv2 authentication. I wish I could go into more detail but I was
> > browsing the system log long after the fact so I'm having trouble
> > remembering things off the top of my head.
> > 
> > Linux laptop 3.10.9-1-ARCH #1 SMP PREEMPT Wed Aug 21 13:49:35 CEST 2013
> > x86_64 GNU/Linux
> 
> Thanks again! I'll follow this up internally.
> 
> --
> Cheers,
> Luca.


^ permalink raw reply

* [PATCH v3 2/2] ath10k: implement per-VDEV FW statistics
From: Bartosz Markowski @ 2013-08-29 12:07 UTC (permalink / raw)
  To: ath10k; +Cc: linux-wireless, Bartosz Markowski
In-Reply-To: <1377778061-22331-1-git-send-email-bartosz.markowski@tieto.com>

The WMI_REQUEST_PEER_STAT command with latst (1.0.0.716) FW
can return per-VDEV statistics. Using debugfs we can fetch this info now.

This is a backward compatible change. In case of older FW the VDEV
statistics are simply not returned.

Signed-off-by: Bartosz Markowski <bartosz.markowski@tieto.com>
---
 drivers/net/wireless/ath/ath10k/core.h  |   27 ++++++++++
 drivers/net/wireless/ath/ath10k/debug.c |   78 ++++++++++++++++++++++-----
 drivers/net/wireless/ath/ath10k/wmi.c   |    4 +-
 drivers/net/wireless/ath/ath10k/wmi.h   |   87 ++++++++++++++++++++++++++-----
 4 files changed, 170 insertions(+), 26 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/core.h b/drivers/net/wireless/ath/ath10k/core.h
index ab05c4c..523c79d 100644
--- a/drivers/net/wireless/ath/ath10k/core.h
+++ b/drivers/net/wireless/ath/ath10k/core.h
@@ -119,10 +119,32 @@ struct ath10k_wmi {
 	struct work_struct wmi_event_work;
 };
 
+struct ath10k_snr_info {
+	s32 beacon_snr;
+	s32 data_snr;
+};
+
+struct ath10k_vdev_stat {
+	u32 vdev_id;
+	struct ath10k_snr_info vdev_snr;
+	u32 tx_frames_count[MAX_AC];
+	u32 rx_frames_count;
+	u32 multiple_retry_cnt[MAX_AC];
+	u32 fail_count[MAX_AC];
+	u32 rts_fail_count;
+	u32 rts_success_count;
+	u32 rts_err_count;
+	u32 rx_discard_count;
+	u32 ack_fail_count;
+	u32 tx_rate_history[MAX_TX_RATE_VALUES];
+	u32 bcn_rssi_history[MAX_RSSI_VALUES];
+};
+
 struct ath10k_peer_stat {
 	u8 peer_macaddr[ETH_ALEN];
 	u32 peer_rssi;
 	u32 peer_tx_rate;
+	u32 peer_rx_rate;
 };
 
 struct ath10k_target_stats {
@@ -176,6 +198,8 @@ struct ath10k_target_stats {
 	s32 mpdu_errs;
 
 	/* VDEV STATS */
+	struct ath10k_vdev_stat vdev_stat[TARGET_NUM_VDEVS];
+	u8 vdevs;
 
 	/* PEER STATS */
 	u8 peers;
@@ -274,6 +298,9 @@ enum ath10k_fw_features {
 	/* wmi_mgmt_rx_hdr contains extra RSSI information */
 	ATH10K_FW_FEATURE_EXT_WMI_MGMT_RX = 0,
 
+	/* firmware support per-VEDV statistics */
+	ATH10K_FW_FEATURE_VDEV_STATS = 1,
+
 	/* keep last */
 	ATH10K_FW_FEATURE_COUNT,
 };
diff --git a/drivers/net/wireless/ath/ath10k/debug.c b/drivers/net/wireless/ath/ath10k/debug.c
index fcb40cc..0f2b169 100644
--- a/drivers/net/wireless/ath/ath10k/debug.c
+++ b/drivers/net/wireless/ath/ath10k/debug.c
@@ -228,34 +228,59 @@ void ath10k_debug_read_target_stats(struct ath10k *ar,
 		tmp += sizeof(struct wmi_pdev_stats);
 	}
 
-	/* 0 or max vdevs */
-	/* Currently firmware does not support VDEV stats */
 	if (num_vdev_stats) {
 		struct wmi_vdev_stats *vdev_stats;
+		struct ath10k_vdev_stat *s;
+
+		stats->vdevs = num_vdev_stats;
 
 		for (i = 0; i < num_vdev_stats; i++) {
 			vdev_stats = (struct wmi_vdev_stats *)tmp;
+			s = &stats->vdev_stat[i];
+
+			s->vdev_id = __le32_to_cpu(vdev_stats->vdev_id);
+			s->vdev_snr.beacon_snr =
+				__le32_to_cpu(vdev_stats->vdev_snr.beacon_snr);
+			s->vdev_snr.data_snr =
+				__le32_to_cpu(vdev_stats->vdev_snr.data_snr);
+
+			/* TODO:read remaining vdev stats */
+
 			tmp += sizeof(struct wmi_vdev_stats);
 		}
 	}
 
 	if (num_peer_stats) {
-		struct wmi_peer_stats *peer_stats;
 		struct ath10k_peer_stat *s;
+		struct wmi_peer_stats_1 *peer_stats_1;
+		struct wmi_peer_stats_2 *peer_stats_2;
 
 		stats->peers = num_peer_stats;
 
 		for (i = 0; i < num_peer_stats; i++) {
-			peer_stats = (struct wmi_peer_stats *)tmp;
+			peer_stats_1 = (struct wmi_peer_stats_1 *)tmp;
+
 			s = &stats->peer_stat[i];
 
-			WMI_MAC_ADDR_TO_CHAR_ARRAY(&peer_stats->peer_macaddr,
-						   s->peer_macaddr);
-			s->peer_rssi = __le32_to_cpu(peer_stats->peer_rssi);
+			WMI_MAC_ADDR_TO_CHAR_ARRAY(
+				&peer_stats_1->common.peer_macaddr,
+				s->peer_macaddr);
+			s->peer_rssi =
+				__le32_to_cpu(peer_stats_1->common.peer_rssi);
 			s->peer_tx_rate =
-				__le32_to_cpu(peer_stats->peer_tx_rate);
-
-			tmp += sizeof(struct wmi_peer_stats);
+				__le32_to_cpu(peer_stats_1->common.peer_tx_rate);
+
+			if (test_bit(ATH10K_FW_FEATURE_VDEV_STATS,
+				     ar->fw_features)) {
+				peer_stats_2 = (struct wmi_peer_stats_2 *)tmp;
+				s->peer_rx_rate =
+				    __le32_to_cpu(peer_stats_2->peer_rx_rate);
+
+				tmp += sizeof(struct wmi_peer_stats_2);
+			}
+			else {
+				tmp += sizeof(struct wmi_peer_stats_1);
+			}
 		}
 	}
 
@@ -269,7 +294,7 @@ static ssize_t ath10k_read_fw_stats(struct file *file, char __user *user_buf,
 	struct ath10k *ar = file->private_data;
 	struct ath10k_target_stats *fw_stats;
 	char *buf = NULL;
-	unsigned int len = 0, buf_len = 2500;
+	unsigned int len = 0, buf_len = 3000;
 	ssize_t ret_cnt = 0;
 	long left;
 	int i;
@@ -407,6 +432,27 @@ static ssize_t ath10k_read_fw_stats(struct file *file, char __user *user_buf,
 	len += scnprintf(buf + len, buf_len - len, "%30s %10d\n",
 			 "MPDU errors (FCS, MIC, ENC)", fw_stats->mpdu_errs);
 
+	if (fw_stats->vdevs) {
+		len += scnprintf(buf + len, buf_len - len, "\n");
+		len += scnprintf(buf + len, buf_len - len, "%30s\n",
+				 "ath10k VDEV stats");
+		len += scnprintf(buf + len, buf_len - len, "%30s\n\n",
+				 "=================");
+	}
+
+	for (i = 0; i < fw_stats->vdevs; i++) {
+		len += scnprintf(buf + len, buf_len - len, "%30s %10u\n",
+				 "VDEV ID", fw_stats->vdev_stat[i].vdev_id);
+		len += scnprintf(buf + len, buf_len - len, "%30s %10u\n",
+				 "Beacon SNR",
+				 fw_stats->vdev_stat[i].vdev_snr.beacon_snr);
+		len += scnprintf(buf + len, buf_len - len, "%30s %10u\n",
+				 "Data SNR",
+				 fw_stats->vdev_stat[i].vdev_snr.data_snr);
+		len += scnprintf(buf + len, buf_len - len, "\n");
+	}
+
+
 	len += scnprintf(buf + len, buf_len - len, "\n");
 	len += scnprintf(buf + len, buf_len - len, "%30s\n",
 			 "ath10k PEER stats");
@@ -417,11 +463,17 @@ static ssize_t ath10k_read_fw_stats(struct file *file, char __user *user_buf,
 		len += scnprintf(buf + len, buf_len - len, "%30s %pM\n",
 				 "Peer MAC address",
 				 fw_stats->peer_stat[i].peer_macaddr);
-		len += scnprintf(buf + len, buf_len - len, "%30s %u\n",
+		len += scnprintf(buf + len, buf_len - len, "%30s %10u\n",
 				 "Peer RSSI", fw_stats->peer_stat[i].peer_rssi);
-		len += scnprintf(buf + len, buf_len - len, "%30s %u\n",
+		len += scnprintf(buf + len, buf_len - len, "%30s %10u\n",
 				 "Peer TX rate",
 				 fw_stats->peer_stat[i].peer_tx_rate);
+
+		if (test_bit(ATH10K_FW_FEATURE_VDEV_STATS, ar->fw_features))
+			len += scnprintf(buf + len, buf_len - len, "%30s %10u\n",
+					 "Peer RX rate",
+					 fw_stats->peer_stat[i].peer_rx_rate);
+
 		len += scnprintf(buf + len, buf_len - len, "\n");
 	}
 	spin_unlock_bh(&ar->data_lock);
diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c
index 32fd5e7..3ebab3d 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.c
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
@@ -957,8 +957,10 @@ static void ath10k_wmi_service_ready_event_rx(struct ath10k *ar,
 	ar->phy_capability = __le32_to_cpu(ev->phy_capability);
 	ar->num_rf_chains = __le32_to_cpu(ev->num_rf_chains);
 
-	if (ar->fw_version_build > 636)
+	if (ar->fw_version_build > 636) {
 		set_bit(ATH10K_FW_FEATURE_EXT_WMI_MGMT_RX, ar->fw_features);
+		set_bit(ATH10K_FW_FEATURE_VDEV_STATS, ar->fw_features);
+	}
 
 	if (ar->num_rf_chains > WMI_MAX_SPATIAL_STREAM) {
 		ath10k_warn("hardware advertises support for more spatial streams than it should (%d > %d)\n",
diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h
index 5b94707..99c7ba1 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.h
+++ b/drivers/net/wireless/ath/ath10k/wmi.h
@@ -60,6 +60,11 @@
  *
  */
 
+#define MAX_AC 4 /* Maximum value of access category */
+
+#define MAX_TX_RATE_VALUES      10 /* Max Tx rates */
+#define MAX_RSSI_VALUES         10 /* Max RSSI values */
+
 /* Control Path */
 struct wmi_cmd_hdr {
 	__le32 cmd_id;
@@ -1828,11 +1833,10 @@ enum wmi_stats_id {
 
 struct wmi_request_stats_cmd {
 	__le32 stats_id;
-
-	/*
-	 * Space to add parameters like
-	 * peer mac addr
-	 */
+	/* unique id identifying the VDEV, generated by the caller */
+	__le32 vdev_id;
+	/* peer MAC address */
+	struct wmi_mac_addr peer_macaddr;
 } __packed;
 
 /* Suspend option */
@@ -1881,7 +1885,6 @@ struct wmi_stats_event {
 
 /*
  * PDEV statistics
- * TODO: add all PDEV stats here
  */
 struct wmi_pdev_stats {
 	__le32 chan_nf;        /* Channel noise floor */
@@ -1894,24 +1897,84 @@ struct wmi_pdev_stats {
 	struct wal_dbg_stats wal; /* WAL dbg stats */
 } __packed;
 
-/*
- * VDEV statistics
- * TODO: add all VDEV stats here
- */
+struct wmi_snr_info {
+	__le32 beacon_snr;
+	__le32 data_snr;
+} __packed;
+
 struct wmi_vdev_stats {
+	/* unique id identifying the VDEV, generated by the caller */
 	__le32 vdev_id;
+	struct wmi_snr_info vdev_snr;
+	/*
+	 * Total number of packets(per AC) that were successfully transmitted
+	 * (with and without retries, including multi-cast, broadcast)
+	 */
+	__le32 tx_frm_cnt[MAX_AC];
+	/*
+	 * Total number of packets that were successfully received
+	 * (after appropriate filter rules including multi-cast, broadcast)
+	 */
+	__le32 rx_frm_cnt;
+	/*
+	 * The number of MSDU packets and MMPDU frames per AC that the 802.11
+	 * station successfully transmitted after more than one retransmission
+	 * attempt
+	 */
+	__le32 multiple_retry_cnt[MAX_AC];
+	/* Total number packets(per AC) failed to transmit */
+	__le32 fail_cnt[MAX_AC];
+	/*
+	 * Total number of RTS/CTS sequence failures for transmission of a
+	 * packet
+	 */
+	__le32 rts_fail_cnt;
+	/*
+	 * Total number of RTS/CTS sequence success for transmission of a
+	 * packet
+	 */
+	__le32 rts_succ_cnt;
+	/*
+	 * The receive error count.
+	 * HAL will provide the RxP FCS error global
+	 */
+	__le32 rx_err_cnt;
+	/*
+	 * The sum of the receive error count and dropped-receive-buffer
+	 * error count. (FCS error)
+	 */
+	__le32 rx_discard_cnt;
+	/*
+	 * Total number packets failed transmit because of no ACK
+	 * from the remote entity
+	 */
+	__le32 ack_fail_cnt;
+	/* History of last ten transmit rate, in units of 500 kbit/sec */
+	__le32 tx_rate_history[MAX_TX_RATE_VALUES];
+	/* History of last ten Beacon rssi of the connected Bss */
+	__le32 bcn_rssi_history[MAX_RSSI_VALUES];
 } __packed;
 
 /*
  * peer statistics.
- * TODO: add more stats
  */
-struct wmi_peer_stats {
+struct wmi_peer_stats_common {
 	struct wmi_mac_addr peer_macaddr;
 	__le32 peer_rssi;
 	__le32 peer_tx_rate;
 } __packed;
 
+struct wmi_peer_stats_1 {
+	struct wmi_peer_stats_common common;
+} __packed;
+
+
+struct wmi_peer_stats_2 {
+	struct wmi_peer_stats_common common;
+	__le32 peer_rx_rate;
+} __packed;
+
+
 struct wmi_vdev_create_cmd {
 	__le32 vdev_id;
 	__le32 vdev_type;
-- 
1.7.10


^ permalink raw reply related

* [PATCH v3 0/2] add per-VDEV FW statistics
From: Bartosz Markowski @ 2013-08-29 12:07 UTC (permalink / raw)
  To: ath10k; +Cc: linux-wireless, Bartosz Markowski

FW 1.0.0.716 brings per-VDEV statistics. This patch-set implements
debugfs mechanism to fetch those. There's still few more fileds we
can read from the FW stats event, which are not covered here.

Changes:

V2:
* introduce wmi_peer_stats_common struct
* fetch and print peer RX rates
* break up wmi_peer_stats_common update into separate patch

V3:
* rebase
* fix sparse endianness warnings

Bartosz Markowski (2):
  ath10k: update wal_dbg_tx_stats structure with missing parameter.
  ath10k: implement per-VDEV FW statistics

 drivers/net/wireless/ath/ath10k/core.h  |   27 ++++++++++
 drivers/net/wireless/ath/ath10k/debug.c |   78 ++++++++++++++++++++++-----
 drivers/net/wireless/ath/ath10k/wmi.c   |    4 +-
 drivers/net/wireless/ath/ath10k/wmi.h   |   90 ++++++++++++++++++++++++++-----
 4 files changed, 173 insertions(+), 26 deletions(-)

-- 
1.7.10


^ permalink raw reply

* [PATCH v3 1/2] ath10k: update wal_dbg_tx_stats structure with missing parameter.
From: Bartosz Markowski @ 2013-08-29 12:07 UTC (permalink / raw)
  To: ath10k; +Cc: linux-wireless, Bartosz Markowski
In-Reply-To: <1377778061-22331-1-git-send-email-bartosz.markowski@tieto.com>

It's very imporatant to keep these structs up to date with FW abi,
due to the arithmetic we use while read the fw_stats.

Signed-off-by: Bartosz Markowski <bartosz.markowski@tieto.com>
---
 drivers/net/wireless/ath/ath10k/wmi.h |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h
index 08860c4..5b94707 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.h
+++ b/drivers/net/wireless/ath/ath10k/wmi.h
@@ -1767,6 +1767,9 @@ struct wal_dbg_tx_stats {
 	/* wal pdev resets  */
 	__le32 pdev_resets;
 
+	/* frames dropped due to non-availability of stateless TIDs */
+	__le32 stateless_tid_alloc_failure;
+
 	__le32 phy_underrun;
 
 	/* MPDU is more than txop limit */
-- 
1.7.10


^ permalink raw reply related

* [PATCH] cfg80211: use the correct macro to check for active monitor support
From: Luciano Coelho @ 2013-08-29 10:26 UTC (permalink / raw)
  To: johannes; +Cc: linux-wireless

Use MONITOR_FLAG_ACTIVE, which is a flag mask, instead of
NL80211_MNTR_FLAG_ACTIVE, which is a flag index, when checking if the
hardware supports active monitoring.

Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
---
 net/wireless/nl80211.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index af8d84a..626dc3b 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -2421,7 +2421,7 @@ static int nl80211_set_interface(struct sk_buff *skb, struct genl_info *info)
 		change = true;
 	}
 
-	if (flags && (*flags & NL80211_MNTR_FLAG_ACTIVE) &&
+	if (flags && (*flags & MONITOR_FLAG_ACTIVE) &&
 	    !(rdev->wiphy.features & NL80211_FEATURE_ACTIVE_MONITOR))
 		return -EOPNOTSUPP;
 
@@ -2483,7 +2483,7 @@ static int nl80211_new_interface(struct sk_buff *skb, struct genl_info *info)
 				  info->attrs[NL80211_ATTR_MNTR_FLAGS] : NULL,
 				  &flags);
 
-	if (!err && (flags & NL80211_MNTR_FLAG_ACTIVE) &&
+	if (!err && (flags & MONITOR_FLAG_ACTIVE) &&
 	    !(rdev->wiphy.features & NL80211_FEATURE_ACTIVE_MONITOR))
 		return -EOPNOTSUPP;
 
-- 
1.7.10.4


^ permalink raw reply related

* Re: [BUG] iwlwifi Microcode SW error (firmware version: 18.168.6.1)
From: Luciano Coelho @ 2013-08-29  4:52 UTC (permalink / raw)
  To: adam.gradzki; +Cc: linux-wireless
In-Reply-To: <2449090.W0ZgYRKzHN@nuclearreactor>

On Thu, 2013-08-29 at 00:38 -0400, adam.gradzki@gmail.com wrote:
> Hi Luca,
> 
> I was browsing the web while in a large hall with many connected wireless 
> clients. There were also several routers sharing a common SSID. I remember 
> playing with various RTS and fragmentation thresholds so this may have been 
> the trigger. The connection itself involved WPA2 Enterprise PEAP w/ MSCHAPv2 
> authentication. I wish I could go into more detail but I was browsing the 
> system log long after the fact so I'm having trouble remembering things off the 
> top of my head.
> 
> Linux laptop 3.10.9-1-ARCH #1 SMP PREEMPT Wed Aug 21 13:49:35 CEST 2013 x86_64 
> GNU/Linux

Thanks again! I'll follow this up internally.

--
Cheers,
Luca.


^ permalink raw reply

* Re: [BUG] iwlwifi Microcode SW error (firmware version: 18.168.6.1)
From: adam.gradzki @ 2013-08-29  4:38 UTC (permalink / raw)
  To: Luciano Coelho; +Cc: linux-wireless
In-Reply-To: <1377750599.4418.3.camel@porter.coelho.fi>

Hi Luca,

I was browsing the web while in a large hall with many connected wireless 
clients. There were also several routers sharing a common SSID. I remember 
playing with various RTS and fragmentation thresholds so this may have been 
the trigger. The connection itself involved WPA2 Enterprise PEAP w/ MSCHAPv2 
authentication. I wish I could go into more detail but I was browsing the 
system log long after the fact so I'm having trouble remembering things off the 
top of my head.

Linux laptop 3.10.9-1-ARCH #1 SMP PREEMPT Wed Aug 21 13:49:35 CEST 2013 x86_64 
GNU/Linux

Regards,
Adam


On Thursday, August 29, 2013 07:29:59 AM you wrote:
> Hi Adam,
> 
> On Thu, 2013-08-29 at 00:17 -0400, adam.gradzki@gmail.com wrote:
> > I would like to report a problem with the Intel iwlwifi driver
> > Here is what I found in my system log:
> > 
> > http://pastebin.com/j5cVsqzz
> 
> Thanks for reporting! Could you please give a bit more details on what
> you were doing when this happened? Just a simple connection to an AP?
> Heavy traffic?
> 
> --
> Cheers,
> Luca.


^ permalink raw reply

* Re: [BUG] iwlwifi Microcode SW error (firmware version: 18.168.6.1)
From: Luciano Coelho @ 2013-08-29  4:29 UTC (permalink / raw)
  To: adam.gradzki; +Cc: linux-wireless
In-Reply-To: <7144869.jC5clVvrrO@nuclearreactor>

Hi Adam,

On Thu, 2013-08-29 at 00:17 -0400, adam.gradzki@gmail.com wrote:
> I would like to report a problem with the Intel iwlwifi driver
> Here is what I found in my system log:
> 
> http://pastebin.com/j5cVsqzz

Thanks for reporting! Could you please give a bit more details on what
you were doing when this happened? Just a simple connection to an AP?
Heavy traffic?

--
Cheers,
Luca.


^ permalink raw reply

* [BUG] iwlwifi Microcode SW error (firmware version: 18.168.6.1)
From: adam.gradzki @ 2013-08-29  4:17 UTC (permalink / raw)
  To: linux-wireless

I would like to report a problem with the Intel iwlwifi driver
Here is what I found in my system log:

http://pastebin.com/j5cVsqzz

^ permalink raw reply

* Re: [PATCH] ath9k: ar9003_eeprom.c:3618 fix variable name typo
From: Sujith Manoharan @ 2013-08-29  2:22 UTC (permalink / raw)
  To: John W. Linville; +Cc: linux-wireless
In-Reply-To: <1377702550-11734-1-git-send-email-linville@tuxdriver.com>

John W. Linville wrote:
> From: "John W. Linville" <linville@tuxdriver.com>
> 
>    drivers/net/wireless/ath/ath9k/ar9003_eeprom.c: In function 'ar9003_hw_ant_ctrl_apply':
> >> drivers/net/wireless/ath/ath9k/ar9003_eeprom.c:3618: warning: 'regval' is used uninitialized in this function
> 
> It seems obvious that 'regval' should have been 'value'...

Good catch and thanks for the fix !

Sujith

^ permalink raw reply

* RE: sd8787 (mwifiex) on big endian system
From: Bing Zhao @ 2013-08-29  0:00 UTC (permalink / raw)
  To: Tobias Waldekranz; +Cc: linux-wireless@vger.kernel.org
In-Reply-To: <20130828115251.GA3504@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 491 bytes --]

Hi Tobias,

> mwifiex_sdio mmc0:0001:1: event: 1142011.264553: cause: 0x2e
> mwifiex_sdio mmc0:0001:1: AP EVENT: event id: 0x2e
> mwifiex_sdio mmc0:0001:1: cmd_wait_q terminated: -512
> mwifiex_sdio mmc0:0001:1: mwifiex_cmd_timeout_func: Timeout cmd id (1142021.275294) = 0xb1, act = 0x0

The SDIO_INT of the command response might have been missing for some reason.
Could you please apply the debug patch attached for checking the read_bitmap after a timeout?

Thanks,
Bing



[-- Attachment #2: int_missing.diff --]
[-- Type: application/octet-stream, Size: 2772 bytes --]

diff --git a/drivers/net/wireless/mwifiex/cmdevt.c b/drivers/net/wireless/mwifiex/cmdevt.c
index 2d76147..88fd41f 100644
--- a/drivers/net/wireless/mwifiex/cmdevt.c
+++ b/drivers/net/wireless/mwifiex/cmdevt.c
@@ -25,6 +25,7 @@
 #include "wmm.h"
 #include "11n.h"
 #include "11ac.h"
+#include "sdio.h"
 
 /*
  * This function initializes a command node.
@@ -902,8 +903,11 @@ mwifiex_cmd_timeout_func(unsigned long function_context)
 {
 	struct mwifiex_adapter *adapter =
 		(struct mwifiex_adapter *) function_context;
+	struct sdio_mmc_card *card = adapter->card;
+	const struct mwifiex_sdio_card_reg *reg = card->reg;
 	struct cmd_ctrl_node *cmd_node;
 	struct timeval tstamp;
+	u32 bitmap;
 
 	adapter->num_cmd_timeout++;
 	adapter->dbg.num_cmd_timeout++;
@@ -961,6 +965,21 @@ mwifiex_cmd_timeout_func(unsigned long function_context)
 		dev_err(adapter->dev, "ps_mode=%d ps_state=%d\n",
 			adapter->ps_mode, adapter->ps_state);
 
+		bitmap = (u32) card->mp_regs[reg->rd_bitmap_l];
+		bitmap |= ((u32) card->mp_regs[reg->rd_bitmap_u]) << 8;
+		dev_err(adapter->dev, "DBG: old: rd_bitmap=0x%x  0x%x\n",
+			card->mp_rd_bitmap, bitmap);
+		if (adapter->if_ops.read_data_sync) {
+			if (adapter->if_ops.read_data_sync(adapter, card->mp_regs,
+				   card->reg->max_mp_regs,
+				   REG_PORT | MWIFIEX_SDIO_BYTE_MODE_MASK, 0))
+				dev_err(adapter->dev, "DBG: read mp_regs failed\n");
+		}
+		bitmap = (u32) card->mp_regs[reg->rd_bitmap_l];
+		bitmap |= ((u32) card->mp_regs[reg->rd_bitmap_u]) << 8;
+		dev_err(adapter->dev, "DBG: new: rd_bitmap=0x%x  int=0x%x\n",
+			bitmap, card->mp_regs[HOST_INTSTATUS_REG]);
+
 		if (cmd_node->wait_q_enabled) {
 			adapter->cmd_wait_q.status = -ETIMEDOUT;
 			wake_up_interruptible(&adapter->cmd_wait_q.wait);
diff --git a/drivers/net/wireless/mwifiex/main.h b/drivers/net/wireless/mwifiex/main.h
index 1d72f13..a55d2fb 100644
--- a/drivers/net/wireless/mwifiex/main.h
+++ b/drivers/net/wireless/mwifiex/main.h
@@ -620,6 +620,8 @@ struct mwifiex_if_ops {
 	int (*dnld_fw) (struct mwifiex_adapter *, struct mwifiex_fw_image *);
 	void (*card_reset) (struct mwifiex_adapter *);
 	int (*clean_pcie_ring) (struct mwifiex_adapter *adapter);
+	int (*read_data_sync) (struct mwifiex_adapter *adapter, u8 *buffer,
+				  u32 len, u32 port, u8 claim);
 };
 
 struct mwifiex_adapter {
diff --git a/drivers/net/wireless/mwifiex/sdio.c b/drivers/net/wireless/mwifiex/sdio.c
index 1576104..58c0641 100644
--- a/drivers/net/wireless/mwifiex/sdio.c
+++ b/drivers/net/wireless/mwifiex/sdio.c
@@ -1958,6 +1958,7 @@ static struct mwifiex_if_ops sdio_ops = {
 	.cmdrsp_complete = mwifiex_sdio_cmdrsp_complete,
 	.event_complete = mwifiex_sdio_event_complete,
 	.card_reset = mwifiex_sdio_card_reset,
+	.read_data_sync = mwifiex_read_data_sync,
 };
 
 /*

^ permalink raw reply related

* [PATCH v2 rebased] staging: vt6656: device.h Replace typedef struct _RCB
From: Malcolm Priestley @ 2013-08-28 20:12 UTC (permalink / raw)
  To: gregkh; +Cc: linux-wireless

Replace with struct vnt_rcb

Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
---
 drivers/staging/vt6656/device.h   | 20 +++++++++-----------
 drivers/staging/vt6656/dpc.c      | 10 +++++-----
 drivers/staging/vt6656/dpc.h      |  4 ++--
 drivers/staging/vt6656/main_usb.c | 14 ++++++++------
 drivers/staging/vt6656/usbpipe.c  |  4 ++--
 drivers/staging/vt6656/usbpipe.h  |  2 +-
 6 files changed, 27 insertions(+), 27 deletions(-)

diff --git a/drivers/staging/vt6656/device.h b/drivers/staging/vt6656/device.h
index 3151c8f..8e39634 100644
--- a/drivers/staging/vt6656/device.h
+++ b/drivers/staging/vt6656/device.h
@@ -166,8 +166,7 @@ typedef enum _CONTEXT_TYPE {
 } CONTEXT_TYPE;
 
 /* RCB (Receive Control Block) */
-typedef struct _RCB
-{
+struct vnt_rcb {
 	void *Next;
 	signed long Ref;
 	void *pDevice;
@@ -175,8 +174,7 @@ typedef struct _RCB
 	struct vnt_rx_mgmt sMngPacket;
 	struct sk_buff *skb;
 	int bBoolInUse;
-
-} RCB, *PRCB;
+};
 
 /* used to track bulk out irps */
 struct vnt_usb_send_context {
@@ -416,14 +414,14 @@ struct vnt_private {
 	u32 int_interval;
 
 	/* Variables to track resources for the BULK In Pipe */
-	PRCB pRCBMem;
-	PRCB apRCB[CB_MAX_RX_DESC];
+	struct vnt_rcb *pRCBMem;
+	struct vnt_rcb *apRCB[CB_MAX_RX_DESC];
 	u32 cbRD;
-	PRCB FirstRecvFreeList;
-	PRCB LastRecvFreeList;
+	struct vnt_rcb *FirstRecvFreeList;
+	struct vnt_rcb *LastRecvFreeList;
 	u32 NumRecvFreeList;
-	PRCB FirstRecvMngList;
-	PRCB LastRecvMngList;
+	struct vnt_rcb *FirstRecvMngList;
+	struct vnt_rcb *LastRecvMngList;
 	u32 NumRecvMngList;
 	int bIsRxWorkItemQueued;
 	int bIsRxMngWorkItemQueued;
@@ -774,7 +772,7 @@ struct vnt_private {
 
 #define DequeueRCB(Head, Tail)                          \
 {                                                       \
-    PRCB   RCB = Head;                                  \
+    struct vnt_rcb *RCB = Head;                         \
     if (!RCB->Next) {                                   \
         Tail = NULL;                                    \
     }                                                   \
diff --git a/drivers/staging/vt6656/dpc.c b/drivers/staging/vt6656/dpc.c
index 4bc362f..ea7d443 100644
--- a/drivers/staging/vt6656/dpc.c
+++ b/drivers/staging/vt6656/dpc.c
@@ -246,7 +246,7 @@ s_vGetDASA (
     *pcbHeaderSize = cbHeaderSize;
 }
 
-int RXbBulkInProcessData(struct vnt_private *pDevice, PRCB pRCB,
+int RXbBulkInProcessData(struct vnt_private *pDevice, struct vnt_rcb *pRCB,
 	unsigned long BytesToIndicate)
 {
 	struct net_device_stats *pStats = &pDevice->stats;
@@ -271,7 +271,7 @@ int RXbBulkInProcessData(struct vnt_private *pDevice, PRCB pRCB,
 	/* signed long ldBm = 0; */
 	int bIsWEP = false; int bExtIV = false;
 	u32 dwWbkStatus;
-	PRCB pRCBIndicate = pRCB;
+	struct vnt_rcb *pRCBIndicate = pRCB;
 	u8 *pbyDAddress;
 	u16 *pwPLCP_Length;
 	u8 abyVaildRate[MAX_RATE]
@@ -1336,7 +1336,7 @@ static int s_bAPModeRxData(struct vnt_private *pDevice, struct sk_buff *skb,
 void RXvWorkItem(struct vnt_private *pDevice)
 {
 	int ntStatus;
-	PRCB pRCB = NULL;
+	struct vnt_rcb *pRCB = NULL;
 
     DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"---->Rx Polling Thread\n");
     spin_lock_irq(&pDevice->lock);
@@ -1354,7 +1354,7 @@ void RXvWorkItem(struct vnt_private *pDevice)
 
 }
 
-void RXvFreeRCB(PRCB pRCB, int bReAllocSkb)
+void RXvFreeRCB(struct vnt_rcb *pRCB, int bReAllocSkb)
 {
 	struct vnt_private *pDevice = pRCB->pDevice;
 
@@ -1391,7 +1391,7 @@ void RXvFreeRCB(PRCB pRCB, int bReAllocSkb)
 
 void RXvMngWorkItem(struct vnt_private *pDevice)
 {
-	PRCB pRCB = NULL;
+	struct vnt_rcb *pRCB = NULL;
 	struct vnt_rx_mgmt *pRxPacket;
 	int bReAllocSkb = false;
 
diff --git a/drivers/staging/vt6656/dpc.h b/drivers/staging/vt6656/dpc.h
index 876468f..95388dc 100644
--- a/drivers/staging/vt6656/dpc.h
+++ b/drivers/staging/vt6656/dpc.h
@@ -36,9 +36,9 @@ void RXvWorkItem(void *Context);
 
 void RXvMngWorkItem(void *Context);
 
-void RXvFreeRCB(PRCB pRCB, int bReAllocSkb);
+void RXvFreeRCB(struct vnt_rcb *pRCB, int bReAllocSkb);
 
-int RXbBulkInProcessData(struct vnt_private *, PRCB pRCB,
+int RXbBulkInProcessData(struct vnt_private *, struct vnt_rcb *pRCB,
 	unsigned long BytesToIndicate);
 
 #endif /* __RXTX_H__ */
diff --git a/drivers/staging/vt6656/main_usb.c b/drivers/staging/vt6656/main_usb.c
index 37d66a3..5369717 100644
--- a/drivers/staging/vt6656/main_usb.c
+++ b/drivers/staging/vt6656/main_usb.c
@@ -751,8 +751,8 @@ static void device_free_tx_bufs(struct vnt_private *pDevice)
 
 static void device_free_rx_bufs(struct vnt_private *pDevice)
 {
-    PRCB pRCB;
-    int ii;
+	struct vnt_rcb *pRCB;
+	int ii;
 
     for (ii = 0; ii < pDevice->cbRD; ii++) {
 
@@ -789,8 +789,8 @@ static void device_free_int_bufs(struct vnt_private *pDevice)
 static bool device_alloc_bufs(struct vnt_private *pDevice)
 {
 	struct vnt_usb_send_context *pTxContext;
-    PRCB pRCB;
-    int ii;
+	struct vnt_rcb *pRCB;
+	int ii;
 
     for (ii = 0; ii < pDevice->cbTD; ii++) {
 
@@ -811,7 +811,8 @@ static bool device_alloc_bufs(struct vnt_private *pDevice)
     }
 
     /* allocate RCB mem */
-	pDevice->pRCBMem = kzalloc((sizeof(RCB) * pDevice->cbRD), GFP_KERNEL);
+	pDevice->pRCBMem = kzalloc((sizeof(struct vnt_rcb) * pDevice->cbRD),
+								GFP_KERNEL);
     if (pDevice->pRCBMem == NULL) {
         DBG_PRT(MSG_LEVEL_ERR,KERN_ERR "%s : alloc rx usb context failed\n", pDevice->dev->name);
         goto free_tx;
@@ -822,7 +823,8 @@ static bool device_alloc_bufs(struct vnt_private *pDevice)
     pDevice->FirstRecvMngList = NULL;
     pDevice->LastRecvMngList = NULL;
     pDevice->NumRecvFreeList = 0;
-    pRCB = (PRCB) pDevice->pRCBMem;
+
+	pRCB = (struct vnt_rcb *)pDevice->pRCBMem;
 
     for (ii = 0; ii < pDevice->cbRD; ii++) {
 
diff --git a/drivers/staging/vt6656/usbpipe.c b/drivers/staging/vt6656/usbpipe.c
index 78749ef..3a03f1d 100644
--- a/drivers/staging/vt6656/usbpipe.c
+++ b/drivers/staging/vt6656/usbpipe.c
@@ -421,7 +421,7 @@ static void s_nsInterruptUsbIoCompleteRead(struct urb *urb)
  *
  */
 
-int PIPEnsBulkInUsbRead(struct vnt_private *pDevice, PRCB pRCB)
+int PIPEnsBulkInUsbRead(struct vnt_private *pDevice, struct vnt_rcb *pRCB)
 {
 	int ntStatus = 0;
 	struct urb *pUrb;
@@ -479,7 +479,7 @@ int PIPEnsBulkInUsbRead(struct vnt_private *pDevice, PRCB pRCB)
 
 static void s_nsBulkInUsbIoCompleteRead(struct urb *urb)
 {
-	PRCB pRCB = (PRCB)urb->context;
+	struct vnt_rcb *pRCB = (struct vnt_rcb *)urb->context;
 	struct vnt_private *pDevice = pRCB->pDevice;
 	unsigned long   bytesRead;
 	int bIndicateReceive = false;
diff --git a/drivers/staging/vt6656/usbpipe.h b/drivers/staging/vt6656/usbpipe.h
index e2a2bce..f537703 100644
--- a/drivers/staging/vt6656/usbpipe.h
+++ b/drivers/staging/vt6656/usbpipe.h
@@ -40,7 +40,7 @@ int PIPEnsControlIn(struct vnt_private *, u8 byRequest, u16 wValue,
 	u16 wIndex, u16 wLength,  u8 *pbyBuffer);
 
 int PIPEnsInterruptRead(struct vnt_private *);
-int PIPEnsBulkInUsbRead(struct vnt_private *, PRCB pRCB);
+int PIPEnsBulkInUsbRead(struct vnt_private *, struct vnt_rcb *pRCB);
 int PIPEnsSendBulkOut(struct vnt_private *,
 				struct vnt_usb_send_context *pContext);
 
-- 
1.8.1.2


^ permalink raw reply related

* Re: [PATCH] cfg80211: fix potential deadlock regression
From: Maxime Bizon @ 2013-08-28 19:49 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless, Johannes Berg
In-Reply-To: <1370377370-23055-1-git-send-email-johannes@sipsolutions.net>


On Tue, 2013-06-04 at 22:22 +0200, Johannes Berg wrote:
 
> -	rtnl_lock();
>  
>  	res = device_add(&rdev->wiphy.dev);
> +	if (res)
> +		return res;

I just ran across a regression caused by this commit

I'm again getting uevent notifications for wireless devices that are not
yet properly registered (ENODEV on NL80211 when using sysfs phy id)

I originally  fixed the bug by taking the cfg80211 mutex across the
whole registration:

commit 5a652052fedbd7869572c757dd2ffc2ed420c69d
Author: Maxime Bizon <mbizon@freebox.fr>
Date:   Wed Jul 21 17:21:38 2010 +0200

    cfg80211: fix race between sysfs and cfg80211
    
    device_add() is called before adding the phy to the cfg80211 device
    list.
    
    So if a userspace program uses sysfs uevents to detect new phy
    devices, and queries nl80211 to get phy info, it can get ENODEV even
    though the phy exists in sysfs.
    
    An easy workaround is to hold the cfg80211 mutex until the phy is
    present in sysfs/cfg80211/debugfs.


It does not seem we can reverse the rfkill_register() and device_add()
because wiphy dev is a parent of rfkill dev.

any idea to fix this ?

Thanks,

-- 
Maxime



^ permalink raw reply

* [PATCH] staging: vt6656: baseband.h re: baseband.c:877:26: sparse: incorrect type in assignment (different base types)
From: Malcolm Priestley @ 2013-08-28 19:52 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: kbuild test robot, kbuild-all, linux-wireless
In-Reply-To: <20130828000913.GB22736@kroah.com>

sparse warnings: (new ones prefixed by >>)
...
>> drivers/staging/vt6656/baseband.c:877:26: sparse: incorrect type in assignment (different base types)
   drivers/staging/vt6656/baseband.c:877:26:    expected unsigned short [unsigned] [usertype] len
   drivers/staging/vt6656/baseband.c:877:26:    got restricted __le16 [usertype] <noident>
>> drivers/staging/vt6656/baseband.c:880:26: sparse: incorrect type in assignment (different base types)
   drivers/staging/vt6656/baseband.c:880:26:    expected unsigned short [unsigned] [usertype] len
   drivers/staging/vt6656/baseband.c:880:26:    got restricted __le16 [usertype] <noident>

vnt_phy_field member len should be __le16.

Reported-by: kbuild test robot <fengguang.wu@intel.com>
Cc: kbuild-all@01.org
Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
---
 drivers/staging/vt6656/baseband.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/vt6656/baseband.h b/drivers/staging/vt6656/baseband.h
index a8db17d..79faedf4 100644
--- a/drivers/staging/vt6656/baseband.h
+++ b/drivers/staging/vt6656/baseband.h
@@ -85,7 +85,7 @@
 struct vnt_phy_field {
 	u8 signal;
 	u8 service;
-	u16 len;
+	__le16 len;
 } __packed;
 
 unsigned int
-- 
1.8.1.2


^ permalink raw reply related

* Re: pull-request: mac80211-next 2013-08-27
From: John W. Linville @ 2013-08-28 19:32 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless
In-Reply-To: <1377593792.20012.4.camel@jlt4.sipsolutions.net>

On Tue, Aug 27, 2013 at 10:56:32AM +0200, Johannes Berg wrote:
> John,
> 
> And I also have some more changes for -next, just a few small fixes and
> improvements, nothing really stands out.
> 
> johannes
> 
> 
> 
> The following changes since commit 27b3eb9c06a7193bdc9800cd00764a130343bc8a:
> 
>   mac80211: add APIs to allow keeping connections after WoWLAN (2013-08-16 12:58:43 +0200)
> 
> 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 a98655387762394371b88cdfb8215884757978ab:
> 
>   mac80211: fix change_interface queue assignments (2013-08-26 09:52:58 +0200)

Pulling now...

-- 
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

* Looking for ath6kl device
From: Lorenzo Nava @ 2013-08-28 19:22 UTC (permalink / raw)
  To: linux-wireless

Hi everybody,

I'm looking for a device which uses ath6kl driver. Anybody knows any
available devices with compatible chipset?

Thank you.
Cheers.

Lorenzo

^ permalink raw reply

* Re: pull-request: mac80211 2013-08-27
From: John W. Linville @ 2013-08-28 17:51 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless
In-Reply-To: <1377593647.20012.2.camel@jlt4.sipsolutions.net>

On Tue, Aug 27, 2013 at 10:54:07AM +0200, Johannes Berg wrote:
> John,
> 
> I know it's late, but I have one straggler for the current cycle. If you
> don't want to pull it any more, I guess it's not terribly important as
> it only affects some APs (though those are affected badly and no
> connection is possible.)
> 
> This patch fixes a regression with associating to some broken APs that
> send an ECSA IE in their probe responses.
> 
> johannes
> 
> The following changes since commit 75a423f493ffdf741acae27bf179cd560f7813d7:
> 
>   mac80211: ibss: fix ignored channel parameter (2013-08-21 15:33:08 +0200)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git for-john
> 
> for you to fetch changes up to d70b7616d9080ec9f868fbd31db5fd4341435d61:
> 
>   mac80211: ignore (E)CSA in probe response frames (2013-08-23 17:05:12 +0200)
> 
> ----------------------------------------------------------------
> Johannes Berg (1):
>       mac80211: ignore (E)CSA in probe response frames
> 
>  net/mac80211/mlme.c | 11 +++--------
>  1 file changed, 3 insertions(+), 8 deletions(-)

It looks nice to have, but not necessary for 3.11 -- I'll pull it
into wireless-next...

John

-- 
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: 802.11p
From: Simon Wunderlich @ 2013-08-28 17:47 UTC (permalink / raw)
  To: Marc Murphy; +Cc: linux-wireless@vger.kernel.org
In-Reply-To: <F690310232FDDF4AB457E8B3EF90DDE08D321AF2@MARCM-SBS2011.marcmltd.local>

[-- Attachment #1: Type: text/plain, Size: 509 bytes --]

On Wed, Aug 28, 2013 at 03:57:59PM +0000, Marc Murphy wrote:
> Yes I saw that post but no response, it was 6 weeks ago.
> I have had more success finding the source used for the GCDC and looking to see how different it is from the mainline kernel drivers.
> 
> Next is to find an Atheros USB 802.11a stick to do some tests with.

If you want to use the GCDC patchset, use some Atheros Mini-PCI hardware. I'd doubt that these patches
will work with anything different from ath5k. :)

Cheers,
	Simon

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply

* Re: [PATCH] mac80211: add ieee80211_iterate_active_interfaces_rtnl()
From: Johannes Berg @ 2013-08-28 17:00 UTC (permalink / raw)
  To: linux-wireless
In-Reply-To: <1377605145-21353-1-git-send-email-johannes@sipsolutions.net>

On Tue, 2013-08-27 at 14:05 +0200, Johannes Berg wrote:
> From: Johannes Berg <johannes.berg@intel.com>
> 
> If it is needed to disconnect multiple virtual interfaces after
> (WoWLAN-) suspend, the most obvious approach would be to iterate
> all interfaces by calling ieee80211_iterate_active_interfaces()
> and then call ieee80211_resume_disconnect() for each one. This
> is what the iwlmvm driver does.

Applied.

johannes


^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox