Linux wireless drivers development
 help / color / mirror / Atom feed
* Re: [PATCH] nl80211/drivers: change bss channel to chandef
From: Johannes Berg @ 2013-06-21 20:59 UTC (permalink / raw)
  To: Simon Wunderlich; +Cc: linux-wireless, Simon Wunderlich
In-Reply-To: <1371737435-5694-1-git-send-email-siwu@hrz.tu-chemnitz.de>

On Thu, 2013-06-20 at 16:10 +0200, Simon Wunderlich wrote:

> --- a/include/net/cfg80211.h
> +++ b/include/net/cfg80211.h
> @@ -1402,7 +1402,7 @@ struct cfg80211_bss_ies {
>   * This structure describes a BSS (which may also be a mesh network)
>   * for use in scan results and similar.
>   *
> - * @channel: channel this BSS is on
> + * @chandef: chandef of the channel this BSS is on

I don't think this makes a lot of sense. The chandefs were defined to be
able to capture things like 80+80 MHz, and there's no way that will be
used here. I think it would make more sense to define a separate "scan
width" or so that can only represent the values 5/10/20.

> +++ b/net/mac80211/ibss.c
> @@ -246,7 +246,7 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
>  	mod_timer(&ifibss->timer,
>  		  round_jiffies(jiffies + IEEE80211_IBSS_MERGE_INTERVAL));
>  
> -	bss = cfg80211_inform_bss_frame(local->hw.wiphy, chan,
> +	bss = cfg80211_inform_bss_frame(local->hw.wiphy, &chandef,

In fact I think this might even create a 40 MHz BSS which would be
strange.

> +++ b/net/wireless/nl80211.c
> @@ -5608,7 +5608,8 @@ static int nl80211_send_bss(struct sk_buff *msg, struct netlink_callback *cb,
>  	    nla_put_u16(msg, NL80211_BSS_BEACON_INTERVAL, res->beacon_interval))
>  		goto nla_put_failure;
>  	if (nla_put_u16(msg, NL80211_BSS_CAPABILITY, res->capability) ||
> -	    nla_put_u32(msg, NL80211_BSS_FREQUENCY, res->channel->center_freq) ||
> +	    nla_put_u32(msg, NL80211_BSS_FREQUENCY,
> +			res->chandef.chan->center_freq) ||
>  	    nla_put_u32(msg, NL80211_BSS_SEEN_MS_AGO,
>  			jiffies_to_msecs(jiffies - intbss->ts)))
>  		goto nla_put_failure;

You should also advertise the width to userspace.

> @@ -5887,10 +5888,9 @@ static int nl80211_authenticate(struct sk_buff *skb, struct genl_info *info)
>  		return -EOPNOTSUPP;
>  
>  	bssid = nla_data(info->attrs[NL80211_ATTR_MAC]);
> -	chan = ieee80211_get_channel(&rdev->wiphy,
> -		nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ]));
> -	if (!chan || (chan->flags & IEEE80211_CHAN_DISABLED))
> -		return -EINVAL;
> +	err = nl80211_parse_chandef(rdev, info, &chandef);
> +	if (!err)
> +		return err;

This also doesn't make sense, you'd allow asking for a 40 MHz channel.
That doesn't mean anything though.

Anyway, this is a bit pointless since __cfg80211_mlme_auth() will look
up the BSS entry for the given parameters and pass _it_, so unless you
need to support two APs using the same BSSID on the same channel but
with different channel widths (which seems really unlikely) then nothing
is needed here.

It might also be worthwhile to rename the inform_bss() functions and
provide static inline wrappers for the current behaviour, since the 5/10
MHz support is really something of a special case and not all drivers
really need that.

johannes


^ permalink raw reply

* Re: [PATCH] mac80211: fix the kernel panic on ath_tx_aggr_wakeup on mesh
From: Johannes Berg @ 2013-06-21 20:48 UTC (permalink / raw)
  To: Chun-Yeow Yeoh; +Cc: linux-wireless, linville, devel
In-Reply-To: <1371803215-2685-1-git-send-email-yeohchunyeow@gmail.com>

On Fri, 2013-06-21 at 16:26 +0800, Chun-Yeow Yeoh wrote:
> The is to fix the kernel panic happens if user space inserts the mesh
> STA and not proceed with the SAE and AMPE, and later the same mesh STA
> is detected again. The sta_state of the mesh STA remains at
> IEEE80211_STA_NONE and if the ieee80211_sta_ps_deliver_wakeup
> is called and subsequently the ath_tx_aggr_wakeup, the kernel panic due
> to ath_tx_node_init is not called before to initialize the require data
> structures.

I'd like to have a less ath9k-centric description, and particularly
subject, please.

> Thomas Perdersen

I think you misspelled that :)

> also mentioned that this patch has fixed the
> bad sta magic warning in mac80211_hwsim_set_tim() when applied to
> mac80211-next/master

"The bad sta magic warning"? That sounds like everyone should know about
that, but I don't think I do, or maybe it just slipped my mind?

johannes


^ permalink raw reply

* pull request: wireless-next 2013-06-21
From: John W. Linville @ 2013-06-21 20:09 UTC (permalink / raw)
  To: davem; +Cc: linux-wireless, netdev

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

Dave,

I would guess that this is the last big wireless pull request before
the 3.11 merge window...

Regarding the mac80211 bits, Johannes says:

"I have a number of mesh fixes and improvements from Colleen, Jacob,
Ashok and Thomas, powersave fixes in mac80211 from Alex, improved
management-TX from Antonio, and a few various things, including locking
fixes, from others and myself. Overall though, nothing really stands
out."

As for the iwlwifi bits, Johannes says:

"Emmanuel contributed two AP mode fixes, removed an unused field, fixed a
comment and added a warning for something that shouldn't happen in
practice, and I removed the declaration of a function that doesn't even
exist and cleaned up a small include."

"This time I have a number of cleanups, a small fix from Emmanuel and two
performance improvements that combined reduce our driver's CPU
utilisation as much as 75% in high TX-throughput scenarios."

"These two patches fix two issues with using rfkill randomly during
traffic, which would then cause our driver to stop working and not be
able to recover at all."

Regarding the ath6kl bits, Kalle says:

"Here are few simple patches for ath6kl. We have a suspend crash fix for
USB from Shafi, use of mac_pton(), a compiler warning fix and a fix for
module initialisation error path."

Kalle also sends the biggest single item of note, the new ath10k
driver for Qualcomm Atheros 802.11ac CQA98xx devices.

Included is an NFC pull, of which Samuel says:

"These are the pending NFC patches for the 3.11 merge window.

It contains the pending fixes that were on nfc-fixes (nfc-fixes-3.10-2),
along with a few more for the pn544 and pn533 drivers, the LLCP
disconnection path and an LLCP memory leak.

Highlights for this one are:

- An initial secure element API. NFC chipsets can carry an embedded
  secure element or get access to the SIM one. In both cases they
  control the secure elements and this API provides a way to discover,
  enable and disable the available SEs. It also exports that to
  userspace in order for SE focused middleware to actually do something
  with them (e.g. payments).

- NCI over SPI support. SPI is the most complex NCI specified transport
  layer and we now have support for it in the kernel. The next step will
  be to implement drivers for NCI chipsets using this transport like
  e.g. bcm2079x.

- NFC p2p hardware simulation driver. We now have an nfcsim driver that
  is mostly a loopback device between 2 NFC interfaces. It also
  implements the rest of the NFC core API like polling and target
  detection. This driver, with neard running on top of it, allows us to
  completely test the LLCP, SNEP and Handover implementation without
  physical hardware.

- A Firmware update netlink API. Most (All ?) HCI chipsets have a
  special firmware update mode where applications can push a new
  firmware that will be flashed. We now have a netlink API for providing
  that mode to e.g. nfctool."

On top of all that, there are a variety of updates to brcmfmac,
iwlegacy, rtlwifi, wil6210, and the TI wl12xx drivers.  As usual,
the bcma and ssb busses get a little love as well, as do a handful
of others here and there.

Please let me know if there are problems!

Thanks,

John

---

The following changes since commit fedaf4ffc224a194e2d13a3ec2abe5df0bc94258:

  ndisc: Convert use of typedef ctl_table to struct ctl_table (2013-06-19 23:18:07 -0700)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next.git for-davem

for you to fetch changes up to 7d2a47aab2a511c87a96238977e04e6378969d45:

  Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem (2013-06-21 15:42:30 -0400)

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

Alexander Bondar (2):
      mac80211: fix powersave bug and clean up ieee80211_rx_bss_info
      mac80211: Use suitable semantics for beacon availability indication

Alexey Khoroshilov (1):
      orinoco_usb: fix memory leak in ezusb_access_ltv() when device disconnected

Amitkumar Karwar (4):
      mwifiex: fix regression issue for usb interface
      mwifiex: code rearrangement for better readability
      mwifiex: add basic 11h support for station
      mwifiex: channel switch handling for station

Andy Shevchenko (1):
      wireless: ath6kl: re-use native helper to parse MAC

Antonio Quartulli (5):
      mac80211: make mgmt_tx accept a NULL channel
      brcm80211: make mgmt_tx in brcmfmac accept a NULL channel
      ath6kl: make mgmt_tx accept a NULL channel
      nl80211: allow sending CMD_FRAME without specifying any frequency
      brcm80211: fix null pointer access

Arend van Spriel (15):
      brcmfmac: allow firmware-signal tlv to be longer than specified
      brcmfmac: remove fifo bitfield from brcmf_skbuff_cb::if_flags
      brcmfmac: rework credit pickup to assure consistent handling
      brcmfmac: explicitly indicate sk_buff is sent upon request credit
      brcmfmac: reducing debug logging in firmware-signalling code
      brcmfmac: fix send_pkts statistic counter in firmware-signalling
      brcmfmac: add trace event for capturing BDC header
      brcmfmac: increment hard_header_len instead of overriding
      brcmfmac: Sent TIM information in case of data available.
      brcmfmac: free primary net_device when brcmf_bus_start() fails
      brcmfmac: add debugfs statistics for firmware-signalling
      brcmfmac: rename variable prec to more appropriate name, ie. fifo
      brcmfmac: remove dependency with nl80211.h
      brcmfmac: consolidate mac_descriptor related function names
      brcmfmac: simplify dpc handling using atomic operations

Arik Nemtsov (2):
      wlcore: cancel channel switch work on interface removal
      wlcore: hold jiffies in unsigned long

Arron Wang (2):
      NFC: pn544: Identify Type F NFC-DEP through NFCID2
      NFC: pn544: Remove Felica and Jewel device presence check

Ashok Nagarajan (1):
      {nl,mac,cfg}80211: Allow user to configure basic rates for mesh

Avinash Patil (2):
      mwifiex: enable/disable tx_amsdu support via module parameter
      mwifiex: Add module parameter for regdomain

Cho, Yu-Chen (1):
      Bluetooth: Add support for Mediatek Bluetooth device [0e8d:763f]

Christian Lamparter (1):
      carl9170: add support for the new rate control API

Colleen Twitty (2):
      {nl,cfg}80211: make peer link expiration time configurable
      mac80211: expire mesh peers based on mesh configuration

Dan Carpenter (1):
      ath10k: off by one sanity check

Daniel Drake (1):
      mwifiex: fix memory corruption when unsetting multicast list

David Spinadel (1):
      iwlwifi: remove calib channel section from PHY DB

Eliad Peller (1):
      wlcore: configure rates in multiple cases

Emmanuel Grumbach (9):
      iwlwifi: mvm: remove unused wait_for_ba field
      iwlwifi: mvm: fix irrelevant comment
      iwlwifi: ignore 0-length PHY DB sections
      iwlwifi: mvm: properly tell the fw that a STA is awake
      iwlwifi: mvm: don't set the MCAST queue in STA's queue list
      iwlwifi: mvm: take the seqno from packet if transmit failed
      iwlwifi: mvm: remove obsolete comment
      iwlwifi: pcie: fix race in queue unmapping
      iwlwifi: pcie: wake the queue if stopped when being unmapped

Eric Lapuyade (2):
      NFC: Add firmware upload netlink command
      NFC: HCI: Implement fw_upload ops

Felix Fietkau (5):
      mac80211: add a tx control flag to indicate PS-Poll/uAPSD response
      nl80211: add kernel-doc for NL80211_FEATURE_ACTIVE_MONITOR
      ath9k: add support for IEEE80211_TX_CTL_PS_RESPONSE
      ath9k: implement support for .release_buffered_frames()
      ath9k: limit multicast buffer hardware queue depth

Franky Lin (3):
      brcmfmac: remove redundant chip ID check in dhd_sdio
      brcmfmac: replace brcmf_sdioh_request_buffer with brcmf_sdio_buffrw
      brcmfmac: add sdio sg list support

Frederic Danis (4):
      NFC: NCI: Fix skb->dev usage
      NFC: Add basic NCI over SPI
      NFC: Add NCI over SPI send
      NFC: Add NCI over SPI receive

Gabor Juhos (15):
      rt2x00: rt2x00queue: add priv_size field to struct data_queue
      rt2x00: rt2x00queue: remove qdesc parameter of rt2x00queue_alloc_entries
      rt2x00: rt2x00dev: use rt2x00dev->bcn->limit
      rt2x00: rt2x00queue: setup queue->threshold from queue->limit
      rt2x00: add queue_init callback to rt2x00_ops
      rt2x00: rt2800usb: implement queue_init callback
      rt2x00: rt2800pci: implement queue_init callback
      rt2x00: rt73usb: implement queue_init callback
      rt2x00: rt2400pci: implement queue_init callback
      rt2x00: rt2500pci: implement queue_init callback
      rt2x00: rt61pci: implement queue_init callback
      rt2x00: rt2500usb: implement queue_init callback
      rt2x00: remove data_queue_desc struct
      rt2x00: move extra_tx_headroom field from rt2x00_ops to rt2x00_dev
      rt2x00: rt2800usb: nuke rt2800usb_ops_5592

Geert Uytterhoeven (1):
      ath6kl: Unify sg_sz and buf_sz in ath6kl_sdio_alloc_prep_scat_req()

Hante Meuleman (12):
      brcmfmac: Take bus flowcontrol at credit mgmt into account.
      brcmfmac: On bus flow control use fw signalling or netif.
      brcmfmac: For FW signalling it is necessary to track gen bit.
      brcmfmac: Correct creditmap when credit borrowing is active.
      brcmfmac: Find correct MAC descriptor in case of TDLS.
      brcmfmac: fix invalid ifp lookup in firmware-signalling
      brcmfmac: Accept only first creditmap event.
      brcmfmac: Signalling header push and pull on logic places.
      brcmfmac: Fix endless loop when brcmf_fws_commit_skb fails.
      brcmfmac: Simplify counting transit count.
      brcmfmac: Always use fifo_credits, also for requested credits.
      brcmfmac: Only use credits for bcmc when firmware indicates it.

Hauke Mehrtens (4):
      wil6210: fix name of tracing config option
      b43: ensue that BCMA is "y" when B43 is "y"
      bcma: activate PCI host option by default
      b43: activate N-PHY and HT-PHY support by default

Ido Reis (1):
      wl18xx: FDSP Code RAM Corruption fix

Ilan Peer (1):
      iwlwifi: mvm: Update the supported interface combinations

Jacob Minshall (1):
      mac80211: set mesh formation field properly

Johannes Berg (18):
      cfg80211: take WoWLAN support information out of wiphy struct
      nl80211: remove bogus genlmsg_end() error checking
      Merge remote-tracking branch 'wireless-next/master' into HEAD
      cfg80211/mac80211: clean up cfg80211 SME APIs
      cfg80211: separate internal SME implementation
      regulatory: use proper enum return value
      cfg80211: fix potential deadlock regression
      cfg80211: make wiphy index start at 0 again
      wireless: fix kernel-doc
      iwlwifi: mvm: remove iwl_mvm_dbgfs_set_fw_dbg_log declaration
      cfg80211: fix rtnl leak in wiphy dump error cases
      iwlwifi: include export.h instead of module.h
      Merge remote-tracking branch 'wireless-next/master' into iwlwifi-next
      iwlwifi: make TX seqno validation more efficient
      iwlwifi: pcie: don't read INTA register in ICT IRQ handler
      iwlwifi: reduce debug ifdefs using the optimiser
      iwlwifi: mvm: mark scratch area in TX command
      iwlwifi: create opmode/device dependencies

John W. Linville (11):
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless
      Merge branch 'for-john' of git://git.kernel.org/.../iwlwifi/iwlwifi-next
      Merge branch 'for-john' of git://git.kernel.org/.../jberg/mac80211-next
      Merge branch 'for-linville' of git://github.com/kvalo/ath6kl
      Merge branch 'for-linville-ath10k' of git://github.com/kvalo/ath6kl
      Merge branch 'for-john' of git://git.kernel.org/.../iwlwifi/iwlwifi-next
      Merge tag 'nfc-next-3.11-1' of git://git.kernel.org/.../sameo/nfc-next
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless
      Merge branch 'for-john' of git://git.kernel.org/.../iwlwifi/iwlwifi-fixes
      Merge branch 'for-linville' of git://git.kernel.org/.../luca/wl12xx
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-next into for-davem

Jouni Malinen (1):
      cfg80211: fix VHT TDLS peer AID verification

Kalle Valo (1):
      ath10k: mac80211 driver for Qualcomm Atheros 802.11ac CQA98xx devices

Kirshenbaum Erez (1):
      wil6210: Fix AP/PCP start flow

Larry Finger (2):
      rtlwifi: rtl8192cu: Add new USB ID for TP-Link TL-WN8200ND
      rtlwifi: rtl8192cu: Fix duplicate if test

Luciano Coelho (3):
      wlcore: some non-functional clean-ups in main.c
      wlcore: move sysfs handling to a separate file
      wl18xx: use locally administered MAC address if not available from fuse

Luis R. Rodriguez (1):
      ath: add VHT80 support for regulatory domains

Mohammed Shafi Shajakhan (2):
      ath6kl: Rename USB driver's suspend/resume/reset_resume
      ath6kl: Fix a suspend/resume crash in AR6004 USB

Oleksij Rempel (1):
      ath9k_htc: add STBC TX support

Olivier Guiter (1):
      NFC: pn533: Fix ACR122 related debug output

Oren Givon (1):
      iwlwifi: mvm: removed an unused parameter from a function

Peter Huewe (1):
      net/wireless/ti/wlcore/spi: Use module_spi_driver to register driver

Pontus Fuchs (1):
      mac80211: set IEEE80211_TX_CTL_REQ_TX_STATUS on nullframes

Rafał Miłecki (5):
      bcma: update core (en|dis)abling functions
      ssb: use const for serial flash hardware table
      bcma: use const for serial flash hardware table
      ssb: add struct for serial flash
      ssb: register serial flash as platform device

Raja Mani (1):
      ath6kl: Check wmi ready event status before validating abi version

Sachin Kamat (2):
      net: wireless: wl1251: Use module_spi_driver macro
      net: wireless: wl1251: Fix commenting style

Samuel Ortiz (14):
      NFC: HCI: Follow a positive code path in the HCI ops implementations
      NFC: pn533: Use 0x3 for SENSF_REQ Time Slot Number (TSN)
      NFC: pn533: Copy NFCID2 through ATR_REQ
      NFC: Remove the static supported_se field
      NFC: Extend and fix the internal secure element API
      NFC: Add secure elements addition and removal API
      NFC: Send netlink events for secure elements additions and removals
      NFC: Remove and free all SEs when releasing an NFC device
      NFC: Add secure element enablement internal API
      NFC: Add secure element enablement netlink API
      NFC: llcp: Fix non blocking sockets connections
      NFC: llcp: Do not send pending Tx frames when the remote is not ready
      NFC: llcp: Set the LLC Link Management well known service bit
      NFC: llcp: Fix the well known services endianness

Stanislaw Gruszka (5):
      iwlegacy: small refactoring of il_{stop,wake}_queue
      iwlegacy: add il_{stop,wake}_queues_by_reason functions
      iwl4965: workaround for firmware frame tx rejection
      iwl3945: workaround for firmware frame tx rejection
      Revert "iwl4965: workaround connection regression on passive channel"

Sujith Manoharan (21):
      ath9k: Fix OFDM weak signal detection for AP mode
      ath9k: Fix ANI monitoring
      ath9k: Fix ANI levels
      ath9k: Fix ofdm weak signal configuration
      ath9k: Remove redundant code
      ath9k: Remove unused ANI macros
      ath9k_hw: Assign default xlna config for AR9485
      ath9k: Fix noisefloor calibration
      ath9k: Do not assign noise for NULL caldata
      ath9k: Fix ANI trigger threshold
      ath9k: Add custom parameters for CUS198
      ath9k: Fix LNA gpio for AR9485
      ath9k: Fix ANI for AP mode
      ath9k: Merge HWTIMER debug level with BTCOEX
      ath9k: Convert a couple of debug messages
      ath9k: Update AR9462 2.0 initvals
      ath9k: Add support for 5G-XLNA/AR9462
      ath9k: Modify IDs to identify CUS230
      ath9k: Add PCI IDs for CUS217
      ath9k: Add initvals required for CUS217
      ath9k: Program initvals for CUS217

Thierry Escande (4):
      NFC: Rename nfc_llcp_disconnect() to nfc_llcp_send_disconnect()
      NFC: Keep socket alive until the DISC PDU is actually sent
      NFC: Fix a potential memory leak
      NFC: Add a nfc hardware simulation driver

Thomas Huehn (1):
      ath5k: make use of the new rate control API

Thomas Pedersen (2):
      mac80211: don't check local mesh TTL on TX
      mac80211: fix mesh deadlock

Valentin Ilie (1):
      NFC: mei_phy: Clean up file

Victor Goldenshtein (1):
      wlcore: fix occasional AP TX stop after recovery

Vladimir Kondratiev (6):
      wil6210: fix timeout for start_pcp
      wil6210: map more FW memory
      wil6210: improve frame type reporting
      wil6210: Derive IE's for AP
      wil6210: Send EAPOL frames using normal Tx queue
      wil6210: Init Rx vring right after reset

Wei Yongjun (3):
      iwlegacy: fix error return code in il3945_pci_probe()
      Bluetooth: btmrvl: fix error return code in btmrvl_sdio_card_to_host()
      NFC: pn533: Fix error return code in pn533_probe()

Yoni Divinsky (1):
      wlcore: set default_wep_key when configured

 Documentation/DocBook/80211.tmpl                   |   11 +-
 drivers/bcma/Kconfig                               |    1 +
 drivers/bcma/core.c                                |   28 +-
 drivers/bcma/driver_chipcommon_sflash.c            |    8 +-
 drivers/bluetooth/btmrvl_sdio.c                    |    1 +
 drivers/bluetooth/btusb.c                          |    3 +
 drivers/net/wireless/ath/Kconfig                   |    1 +
 drivers/net/wireless/ath/Makefile                  |    1 +
 drivers/net/wireless/ath/ath.h                     |   13 +-
 drivers/net/wireless/ath/ath10k/Kconfig            |   39 +
 drivers/net/wireless/ath/ath10k/Makefile           |   20 +
 drivers/net/wireless/ath/ath10k/bmi.c              |  295 ++
 drivers/net/wireless/ath/ath10k/bmi.h              |  224 ++
 drivers/net/wireless/ath/ath10k/ce.c               | 1189 ++++++++
 drivers/net/wireless/ath/ath10k/ce.h               |  516 ++++
 drivers/net/wireless/ath/ath10k/core.c             |  665 +++++
 drivers/net/wireless/ath/ath10k/core.h             |  369 +++
 drivers/net/wireless/ath/ath10k/debug.c            |  503 ++++
 drivers/net/wireless/ath/ath10k/debug.h            |   90 +
 drivers/net/wireless/ath/ath10k/hif.h              |  137 +
 drivers/net/wireless/ath/ath10k/htc.c              | 1000 +++++++
 drivers/net/wireless/ath/ath10k/htc.h              |  368 +++
 drivers/net/wireless/ath/ath10k/htt.c              |  152 +
 drivers/net/wireless/ath/ath10k/htt.h              | 1338 +++++++++
 drivers/net/wireless/ath/ath10k/htt_rx.c           | 1167 ++++++++
 drivers/net/wireless/ath/ath10k/htt_tx.c           |  510 ++++
 drivers/net/wireless/ath/ath10k/hw.h               |  304 ++
 drivers/net/wireless/ath/ath10k/mac.c              | 3066 ++++++++++++++++++++
 drivers/net/wireless/ath/ath10k/mac.h              |   61 +
 drivers/net/wireless/ath/ath10k/pci.c              | 2506 ++++++++++++++++
 drivers/net/wireless/ath/ath10k/pci.h              |  355 +++
 drivers/net/wireless/ath/ath10k/rx_desc.h          |  990 +++++++
 drivers/net/wireless/ath/ath10k/targaddrs.h        |  449 +++
 drivers/net/wireless/ath/ath10k/trace.c            |   20 +
 drivers/net/wireless/ath/ath10k/trace.h            |  170 ++
 drivers/net/wireless/ath/ath10k/txrx.c             |  417 +++
 drivers/net/wireless/ath/ath10k/txrx.h             |   39 +
 drivers/net/wireless/ath/ath10k/wmi.c              | 2081 +++++++++++++
 drivers/net/wireless/ath/ath10k/wmi.h              | 3052 +++++++++++++++++++
 drivers/net/wireless/ath/ath5k/base.c              |   79 +-
 drivers/net/wireless/ath/ath5k/base.h              |   14 +-
 drivers/net/wireless/ath/ath5k/mac80211-ops.c      |    2 +-
 drivers/net/wireless/ath/ath6kl/cfg80211.c         |   51 +-
 drivers/net/wireless/ath/ath6kl/debug.c            |    8 +-
 drivers/net/wireless/ath/ath6kl/init.c             |   14 +-
 drivers/net/wireless/ath/ath6kl/sdio.c             |   12 +-
 drivers/net/wireless/ath/ath6kl/usb.c              |   36 +-
 drivers/net/wireless/ath/ath9k/ani.c               |   32 +-
 drivers/net/wireless/ath/ath9k/ani.h               |   11 +-
 drivers/net/wireless/ath/ath9k/ar9003_eeprom.c     |   26 +-
 drivers/net/wireless/ath/ath9k/ar9003_hw.c         |   22 +-
 drivers/net/wireless/ath/ath9k/ar9003_phy.c        |   97 +
 drivers/net/wireless/ath/ath9k/ar9003_phy.h        |    2 +
 .../net/wireless/ath/ath9k/ar9462_2p0_initvals.h   |  282 +-
 drivers/net/wireless/ath/ath9k/ath9k.h             |   13 +
 drivers/net/wireless/ath/ath9k/beacon.c            |   23 +-
 drivers/net/wireless/ath/ath9k/calib.c             |    1 -
 drivers/net/wireless/ath/ath9k/htc.h               |    1 +
 drivers/net/wireless/ath/ath9k/htc_drv_init.c      |    3 +
 drivers/net/wireless/ath/ath9k/htc_drv_main.c      |    2 +
 drivers/net/wireless/ath/ath9k/hw.c                |    9 +-
 drivers/net/wireless/ath/ath9k/hw.h                |    7 +
 drivers/net/wireless/ath/ath9k/init.c              |   46 +-
 drivers/net/wireless/ath/ath9k/main.c              |    8 +-
 drivers/net/wireless/ath/ath9k/pci.c               |   44 +
 drivers/net/wireless/ath/ath9k/xmit.c              |  333 ++-
 drivers/net/wireless/ath/carl9170/carl9170.h       |    3 +
 drivers/net/wireless/ath/carl9170/main.c           |    3 +
 drivers/net/wireless/ath/carl9170/tx.c             |  182 +-
 drivers/net/wireless/ath/regd.c                    |    6 +-
 drivers/net/wireless/ath/wil6210/Kconfig           |    2 +-
 drivers/net/wireless/ath/wil6210/cfg80211.c        |   34 +-
 drivers/net/wireless/ath/wil6210/main.c            |   42 +-
 drivers/net/wireless/ath/wil6210/txrx.c            |   20 +-
 drivers/net/wireless/ath/wil6210/wil6210.h         |    1 -
 drivers/net/wireless/ath/wil6210/wmi.c             |   47 +-
 drivers/net/wireless/b43/Kconfig                   |    6 +-
 drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c   |  179 +-
 .../net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c |  114 +-
 drivers/net/wireless/brcm80211/brcmfmac/dhd.h      |    2 +
 drivers/net/wireless/brcm80211/brcmfmac/dhd_cdc.c  |    3 +
 drivers/net/wireless/brcm80211/brcmfmac/dhd_dbg.c  |   18 +-
 drivers/net/wireless/brcm80211/brcmfmac/dhd_dbg.h  |    6 +-
 .../net/wireless/brcm80211/brcmfmac/dhd_linux.c    |   23 +-
 drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c |  176 +-
 drivers/net/wireless/brcm80211/brcmfmac/fweh.h     |    3 +-
 drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c |  787 +++--
 drivers/net/wireless/brcm80211/brcmfmac/fwsignal.h |    1 +
 .../net/wireless/brcm80211/brcmfmac/sdio_host.h    |   15 +-
 .../net/wireless/brcm80211/brcmfmac/tracepoint.h   |   21 +
 drivers/net/wireless/brcm80211/brcmfmac/usb.c      |    8 +
 .../net/wireless/brcm80211/brcmfmac/wl_cfg80211.c  |   18 +-
 drivers/net/wireless/cw1200/main.c                 |   13 +-
 drivers/net/wireless/iwlegacy/3945-mac.c           |    3 +-
 drivers/net/wireless/iwlegacy/3945.c               |   18 +
 drivers/net/wireless/iwlegacy/4965-mac.c           |   21 +-
 drivers/net/wireless/iwlegacy/common.c             |   11 +
 drivers/net/wireless/iwlegacy/common.h             |   41 +-
 drivers/net/wireless/iwlwifi/Makefile              |    6 +-
 drivers/net/wireless/iwlwifi/dvm/dev.h             |    3 +
 drivers/net/wireless/iwlwifi/dvm/mac80211.c        |   17 +-
 drivers/net/wireless/iwlwifi/dvm/main.c            |    7 -
 drivers/net/wireless/iwlwifi/iwl-config.h          |    4 +
 drivers/net/wireless/iwlwifi/iwl-debug.h           |    4 +
 drivers/net/wireless/iwlwifi/iwl-drv.h             |    3 +-
 drivers/net/wireless/iwlwifi/iwl-modparams.h       |    2 +
 drivers/net/wireless/iwlwifi/iwl-phy-db.c          |   39 +-
 drivers/net/wireless/iwlwifi/mvm/d3.c              |   15 +-
 drivers/net/wireless/iwlwifi/mvm/fw-api-tx.h       |    9 +-
 drivers/net/wireless/iwlwifi/mvm/mac-ctxt.c        |    5 +-
 drivers/net/wireless/iwlwifi/mvm/mac80211.c        |   37 +-
 drivers/net/wireless/iwlwifi/mvm/mvm.h             |    6 +-
 drivers/net/wireless/iwlwifi/mvm/sta.c             |   11 +-
 drivers/net/wireless/iwlwifi/mvm/sta.h             |    2 -
 drivers/net/wireless/iwlwifi/mvm/tx.c              |    5 +-
 drivers/net/wireless/iwlwifi/pcie/drv.c            |    4 +
 drivers/net/wireless/iwlwifi/pcie/internal.h       |    2 +
 drivers/net/wireless/iwlwifi/pcie/rx.c             |   44 +-
 drivers/net/wireless/iwlwifi/pcie/tx.c             |   23 +-
 drivers/net/wireless/mwifiex/11h.c                 |  101 +
 drivers/net/wireless/mwifiex/Makefile              |    1 +
 drivers/net/wireless/mwifiex/cfg80211.c            |   45 +-
 drivers/net/wireless/mwifiex/fw.h                  |   16 +
 drivers/net/wireless/mwifiex/init.c                |   82 +-
 drivers/net/wireless/mwifiex/join.c                |    2 +
 drivers/net/wireless/mwifiex/main.c                |   87 +-
 drivers/net/wireless/mwifiex/main.h                |   27 +
 drivers/net/wireless/mwifiex/scan.c                |   37 +
 drivers/net/wireless/mwifiex/sta_event.c           |   11 +
 drivers/net/wireless/mwifiex/sta_ioctl.c           |   52 +-
 drivers/net/wireless/mwifiex/wmm.c                 |    5 +-
 drivers/net/wireless/orinoco/orinoco_usb.c         |    3 +-
 drivers/net/wireless/rt2x00/rt2400pci.c            |   66 +-
 drivers/net/wireless/rt2x00/rt2500pci.c            |   66 +-
 drivers/net/wireless/rt2x00/rt2500usb.c            |   66 +-
 drivers/net/wireless/rt2x00/rt2800pci.c            |   61 +-
 drivers/net/wireless/rt2x00/rt2800usb.c            |  125 +-
 drivers/net/wireless/rt2x00/rt2x00.h               |    9 +-
 drivers/net/wireless/rt2x00/rt2x00dev.c            |   20 +-
 drivers/net/wireless/rt2x00/rt2x00queue.c          |   60 +-
 drivers/net/wireless/rt2x00/rt2x00queue.h          |   21 +-
 drivers/net/wireless/rt2x00/rt61pci.c              |   55 +-
 drivers/net/wireless/rt2x00/rt73usb.c              |   55 +-
 drivers/net/wireless/rtlwifi/rtl8192cu/rf.c        |    2 +-
 drivers/net/wireless/rtlwifi/rtl8192cu/sw.c        |    1 +
 drivers/net/wireless/ti/wl1251/spi.c               |   30 +-
 drivers/net/wireless/ti/wl18xx/main.c              |   47 +-
 drivers/net/wireless/ti/wl18xx/reg.h               |   15 +
 drivers/net/wireless/ti/wlcore/Makefile            |    2 +-
 drivers/net/wireless/ti/wlcore/main.c              |  284 +-
 drivers/net/wireless/ti/wlcore/ps.c                |    2 +-
 drivers/net/wireless/ti/wlcore/spi.c               |   14 +-
 drivers/net/wireless/ti/wlcore/sysfs.c             |  216 ++
 drivers/net/wireless/ti/wlcore/sysfs.h             |   28 +
 drivers/net/wireless/ti/wlcore/tx.c                |    2 +-
 drivers/nfc/Kconfig                                |   10 +
 drivers/nfc/Makefile                               |    1 +
 drivers/nfc/mei_phy.c                              |    6 +-
 drivers/nfc/microread/microread.c                  |    6 +-
 drivers/nfc/nfcsim.c                               |  541 ++++
 drivers/nfc/nfcwilink.c                            |   18 +-
 drivers/nfc/pn533.c                                |   31 +-
 drivers/nfc/pn544/pn544.c                          |   40 +-
 drivers/ssb/driver_chipcommon_sflash.c             |   34 +-
 drivers/ssb/main.c                                 |    8 +
 drivers/ssb/ssb_private.h                          |    4 +
 include/linux/ieee80211.h                          |    1 +
 include/linux/ssb/ssb_driver_mips.h                |   15 +
 include/net/cfg80211.h                             |  115 +-
 include/net/mac80211.h                             |   11 +-
 include/net/nfc/hci.h                              |    7 +-
 include/net/nfc/nci_core.h                         |   58 +-
 include/net/nfc/nfc.h                              |   35 +-
 include/uapi/linux/nfc.h                           |   18 +-
 include/uapi/linux/nl80211.h                       |    9 +
 net/mac80211/cfg.c                                 |   20 +-
 net/mac80211/ieee80211_i.h                         |    3 +-
 net/mac80211/main.c                                |    3 +-
 net/mac80211/mesh.c                                |   38 +-
 net/mac80211/mesh.h                                |    5 +-
 net/mac80211/mesh_plink.c                          |    7 +-
 net/mac80211/mlme.c                                |   98 +-
 net/mac80211/rx.c                                  |   26 +-
 net/mac80211/sta_info.c                            |    4 +-
 net/mac80211/sta_info.h                            |    3 +
 net/mac80211/tx.c                                  |    6 -
 net/mac80211/util.c                                |    5 +-
 net/nfc/core.c                                     |  224 +-
 net/nfc/hci/core.c                                 |   75 +-
 net/nfc/llcp.h                                     |    3 +-
 net/nfc/llcp_commands.c                            |   22 +-
 net/nfc/llcp_core.c                                |   16 +-
 net/nfc/llcp_sock.c                                |   19 +-
 net/nfc/nci/Kconfig                                |   10 +
 net/nfc/nci/Makefile                               |    4 +-
 net/nfc/nci/core.c                                 |   37 +-
 net/nfc/nci/data.c                                 |    2 -
 net/nfc/nci/spi.c                                  |  378 +++
 net/nfc/netlink.c                                  |  183 +-
 net/nfc/nfc.h                                      |   11 +
 net/wireless/core.c                                |   47 +-
 net/wireless/core.h                                |   30 +-
 net/wireless/ibss.c                                |    6 -
 net/wireless/mesh.c                                |   12 +
 net/wireless/mlme.c                                |  241 +-
 net/wireless/nl80211.c                             |  187 +-
 net/wireless/reg.c                                 |    2 +-
 net/wireless/sme.c                                 |  542 ++--
 net/wireless/trace.h                               |   46 +-
 net/wireless/wext-sme.c                            |    8 +-
 210 files changed, 27577 insertions(+), 2842 deletions(-)
 create mode 100644 drivers/net/wireless/ath/ath10k/Kconfig
 create mode 100644 drivers/net/wireless/ath/ath10k/Makefile
 create mode 100644 drivers/net/wireless/ath/ath10k/bmi.c
 create mode 100644 drivers/net/wireless/ath/ath10k/bmi.h
 create mode 100644 drivers/net/wireless/ath/ath10k/ce.c
 create mode 100644 drivers/net/wireless/ath/ath10k/ce.h
 create mode 100644 drivers/net/wireless/ath/ath10k/core.c
 create mode 100644 drivers/net/wireless/ath/ath10k/core.h
 create mode 100644 drivers/net/wireless/ath/ath10k/debug.c
 create mode 100644 drivers/net/wireless/ath/ath10k/debug.h
 create mode 100644 drivers/net/wireless/ath/ath10k/hif.h
 create mode 100644 drivers/net/wireless/ath/ath10k/htc.c
 create mode 100644 drivers/net/wireless/ath/ath10k/htc.h
 create mode 100644 drivers/net/wireless/ath/ath10k/htt.c
 create mode 100644 drivers/net/wireless/ath/ath10k/htt.h
 create mode 100644 drivers/net/wireless/ath/ath10k/htt_rx.c
 create mode 100644 drivers/net/wireless/ath/ath10k/htt_tx.c
 create mode 100644 drivers/net/wireless/ath/ath10k/hw.h
 create mode 100644 drivers/net/wireless/ath/ath10k/mac.c
 create mode 100644 drivers/net/wireless/ath/ath10k/mac.h
 create mode 100644 drivers/net/wireless/ath/ath10k/pci.c
 create mode 100644 drivers/net/wireless/ath/ath10k/pci.h
 create mode 100644 drivers/net/wireless/ath/ath10k/rx_desc.h
 create mode 100644 drivers/net/wireless/ath/ath10k/targaddrs.h
 create mode 100644 drivers/net/wireless/ath/ath10k/trace.c
 create mode 100644 drivers/net/wireless/ath/ath10k/trace.h
 create mode 100644 drivers/net/wireless/ath/ath10k/txrx.c
 create mode 100644 drivers/net/wireless/ath/ath10k/txrx.h
 create mode 100644 drivers/net/wireless/ath/ath10k/wmi.c
 create mode 100644 drivers/net/wireless/ath/ath10k/wmi.h
 create mode 100644 drivers/net/wireless/mwifiex/11h.c
 create mode 100644 drivers/net/wireless/ti/wlcore/sysfs.c
 create mode 100644 drivers/net/wireless/ti/wlcore/sysfs.h
 create mode 100644 drivers/nfc/nfcsim.c
 create mode 100644 net/nfc/nci/spi.c
-- 
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: Poor wireless reception on BCM4313
From: Maximilian Engelhardt @ 2013-06-21 19:27 UTC (permalink / raw)
  To: Arend van Spriel; +Cc: brcm80211-dev-list, linux-wireless
In-Reply-To: <51C4A013.90403@broadcom.com>

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

On Friday 21 June 2013 20:48:51 Arend van Spriel wrote:
> On 06/21/2013 08:26 PM, Maximilian Engelhardt wrote:
> > Hello developers,
> > 
> > I'm having problems with the reception performance of my BCM4313 wireless
> > card. The card is basically working fine, but the reception is quite bad
> > compared to other wifi equipment. I first suspected a hardware problem,
> > but
> > after I tried Windows 7 with the same hardware and having no problem there
> > I'm quite sure this is a software issue.
> 
> Can you sent contents of /sys/kernel/debug/brcmsmac/bcma*/hardware?
> 
> Regards,
> Arend

Hello Arend,

see below.

$ cat /sys/kernel/debug/brcmsmac/bcma0\:0/hardware 
board vendor: 14e4
board type: 608
board revision: 1109
board flags: 402201
board flags2: 884
firmware revision: 262032c

Greetings,
Maxi

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply

* Re: Poor wireless reception on BCM4313
From: Arend van Spriel @ 2013-06-21 18:48 UTC (permalink / raw)
  To: Maximilian Engelhardt; +Cc: brcm80211-dev-list, linux-wireless
In-Reply-To: <1624172.s6pnfBcJL7@fuchs>

On 06/21/2013 08:26 PM, Maximilian Engelhardt wrote:
> Hello developers,
>
> I'm having problems with the reception performance of my BCM4313 wireless
> card. The card is basically working fine, but the reception is quite bad
> compared to other wifi equipment. I first suspected a hardware problem, but
> after I tried Windows 7 with the same hardware and having no problem there I'm
> quite sure this is a software issue.

Can you sent contents of /sys/kernel/debug/brcmsmac/bcma*/hardware?

Regards,
Arend


^ permalink raw reply

* Poor wireless reception on BCM4313
From: Maximilian Engelhardt @ 2013-06-21 18:26 UTC (permalink / raw)
  To: brcm80211-dev-list; +Cc: linux-wireless

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

Hello developers,

I'm having problems with the reception performance of my BCM4313 wireless 
card. The card is basically working fine, but the reception is quite bad 
compared to other wifi equipment. I first suspected a hardware problem, but 
after I tried Windows 7 with the same hardware and having no problem there I'm 
quite sure this is a software issue.


Here is a more detailed explanation of a test setup I performed to show the 
problem:

I have an AP in about 2m distance and I connected to it by my BCM4313 card and 
by a USB dongle (TP-Link TL-WN821N, using ath9k_htc). Both connections work 
and I can ping the AP using both cards.

iw dev $DEV link shows a signal of about -68 dBm for the broadcom card and 
about -51 dBm for the atheros dongle. I have no idea in how far one can trust 
these values, but the difference between these two cards mostly seems to be 
20-30 dB, also in my further experiments (greater distance from the AP).

Now with both dongles being connected I move my laptop away from the AP and of 
course the signal is getting weaker. However at some point the broadcom card 
looses the connection to the AP while the USB dongle still has good connection 
(at this point the signal strength of the broadcom card is about -90dBm and 
-60dBm for the USB dongle). In my test with the Windows driver at that point 
the connection was still good and maximum distance till I lost the connection 
was much larger. So I don't think is a hardware problem.

In general I can say my BCM4313 card is only usable when I'm in vicinity of 
the AP. If I move further away the connection becomes unusable slow or is 
lost, while it is still working well using other cards/drivers.


I'm currently using a 3.10-rc5 kernel with Debian jessie (kernel is from 
experimental, but the same behavior has been there with kernel 3.9, 3.8 (and 
older)). The driver used for the broadcom card is brcmsmac.


I did a search non the Internet regarding this issue and found some other 
people having the same problem but no real solution to this. There is a 
workaround some Ubuntu related sites, which consists of blacklisting the 
brcmsmac driver and installing the wl driver. With the wl driver this problem 
seems to be fixed according to the web (I didn't try it myself).

As I have no idea where this problem could be and how I can debug it, so I'm 
writing this mail now. If you need any addition information I'm happy to 
provide it.
>From the numbers shown above it seems like there is an attenuator of 20-30dB 
active on the receiver of the broadcom card.


Here is some additional information about my system:

$ lspci -vvv -n -s02:00.0
02:00.0 0280: 14e4:4727 (rev 01)
        Subsystem: 14e4:0608
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- 
<TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 32 bytes
        Interrupt: pin A routed to IRQ 17
        Region 0: Memory at f0200000 (64-bit, non-prefetchable) [size=16K]
        Capabilities: <access denied>
        Kernel driver in use: bcma-pci-bridge

$ ethtool -i wlan0
driver: brcmsmac
version: 3.10-rc5-amd64
firmware-version: 610.812
bus-info: bcma0:0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

$ iw dev wlan0 info
Interface wlan0
        ifindex 3
        type managed
        wiphy 0

$ iw phy phy0 info
Wiphy phy0
        Band 1:
                Capabilities: 0x70
                        HT20
                        Static SM Power Save
                        RX Greenfield
                        RX HT20 SGI
                        RX HT40 SGI
                        No RX STBC
                        Max AMSDU length: 3839 bytes
                        No DSSS/CCK HT40
                Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
                Minimum RX AMPDU time spacing: 8 usec (0x06)
                HT TX/RX MCS rate indexes supported: 0-7
                Frequencies:
                        * 2412 MHz [1] (20.0 dBm)
                        * 2417 MHz [2] (20.0 dBm)
                        * 2422 MHz [3] (20.0 dBm)
                        * 2427 MHz [4] (20.0 dBm)
                        * 2432 MHz [5] (20.0 dBm)
                        * 2437 MHz [6] (20.0 dBm)
                        * 2442 MHz [7] (20.0 dBm)
                        * 2447 MHz [8] (20.0 dBm)
                        * 2452 MHz [9] (20.0 dBm)
                        * 2457 MHz [10] (20.0 dBm)
                        * 2462 MHz [11] (20.0 dBm)
                        * 2467 MHz [12] (20.0 dBm) (passive scanning, no IBSS)
                        * 2472 MHz [13] (20.0 dBm) (passive scanning, no IBSS)
                        * 2484 MHz [14] (disabled)
                Bitrates (non-HT):
                        * 1.0 Mbps
                        * 2.0 Mbps (short preamble supported)
                        * 5.5 Mbps (short preamble supported)
                        * 11.0 Mbps (short preamble supported)
                        * 6.0 Mbps
                        * 9.0 Mbps
                        * 12.0 Mbps
                        * 18.0 Mbps
                        * 24.0 Mbps
                        * 36.0 Mbps
                        * 48.0 Mbps
                        * 54.0 Mbps
        max # scan SSIDs: 4
        max scan IEs length: 2257 bytes
        Coverage class: 0 (up to 0m)
        Supported Ciphers:
                * WEP40 (00-0f-ac:1)
                * WEP104 (00-0f-ac:5)
                * TKIP (00-0f-ac:2)
                * CCMP (00-0f-ac:4)
        Available Antennas: TX 0 RX 0
        Supported interface modes:
                 * IBSS
                 * managed
                 * AP
                 * AP/VLAN
                 * monitor
        software interface modes (can always be added):
                 * AP/VLAN
                 * monitor
        interface combinations are not supported
        Supported commands:
                 * new_interface
                 * set_interface
                 * new_key
                 * new_beacon
                 * new_station
                 * new_mpath
                 * set_mesh_params
                 * set_bss
                 * authenticate
                 * associate
                 * deauthenticate
                 * disassociate
                 * join_ibss
                 * join_mesh
                 * set_tx_bitrate_mask
                 * action
                 * frame_wait_cancel
                 * set_wiphy_netns
                 * set_channel
                 * set_wds_peer
                 * Unknown command (84)
                 * Unknown command (87)
                 * Unknown command (85)
                 * Unknown command (89)
                 * Unknown command (92)
                 * connect
                 * disconnect
        Supported TX frame types:
                 * IBSS: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 
0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
                 * managed: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 
0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
                 * AP: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 
0xb0 0xc0 0xd0 0xe0 0xf0
                 * AP/VLAN: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 
0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
                 * mesh point: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 
0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
                 * P2P-client: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 
0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
                 * P2P-GO: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 
0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
                 * Unknown mode (10): 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 
0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
        Supported RX frame types:
                 * IBSS: 0x40 0xb0 0xc0 0xd0
                 * managed: 0x40 0xd0
                 * AP: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
                 * AP/VLAN: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
                 * mesh point: 0xb0 0xc0 0xd0
                 * P2P-client: 0x40 0xd0
                 * P2P-GO: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
                 * Unknown mode (10): 0x40 0xd0
        Device supports RSN-IBSS.
        HT Capability overrides:
                 * MCS: ff ff ff ff ff ff ff ff ff ff
                 * maximum A-MSDU length
                 * supported channel width
                 * short GI for 40 MHz
                 * max A-MPDU length exponent
                 * min MPDU start spacing
        Device supports TX status socket option.
        Device supports HT-IBSS.

$ iw dev wlan0 link
Connected to XX:XX:XX:XX:XX:XX (on wlan0)
        SSID: stustafunk
        freq: 2462
        RX: 1865437 bytes (31687 packets)
        TX: 221621 bytes (1896 packets)
        signal: -68 dBm
        tx bitrate: 24.0 MBit/s

        bss flags:      short-slot-time
        dtim period:    0
        beacon int:     100

$ dmesg
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.10-rc5-amd64 (debian-kernel@lists.debian.org) 
(gcc version 4.7.2 (Debian 4.7.2-5) ) #1 SMP Debian 3.10~rc5-1~exp1 
(2013-06-11)
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.10-rc5-amd64 
root=/dev/mapper/fuchs--vg-root ro quiet thinkpad-acpi.brightness_enable=1 
acpi_backlight=vendor
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009e7ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009e800-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000d381ffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000d3820000-0x00000000ded02fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ded03000-0x00000000dee32fff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x00000000dee33000-0x00000000deeb2fff] ACPI 
data
[    0.000000] BIOS-e820: [mem 0x00000000deeb3000-0x00000000dfffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fecfffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed80000-0x00000000fed80fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ffc00000-0x00000000ffffffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x0000000206ffffff] usable
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] SMBIOS 2.7 present.
[    0.000000] DMI: LENOVO 335963G/335963G, BIOS HMET19WW (1.05 ) 07/05/2012
[    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] No AGP bridge found
[    0.000000] e820: last_pfn = 0x207000 max_arch_pfn = 0x400000000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-BFFFF uncachable
[    0.000000]   C0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 000000000 mask F80000000 write-back
[    0.000000]   1 base 080000000 mask FC0000000 write-back
[    0.000000]   2 base 0C0000000 mask FE0000000 write-back
[    0.000000]   3 base 207000000 mask FFF000000 uncachable
[    0.000000]   4 base 208000000 mask FF8000000 uncachable
[    0.000000]   5 base 0FED80000 mask FFFFFF000 uncachable
[    0.000000]   6 disabled
[    0.000000]   7 base 0FFC00000 mask FFFC00000 write-protect
[    0.000000] TOM2: 000000021f000000 aka 8688M
[    0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 
0x7010600070106
[    0.000000] e820: last_pfn = 0xd3820 max_arch_pfn = 0x400000000
[    0.000000] found SMP MP-table at [mem 0x000fa8f0-0x000fa8ff] mapped at 
[ffff8800000fa8f0]
[    0.000000] Base memory trampoline at [ffff880000098000] 98000 size 24576
[    0.000000] Using GB pages for direct mapping
[    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
[    0.000000]  [mem 0x00000000-0x000fffff] page 4k
[    0.000000] BRK [0x0186e000, 0x0186efff] PGTABLE
[    0.000000] BRK [0x0186f000, 0x0186ffff] PGTABLE
[    0.000000] BRK [0x01870000, 0x01870fff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x206e00000-0x206ffffff]
[    0.000000]  [mem 0x206e00000-0x206ffffff] page 2M
[    0.000000] BRK [0x01871000, 0x01871fff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x204000000-0x206dfffff]
[    0.000000]  [mem 0x204000000-0x206dfffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x200000000-0x203ffffff]
[    0.000000]  [mem 0x200000000-0x203ffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x00100000-0xd381ffff]
[    0.000000]  [mem 0x00100000-0x001fffff] page 4k
[    0.000000]  [mem 0x00200000-0x3fffffff] page 2M
[    0.000000]  [mem 0x40000000-0xbfffffff] page 1G
[    0.000000]  [mem 0xc0000000-0xd37fffff] page 2M
[    0.000000]  [mem 0xd3800000-0xd381ffff] page 4k
[    0.000000] init_memory_mapping: [mem 0x100000000-0x1ffffffff]
[    0.000000]  [mem 0x100000000-0x1ffffffff] page 1G
[    0.000000] RAMDISK: [mem 0x36504000-0x37279fff]
[    0.000000] ACPI: RSDP 00000000000f0120 00024 (v02 LENOVO)
[    0.000000] ACPI: XSDT 00000000deeb2170 00084 (v01 LENOVO TP-HM    00001050 
PTL  00000002)
[    0.000000] ACPI: FACP 00000000deea0000 000F4 (v04 LENOVO TP-HM    00001050 
PTL  00000002)
[    0.000000] ACPI: DSDT 00000000deea2000 0F858 (v01 LENOVO      AMD 00001000 
INTL 20061109)
[    0.000000] ACPI: FACS 00000000dee1a000 00040
[    0.000000] ACPI: HPET 00000000dee9f000 00038 (v01 LENOVO TP-HM    00001050 
PTL  00000002)
[    0.000000] ACPI: APIC 00000000dee9e000 0007A (v02 LENOVO TP-HM    00001050 
PTL  00000002)
[    0.000000] ACPI: MCFG 00000000dee9d000 0003C (v01 LENOVO TP-HM    00001050 
PTL  00000002)
[    0.000000] ACPI: SBST 00000000dee9c000 00030 (v01 LENOVO TP-HM    00001050 
PTL  00000002)
[    0.000000] ACPI: FPDT 00000000dee9b000 00054 (v01 LENOVO TP-HM    00001050 
PTL  00000002)
[    0.000000] ACPI: UEFI 00000000dee9a000 0003E (v01 LENOVO TP-HM    00001050 
PTL  00000002)
[    0.000000] ACPI: UEFI 00000000dee99000 00042 (v01 PTL      COMBUF 00000001 
PTL  00000001)
[    0.000000] ACPI: POAT 00000000dee98000 00055 (v03 LENOVO TP-HM    00001050 
PTL  00000002)
[    0.000000] ACPI: SSDT 00000000dee97000 003DE (v01 AMD    POWERNOW 00000001 
AMD  00000001)
[    0.000000] ACPI: SSDT 00000000dee95000 016E4 (v02    AMD     ALIB 00000001 
MSFT 04000000)
[    0.000000] ACPI: UEFI 00000000dee94000 00292 (v01 LENOVO TP-HM    00001050 
PTL  00000002)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] No NUMA configuration found
[    0.000000] Faking a node at [mem 0x0000000000000000-0x0000000206ffffff]
[    0.000000] Initmem setup node 0 [mem 0x00000000-0x206ffffff]
[    0.000000]   NODE_DATA [mem 0x206ffa000-0x206ffdfff]
[    0.000000]  [ffffea0000000000-ffffea00071fffff] PMD -> [ffff8801fee00000-
ffff8802057fffff] on node 0
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00001000-0x00ffffff]
[    0.000000]   DMA32    [mem 0x01000000-0xffffffff]
[    0.000000]   Normal   [mem 0x100000000-0x206ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00001000-0x0009dfff]
[    0.000000]   node   0: [mem 0x00100000-0xd381ffff]
[    0.000000]   node   0: [mem 0x100000000-0x206ffffff]
[    0.000000] On node 0 totalpages: 1943485
[    0.000000]   DMA zone: 56 pages used for memmap
[    0.000000]   DMA zone: 21 pages reserved
[    0.000000]   DMA zone: 3997 pages, LIFO batch:0
[    0.000000]   DMA32 zone: 11789 pages used for memmap
[    0.000000]   DMA32 zone: 862240 pages, LIFO batch:31
[    0.000000]   Normal zone: 14728 pages used for memmap
[    0.000000]   Normal zone: 1077248 pages, LIFO batch:31
[    0.000000] ACPI: PM-Timer IO Port: 0x808
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] disabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x03] disabled)
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1])
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1])
[    0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 2, version 33, address 0xfec00000, GSI 0-23
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ2 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x43538210 base: 0xfed00000
[    0.000000] smpboot: Allowing 4 CPUs, 2 hotplug CPUs
[    0.000000] nr_irqs_gsi: 40
[    0.000000] PM: Registered nosave memory: 000000000009e000 - 
000000000009f000
[    0.000000] PM: Registered nosave memory: 000000000009f000 - 
00000000000a0000
[    0.000000] PM: Registered nosave memory: 00000000000a0000 - 
00000000000e0000
[    0.000000] PM: Registered nosave memory: 00000000000e0000 - 
0000000000100000
[    0.000000] PM: Registered nosave memory: 00000000d3820000 - 
00000000ded03000
[    0.000000] PM: Registered nosave memory: 00000000ded03000 - 
00000000dee33000
[    0.000000] PM: Registered nosave memory: 00000000dee33000 - 
00000000deeb3000
[    0.000000] PM: Registered nosave memory: 00000000deeb3000 - 
00000000e0000000
[    0.000000] PM: Registered nosave memory: 00000000e0000000 - 
00000000fec00000
[    0.000000] PM: Registered nosave memory: 00000000fec00000 - 
00000000fed00000
[    0.000000] PM: Registered nosave memory: 00000000fed00000 - 
00000000fed80000
[    0.000000] PM: Registered nosave memory: 00000000fed80000 - 
00000000fed81000
[    0.000000] PM: Registered nosave memory: 00000000fed81000 - 
00000000ffc00000
[    0.000000] PM: Registered nosave memory: 00000000ffc00000 - 
0000000100000000
[    0.000000] e820: [mem 0xe0000000-0xfebfffff] available for PCI devices
[    0.000000] Booting paravirtualized kernel on bare hardware
[    0.000000] setup_percpu: NR_CPUS:512 nr_cpumask_bits:512 nr_cpu_ids:4 
nr_node_ids:1
[    0.000000] PERCPU: Embedded 28 pages/cpu @ffff880206c00000 s85184 r8192 
d21312 u524288
[    0.000000] pcpu-alloc: s85184 r8192 d21312 u524288 alloc=1*2097152
[    0.000000] pcpu-alloc: [0] 0 1 2 3 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total 
pages: 1916891
[    0.000000] Policy zone: Normal
[    0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-3.10-rc5-amd64 
root=/dev/mapper/fuchs--vg-root ro quiet thinkpad-acpi.brightness_enable=1 
acpi_backlight=vendor
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] Checking aperture...
[    0.000000] No AGP bridge found
[    0.000000] Calgary: detecting Calgary via BIOS EBDA area
[    0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing!
[    0.000000] Memory: 7576104k/8503296k available (3708k kernel code, 729356k 
absent, 197836k reserved, 3062k data, 920k init)
[    0.000000] Hierarchical RCU implementation.
[    0.000000] 	RCU dyntick-idle grace-period acceleration is enabled.
[    0.000000] 	RCU restricting CPUs from NR_CPUS=512 to nr_cpu_ids=4.
[    0.000000] NR_IRQS:33024 nr_irqs:712 16
[    0.000000] spurious 8259A interrupt: IRQ7.
[    0.000000] Console: colour VGA+ 80x25
[    0.000000] console [tty0] enabled
[    0.000000] hpet clockevent registered
[    0.000000] tsc: Fast TSC calibration using PIT
[    0.004000] tsc: Detected 1696.964 MHz processor
[    0.000006] Calibrating delay loop (skipped), value calculated using timer 
frequency.. 3393.92 BogoMIPS (lpj=6787856)
[    0.000012] pid_max: default: 32768 minimum: 301
[    0.000085] Security Framework initialized
[    0.000094] AppArmor: AppArmor disabled by boot time parameter
[    0.000096] Yama: becoming mindful.
[    0.001185] Dentry cache hash table entries: 1048576 (order: 11, 8388608 
bytes)
[    0.006294] Inode-cache hash table entries: 524288 (order: 10, 4194304 
bytes)
[    0.008601] Mount-cache hash table entries: 256
[    0.008962] Initializing cgroup subsys memory
[    0.008998] Initializing cgroup subsys devices
[    0.009002] Initializing cgroup subsys freezer
[    0.009007] Initializing cgroup subsys net_cls
[    0.009010] Initializing cgroup subsys blkio
[    0.009013] Initializing cgroup subsys perf_event
[    0.009071] tseg: 00dfc00000
[    0.009077] CPU: Physical Processor ID: 0
[    0.009079] CPU: Processor Core ID: 0
[    0.009083] mce: CPU supports 6 MCE banks
[    0.009101] Last level iTLB entries: 4KB 512, 2MB 8, 4MB 4
[    0.009101] Last level dTLB entries: 4KB 512, 2MB 8, 4MB 4
[    0.009101] tlb_flushall_shift: 5
[    0.009256] Freeing SMP alternatives: 12k freed
[    0.010030] ACPI: Core revision 20130328
[    0.023132] ACPI: All ACPI Tables successfully acquired
[    0.228829] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.268494] smpboot: CPU0: AMD E2-1800 APU with Radeon(tm) HD Graphics 
(fam: 14, model: 02, stepping: 00)
[    0.374976] Performance Events: AMD PMU driver.
[    0.374985] ... version:                0
[    0.374988] ... bit width:              48
[    0.374990] ... generic registers:      4
[    0.374993] ... value mask:             0000ffffffffffff
[    0.374996] ... max period:             00007fffffffffff
[    0.374998] ... fixed-purpose events:   0
[    0.375000] ... event mask:             000000000000000f
[    0.375503] NMI watchdog: enabled on all CPUs, permanently consumes one hw-
PMU counter.
[    0.375736] smpboot: Booting Node   0, Processors  #1
[    0.388829] Brought up 2 CPUs
[    0.388834] smpboot: Total of 2 processors activated (6787.85 BogoMIPS)
[    0.391306] devtmpfs: initialized
[    0.397568] PM: Registering ACPI NVS region [mem 0xded03000-0xdee32fff] 
(1245184 bytes)
[    0.398103] regulator-dummy: no parameters
[    0.398231] NET: Registered protocol family 16
[    0.398603] ACPI: bus type PCI registered
[    0.398608] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[    0.398748] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 
0xf8000000-0xfbffffff] (base 0xf8000000)
[    0.398753] PCI: not using MMCONFIG
[    0.398757] PCI: Using configuration type 1 for base access
[    0.398759] PCI: Using configuration type 1 for extended access
[    0.400509] bio: create slab <bio-0> at 0
[    0.400770] ACPI: Added _OSI(Module Device)
[    0.400774] ACPI: Added _OSI(Processor Device)
[    0.400778] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.400782] ACPI: Added _OSI(Processor Aggregator Device)
[    0.404142] ACPI: EC: Look up EC in DSDT
[    0.423234] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored
[    0.442175] ACPI: Interpreter enabled
[    0.442196] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State 
[\_S1_] (20130328/hwxface-568)
[    0.442205] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State 
[\_S2_] (20130328/hwxface-568)
[    0.442235] ACPI: (supports S0 S3 S4 S5)
[    0.442239] ACPI: Using IOAPIC for interrupt routing
[    0.442512] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 
0xf8000000-0xfbffffff] (base 0xf8000000)
[    0.443135] PCI: MMCONFIG at [mem 0xf8000000-0xfbffffff] reserved in ACPI 
motherboard resources
[    0.448345] PCI: Using host bridge windows from ACPI; if necessary, use 
"pci=nocrs" and report a bug
[    0.449398] [Firmware Bug]: ACPI: No _BQC method, cannot determine initial 
brightness
[    0.449432] [Firmware Bug]: ACPI: No _BQC method, cannot determine initial 
brightness
[    0.470020] [Firmware Bug]: ACPI: No _BQC method, cannot determine initial 
brightness
[    0.470073] [Firmware Bug]: ACPI: No _BQC method, cannot determine initial 
brightness
[    0.476975] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.479548] acpi PNP0A08:00: ignoring host bridge window [mem 
0x000ce000-0x000cffff] (conflicts with Video ROM [mem 0x000c0000-0x000cedff])
[    0.479568] acpi PNP0A08:00: [Firmware Info]: MMCONFIG for domain 0000 [bus 
00-3f] only partially covers this bridge
[    0.479857] PCI host bridge to bus 0000:00
[    0.479864] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.479870] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff]
[    0.479875] pci_bus 0000:00: root bus resource [mem 0x000c0000-0x000c1fff]
[    0.479880] pci_bus 0000:00: root bus resource [mem 0x000c2000-0x000c3fff]
[    0.479884] pci_bus 0000:00: root bus resource [mem 0x000c4000-0x000c5fff]
[    0.479889] pci_bus 0000:00: root bus resource [mem 0x000c6000-0x000c7fff]
[    0.479894] pci_bus 0000:00: root bus resource [mem 0x000c8000-0x000c9fff]
[    0.479898] pci_bus 0000:00: root bus resource [mem 0x000ca000-0x000cbfff]
[    0.479903] pci_bus 0000:00: root bus resource [mem 0x000cc000-0x000cdfff]
[    0.479907] pci_bus 0000:00: root bus resource [mem 0x000d0000-0x000d1fff]
[    0.479912] pci_bus 0000:00: root bus resource [mem 0x000d2000-0x000d3fff]
[    0.479916] pci_bus 0000:00: root bus resource [mem 0x000d4000-0x000d5fff]
[    0.479921] pci_bus 0000:00: root bus resource [mem 0x000d6000-0x000d7fff]
[    0.479925] pci_bus 0000:00: root bus resource [mem 0x000d8000-0x000d9fff]
[    0.479929] pci_bus 0000:00: root bus resource [mem 0x000da000-0x000dbfff]
[    0.479934] pci_bus 0000:00: root bus resource [mem 0x000dc000-0x000ddfff]
[    0.479938] pci_bus 0000:00: root bus resource [mem 0x000de000-0x000dffff]
[    0.479943] pci_bus 0000:00: root bus resource [mem 0x000e0000-0x000e1fff]
[    0.479947] pci_bus 0000:00: root bus resource [mem 0x000e2000-0x000e3fff]
[    0.479951] pci_bus 0000:00: root bus resource [mem 0x000e4000-0x000e5fff]
[    0.479956] pci_bus 0000:00: root bus resource [mem 0x000e6000-0x000e7fff]
[    0.479960] pci_bus 0000:00: root bus resource [mem 0x000e8000-0x000e9fff]
[    0.479965] pci_bus 0000:00: root bus resource [mem 0x000ea000-0x000ebfff]
[    0.479969] pci_bus 0000:00: root bus resource [mem 0x000ec000-0x000edfff]
[    0.479973] pci_bus 0000:00: root bus resource [mem 0x000ee000-0x000effff]
[    0.479978] pci_bus 0000:00: root bus resource [mem 0xe0000000-0xf7ffffff]
[    0.479983] pci_bus 0000:00: root bus resource [mem 0xfc000000-0xfdffffff]
[    0.479987] pci_bus 0000:00: root bus resource [mem 0xfed40000-0xfed44fff]
[    0.479992] pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7]
[    0.479996] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff]
[    0.480013] pci 0000:00:00.0: [1022:1510] type 00 class 0x060000
[    0.480206] pci 0000:00:01.0: [1002:9808] type 00 class 0x030000
[    0.480223] pci 0000:00:01.0: reg 10: [mem 0xe0000000-0xefffffff pref]
[    0.480234] pci 0000:00:01.0: reg 14: [io  0x3000-0x30ff]
[    0.480244] pci 0000:00:01.0: reg 18: [mem 0xf0300000-0xf033ffff]
[    0.480307] pci 0000:00:01.0: supports D1 D2
[    0.480469] pci 0000:00:01.1: [1002:1314] type 00 class 0x040300
[    0.480484] pci 0000:00:01.1: reg 10: [mem 0xf0344000-0xf0347fff]
[    0.480556] pci 0000:00:01.1: supports D1 D2
[    0.480721] pci 0000:00:05.0: [1022:1513] type 01 class 0x060400
[    0.480806] pci 0000:00:05.0: PME# supported from D0 D3hot D3cold
[    0.480855] pci 0000:00:05.0: System wakeup disabled by ACPI
[    0.480931] pci 0000:00:06.0: [1022:1514] type 01 class 0x060400
[    0.481007] pci 0000:00:06.0: PME# supported from D0 D3hot D3cold
[    0.481057] pci 0000:00:06.0: System wakeup disabled by ACPI
[    0.481131] pci 0000:00:07.0: [1022:1515] type 01 class 0x060400
[    0.481207] pci 0000:00:07.0: PME# supported from D0 D3hot D3cold
[    0.481257] pci 0000:00:07.0: System wakeup disabled by ACPI
[    0.481369] pci 0000:00:10.0: [1022:7812] type 00 class 0x0c0330
[    0.481396] pci 0000:00:10.0: reg 10: [mem 0xf0348000-0xf0349fff 64bit]
[    0.481519] pci 0000:00:10.0: PME# supported from D0 D3hot D3cold
[    0.481607] pci 0000:00:10.0: System wakeup disabled by ACPI
[    0.481696] pci 0000:00:11.0: [1022:7801] type 00 class 0x010601
[    0.481722] pci 0000:00:11.0: reg 10: [io  0x3118-0x311f]
[    0.481736] pci 0000:00:11.0: reg 14: [io  0x3124-0x3127]
[    0.481749] pci 0000:00:11.0: reg 18: [io  0x3110-0x3117]
[    0.481762] pci 0000:00:11.0: reg 1c: [io  0x3120-0x3123]
[    0.481775] pci 0000:00:11.0: reg 20: [io  0x3100-0x310f]
[    0.481788] pci 0000:00:11.0: reg 24: [mem 0xf034d000-0xf034d7ff]
[    0.481986] pci 0000:00:12.0: [1022:7807] type 00 class 0x0c0310
[    0.482006] pci 0000:00:12.0: reg 10: [mem 0xf034c000-0xf034cfff]
[    0.482137] pci 0000:00:12.0: System wakeup disabled by ACPI
[    0.482235] pci 0000:00:12.2: [1022:7808] type 00 class 0x0c0320
[    0.482261] pci 0000:00:12.2: reg 10: [mem 0xf034d900-0xf034d9ff]
[    0.482359] pci 0000:00:12.2: supports D1 D2
[    0.482363] pci 0000:00:12.2: PME# supported from D0 D1 D2 D3hot
[    0.482512] pci 0000:00:13.0: [1022:7807] type 00 class 0x0c0310
[    0.482531] pci 0000:00:13.0: reg 10: [mem 0xf034b000-0xf034bfff]
[    0.482670] pci 0000:00:13.0: System wakeup disabled by ACPI
[    0.482748] pci 0000:00:13.2: [1022:7808] type 00 class 0x0c0320
[    0.482773] pci 0000:00:13.2: reg 10: [mem 0xf034d800-0xf034d8ff]
[    0.482872] pci 0000:00:13.2: supports D1 D2
[    0.482876] pci 0000:00:13.2: PME# supported from D0 D1 D2 D3hot
[    0.482961] pci 0000:00:13.2: System wakeup disabled by ACPI
[    0.483058] pci 0000:00:14.0: [1022:780b] type 00 class 0x0c0500
[    0.483279] pci 0000:00:14.2: [1022:780d] type 00 class 0x040300
[    0.483307] pci 0000:00:14.2: reg 10: [mem 0xf0340000-0xf0343fff 64bit]
[    0.483387] pci 0000:00:14.2: PME# supported from D0 D3hot D3cold
[    0.483462] pci 0000:00:14.2: System wakeup disabled by ACPI
[    0.483544] pci 0000:00:14.3: [1022:780e] type 00 class 0x060100
[    0.483752] pci 0000:00:14.4: [1022:780f] type 01 class 0x060401
[    0.483877] pci 0000:00:14.4: System wakeup disabled by ACPI
[    0.483960] pci 0000:00:14.5: [1022:7809] type 00 class 0x0c0310
[    0.483979] pci 0000:00:14.5: reg 10: [mem 0xf034a000-0xf034afff]
[    0.484131] pci 0000:00:14.5: System wakeup disabled by ACPI
[    0.484223] pci 0000:00:18.0: [1022:1700] type 00 class 0x060000
[    0.484402] pci 0000:00:18.1: [1022:1701] type 00 class 0x060000
[    0.484575] pci 0000:00:18.2: [1022:1702] type 00 class 0x060000
[    0.484763] pci 0000:00:18.3: [1022:1703] type 00 class 0x060000
[    0.484952] pci 0000:00:18.4: [1022:1704] type 00 class 0x060000
[    0.485126] pci 0000:00:18.5: [1022:1718] type 00 class 0x060000
[    0.485299] pci 0000:00:18.6: [1022:1716] type 00 class 0x060000
[    0.485473] pci 0000:00:18.7: [1022:1719] type 00 class 0x060000
[    0.485845] pci 0000:02:00.0: [14e4:4727] type 00 class 0x028000
[    0.485873] pci 0000:02:00.0: reg 10: [mem 0xf0200000-0xf0203fff 64bit]
[    0.485995] pci 0000:02:00.0: supports D1 D2
[    0.486000] pci 0000:02:00.0: PME# supported from D0 D3hot D3cold
[    0.493011] pci 0000:00:05.0: PCI bridge to [bus 02]
[    0.493033] pci 0000:00:05.0:   bridge window [mem 0xf0200000-0xf02fffff]
[    0.493222] pci 0000:03:00.0: [10ec:8168] type 00 class 0x020000
[    0.493245] pci 0000:03:00.0: reg 10: [io  0x2000-0x20ff]
[    0.493276] pci 0000:03:00.0: reg 18: [mem 0xf0004000-0xf0004fff 64bit 
pref]
[    0.493297] pci 0000:03:00.0: reg 20: [mem 0xf0000000-0xf0003fff 64bit 
pref]
[    0.493379] pci 0000:03:00.0: supports D1 D2
[    0.493383] pci 0000:03:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.500962] pci 0000:00:06.0: PCI bridge to [bus 03]
[    0.500986] pci 0000:00:06.0:   bridge window [io  0x2000-0x2fff]
[    0.501005] pci 0000:00:06.0:   bridge window [mem 0xf0000000-0xf00fffff 
64bit pref]
[    0.501237] pci 0000:04:00.0: [10ec:5209] type 00 class 0xff0000
[    0.501262] pci 0000:04:00.0: reg 10: [mem 0xf0100000-0xf0100fff]
[    0.501330] pci 0000:04:00.0: reg 30: [mem 0xffff0000-0xffffffff pref]
[    0.501396] pci 0000:04:00.0: supports D1 D2
[    0.501401] pci 0000:04:00.0: PME# supported from D1 D2 D3hot
[    0.508959] pci 0000:00:07.0: PCI bridge to [bus 04]
[    0.508987] pci 0000:00:07.0:   bridge window [mem 0xf0100000-0xf01fffff]
[    0.509174] pci 0000:00:14.4: PCI bridge to [bus 05] (subtractive decode)
[    0.509189] pci 0000:00:14.4:   bridge window [mem 0x000a0000-0x000bffff] 
(subtractive decode)
[    0.509194] pci 0000:00:14.4:   bridge window [mem 0x000c0000-0x000c1fff] 
(subtractive decode)
[    0.509199] pci 0000:00:14.4:   bridge window [mem 0x000c2000-0x000c3fff] 
(subtractive decode)
[    0.509204] pci 0000:00:14.4:   bridge window [mem 0x000c4000-0x000c5fff] 
(subtractive decode)
[    0.509208] pci 0000:00:14.4:   bridge window [mem 0x000c6000-0x000c7fff] 
(subtractive decode)
[    0.509213] pci 0000:00:14.4:   bridge window [mem 0x000c8000-0x000c9fff] 
(subtractive decode)
[    0.509217] pci 0000:00:14.4:   bridge window [mem 0x000ca000-0x000cbfff] 
(subtractive decode)
[    0.509222] pci 0000:00:14.4:   bridge window [mem 0x000cc000-0x000cdfff] 
(subtractive decode)
[    0.509226] pci 0000:00:14.4:   bridge window [mem 0x000d0000-0x000d1fff] 
(subtractive decode)
[    0.509230] pci 0000:00:14.4:   bridge window [mem 0x000d2000-0x000d3fff] 
(subtractive decode)
[    0.509235] pci 0000:00:14.4:   bridge window [mem 0x000d4000-0x000d5fff] 
(subtractive decode)
[    0.509241] pci 0000:00:14.4:   bridge window [mem 0x000d6000-0x000d7fff] 
(subtractive decode)
[    0.509246] pci 0000:00:14.4:   bridge window [mem 0x000d8000-0x000d9fff] 
(subtractive decode)
[    0.509250] pci 0000:00:14.4:   bridge window [mem 0x000da000-0x000dbfff] 
(subtractive decode)
[    0.509255] pci 0000:00:14.4:   bridge window [mem 0x000dc000-0x000ddfff] 
(subtractive decode)
[    0.509260] pci 0000:00:14.4:   bridge window [mem 0x000de000-0x000dffff] 
(subtractive decode)
[    0.509264] pci 0000:00:14.4:   bridge window [mem 0x000e0000-0x000e1fff] 
(subtractive decode)
[    0.509269] pci 0000:00:14.4:   bridge window [mem 0x000e2000-0x000e3fff] 
(subtractive decode)
[    0.509273] pci 0000:00:14.4:   bridge window [mem 0x000e4000-0x000e5fff] 
(subtractive decode)
[    0.509278] pci 0000:00:14.4:   bridge window [mem 0x000e6000-0x000e7fff] 
(subtractive decode)
[    0.509282] pci 0000:00:14.4:   bridge window [mem 0x000e8000-0x000e9fff] 
(subtractive decode)
[    0.509286] pci 0000:00:14.4:   bridge window [mem 0x000ea000-0x000ebfff] 
(subtractive decode)
[    0.509291] pci 0000:00:14.4:   bridge window [mem 0x000ec000-0x000edfff] 
(subtractive decode)
[    0.509295] pci 0000:00:14.4:   bridge window [mem 0x000ee000-0x000effff] 
(subtractive decode)
[    0.509300] pci 0000:00:14.4:   bridge window [mem 0xe0000000-0xf7ffffff] 
(subtractive decode)
[    0.509305] pci 0000:00:14.4:   bridge window [mem 0xfc000000-0xfdffffff] 
(subtractive decode)
[    0.509309] pci 0000:00:14.4:   bridge window [mem 0xfed40000-0xfed44fff] 
(subtractive decode)
[    0.509314] pci 0000:00:14.4:   bridge window [io  0x0000-0x0cf7] 
(subtractive decode)
[    0.509319] pci 0000:00:14.4:   bridge window [io  0x0d00-0xffff] 
(subtractive decode)
[    0.509671] acpi PNP0A08:00: Requesting ACPI _OSC control (0x1d)
[    0.510367] acpi PNP0A08:00: ACPI _OSC control (0x19) granted
[    0.511384] ACPI: PCI Interrupt Link [LNKA] (IRQs 10 11) *0
[    0.511557] ACPI: PCI Interrupt Link [LNKB] (IRQs 10 11) *0
[    0.511717] ACPI: PCI Interrupt Link [LNKC] (IRQs 10 11) *0
[    0.511877] ACPI: PCI Interrupt Link [LNKD] (IRQs 10 11) *0
[    0.512022] ACPI: PCI Interrupt Link [LNKE] (IRQs 10 11) *0
[    0.512144] ACPI: PCI Interrupt Link [LNKF] (IRQs 10 11) *0
[    0.512266] ACPI: PCI Interrupt Link [LNKG] (IRQs 10 11) *0
[    0.512387] ACPI: PCI Interrupt Link [LNKH] (IRQs 10 11) *0
[    0.514983] ACPI: Enabled 2 GPEs in block 00 to 1F
[    0.515004] acpi root: \_SB_.PCI0 notify handler is installed
[    0.515126] Found 1 acpi root devices
[    0.515280] ACPI: EC: GPE = 0x3, I/O: command/status = 0x66, data = 0x62
[    0.515581] ACPI: No dock devices found.
[    0.515987] vgaarb: device added: 
PCI:0000:00:01.0,decodes=io+mem,owns=io+mem,locks=none
[    0.516006] vgaarb: loaded
[    0.516009] vgaarb: bridge control possible 0000:00:01.0
[    0.516146] PCI: Using ACPI for IRQ routing
[    0.518439] PCI: pci_cache_line_size set to 64 bytes
[    0.518629] e820: reserve RAM buffer [mem 0x0009e800-0x0009ffff]
[    0.518634] e820: reserve RAM buffer [mem 0xd3820000-0xd3ffffff]
[    0.518637] e820: reserve RAM buffer [mem 0x207000000-0x207ffffff]
[    0.518902] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
[    0.518910] hpet0: 3 comparators, 32-bit 14.318180 MHz counter
[    0.520942] Switching to clocksource hpet
[    0.524567] pnp: PnP ACPI init
[    0.524601] ACPI: bus type PNP registered
[    0.524964] system 00:00: [io  0x0f50-0x0f51] has been reserved
[    0.524975] system 00:00: [mem 0xfec00000-0xfec00fff] could not be reserved
[    0.524981] system 00:00: [mem 0xfee00000-0xfee00fff] has been reserved
[    0.524986] system 00:00: [mem 0xf8000000-0xfbffffff] has been reserved
[    0.524996] system 00:00: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.525807] pnp 00:01: [dma 4]
[    0.525869] pnp 00:01: Plug and Play ACPI device, IDs PNP0200 (active)
[    0.525967] pnp 00:02: Plug and Play ACPI device, IDs PNP0c04 (active)
[    0.526060] pnp 00:03: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.526129] pnp 00:04: Plug and Play ACPI device, IDs PNP0800 (active)
[    0.526221] pnp 00:05: Plug and Play ACPI device, IDs PNP0303 (active)
[    0.526329] pnp 00:06: Plug and Play ACPI device, IDs LEN0026 PNP0f13 
(active)
[    0.526469] system 00:07: [io  0x04d0-0x04d1] has been reserved
[    0.526476] system 00:07: [io  0x0530-0x0537] has been reserved
[    0.526482] system 00:07: [io  0x0800-0x0827] has been reserved
[    0.526489] system 00:07: [io  0x0830] has been reserved
[    0.526494] system 00:07: [io  0x0840-0x0847] has been reserved
[    0.526499] system 00:07: [io  0x0b00-0x0b1f] has been reserved
[    0.526505] system 00:07: [io  0x0b20-0x0b3f] has been reserved
[    0.526510] system 00:07: [io  0x0c00-0x0c01] has been reserved
[    0.526515] system 00:07: [io  0x0c14] has been reserved
[    0.526521] system 00:07: [io  0x0c50-0x0c52] has been reserved
[    0.526526] system 00:07: [io  0x0cd0-0x0cd1] has been reserved
[    0.526531] system 00:07: [io  0x0cd2-0x0cd3] has been reserved
[    0.526536] system 00:07: [io  0x0cd4-0x0cd5] has been reserved
[    0.526542] system 00:07: [io  0x0cd6-0x0cd7] has been reserved
[    0.526547] system 00:07: [io  0x0cd8-0x0cdf] has been reserved
[    0.526553] system 00:07: [io  0x0cf9] could not be reserved
[    0.526558] system 00:07: [io  0x8100-0x81ff window] has been reserved
[    0.526564] system 00:07: [io  0x8200-0x82ff window] has been reserved
[    0.526572] system 00:07: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.526754] pnp 00:08: [Firmware Bug]: [mem 0x00000000-0xffffffffffffffff 
disabled] covers only part of AMD MMCONFIG area [mem 0xf8000000-0xfbffffff]; 
adding more reservations
[    0.526814] system 00:08: [mem 0x000e0000-0x000fffff] could not be reserved
[    0.526820] system 00:08: [mem 0xffe00000-0xffffffff] has been reserved
[    0.526826] system 00:08: [mem 0xfec10000-0xfec1001f] has been reserved
[    0.526831] system 00:08: [mem 0xfed00000-0xfed003ff] has been reserved
[    0.526837] system 00:08: [mem 0xfed61000-0xfed613ff] has been reserved
[    0.526842] system 00:08: [mem 0xfed80000-0xfed80fff] has been reserved
[    0.526849] system 00:08: Plug and Play ACPI device, IDs PNP0c01 (active)
[    0.527995] pnp: PnP ACPI: found 9 devices
[    0.528004] ACPI: bus type PNP unregistered
[    0.538522] pci 0000:04:00.0: no compatible bridge window for [mem 
0xffff0000-0xffffffff pref]
[    0.538583] pci 0000:00:07.0: bridge window [io  0x1000-0x0fff] to [bus 04] 
add_size 1000
[    0.538591] pci 0000:00:07.0: bridge window [mem 0x00100000-0x001fffff 
pref] to [bus 04] add_size 200000
[    0.538614] pci 0000:00:07.0: res[15]=[mem 0x00100000-0x001fffff pref] 
get_res_add_size add_size 200000
[    0.538619] pci 0000:00:07.0: res[13]=[io  0x1000-0x0fff] get_res_add_size 
add_size 1000
[    0.538642] pci 0000:00:07.0: BAR 15: assigned [mem 0xf0400000-0xf06fffff 
pref]
[    0.538653] pci 0000:00:07.0: BAR 13: assigned [io  0x1000-0x1fff]
[    0.538660] pci 0000:00:05.0: PCI bridge to [bus 02]
[    0.538669] pci 0000:00:05.0:   bridge window [mem 0xf0200000-0xf02fffff]
[    0.538679] pci 0000:00:06.0: PCI bridge to [bus 03]
[    0.538685] pci 0000:00:06.0:   bridge window [io  0x2000-0x2fff]
[    0.538694] pci 0000:00:06.0:   bridge window [mem 0xf0000000-0xf00fffff 
64bit pref]
[    0.538704] pci 0000:04:00.0: BAR 6: assigned [mem 0xf0400000-0xf040ffff 
pref]
[    0.538709] pci 0000:00:07.0: PCI bridge to [bus 04]
[    0.538714] pci 0000:00:07.0:   bridge window [io  0x1000-0x1fff]
[    0.538721] pci 0000:00:07.0:   bridge window [mem 0xf0100000-0xf01fffff]
[    0.538727] pci 0000:00:07.0:   bridge window [mem 0xf0400000-0xf06fffff 
pref]
[    0.538736] pci 0000:00:14.4: PCI bridge to [bus 05]
[    0.539996] pci_bus 0000:00: resource 4 [mem 0x000a0000-0x000bffff]
[    0.540001] pci_bus 0000:00: resource 5 [mem 0x000c0000-0x000c1fff]
[    0.540006] pci_bus 0000:00: resource 6 [mem 0x000c2000-0x000c3fff]
[    0.540010] pci_bus 0000:00: resource 7 [mem 0x000c4000-0x000c5fff]
[    0.540014] pci_bus 0000:00: resource 8 [mem 0x000c6000-0x000c7fff]
[    0.540018] pci_bus 0000:00: resource 9 [mem 0x000c8000-0x000c9fff]
[    0.540023] pci_bus 0000:00: resource 10 [mem 0x000ca000-0x000cbfff]
[    0.540027] pci_bus 0000:00: resource 11 [mem 0x000cc000-0x000cdfff]
[    0.540031] pci_bus 0000:00: resource 12 [mem 0x000d0000-0x000d1fff]
[    0.540035] pci_bus 0000:00: resource 13 [mem 0x000d2000-0x000d3fff]
[    0.540039] pci_bus 0000:00: resource 14 [mem 0x000d4000-0x000d5fff]
[    0.540043] pci_bus 0000:00: resource 15 [mem 0x000d6000-0x000d7fff]
[    0.540048] pci_bus 0000:00: resource 16 [mem 0x000d8000-0x000d9fff]
[    0.540052] pci_bus 0000:00: resource 17 [mem 0x000da000-0x000dbfff]
[    0.540056] pci_bus 0000:00: resource 18 [mem 0x000dc000-0x000ddfff]
[    0.540060] pci_bus 0000:00: resource 19 [mem 0x000de000-0x000dffff]
[    0.540064] pci_bus 0000:00: resource 20 [mem 0x000e0000-0x000e1fff]
[    0.540068] pci_bus 0000:00: resource 21 [mem 0x000e2000-0x000e3fff]
[    0.540072] pci_bus 0000:00: resource 22 [mem 0x000e4000-0x000e5fff]
[    0.540077] pci_bus 0000:00: resource 23 [mem 0x000e6000-0x000e7fff]
[    0.540081] pci_bus 0000:00: resource 24 [mem 0x000e8000-0x000e9fff]
[    0.540085] pci_bus 0000:00: resource 25 [mem 0x000ea000-0x000ebfff]
[    0.540089] pci_bus 0000:00: resource 26 [mem 0x000ec000-0x000edfff]
[    0.540093] pci_bus 0000:00: resource 27 [mem 0x000ee000-0x000effff]
[    0.540097] pci_bus 0000:00: resource 28 [mem 0xe0000000-0xf7ffffff]
[    0.540102] pci_bus 0000:00: resource 29 [mem 0xfc000000-0xfdffffff]
[    0.540106] pci_bus 0000:00: resource 30 [mem 0xfed40000-0xfed44fff]
[    0.540110] pci_bus 0000:00: resource 31 [io  0x0000-0x0cf7]
[    0.540114] pci_bus 0000:00: resource 32 [io  0x0d00-0xffff]
[    0.540119] pci_bus 0000:02: resource 1 [mem 0xf0200000-0xf02fffff]
[    0.540123] pci_bus 0000:03: resource 0 [io  0x2000-0x2fff]
[    0.540128] pci_bus 0000:03: resource 2 [mem 0xf0000000-0xf00fffff 64bit 
pref]
[    0.540133] pci_bus 0000:04: resource 0 [io  0x1000-0x1fff]
[    0.540136] pci_bus 0000:04: resource 1 [mem 0xf0100000-0xf01fffff]
[    0.540141] pci_bus 0000:04: resource 2 [mem 0xf0400000-0xf06fffff pref]
[    0.540146] pci_bus 0000:05: resource 4 [mem 0x000a0000-0x000bffff]
[    0.540150] pci_bus 0000:05: resource 5 [mem 0x000c0000-0x000c1fff]
[    0.540154] pci_bus 0000:05: resource 6 [mem 0x000c2000-0x000c3fff]
[    0.540158] pci_bus 0000:05: resource 7 [mem 0x000c4000-0x000c5fff]
[    0.540162] pci_bus 0000:05: resource 8 [mem 0x000c6000-0x000c7fff]
[    0.540166] pci_bus 0000:05: resource 9 [mem 0x000c8000-0x000c9fff]
[    0.540170] pci_bus 0000:05: resource 10 [mem 0x000ca000-0x000cbfff]
[    0.540174] pci_bus 0000:05: resource 11 [mem 0x000cc000-0x000cdfff]
[    0.540178] pci_bus 0000:05: resource 12 [mem 0x000d0000-0x000d1fff]
[    0.540182] pci_bus 0000:05: resource 13 [mem 0x000d2000-0x000d3fff]
[    0.540187] pci_bus 0000:05: resource 14 [mem 0x000d4000-0x000d5fff]
[    0.540191] pci_bus 0000:05: resource 15 [mem 0x000d6000-0x000d7fff]
[    0.540195] pci_bus 0000:05: resource 16 [mem 0x000d8000-0x000d9fff]
[    0.540199] pci_bus 0000:05: resource 17 [mem 0x000da000-0x000dbfff]
[    0.540203] pci_bus 0000:05: resource 18 [mem 0x000dc000-0x000ddfff]
[    0.540207] pci_bus 0000:05: resource 19 [mem 0x000de000-0x000dffff]
[    0.540212] pci_bus 0000:05: resource 20 [mem 0x000e0000-0x000e1fff]
[    0.540216] pci_bus 0000:05: resource 21 [mem 0x000e2000-0x000e3fff]
[    0.540220] pci_bus 0000:05: resource 22 [mem 0x000e4000-0x000e5fff]
[    0.540224] pci_bus 0000:05: resource 23 [mem 0x000e6000-0x000e7fff]
[    0.540228] pci_bus 0000:05: resource 24 [mem 0x000e8000-0x000e9fff]
[    0.540232] pci_bus 0000:05: resource 25 [mem 0x000ea000-0x000ebfff]
[    0.540236] pci_bus 0000:05: resource 26 [mem 0x000ec000-0x000edfff]
[    0.540241] pci_bus 0000:05: resource 27 [mem 0x000ee000-0x000effff]
[    0.540245] pci_bus 0000:05: resource 28 [mem 0xe0000000-0xf7ffffff]
[    0.540249] pci_bus 0000:05: resource 29 [mem 0xfc000000-0xfdffffff]
[    0.540253] pci_bus 0000:05: resource 30 [mem 0xfed40000-0xfed44fff]
[    0.540257] pci_bus 0000:05: resource 31 [io  0x0000-0x0cf7]
[    0.540262] pci_bus 0000:05: resource 32 [io  0x0d00-0xffff]
[    0.540406] NET: Registered protocol family 2
[    0.540967] TCP established hash table entries: 65536 (order: 8, 1048576 
bytes)
[    0.541667] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes)
[    0.542196] TCP: Hash tables configured (established 65536 bind 65536)
[    0.542295] TCP: reno registered
[    0.542328] UDP hash table entries: 4096 (order: 5, 131072 bytes)
[    0.542423] UDP-Lite hash table entries: 4096 (order: 5, 131072 bytes)
[    0.542752] NET: Registered protocol family 1
[    0.542789] pci 0000:00:01.0: Boot video device
[    0.757617] PCI: CLS 32 bytes, default 64
[    0.757724] Unpacking initramfs...
[    1.248197] Freeing initrd memory: 13784k freed
[    1.255853] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[    1.255864] software IO TLB [mem 0xcf820000-0xd3820000] (64MB) mapped at 
[ffff8800cf820000-ffff8800d381ffff]
[    1.256179] LVT offset 0 assigned for vector 0x400
[    1.256267] perf: AMD IBS detected (0x000000ff)
[    1.256856] audit: initializing netlink socket (disabled)
[    1.256884] type=2000 audit(1371838104.948:1): initialized
[    1.286973] bounce pool size: 64 pages
[    1.286986] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[    1.288528] VFS: Disk quotas dquot_6.5.2
[    1.288598] Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    1.288794] msgmni has been set to 14824
[    1.289379] alg: No test for stdrng (krng)
[    1.289458] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 
252)
[    1.289535] io scheduler noop registered
[    1.289539] io scheduler deadline registered
[    1.289560] io scheduler cfq registered (default)
[    1.289841] pcieport 0000:00:07.0: irq 40 for MSI/MSI-X
[    1.289993] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[    1.290105] pciehp 0000:00:07.0:pcie04: HPC vendor_id 1022 device_id 1515 
ss_vid 1022 ss_did 1234
[    1.290188] pciehp 0000:00:07.0:pcie04: service driver pciehp loaded
[    1.290202] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
[    1.290388] GHES: HEST is not enabled!
[    1.290625] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    1.291604] Linux agpgart interface v0.103
[    1.291886] i8042: PNP: PS/2 Controller [PNP0303:KBC0,PNP0f13:MSE0] at 
0x60,0x64 irq 1,12
[    1.295744] i8042: Detected active multiplexing controller, rev 1.1
[    1.296559] serio: i8042 KBD port at 0x60,0x64 irq 1
[    1.296574] serio: i8042 AUX0 port at 0x60,0x64 irq 12
[    1.296629] serio: i8042 AUX1 port at 0x60,0x64 irq 12
[    1.296677] serio: i8042 AUX2 port at 0x60,0x64 irq 12
[    1.296719] serio: i8042 AUX3 port at 0x60,0x64 irq 12
[    1.297240] mousedev: PS/2 mouse device common for all mice
[    1.297373] rtc_cmos 00:03: RTC can wake from S4
[    1.297564] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0
[    1.297623] rtc_cmos 00:03: alarms up to one month, 114 bytes nvram, hpet 
irqs
[    1.297643] cpuidle: using governor ladder
[    1.297647] cpuidle: using governor menu
[    1.297720] drop_monitor: Initializing network drop monitor service
[    1.297848] TCP: cubic registered
[    1.297927] NET: Registered protocol family 10
[    1.298299] mip6: Mobile IPv6
[    1.298304] NET: Registered protocol family 17
[    1.298916] PM: Hibernation image not present or could not be loaded.
[    1.298940] registered taskstats version 1
[    1.300321] rtc_cmos 00:03: setting system clock to 2013-06-21 18:08:26 UTC 
(1371838106)
[    1.302389] Freeing unused kernel memory: 920k freed
[    1.302871] Write protecting the kernel read-only data: 6144k
[    1.305526] Freeing unused kernel memory: 376k freed
[    1.308250] Freeing unused kernel memory: 480k freed
[    1.338483] input: AT Translated Set 2 keyboard as 
/devices/platform/i8042/serio0/input/input0
[    1.467837] udevd[60]: starting version 175
[    1.573573] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
[    1.573937] r8169 0000:03:00.0: irq 41 for MSI/MSI-X
[    1.574267] r8169 0000:03:00.0 eth0: RTL8168evl/8111evl at 
0xffffc90000c16000, XX:XX:XX:XX:XX:XX, XID 0c900800 IRQ 41
[    1.574273] r8169 0000:03:00.0 eth0: jumbo features [frames: 9200 bytes, tx 
checksumming: ko]
[    1.574394] SCSI subsystem initialized
[    1.588330] ACPI: bus type ATA registered
[    1.594868] ACPI: bus type USB registered
[    1.594932] usbcore: registered new interface driver usbfs
[    1.594958] usbcore: registered new interface driver hub
[    1.598883] rtsx_pci 0000:04:00.0: irq 42 for MSI/MSI-X
[    1.598910] rtsx_pci 0000:04:00.0: rtsx_pci_acquire_irq: pcr->msi_en = 1, 
pci->irq = 42
[    1.599066] libata version 3.00 loaded.
[    1.599239] usbcore: registered new device driver usb
[    1.600028] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.600459] ehci-pci: EHCI PCI platform driver
[    1.600727] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    1.600956] ehci-pci 0000:00:12.2: EHCI Host Controller
[    1.600971] ehci-pci 0000:00:12.2: new USB bus registered, assigned bus 
number 1
[    1.600990] QUIRK: Enable AMD PLL fix
[    1.600994] ehci-pci 0000:00:12.2: applying AMD SB700/SB800/Hudson-2/3 EHCI 
dummy qh workaround
[    1.601023] ehci-pci 0000:00:12.2: debug port 1
[    1.601091] ehci-pci 0000:00:12.2: irq 17, io mem 0xf034d900
[    1.607991] thermal LNXTHERM:00: registered as thermal_zone0
[    1.608000] ACPI: Thermal Zone [THZ0] (70 C)
[    1.612277] ehci-pci 0000:00:12.2: USB 2.0 started, EHCI 1.00
[    1.612346] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    1.612351] usb usb1: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    1.612356] usb usb1: Product: EHCI Host Controller
[    1.612361] usb usb1: Manufacturer: Linux 3.10-rc5-amd64 ehci_hcd
[    1.612365] usb usb1: SerialNumber: 0000:00:12.2
[    1.612631] hub 1-0:1.0: USB hub found
[    1.612648] hub 1-0:1.0: 5 ports detected
[    1.613386] ehci-pci 0000:00:13.2: EHCI Host Controller
[    1.613399] ehci-pci 0000:00:13.2: new USB bus registered, assigned bus 
number 2
[    1.613412] ehci-pci 0000:00:13.2: applying AMD SB700/SB800/Hudson-2/3 EHCI 
dummy qh workaround
[    1.613441] ehci-pci 0000:00:13.2: debug port 1
[    1.613491] ehci-pci 0000:00:13.2: irq 17, io mem 0xf034d800
[    1.624862] ehci-pci 0000:00:13.2: USB 2.0 started, EHCI 1.00
[    1.624922] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[    1.624927] usb usb2: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    1.624932] usb usb2: Product: EHCI Host Controller
[    1.624936] usb usb2: Manufacturer: Linux 3.10-rc5-amd64 ehci_hcd
[    1.624940] usb usb2: SerialNumber: 0000:00:13.2
[    1.625230] hub 2-0:1.0: USB hub found
[    1.625242] hub 2-0:1.0: 5 ports detected
[    1.626298] ohci_hcd 0000:00:12.0: OHCI Host Controller
[    1.626318] ohci_hcd 0000:00:12.0: new USB bus registered, assigned bus 
number 3
[    1.626385] ohci_hcd 0000:00:12.0: irq 18, io mem 0xf034c000
[    1.678037] microcode: CPU0: patch_level=0x0500010d
[    1.678109] platform microcode: firmware: agent loaded amd-
ucode/microcode_amd.bin into memory
[    1.678162] microcode: CPU1: patch_level=0x0500010d
[    1.678261] microcode: Microcode Update Driver: v2.00 
<tigran@aivazian.fsnet.co.uk>, Peter Oruba
[    1.684660] usb usb3: New USB device found, idVendor=1d6b, idProduct=0001
[    1.684669] usb usb3: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    1.684674] usb usb3: Product: OHCI Host Controller
[    1.684678] usb usb3: Manufacturer: Linux 3.10-rc5-amd64 ohci_hcd
[    1.684682] usb usb3: SerialNumber: 0000:00:12.0
[    1.685108] hub 3-0:1.0: USB hub found
[    1.685136] hub 3-0:1.0: 5 ports detected
[    1.685619] ahci 0000:00:11.0: version 3.0
[    1.686122] ahci 0000:00:11.0: irq 43 for MSI/MSI-X
[    1.686196] ahci 0000:00:11.0: AHCI 0001.0300 32 slots 1 ports 6 Gbps 0x1 
impl SATA mode
[    1.686203] ahci 0000:00:11.0: flags: 64bit ncq sntf ilck pm led clo pmp 
pio slum part 
[    1.686644] scsi0 : ahci
[    1.686774] ata1: SATA max UDMA/133 abar m2048@0xf034d000 port 0xf034d100 
irq 43
[    1.687303] xhci_hcd 0000:00:10.0: xHCI Host Controller
[    1.687317] xhci_hcd 0000:00:10.0: new USB bus registered, assigned bus 
number 4
[    1.687568] xhci_hcd 0000:00:10.0: irq 44 for MSI/MSI-X
[    1.687580] xhci_hcd 0000:00:10.0: irq 45 for MSI/MSI-X
[    1.687591] xhci_hcd 0000:00:10.0: irq 46 for MSI/MSI-X
[    1.687732] usb usb4: New USB device found, idVendor=1d6b, idProduct=0002
[    1.687738] usb usb4: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    1.687742] usb usb4: Product: xHCI Host Controller
[    1.687746] usb usb4: Manufacturer: Linux 3.10-rc5-amd64 xhci_hcd
[    1.687750] usb usb4: SerialNumber: 0000:00:10.0
[    1.687930] xHCI xhci_add_endpoint called for root hub
[    1.687934] xHCI xhci_check_bandwidth called for root hub
[    1.687998] hub 4-0:1.0: USB hub found
[    1.688012] hub 4-0:1.0: 2 ports detected
[    1.688200] xhci_hcd 0000:00:10.0: xHCI Host Controller
[    1.688209] xhci_hcd 0000:00:10.0: new USB bus registered, assigned bus 
number 5
[    1.690941] usb usb5: New USB device found, idVendor=1d6b, idProduct=0003
[    1.690946] usb usb5: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    1.690950] usb usb5: Product: xHCI Host Controller
[    1.690953] usb usb5: Manufacturer: Linux 3.10-rc5-amd64 xhci_hcd
[    1.690957] usb usb5: SerialNumber: 0000:00:10.0
[    1.691099] xHCI xhci_add_endpoint called for root hub
[    1.691103] xHCI xhci_check_bandwidth called for root hub
[    1.691157] hub 5-0:1.0: USB hub found
[    1.691179] hub 5-0:1.0: 2 ports detected
[    1.702517] ohci_hcd 0000:00:13.0: OHCI Host Controller
[    1.702536] ohci_hcd 0000:00:13.0: new USB bus registered, assigned bus 
number 6
[    1.702590] ohci_hcd 0000:00:13.0: irq 18, io mem 0xf034b000
[    1.760351] usb usb6: New USB device found, idVendor=1d6b, idProduct=0001
[    1.760360] usb usb6: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    1.760365] usb usb6: Product: OHCI Host Controller
[    1.760370] usb usb6: Manufacturer: Linux 3.10-rc5-amd64 ohci_hcd
[    1.760374] usb usb6: SerialNumber: 0000:00:13.0
[    1.760871] hub 6-0:1.0: USB hub found
[    1.760903] hub 6-0:1.0: 5 ports detected
[    1.761653] ohci_hcd 0000:00:14.5: OHCI Host Controller
[    1.761666] ohci_hcd 0000:00:14.5: new USB bus registered, assigned bus 
number 7
[    1.761700] ohci_hcd 0000:00:14.5: irq 18, io mem 0xf034a000
[    1.820315] usb usb7: New USB device found, idVendor=1d6b, idProduct=0001
[    1.820324] usb usb7: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    1.820329] usb usb7: Product: OHCI Host Controller
[    1.820333] usb usb7: Manufacturer: Linux 3.10-rc5-amd64 ohci_hcd
[    1.820337] usb usb7: SerialNumber: 0000:00:14.5
[    1.820770] hub 7-0:1.0: USB hub found
[    1.820787] hub 7-0:1.0: 2 ports detected
[    2.180092] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[    2.183146] ata1.00: ATA-8: ST320LT007-9ZV142, 0004LVM1, max UDMA/133
[    2.183161] ata1.00: 625142448 sectors, multi 16: LBA48 NCQ (depth 31/32)
[    2.186615] ata1.00: configured for UDMA/133
[    2.187126] scsi 0:0:0:0: Direct-Access     ATA      ST320LT007-9ZV14 0004 
PQ: 0 ANSI: 5
[    2.194471] sd 0:0:0:0: [sda] 625142448 512-byte logical blocks: (320 
GB/298 GiB)
[    2.194480] sd 0:0:0:0: [sda] 4096-byte physical blocks
[    2.195035] sd 0:0:0:0: [sda] Write Protect is off
[    2.195046] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    2.195193] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, 
doesn't support DPO or FUA
[    2.195858] usb 2-4: new high-speed USB device number 3 using ehci-pci
[    2.205904]  sda: sda1 sda2
[    2.207135] sd 0:0:0:0: [sda] Attached SCSI disk
[    2.211082] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    2.251992] tsc: Refined TSC clocksource calibration: 1696.913 MHz
[    2.252015] Switching to clocksource tsc
[    2.339530] usb 2-4: New USB device found, idVendor=5986, idProduct=0299
[    2.339546] usb 2-4: New USB device strings: Mfr=1, Product=2, 
SerialNumber=0
[    2.339555] usb 2-4: Product: Integrated Camera
[    2.339563] usb 2-4: Manufacturer: Vimicro corp.
[    2.501531] device-mapper: uevent: version 1.0.3
[    2.501682] device-mapper: ioctl: 4.24.0-ioctl (2013-01-15) initialised: 
dm-devel@redhat.com
[    2.603708] usb 6-3: new full-speed USB device number 2 using ohci_hcd
[    2.778480] usb 6-3: New USB device found, idVendor=0a5c, idProduct=21f4
[    2.778496] usb 6-3: New USB device strings: Mfr=1, Product=2, 
SerialNumber=3
[    2.778505] usb 6-3: Product: BCM20702A0
[    2.778513] usb 6-3: Manufacturer: Broadcom Corp
[    2.778521] usb 6-3: SerialNumber: C0143DC1809E
[    7.595791] bio: create slab <bio-1> at 1
[    7.866355] bio: create slab <bio-1> at 1
[    8.573937] EXT4-fs (dm-1): mounted filesystem with ordered data mode. 
Opts: (null)
[   11.247624] udevd[457]: starting version 175
[   12.889596] bcma: bus0: Found chip with id 0x4313, rev 0x01 and package 
0x08
[   12.889623] bcma: bus0: Core 0 found: ChipCommon (manuf 0x4BF, id 0x800, 
rev 0x24, class 0x0)
[   12.889643] bcma: bus0: Core 1 found: IEEE 802.11 (manuf 0x4BF, id 0x812, 
rev 0x18, class 0x0)
[   12.889678] bcma: bus0: Core 2 found: PCIe (manuf 0x4BF, id 0x820, rev 
0x11, class 0x0)
[   12.902441] bcma: bus0: Bus registered
[   13.048107] wmi: Mapper loaded
[   13.085930] ACPI: AC Adapter [ACAD] (on-line)
[   13.086780] input: Power Button as 
/devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input1
[   13.087034] ACPI: Power Button [PWRB]
[   13.087223] input: Lid Switch as 
/devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input2
[   13.090828] ACPI: Lid Switch [LID]
[   13.090994] input: Power Button as 
/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3
[   13.091104] ACPI: Power Button [PWRF]
[   13.103458] input: PC Speaker as /devices/platform/pcspkr/input/input4
[   13.117765] ACPI: acpi_idle registered with cpuidle
[   13.122241] [Firmware Bug]: ACPI: No _BQC method, cannot determine initial 
brightness
[   13.122331] ACPI: Video Device [VGA1] (multi-head: yes  rom: no  post: no)
[   13.122470] input: Video Bus as 
/devices/LNXSYSTM:00/device:00/PNP0A08:00/LNXVIDEO:01/input/input5
[   13.184631] kvm: Nested Virtualization enabled
[   13.184642] kvm: Nested Paging enabled
[   13.240908] ACPI: Battery Slot [BAT1] (battery present)
[   13.348769] ACPI Warning: 0x0000000000000b00-0x0000000000000b07 SystemIO 
conflicts with Region \_SB_.PCI0.SMB_.SMB0 1 (20130328/utaddress-251)
[   13.348784] ACPI: If an ACPI driver is available for this device, you 
should use it instead of the native driver
[   13.395080] Non-volatile memory driver v1.3
[   13.404793] media: Linux media interface: v0.10
[   13.417163] Bluetooth: Core ver 2.16
[   13.417229] NET: Registered protocol family 31
[   13.417233] Bluetooth: HCI device and connection manager initialized
[   13.417250] Bluetooth: HCI socket layer initialized
[   13.417255] Bluetooth: L2CAP socket layer initialized
[   13.417274] Bluetooth: SCO socket layer initialized
[   13.419553] thinkpad_acpi: ThinkPad ACPI Extras v0.24
[   13.419560] thinkpad_acpi: http://ibm-acpi.sf.net/
[   13.419564] thinkpad_acpi: ThinkPad BIOS HMET19WW (1.05 ), EC unknown
[   13.419567] thinkpad_acpi: Lenovo ThinkPad Edge E135, model 335963G
[   13.420277] thinkpad_acpi: detected a 8-level brightness capable ThinkPad
[   13.424076] thinkpad_acpi: radio switch found; radios are enabled
[   13.424110] thinkpad_acpi: possible tablet mode switch found; ThinkPad in 
laptop mode
[   13.449845] Linux video capture interface: v2.00
[   13.500109] thinkpad_acpi: rfkill switch tpacpi_bluetooth_sw: radio is 
unblocked
[   13.500432] usbcore: registered new interface driver btusb
[   13.503572] [drm] Initialized drm 1.1.0 20060810
[   13.512455] thinkpad_acpi: Console audio control enabled, mode: monitor 
(read only)
[   13.515257] input: ThinkPad Extra Buttons as 
/devices/platform/thinkpad_acpi/input/input6
[   13.523301] acpi-cpufreq: overriding BIOS provided _PSD data
[   13.640662] cfg80211: Calling CRDA to update world regulatory domain
[   13.707413] [drm] radeon kernel modesetting enabled.
[   13.752161] [drm] initializing kernel modesetting (PALM 0x1002:0x9808 
0x17AA:0x5105).
[   13.752257] [drm] register mmio base: 0xF0300000
[   13.752263] [drm] register mmio size: 262144
[   13.752581] ATOM BIOS: Lenovo
[   13.752684] radeon 0000:00:01.0: VRAM: 384M 0x0000000000000000 - 
0x0000000017FFFFFF (384M used)
[   13.752695] radeon 0000:00:01.0: GTT: 512M 0x0000000018000000 - 
0x0000000037FFFFFF
[   13.753074] [drm] Detected VRAM RAM=384M, BAR=256M
[   13.753087] [drm] RAM width 32bits DDR
[   13.753326] [TTM] Zone  kernel: Available graphics memory: 3795838 kiB
[   13.753334] [TTM] Zone   dma32: Available graphics memory: 2097152 kiB
[   13.753339] [TTM] Initializing pool allocator
[   13.753356] [TTM] Initializing DMA pool allocator
[   13.753443] [drm] radeon: 384M of VRAM memory ready
[   13.753450] [drm] radeon: 512M of GTT memory ready.
[   13.820282] brcmsmac bcma0:0: mfg 4bf core 812 rev 24 class 0 irq 17
[   13.822340] psmouse serio4: synaptics: Touchpad model: 1, fw: 8.1, id: 
0x1e2b1, caps: 0xd002a3/0x940300/0x126c00, board id: 2290, fw id: 1212745
[   13.822371] psmouse serio4: synaptics: serio: Synaptics pass-through port 
at isa0060/serio4/input0
[   13.830102] uvcvideo: Found UVC 1.00 device Integrated Camera (5986:0299)
[   13.832506] input: Integrated Camera as 
/devices/pci0000:00/0000:00:13.2/usb2/2-4/2-4:1.0/input/input7
[   13.833071] usbcore: registered new interface driver uvcvideo
[   13.833077] USB Video Class driver (1.1.1)
[   13.868604] input: SynPS/2 Synaptics TouchPad as 
/devices/platform/i8042/serio4/input/input8
[   13.977004] platform radeon_uvd.0: firmware: agent aborted loading 
radeon/SUMO_uvd.bin (not found?)
[   13.977252] radeon 0000:00:01.0: radeon_uvd: Can't load firmware 
"radeon/SUMO_uvd.bin"
[   13.977394] [drm] GART: num cpu pages 131072, num gpu pages 131072
[   13.980585] [drm] Loading PALM Microcode
[   14.018838] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[   14.115519] platform radeon_cp.0: firmware: agent loaded 
radeon/PALM_pfp.bin into memory
[   14.127942] platform radeon_cp.0: firmware: agent loaded radeon/PALM_me.bin 
into memory
[   14.145810] platform radeon_cp.0: firmware: agent loaded 
radeon/SUMO_rlc.bin into memory
[   14.159352] [drm] PCIE GART of 512M enabled (table at 0x0000000000040000).
[   14.159705] radeon 0000:00:01.0: WB enabled
[   14.159720] radeon 0000:00:01.0: fence driver on ring 0 use gpu addr 
0x0000000018000c00 and cpu addr 0xffff8801fdad5c00
[   14.159731] radeon 0000:00:01.0: fence driver on ring 3 use gpu addr 
0x0000000018000c0c and cpu addr 0xffff8801fdad5c0c
[   14.159743] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[   14.159748] [drm] Driver supports precise vblank timestamp query.
[   14.159806] radeon 0000:00:01.0: irq 47 for MSI/MSI-X
[   14.159846] radeon 0000:00:01.0: radeon: using MSI.
[   14.159914] [drm] radeon: irq initialized.
[   14.177995] [drm] ring test on 0 succeeded in 1 usecs
[   14.178081] [drm] ring test on 3 succeeded in 1 usecs
[   14.179450] [drm] Enabling audio support
[   14.179510] [drm] ib test on ring 0 succeeded in 0 usecs
[   14.179549] [drm] ib test on ring 3 succeeded in 0 usecs
[   14.238965] [drm] radeon atom DIG backlight initialized
[   14.238984] [drm] Radeon Display Connectors
[   14.238990] [drm] Connector 0:
[   14.238998] [drm]   LVDS-1
[   14.239003] [drm]   HPD1
[   14.239011] [drm]   DDC: 0x6430 0x6430 0x6434 0x6434 0x6438 0x6438 0x643c 
0x643c
[   14.239016] [drm]   Encoders:
[   14.239021] [drm]     LCD1: INTERNAL_UNIPHY
[   14.239026] [drm] Connector 1:
[   14.239031] [drm]   HDMI-A-1
[   14.239034] [drm]   HPD2
[   14.239210] [drm]   DDC: 0x6440 0x6440 0x6444 0x6444 0x6448 0x6448 0x644c 
0x644c
[   14.239216] [drm]   Encoders:
[   14.239220] [drm]     DFP1: INTERNAL_UNIPHY
[   14.239224] [drm] Connector 2:
[   14.239229] [drm]   VGA-1
[   14.239236] [drm]   DDC: 0x64d8 0x64d8 0x64dc 0x64dc 0x64e0 0x64e0 0x64e4 
0x64e4
[   14.239240] [drm]   Encoders:
[   14.239245] [drm]     CRT1: INTERNAL_KLDSCP_DAC1
[   14.239367] [drm] Internal thermal controller without fan control
[   14.239562] [drm] radeon: power management initialized
[   14.674704] [drm] fb mappable at 0xE0142000
[   14.674715] [drm] vram apper at 0xE0000000
[   14.674721] [drm] size 4325376
[   14.674726] [drm] fb depth is 24
[   14.674731] [drm]    pitch is 5632
[   14.675148] fbcon: radeondrmfb (fb0) is primary device
[   14.707157] cfg80211: World regulatory domain updated:
[   14.707161] cfg80211:   (start_freq - end_freq @ bandwidth), 
(max_antenna_gain, max_eirp)
[   14.707169] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 
2000 mBm)
[   14.707173] cfg80211:   (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 
2000 mBm)
[   14.707177] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 
2000 mBm)
[   14.707180] cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 
2000 mBm)
[   14.707184] cfg80211:   (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 
2000 mBm)
[   14.707542] cfg80211: Calling CRDA for country: DE
[   14.758242] cfg80211: Regulatory domain changed to country: DE
[   14.758245] cfg80211:   (start_freq - end_freq @ bandwidth), 
(max_antenna_gain, max_eirp)
[   14.758251] cfg80211:   (2400000 KHz - 2483500 KHz @ 40000 KHz), (N/A, 2000 
mBm)
[   14.758255] cfg80211:   (5150000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 
mBm)
[   14.758258] cfg80211:   (5250000 KHz - 5350000 KHz @ 40000 KHz), (N/A, 2000 
mBm)
[   14.758261] cfg80211:   (5470000 KHz - 5725000 KHz @ 40000 KHz), (N/A, 2698 
mBm)
[   15.239262] Console: switching to colour frame buffer device 170x48
[   15.252123] radeon 0000:00:01.0: fb0: radeondrmfb frame buffer device
[   15.252130] radeon 0000:00:01.0: registered panic notifier
[   15.253867] [drm] Initialized radeon 2.33.0 20080528 for 0000:00:01.0 on 
minor 0
[   15.254921] snd_hda_intel 0000:00:01.1: irq 48 for MSI/MSI-X
[   15.293269] input: HD-Audio Generic HDMI/DP,pcm=3 as 
/devices/pci0000:00/0000:00:01.1/sound/card0/input9
[   15.368276] input: HDA Digital PCBeep as 
/devices/pci0000:00/0000:00:14.2/input/input10
[   15.374324] input: HD-Audio Generic Headphone as 
/devices/pci0000:00/0000:00:14.2/sound/card1/input11
[   15.374693] input: HD-Audio Generic Mic as 
/devices/pci0000:00/0000:00:14.2/sound/card1/input12
[   17.229446] psmouse serio5: alps: Unknown ALPS touchpad: E7=10 00 64, EC=10 
00 64
[   17.561817] EXT4-fs (dm-1): re-mounted. Opts: (null)
[   18.109811] EXT4-fs (dm-1): re-mounted. Opts: errors=remount-ro
[   18.682340] psmouse serio5: trackpoint: IBM TrackPoint firmware: 0x0e, 
buttons: 3/3
[   18.914628] input: TPPS/2 IBM TrackPoint as 
/devices/platform/i8042/serio4/serio5/input/input13
[   19.101611] fuse init (API version 7.22)
[   19.187896] loop: module loaded
[   21.227033] EXT4-fs (sda1): mounted filesystem with ordered data mode. 
Opts: (null)
[   21.281095] EXT4-fs (dm-5): mounted filesystem with ordered data mode. 
Opts: (null)
[   21.326572] EXT4-fs (dm-4): mounted filesystem with ordered data mode. 
Opts: (null)
[   21.409835] EXT4-fs (dm-2): mounted filesystem with ordered data mode. 
Opts: (null)
[   21.505185] EXT4-fs (dm-3): mounted filesystem with ordered data mode. 
Opts: (null)
[   25.326536] RPC: Registered named UNIX socket transport module.
[   25.326544] RPC: Registered udp transport module.
[   25.326577] RPC: Registered tcp transport module.
[   25.326580] RPC: Registered tcp NFSv4.1 backchannel transport module.
[   25.356511] FS-Cache: Loaded
[   25.370980] Key type dns_resolver registered
[   25.465228] FS-Cache: Netfs 'nfs' registered for caching
[   25.579273] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
[   28.727841] ip_tables: (C) 2000-2006 Netfilter Core Team
[   29.083457] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
[   29.399924] ip6_tables: (C) 2000-2006 Netfilter Core Team
[   29.840431] input: ACPI Virtual Keyboard Device as 
/devices/virtual/input/input14
[   33.049437] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   33.049450] Bluetooth: BNEP filters: protocol multicast
[   33.049481] Bluetooth: BNEP socket layer initialized
[   33.075344] Bluetooth: RFCOMM TTY layer initialized
[   33.075387] Bluetooth: RFCOMM socket layer initialized
[   33.075395] Bluetooth: RFCOMM ver 1.11
[   33.712584] lp: driver loaded but no devices found
[   33.823197] ppdev: user-space parallel port driver
[   50.849280] brcmsmac bcma0:0: firmware: agent loaded brcm/bcm43xx-0.fw into 
memory
[   50.858693] brcmsmac bcma0:0: firmware: agent loaded brcm/bcm43xx_hdr-0.fw 
into memory
[   50.908227] brcmsmac bcma0:0: brcms_ops_bss_info_changed: qos enabled: 
false (implement)
[   50.908414] brcmsmac bcma0:0: brcms_ops_config: change power-save mode: 
false (implement)
[   50.909187] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
[   58.086404] wlan0: authenticate with XX:XX:XX:XX:XX:XX
[   58.090726] wlan0: send auth to XX:XX:XX:XX:XX:XX (try 1/3)
[   58.094508] wlan0: authenticated
[   58.098329] wlan0: associate with XX:XX:XX:XX:XX:XX (try 1/3)
[   58.102206] wlan0: RX AssocResp from XX:XX:XX:XX:XX:XX (capab=0x401 
status=0 aid=1)
[   58.103257] brcmsmac bcma0:0: brcmsmac: brcms_ops_bss_info_changed: 
associated
[   58.103423] brcmsmac bcma0:0: brcms_ops_bss_info_changed: qos enabled: true 
(implement)
[   58.103612] wlan0: associated
[   58.103642] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[   58.103877] cfg80211: Calling CRDA for country: DE
[   58.128934] cfg80211: Regulatory domain changed to country: DE
[   58.128949] cfg80211:   (start_freq - end_freq @ bandwidth), 
(max_antenna_gain, max_eirp)
[   58.128958] cfg80211:   (2400000 KHz - 2483500 KHz @ 40000 KHz), (N/A, 2000 
mBm)
[   58.128965] cfg80211:   (5150000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 
mBm)
[   58.128972] cfg80211:   (5250000 KHz - 5350000 KHz @ 40000 KHz), (N/A, 2000 
mBm)
[   58.128978] cfg80211:   (5470000 KHz - 5725000 KHz @ 40000 KHz), (N/A, 2698 
mBm)


Greetings and thanks for your help,
Maxi

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply

* Re: any AR7010+AR9287 cards still sold?
From: Oleksij Rempel @ 2013-06-21 18:21 UTC (permalink / raw)
  To: George Nychis
  Cc: Arend van Spriel, linux-wireless@vger.kernel.org, ath9k_htc_fw
In-Reply-To: <CA+7oygdmJDdNM8SQxqnJW3Oxv0sCf=nSmxfw0rp=9SFwRFxgRQ@mail.gmail.com>

My personal advise, get WNDA3200 if you can. I purchased 3 of them from 
UK. This adapter has soldered UART and was really cheap - about 10€ with 
delivery.

Here is my modified WNDA3200
https://plus.google.com/photos?pid=5877115880228052898&oid=102032716864870215256


Am 21.06.2013 19:39, schrieb George Nychis:
> Thanks for the responses! This is helpful. Many of them don't seem to
> be easily available in the US.  It looks like my two best bets are the
> Sony UWA-BR100, albeit a bit expensive at $60.  The other option seems
> to be hunting down a TL-WN821N v3 on eBay.  There are many TL-WN821N
> listed, it might be a matter of finding someone with some v3 models.
> Many of the other cards from that wiki seem to be more available in
> the UK (e.g., WNDA3200 and WLM-20U2).  The Xbox 360 adapters, despite
> being AR7010+AR9280 have some sort of custom firmware and are
> therefore not supported by ath9k_htc.  I found that out first hand,
> and someone put it on the wiki:
> http://wikidevi.com/wiki/Microsoft_Xbox_360_Wireless_N_Networking_Adapter
>
> If anyone out there has any other suggestions for easily available
> AR7010+AR9280/7 cards in the US, definitely point me in that
> direction.  I'll try to see if I can hunt down some TL-WN821Nv3
>
> Thanks!
> George
>
> On Fri, Jun 21, 2013 at 12:50 PM, Arend van Spriel <arend@broadcom.com> wrote:
>> On 06/21/13 17:19, George Nychis wrote:
>>>
>>> I'm trying to hunt down a USB AR7010+AR9287 combo, which I think is
>>> the only 2-stream ath9k_htc combo (whose firmware is open sourced by
>>> open-ath9k-htc-firmware).   I found on the linux-wireless wiki device
>>> list that the TL-WN821Nv3 was of this combo.  I gambled and bought a
>>> TL-WN821N on Amazon, but it ended up being a v4 with the ralink
>>> chipset.
>>>
>>> Is there any other card out there still sold with the AR7010+AR9287
>>> combo that might not be listed on the wiki page?
>>>
>>> Thanks a bunch.
>>
>>
>> Not much hits, but it lists some other devices:
>>
>> http://wikidevi.com/wiki/Special:BrowseData/Wireless_adapter?Chip1_model=AR7010&Chip2_model=AR9287
>>
>> Regards,
>> Arend
>>
>>> - George
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-wireless"
>>> in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>>
>>
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>


-- 
Regards,
Oleksij

^ permalink raw reply

* Re: any AR7010+AR9287 cards still sold?
From: George Nychis @ 2013-06-21 17:39 UTC (permalink / raw)
  To: Arend van Spriel; +Cc: linux-wireless@vger.kernel.org, ath9k_htc_fw
In-Reply-To: <51C4843E.6040300@broadcom.com>

Thanks for the responses! This is helpful. Many of them don't seem to
be easily available in the US.  It looks like my two best bets are the
Sony UWA-BR100, albeit a bit expensive at $60.  The other option seems
to be hunting down a TL-WN821N v3 on eBay.  There are many TL-WN821N
listed, it might be a matter of finding someone with some v3 models.
Many of the other cards from that wiki seem to be more available in
the UK (e.g., WNDA3200 and WLM-20U2).  The Xbox 360 adapters, despite
being AR7010+AR9280 have some sort of custom firmware and are
therefore not supported by ath9k_htc.  I found that out first hand,
and someone put it on the wiki:
http://wikidevi.com/wiki/Microsoft_Xbox_360_Wireless_N_Networking_Adapter

If anyone out there has any other suggestions for easily available
AR7010+AR9280/7 cards in the US, definitely point me in that
direction.  I'll try to see if I can hunt down some TL-WN821Nv3

Thanks!
George

On Fri, Jun 21, 2013 at 12:50 PM, Arend van Spriel <arend@broadcom.com> wrote:
> On 06/21/13 17:19, George Nychis wrote:
>>
>> I'm trying to hunt down a USB AR7010+AR9287 combo, which I think is
>> the only 2-stream ath9k_htc combo (whose firmware is open sourced by
>> open-ath9k-htc-firmware).   I found on the linux-wireless wiki device
>> list that the TL-WN821Nv3 was of this combo.  I gambled and bought a
>> TL-WN821N on Amazon, but it ended up being a v4 with the ralink
>> chipset.
>>
>> Is there any other card out there still sold with the AR7010+AR9287
>> combo that might not be listed on the wiki page?
>>
>> Thanks a bunch.
>
>
> Not much hits, but it lists some other devices:
>
> http://wikidevi.com/wiki/Special:BrowseData/Wireless_adapter?Chip1_model=AR7010&Chip2_model=AR9287
>
> Regards,
> Arend
>
>> - George
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-wireless"
>> in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
>
>

^ permalink raw reply

* Re: any AR7010+AR9287 cards still sold?
From: Arend van Spriel @ 2013-06-21 16:50 UTC (permalink / raw)
  To: George Nychis; +Cc: linux-wireless@vger.kernel.org, ath9k_htc_fw
In-Reply-To: <CA+7oygdbY=qoMZ=WfaqNW6HO2YwtnuFTUtDvO8rsqBjGATVNEQ@mail.gmail.com>

On 06/21/13 17:19, George Nychis wrote:
> I'm trying to hunt down a USB AR7010+AR9287 combo, which I think is
> the only 2-stream ath9k_htc combo (whose firmware is open sourced by
> open-ath9k-htc-firmware).   I found on the linux-wireless wiki device
> list that the TL-WN821Nv3 was of this combo.  I gambled and bought a
> TL-WN821N on Amazon, but it ended up being a v4 with the ralink
> chipset.
>
> Is there any other card out there still sold with the AR7010+AR9287
> combo that might not be listed on the wiki page?
>
> Thanks a bunch.

Not much hits, but it lists some other devices:

http://wikidevi.com/wiki/Special:BrowseData/Wireless_adapter?Chip1_model=AR7010&Chip2_model=AR9287

Regards,
Arend

> - George
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>



^ permalink raw reply

* any AR7010+AR9287 cards still sold?
From: George Nychis @ 2013-06-21 15:19 UTC (permalink / raw)
  To: linux-wireless@vger.kernel.org, ath9k_htc_fw

I'm trying to hunt down a USB AR7010+AR9287 combo, which I think is
the only 2-stream ath9k_htc combo (whose firmware is open sourced by
open-ath9k-htc-firmware).   I found on the linux-wireless wiki device
list that the TL-WN821Nv3 was of this combo.  I gambled and bought a
TL-WN821N on Amazon, but it ended up being a v4 with the ralink
chipset.

Is there any other card out there still sold with the AR7010+AR9287
combo that might not be listed on the wiki page?

Thanks a bunch.

- George

^ permalink raw reply

* [patch] ipw2x00: printing the wrong array in debug code
From: Dan Carpenter @ 2013-06-21 12:26 UTC (permalink / raw)
  To: Stanislav Yakovlev; +Cc: John W. Linville, linux-wireless, kernel-janitors

Smatch complains that this is a read past the end of the array.  It
turns out we are printing the wrong array here.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

diff --git a/drivers/net/wireless/ipw2x00/libipw_rx.c b/drivers/net/wireless/ipw2x00/libipw_rx.c
index 95a1ca1..9ffe659 100644
--- a/drivers/net/wireless/ipw2x00/libipw_rx.c
+++ b/drivers/net/wireless/ipw2x00/libipw_rx.c
@@ -1195,7 +1195,7 @@ static int libipw_parse_info_param(struct libipw_info_element
 #ifdef CONFIG_LIBIPW_DEBUG
 				p += snprintf(p, sizeof(rates_str) -
 					      (p - rates_str), "%02X ",
-					      network->rates[i]);
+					      network->rates_ex[i]);
 #endif
 				if (libipw_is_ofdm_rate
 				    (info_element->data[i])) {

^ permalink raw reply related

* [PATCH] mac80211: fix the kernel panic on ath_tx_aggr_wakeup on mesh
From: Chun-Yeow Yeoh @ 2013-06-21  8:26 UTC (permalink / raw)
  To: linux-wireless; +Cc: johannes, linville, devel, Chun-Yeow Yeoh

The is to fix the kernel panic happens if user space inserts the mesh
STA and not proceed with the SAE and AMPE, and later the same mesh STA
is detected again. The sta_state of the mesh STA remains at
IEEE80211_STA_NONE and if the ieee80211_sta_ps_deliver_wakeup
is called and subsequently the ath_tx_aggr_wakeup, the kernel panic due
to ath_tx_node_init is not called before to initialize the require data
structures.

This issue is reported by Cedric Voncken before.
http://www.spinics.net/lists/linux-wireless/msg106342.html

[<831ea6b4>] ath_tx_aggr_wakeup+0x44/0xcc [ath9k]
[<83084214>] ieee80211_sta_ps_deliver_wakeup+0xb8/0x208 [mac80211]
[<830b9824>] ieee80211_mps_sta_status_update+0x94/0x108 [mac80211]
[<83099398>] ieee80211_sta_ps_transition+0xc94/0x34d8 [mac80211]
[<8022399c>] nf_iterate+0x98/0x104
[<8309bb60>] ieee80211_sta_ps_transition+0x345c/0x34d8 [mac80211]

Thomas Perdersen also mentioned that this patch has fixed the
bad sta magic warning in mac80211_hwsim_set_tim() when applied to
mac80211-next/master

Signed-off-by: Chun-Yeow Yeoh <yeohchunyeow@gmail.com>
---
 net/mac80211/mesh_ps.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/net/mac80211/mesh_ps.c b/net/mac80211/mesh_ps.c
index 3b7bfc0..0e42758 100644
--- a/net/mac80211/mesh_ps.c
+++ b/net/mac80211/mesh_ps.c
@@ -251,7 +251,8 @@ void ieee80211_mps_sta_status_update(struct sta_info *sta)
 		mps_dbg(sta->sdata, "start PS buffering frames towards %pM\n",
 			sta->sta.addr);
 	} else {
-		ieee80211_sta_ps_deliver_wakeup(sta);
+		if (sta->sta_state >= IEEE80211_STA_ASSOC)
+			ieee80211_sta_ps_deliver_wakeup(sta);
 	}
 
 	/* clear the MPSP flags for non-peers or active STA */
-- 
1.7.0.4


^ permalink raw reply related

* [PATCH 2/2] mac80211: initialize power mode for mesh STAs
From: Thomas Pedersen @ 2013-06-21  6:50 UTC (permalink / raw)
  To: Johannes Berg
  Cc: linux-wireless, open80211s, marco, Bob Copeland, Thomas Pedersen
In-Reply-To: <1371797459-16585-1-git-send-email-thomas@cozybit.com>

Previously the default mesh STA nonpeer power mode was
UNKNOWN (0) make the default mesh STA power mode ACTIVE,
to prevent unnecessary  frame buffering while peering is
not yet complete. Fixes a panic in ath9k_htc when adding
stations from userspace, and mcast buffered frames are
later released.

Thanks to Bob Copeland for his help debugging this.

Signed-off-by: Thomas Pedersen <thomas@cozybit.com>
---
 net/mac80211/sta_info.c |    1 +
 1 file changed, 1 insertion(+)

diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
index aaf68d2..aeb967a 100644
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -347,6 +347,7 @@ struct sta_info *sta_info_alloc(struct ieee80211_sub_if_data *sdata,
 	if (ieee80211_vif_is_mesh(&sdata->vif) &&
 	    !sdata->u.mesh.user_mpm)
 		init_timer(&sta->plink_timer);
+	sta->nonpeer_pm = NL80211_MESH_POWER_ACTIVE;
 #endif
 
 	memcpy(sta->sta.addr, addr, ETH_ALEN);
-- 
1.7.10.4


^ permalink raw reply related

* [PATCH 1/2] mac80211: allow self-protected frame tx without sta
From: Thomas Pedersen @ 2013-06-21  6:50 UTC (permalink / raw)
  To: Johannes Berg
  Cc: linux-wireless, open80211s, marco, Bob Copeland, Thomas Pedersen

Useful for userspace mesh to authenticate and peer without
a station entry, since both steps may fail anyway.

Signed-off-by: Thomas Pedersen <thomas@cozybit.com>
---
 net/mac80211/cfg.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index 18ba7ed..d6f9823 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -2821,7 +2821,8 @@ static int ieee80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
 		    !rcu_access_pointer(sdata->bss->beacon))
 			need_offchan = true;
 		if (!ieee80211_is_action(mgmt->frame_control) ||
-		    mgmt->u.action.category == WLAN_CATEGORY_PUBLIC)
+		    mgmt->u.action.category == WLAN_CATEGORY_PUBLIC ||
+		    mgmt->u.action.category == WLAN_CATEGORY_SELF_PROTECTED)
 			break;
 		rcu_read_lock();
 		sta = sta_info_get(sdata, mgmt->da);
-- 
1.7.10.4


^ permalink raw reply related

* [PATCH] ath9k: Enable WoW only for supported models
From: Sujith Manoharan @ 2013-06-21  5:41 UTC (permalink / raw)
  To: John Linville; +Cc: linux-wireless

From: Sujith Manoharan <c_manoha@qca.qualcomm.com>

Since platform support is required for WoW, identify and
and enable Wow only for supported cards.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath9k/ath9k.h |  1 +
 drivers/net/wireless/ath/ath9k/init.c  |  1 +
 drivers/net/wireless/ath/ath9k/pci.c   | 57 ++++++++++++++++++++++++++++++++++
 3 files changed, 59 insertions(+)

diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index 04b2d3e..c1224b5 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -634,6 +634,7 @@ void ath_ant_comb_update(struct ath_softc *sc);
 #define ATH9K_PCI_CUS198 0x0001
 #define ATH9K_PCI_CUS230 0x0002
 #define ATH9K_PCI_CUS217 0x0004
+#define ATH9K_PCI_WOW    0x0008
 
 /*
  * Default cache line size, in bytes.
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
index 1e555d8..16f8b20 100644
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -837,6 +837,7 @@ void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw)
 
 #ifdef CONFIG_PM_SLEEP
 	if ((ah->caps.hw_caps & ATH9K_HW_WOW_DEVICE_CAPABLE) &&
+	    (sc->driver_data & ATH9K_PCI_WOW) &&
 	    device_can_wakeup(sc->dev))
 		hw->wiphy->wowlan = &ath9k_wowlan_support;
 
diff --git a/drivers/net/wireless/ath/ath9k/pci.c b/drivers/net/wireless/ath/ath9k/pci.c
index b096bb2..c585c9b 100644
--- a/drivers/net/wireless/ath/ath9k/pci.c
+++ b/drivers/net/wireless/ath/ath9k/pci.c
@@ -79,6 +79,63 @@ static DEFINE_PCI_DEVICE_TABLE(ath_pci_id_table) = {
 			 0x6661),
 	  .driver_data = ATH9K_PCI_CUS217 },
 
+	/* AR9462 with WoW support */
+	{ PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS,
+			 0x0034,
+			 PCI_VENDOR_ID_ATHEROS,
+			 0x3117),
+	  .driver_data = ATH9K_PCI_WOW },
+	{ PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS,
+			 0x0034,
+			 PCI_VENDOR_ID_LENOVO,
+			 0x3214),
+	  .driver_data = ATH9K_PCI_WOW },
+	{ PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS,
+			 0x0034,
+			 PCI_VENDOR_ID_ATTANSIC,
+			 0x0091),
+	  .driver_data = ATH9K_PCI_WOW },
+	{ PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS,
+			 0x0034,
+			 PCI_VENDOR_ID_AZWAVE,
+			 0x2110),
+	  .driver_data = ATH9K_PCI_WOW },
+	{ PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS,
+			 0x0034,
+			 PCI_VENDOR_ID_ASUSTEK,
+			 0x850E),
+	  .driver_data = ATH9K_PCI_WOW },
+	{ PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS,
+			 0x0034,
+			 0x11AD, /* LITEON */
+			 0x6631),
+	  .driver_data = ATH9K_PCI_WOW },
+	{ PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS,
+			 0x0034,
+			 0x11AD, /* LITEON */
+			 0x6641),
+	  .driver_data = ATH9K_PCI_WOW },
+	{ PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS,
+			 0x0034,
+			 PCI_VENDOR_ID_HP,
+			 0x1864),
+	  .driver_data = ATH9K_PCI_WOW },
+	{ PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS,
+			 0x0034,
+			 0x14CD, /* USI */
+			 0x0063),
+	  .driver_data = ATH9K_PCI_WOW },
+	{ PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS,
+			 0x0034,
+			 0x14CD, /* USI */
+			 0x0064),
+	  .driver_data = ATH9K_PCI_WOW },
+	{ PCI_DEVICE_SUB(PCI_VENDOR_ID_ATHEROS,
+			 0x0034,
+			 0x10CF, /* Fujitsu */
+			 0x1783),
+	  .driver_data = ATH9K_PCI_WOW },
+
 	{ PCI_VDEVICE(ATHEROS, 0x0034) }, /* PCI-E  AR9462 */
 	{ PCI_VDEVICE(ATHEROS, 0x0037) }, /* PCI-E  AR1111/AR9485 */
 	{ PCI_VDEVICE(ATHEROS, 0x0036) }, /* PCI-E  AR9565 */
-- 
1.8.3.1


^ permalink raw reply related

* [PATCH -next] cw1200:  Fix up a large pile of sparse warnings
From: Solomon Peachy @ 2013-06-21  3:03 UTC (permalink / raw)
  To: linux-wireless; +Cc: Solomon Peachy

Most of these relate to endianness problems, and are purely cosmetic.

But a couple of them were legit -- listen interval parsing and some of
the rate selection code would malfunction on BE systems.

There's still one cosmetic warning remaining, in the (admittedly) ugly
code in cw1200_spi.c.  It's there because the hardware needs 16-bit SPI
transfers, but many SPI controllers only operate 8 bits at a time.

If there's a cleaner way of handling this, I'm all ears.

Signed-off-by: Solomon Peachy <pizza@shaftnet.org>
---
 drivers/net/wireless/cw1200/cw1200.h     |  2 +-
 drivers/net/wireless/cw1200/cw1200_spi.c | 32 ++++++++++++++---------
 drivers/net/wireless/cw1200/hwio.c       | 18 +++++++------
 drivers/net/wireless/cw1200/hwio.h       | 31 +++++++++++-----------
 drivers/net/wireless/cw1200/main.c       |  4 +--
 drivers/net/wireless/cw1200/queue.c      |  2 +-
 drivers/net/wireless/cw1200/sta.c        | 23 ++++++++--------
 drivers/net/wireless/cw1200/txrx.c       |  9 +++----
 drivers/net/wireless/cw1200/wsm.c        | 33 ++++++++++++-----------
 drivers/net/wireless/cw1200/wsm.h        | 45 +++++++++++++++-----------------
 10 files changed, 102 insertions(+), 97 deletions(-)

diff --git a/drivers/net/wireless/cw1200/cw1200.h b/drivers/net/wireless/cw1200/cw1200.h
index 243e963..1ad7d36 100644
--- a/drivers/net/wireless/cw1200/cw1200.h
+++ b/drivers/net/wireless/cw1200/cw1200.h
@@ -267,7 +267,7 @@ struct cw1200_common {
 	struct delayed_work	bss_loss_work;
 	spinlock_t		bss_loss_lock; /* Protect BSS loss state */
 	int                     bss_loss_state;
-	int                     bss_loss_confirm_id;
+	u32                     bss_loss_confirm_id;
 	int			delayed_link_loss;
 	struct work_struct	bss_params_work;
 
diff --git a/drivers/net/wireless/cw1200/cw1200_spi.c b/drivers/net/wireless/cw1200/cw1200_spi.c
index 953bd19..b62befb 100644
--- a/drivers/net/wireless/cw1200/cw1200_spi.c
+++ b/drivers/net/wireless/cw1200/cw1200_spi.c
@@ -61,7 +61,7 @@ static int cw1200_spi_memcpy_fromio(struct hwbus_priv *self,
 				     void *dst, int count)
 {
 	int ret, i;
-	uint16_t regaddr;
+	u16 regaddr;
 	struct spi_message      m;
 
 	struct spi_transfer     t_addr = {
@@ -76,15 +76,18 @@ static int cw1200_spi_memcpy_fromio(struct hwbus_priv *self,
 	regaddr = (SDIO_TO_SPI_ADDR(addr))<<12;
 	regaddr |= SET_READ;
 	regaddr |= (count>>1);
-	regaddr = cpu_to_le16(regaddr);
 
 #ifdef SPI_DEBUG
-	pr_info("READ : %04d from 0x%02x (%04x)\n", count, addr,
-		le16_to_cpu(regaddr));
+	pr_info("READ : %04d from 0x%02x (%04x)\n", count, addr, regaddr);
 #endif
 
+	/* Header is LE16 */
+	regaddr = cpu_to_le16(regaddr);
+
+	/* We have to byteswap if the SPI bus is limited to 8b operation
+	   or we are running on a Big Endian system
+	*/
 #if defined(__LITTLE_ENDIAN)
-	/* We have to byteswap if the SPI bus is limited to 8b operation */
 	if (self->func->bits_per_word == 8)
 #endif
 		regaddr = swab16(regaddr);
@@ -104,8 +107,10 @@ static int cw1200_spi_memcpy_fromio(struct hwbus_priv *self,
 	printk("\n");
 #endif
 
+	/* We have to byteswap if the SPI bus is limited to 8b operation
+	   or we are running on a Big Endian system 
+	*/
 #if defined(__LITTLE_ENDIAN)
-	/* We have to byteswap if the SPI bus is limited to 8b operation */
 	if (self->func->bits_per_word == 8)
 #endif
 	{
@@ -122,7 +127,7 @@ static int cw1200_spi_memcpy_toio(struct hwbus_priv *self,
 				   const void *src, int count)
 {
 	int rval, i;
-	uint16_t regaddr;
+	u16 regaddr;
 	struct spi_transfer     t_addr = {
 		.tx_buf         = &regaddr,
 		.len            = sizeof(regaddr),
@@ -136,20 +141,23 @@ static int cw1200_spi_memcpy_toio(struct hwbus_priv *self,
 	regaddr = (SDIO_TO_SPI_ADDR(addr))<<12;
 	regaddr &= SET_WRITE;
 	regaddr |= (count>>1);
-	regaddr = cpu_to_le16(regaddr);
 
 #ifdef SPI_DEBUG
-	pr_info("WRITE: %04d  to  0x%02x (%04x)\n", count, addr,
-		le16_to_cpu(regaddr));
+	pr_info("WRITE: %04d  to  0x%02x (%04x)\n", count, addr, regaddr);
 #endif
 
+	/* Header is LE16 */
+	regaddr = cpu_to_le16(regaddr);
+
+	/* We have to byteswap if the SPI bus is limited to 8b operation
+	   or we are running on a Big Endian system
+	*/
 #if defined(__LITTLE_ENDIAN)
-	/* We have to byteswap if the SPI bus is limited to 8b operation */
 	if (self->func->bits_per_word == 8)
 #endif
 	{
 		uint16_t *buf = (uint16_t *)src;
-		regaddr = swab16(regaddr);
+	        regaddr = swab16(regaddr);
 		for (i = 0; i < ((count + 1) >> 1); i++)
 			buf[i] = swab16(buf[i]);
 	}
diff --git a/drivers/net/wireless/cw1200/hwio.c b/drivers/net/wireless/cw1200/hwio.c
index dad3fb3..ff230b7 100644
--- a/drivers/net/wireless/cw1200/hwio.c
+++ b/drivers/net/wireless/cw1200/hwio.c
@@ -69,31 +69,33 @@ static int __cw1200_reg_write(struct cw1200_common *priv, u16 addr,
 static inline int __cw1200_reg_read_32(struct cw1200_common *priv,
 					u16 addr, u32 *val)
 {
-	int i = __cw1200_reg_read(priv, addr, val, sizeof(*val), 0);
-	*val = le32_to_cpu(*val);
+	__le32 tmp;
+	int i = __cw1200_reg_read(priv, addr, &tmp, sizeof(tmp), 0);
+	*val = le32_to_cpu(tmp);
 	return i;
 }
 
 static inline int __cw1200_reg_write_32(struct cw1200_common *priv,
 					u16 addr, u32 val)
 {
-	val = cpu_to_le32(val);
-	return __cw1200_reg_write(priv, addr, &val, sizeof(val), 0);
+	__le32 tmp = cpu_to_le32(val);
+	return __cw1200_reg_write(priv, addr, &tmp, sizeof(tmp), 0);
 }
 
 static inline int __cw1200_reg_read_16(struct cw1200_common *priv,
 					u16 addr, u16 *val)
 {
-	int i = __cw1200_reg_read(priv, addr, val, sizeof(*val), 0);
-	*val = le16_to_cpu(*val);
+	__le16 tmp;
+	int i = __cw1200_reg_read(priv, addr, &tmp, sizeof(tmp), 0);
+	*val = le16_to_cpu(tmp);
 	return i;
 }
 
 static inline int __cw1200_reg_write_16(struct cw1200_common *priv,
 					u16 addr, u16 val)
 {
-	val = cpu_to_le16(val);
-	return __cw1200_reg_write(priv, addr, &val, sizeof(val), 0);
+	__le16 tmp = cpu_to_le16(val);
+	return __cw1200_reg_write(priv, addr, &tmp, sizeof(tmp), 0);
 }
 
 int cw1200_reg_read(struct cw1200_common *priv, u16 addr, void *buf,
diff --git a/drivers/net/wireless/cw1200/hwio.h b/drivers/net/wireless/cw1200/hwio.h
index 563329c..ddf5266 100644
--- a/drivers/net/wireless/cw1200/hwio.h
+++ b/drivers/net/wireless/cw1200/hwio.h
@@ -169,35 +169,34 @@ int cw1200_reg_write(struct cw1200_common *priv, u16 addr,
 static inline int cw1200_reg_read_16(struct cw1200_common *priv,
 				     u16 addr, u16 *val)
 {
-	u32 tmp;
+	__le32 tmp;
 	int i;
 	i = cw1200_reg_read(priv, addr, &tmp, sizeof(tmp));
-	tmp = le32_to_cpu(tmp);
-	*val = tmp & 0xffff;
+	*val = le32_to_cpu(tmp) & 0xfffff;
 	return i;
 }
 
 static inline int cw1200_reg_write_16(struct cw1200_common *priv,
 				      u16 addr, u16 val)
 {
-	u32 tmp = val;
-	tmp = cpu_to_le32(tmp);
+	__le32 tmp = cpu_to_le32((u32)val);
 	return cw1200_reg_write(priv, addr, &tmp, sizeof(tmp));
 }
 
 static inline int cw1200_reg_read_32(struct cw1200_common *priv,
 				     u16 addr, u32 *val)
 {
-	int i = cw1200_reg_read(priv, addr, val, sizeof(*val));
-	*val = le32_to_cpu(*val);
+	__le32 tmp;
+	int i = cw1200_reg_read(priv, addr, &tmp, sizeof(tmp));
+	*val = le32_to_cpu(tmp);
 	return i;
 }
 
 static inline int cw1200_reg_write_32(struct cw1200_common *priv,
 				      u16 addr, u32 val)
 {
-	val = cpu_to_le32(val);
-	return cw1200_reg_write(priv, addr, &val, sizeof(val));
+	__le32 tmp = cpu_to_le32(val);
+	return cw1200_reg_write(priv, addr, &tmp, sizeof(val));
 }
 
 int cw1200_indirect_read(struct cw1200_common *priv, u32 addr, void *buf,
@@ -224,22 +223,24 @@ static inline int cw1200_ahb_read(struct cw1200_common *priv, u32 addr,
 static inline int cw1200_apb_read_32(struct cw1200_common *priv,
 				     u32 addr, u32 *val)
 {
-	int i = cw1200_apb_read(priv, addr, val, sizeof(*val));
-	*val = le32_to_cpu(*val);
+	__le32 tmp;
+	int i = cw1200_apb_read(priv, addr, &tmp, sizeof(tmp));
+	*val = le32_to_cpu(tmp);
 	return i;
 }
 
 static inline int cw1200_apb_write_32(struct cw1200_common *priv,
 				      u32 addr, u32 val)
 {
-	val = cpu_to_le32(val);
-	return cw1200_apb_write(priv, addr, &val, sizeof(val));
+	__le32 tmp = cpu_to_le32(val);
+	return cw1200_apb_write(priv, addr, &tmp, sizeof(val));
 }
 static inline int cw1200_ahb_read_32(struct cw1200_common *priv,
 				     u32 addr, u32 *val)
 {
-	int i = cw1200_ahb_read(priv, addr, val, sizeof(*val));
-	*val = le32_to_cpu(*val);
+	__le32 tmp;
+	int i = cw1200_ahb_read(priv, addr, &tmp, sizeof(tmp));
+	*val = le32_to_cpu(tmp);
 	return i;
 }
 
diff --git a/drivers/net/wireless/cw1200/main.c b/drivers/net/wireless/cw1200/main.c
index da88503..3724e73 100644
--- a/drivers/net/wireless/cw1200/main.c
+++ b/drivers/net/wireless/cw1200/main.c
@@ -238,8 +238,8 @@ static const struct ieee80211_ops cw1200_ops = {
 	/*.cancel_remain_on_channel = cw1200_cancel_remain_on_channel,	*/
 };
 
-int cw1200_ba_rx_tids = -1;
-int cw1200_ba_tx_tids = -1;
+static int cw1200_ba_rx_tids = -1;
+static int cw1200_ba_tx_tids = -1;
 module_param(cw1200_ba_rx_tids, int, 0644);
 module_param(cw1200_ba_tx_tids, int, 0644);
 MODULE_PARM_DESC(cw1200_ba_rx_tids, "Block ACK RX TIDs");
diff --git a/drivers/net/wireless/cw1200/queue.c b/drivers/net/wireless/cw1200/queue.c
index 8510454..9c3925f 100644
--- a/drivers/net/wireless/cw1200/queue.c
+++ b/drivers/net/wireless/cw1200/queue.c
@@ -355,7 +355,7 @@ int cw1200_queue_get(struct cw1200_queue *queue,
 		*tx = (struct wsm_tx *)item->skb->data;
 		*tx_info = IEEE80211_SKB_CB(item->skb);
 		*txpriv = &item->txpriv;
-		(*tx)->packet_id = __cpu_to_le32(item->packet_id);
+		(*tx)->packet_id = item->packet_id;
 		list_move_tail(&item->head, &queue->pending);
 		++queue->num_pending;
 		--queue->link_map_cache[item->txpriv.link_id];
diff --git a/drivers/net/wireless/cw1200/sta.c b/drivers/net/wireless/cw1200/sta.c
index 4cd0352..7365674 100644
--- a/drivers/net/wireless/cw1200/sta.c
+++ b/drivers/net/wireless/cw1200/sta.c
@@ -621,7 +621,7 @@ int cw1200_conf_tx(struct ieee80211_hw *dev, struct ieee80211_vif *vif,
 	mutex_lock(&priv->conf_mutex);
 
 	if (queue < dev->queues) {
-		old_uapsd_flags = priv->uapsd_info.uapsd_flags;
+		old_uapsd_flags = le16_to_cpu(priv->uapsd_info.uapsd_flags);
 
 		WSM_TX_QUEUE_SET(&priv->tx_queue_params, queue, 0, 0, 0);
 		ret = wsm_set_tx_queue_params(priv,
@@ -645,7 +645,7 @@ int cw1200_conf_tx(struct ieee80211_hw *dev, struct ieee80211_vif *vif,
 			ret = cw1200_set_uapsd_param(priv, &priv->edca);
 			if (!ret && priv->setbssparams_done &&
 			    (priv->join_status == CW1200_JOIN_STATUS_STA) &&
-			    (old_uapsd_flags != priv->uapsd_info.uapsd_flags))
+			    (old_uapsd_flags != le16_to_cpu(priv->uapsd_info.uapsd_flags)))
 				ret = cw1200_set_pm(priv, &priv->powersave_mode);
 		}
 	} else {
@@ -1089,18 +1089,18 @@ static int cw1200_parse_sdd_file(struct cw1200_common *priv)
 				ret = -1;
 				break;
 			}
-			v = le16_to_cpu(*((u16 *)(p + 2)));
+			v = le16_to_cpu(*((__le16 *)(p + 2)));
 			if (!v)  /* non-zero means this is enabled */
 				break;
 
-			v = le16_to_cpu(*((u16 *)(p + 4)));
+			v = le16_to_cpu(*((__le16 *)(p + 4)));
 			priv->conf_listen_interval = (v >> 7) & 0x1F;
 			pr_debug("PTA found; Listen Interval %d\n",
 				 priv->conf_listen_interval);
 			break;
 		}
 		case SDD_REFERENCE_FREQUENCY_ELT_ID: {
-			u16 clk = le16_to_cpu(*((u16 *)(p + 2)));
+			u16 clk = le16_to_cpu(*((__le16 *)(p + 2)));
 			if (clk != priv->hw_refclk)
 				pr_warn("SDD file doesn't match configured refclk (%d vs %d)\n",
 					clk, priv->hw_refclk);
@@ -1785,9 +1785,9 @@ static int cw1200_set_btcoexinfo(struct cw1200_common *priv)
 		} else {
 			pr_debug("[STA] STA has non ERP rates\n");
 			/* B only mode */
-			arg.internalTxRate = (__ffs(priv->association_mode.basic_rate_set));
+			arg.internalTxRate = (__ffs(le32_to_cpu(priv->association_mode.basic_rate_set)));
 		}
-		arg.nonErpInternalTxRate = (__ffs(priv->association_mode.basic_rate_set));
+		arg.nonErpInternalTxRate = (__ffs(le32_to_cpu(priv->association_mode.basic_rate_set)));
 	} else {
 		/* P2P mode */
 		arg.internalTxRate = (__ffs(priv->bss_params.operational_rate_set & ~0xF));
@@ -1908,7 +1908,7 @@ void cw1200_bss_info_changed(struct ieee80211_hw *dev,
 
 		if (info->assoc || info->ibss_joined) {
 			struct ieee80211_sta *sta = NULL;
-			u32 val = 0;
+			__le32 htprot = 0;
 
 			if (info->dtim_period)
 				priv->join_dtim_period = info->dtim_period;
@@ -1935,19 +1935,18 @@ void cw1200_bss_info_changed(struct ieee80211_hw *dev,
 			/* Non Greenfield stations present */
 			if (priv->ht_info.operation_mode &
 			    IEEE80211_HT_OP_MODE_NON_GF_STA_PRSNT)
-				val |= WSM_NON_GREENFIELD_STA_PRESENT;
+				htprot |= cpu_to_le32(WSM_NON_GREENFIELD_STA_PRESENT);
 
 			/* Set HT protection method */
-			val |= (priv->ht_info.operation_mode & IEEE80211_HT_OP_MODE_PROTECTION) << 2;
+			htprot |= cpu_to_le32((priv->ht_info.operation_mode & IEEE80211_HT_OP_MODE_PROTECTION) << 2);
 
 			/* TODO:
 			 * STBC_param.dual_cts
 			 *  STBC_param.LSIG_TXOP_FILL
 			 */
 
-			val = cpu_to_le32(val);
 			wsm_write_mib(priv, WSM_MIB_ID_SET_HT_PROTECTION,
-				      &val, sizeof(val));
+				      &htprot, sizeof(htprot));
 
 			priv->association_mode.greenfield =
 				cw1200_ht_greenfield(&priv->ht_info);
diff --git a/drivers/net/wireless/cw1200/txrx.c b/drivers/net/wireless/cw1200/txrx.c
index 44ca10c..5862c37 100644
--- a/drivers/net/wireless/cw1200/txrx.c
+++ b/drivers/net/wireless/cw1200/txrx.c
@@ -599,15 +599,15 @@ cw1200_tx_h_bt(struct cw1200_common *priv,
 	} else if (ieee80211_is_data(t->hdr->frame_control)) {
 		/* Skip LLC SNAP header (+6) */
 		u8 *payload = &t->skb->data[t->hdrlen];
-		u16 *ethertype = (u16 *)&payload[6];
-		if (*ethertype == __be16_to_cpu(ETH_P_PAE))
+		__be16 *ethertype = (__be16 *)&payload[6];
+		if (be16_to_cpu(*ethertype) == ETH_P_PAE)
 			priority = WSM_EPTA_PRIORITY_EAPOL;
 	} else if (ieee80211_is_assoc_req(t->hdr->frame_control) ||
 		ieee80211_is_reassoc_req(t->hdr->frame_control)) {
 		struct ieee80211_mgmt *mgt_frame =
 				(struct ieee80211_mgmt *)t->hdr;
 
-		if (mgt_frame->u.assoc_req.listen_interval <
+		if (le16_to_cpu(mgt_frame->u.assoc_req.listen_interval) <
 						priv->listen_interval) {
 			pr_debug("Modified Listen Interval to %d from %d\n",
 				 priv->listen_interval,
@@ -615,8 +615,7 @@ cw1200_tx_h_bt(struct cw1200_common *priv,
 			/* Replace listen interval derieved from
 			 * the one read from SDD
 			 */
-			mgt_frame->u.assoc_req.listen_interval =
-				priv->listen_interval;
+			mgt_frame->u.assoc_req.listen_interval = cpu_to_le16(priv->listen_interval);
 		}
 	}
 
diff --git a/drivers/net/wireless/cw1200/wsm.c b/drivers/net/wireless/cw1200/wsm.c
index d95094f..cbb74d7 100644
--- a/drivers/net/wireless/cw1200/wsm.c
+++ b/drivers/net/wireless/cw1200/wsm.c
@@ -42,19 +42,19 @@
 		(buf)->data += size;					\
 	} while (0)
 
-#define __WSM_GET(buf, type, cvt)					\
+#define __WSM_GET(buf, type, type2, cvt)				\
 	({								\
 		type val;						\
 		if ((buf)->data + sizeof(type) > (buf)->end)		\
 			goto underflow;					\
-		val = cvt(*(type *)(buf)->data);			\
+		val = cvt(*(type2 *)(buf)->data);			\
 		(buf)->data += sizeof(type);				\
 		val;							\
 	})
 
-#define WSM_GET8(buf)  __WSM_GET(buf, u8, (u8))
-#define WSM_GET16(buf) __WSM_GET(buf, u16, __le16_to_cpu)
-#define WSM_GET32(buf) __WSM_GET(buf, u32, __le32_to_cpu)
+#define WSM_GET8(buf)  __WSM_GET(buf, u8, u8, (u8))
+#define WSM_GET16(buf) __WSM_GET(buf, u16, __le16, __le16_to_cpu)
+#define WSM_GET32(buf) __WSM_GET(buf, u32, __le32, __le32_to_cpu)
 
 #define WSM_PUT(buf, ptr, size)						\
 	do {								\
@@ -65,18 +65,18 @@
 		(buf)->data += size;					\
 	} while (0)
 
-#define __WSM_PUT(buf, val, type, cvt)					\
+#define __WSM_PUT(buf, val, type, type2, cvt)				\
 	do {								\
 		if ((buf)->data + sizeof(type) > (buf)->end)		\
 			if (wsm_buf_reserve((buf), sizeof(type))) \
 				goto nomem;				\
-		*(type *)(buf)->data = cvt(val);			\
+		*(type2 *)(buf)->data = cvt(val);			\
 		(buf)->data += sizeof(type);				\
 	} while (0)
 
-#define WSM_PUT8(buf, val)  __WSM_PUT(buf, val, u8, (u8))
-#define WSM_PUT16(buf, val) __WSM_PUT(buf, val, u16, __cpu_to_le16)
-#define WSM_PUT32(buf, val) __WSM_PUT(buf, val, u32, __cpu_to_le32)
+#define WSM_PUT8(buf, val)  __WSM_PUT(buf, val, u8, u8, (u8))
+#define WSM_PUT16(buf, val) __WSM_PUT(buf, val, u16, __le16, __cpu_to_le16)
+#define WSM_PUT32(buf, val) __WSM_PUT(buf, val, u32, __le32, __cpu_to_le32)
 
 static void wsm_buf_reset(struct wsm_buf *buf);
 static int wsm_buf_reserve(struct wsm_buf *buf, size_t extra_size);
@@ -931,8 +931,8 @@ static int wsm_event_indication(struct cw1200_common *priv, struct wsm_buf *buf)
 	if (!event)
 		return -ENOMEM;
 
-	event->evt.id = __le32_to_cpu(WSM_GET32(buf));
-	event->evt.data = __le32_to_cpu(WSM_GET32(buf));
+	event->evt.id = WSM_GET32(buf);
+	event->evt.data = WSM_GET32(buf);
 
 	pr_debug("[WSM] Event: %d(%d)\n",
 		 event->evt.id, event->evt.data);
@@ -1311,7 +1311,7 @@ int wsm_handle_rx(struct cw1200_common *priv, u16 id,
 
 	wsm_buf.begin = (u8 *)&wsm[0];
 	wsm_buf.data = (u8 *)&wsm[1];
-	wsm_buf.end = &wsm_buf.begin[__le32_to_cpu(wsm->len)];
+	wsm_buf.end = &wsm_buf.begin[__le16_to_cpu(wsm->len)];
 
 	pr_debug("[WSM] <<< 0x%.4X (%td)\n", id,
 		 wsm_buf.end - wsm_buf.begin);
@@ -1550,7 +1550,7 @@ static bool wsm_handle_tx_data(struct cw1200_common *priv,
 		 */
 		pr_debug("[WSM] Convert probe request to scan.\n");
 		wsm_lock_tx_async(priv);
-		priv->pending_frame_id = __le32_to_cpu(wsm->packet_id);
+		priv->pending_frame_id = wsm->packet_id;
 		if (queue_delayed_work(priv->workqueue,
 				       &priv->scan.probe_work, 0) <= 0)
 			wsm_unlock_tx(priv);
@@ -1558,15 +1558,14 @@ static bool wsm_handle_tx_data(struct cw1200_common *priv,
 		break;
 	case do_drop:
 		pr_debug("[WSM] Drop frame (0x%.4X).\n", fctl);
-		BUG_ON(cw1200_queue_remove(queue,
-					   __le32_to_cpu(wsm->packet_id)));
+		BUG_ON(cw1200_queue_remove(queue, wsm->packet_id));
 		handled = true;
 		break;
 	case do_wep:
 		pr_debug("[WSM] Issue set_default_wep_key.\n");
 		wsm_lock_tx_async(priv);
 		priv->wep_default_key_id = tx_info->control.hw_key->keyidx;
-		priv->pending_frame_id = __le32_to_cpu(wsm->packet_id);
+		priv->pending_frame_id = wsm->packet_id;
 		if (queue_work(priv->workqueue, &priv->wep_key_work) <= 0)
 			wsm_unlock_tx(priv);
 		handled = true;
diff --git a/drivers/net/wireless/cw1200/wsm.h b/drivers/net/wireless/cw1200/wsm.h
index 2816171..7afc613 100644
--- a/drivers/net/wireless/cw1200/wsm.h
+++ b/drivers/net/wireless/cw1200/wsm.h
@@ -806,7 +806,7 @@ struct wsm_tx {
 	struct wsm_hdr hdr;
 
 	/* Packet identifier that meant to be used in completion. */
-	__le32 packet_id;
+	u32 packet_id;  /* Note this is actually a cookie */
 
 	/* WSM_TRANSMIT_RATE_... */
 	u8 max_tx_rate;
@@ -825,18 +825,18 @@ struct wsm_tx {
 	u8 flags;
 
 	/* Should be 0. */
-	__le32 reserved;
+	u32 reserved;
 
 	/* The elapsed time in TUs, after the initial transmission */
 	/* of an MSDU, after which further attempts to transmit */
 	/* the MSDU shall be terminated. Overrides the global */
 	/* dot11MaxTransmitMsduLifeTime setting [optional] */
 	/* Device will set the default value if this is 0. */
-	__le32 expire_time;
+	u32 expire_time;
 
 	/* WSM_HT_TX_... */
 	__le32 ht_tx_parameters;
-};
+} __packed;
 
 /* = sizeof(generic hi hdr) + sizeof(wsm hdr) + sizeof(alignment) */
 #define WSM_TX_EXTRA_HEADROOM (28)
@@ -846,10 +846,10 @@ struct wsm_tx {
 
 struct wsm_rx {
 	/* WSM_STATUS_... */
-	__le32 status;
+	u32 status;
 
 	/* Specifies the channel of the received packet. */
-	__le16 channel_number;
+	u16 channel_number;
 
 	/* WSM_TRANSMIT_RATE_... */
 	u8 rx_rate;
@@ -859,11 +859,8 @@ struct wsm_rx {
 	u8 rcpi_rssi;
 
 	/* WSM_RX_STATUS_... */
-	__le32 flags;
-
-	/* Payload */
-	u8 data[0];
-} __packed;
+	u32 flags;
+};
 
 /* = sizeof(generic hi hdr) + sizeof(wsm hdr) */
 #define WSM_RX_EXTRA_HEADROOM (16)
@@ -1119,22 +1116,22 @@ int wsm_set_tx_queue_params(struct cw1200_common *priv,
 #define WSM_EDCA_PARAMS_RESP_ID 0x0413
 struct wsm_edca_queue_params {
 	/* CWmin (in slots) for the access class. */
-	__le16 cwmin;
+	u16 cwmin;
 
 	/* CWmax (in slots) for the access class. */
-	__le16 cwmax;
+	u16 cwmax;
 
 	/* AIFS (in slots) for the access class. */
-	__le16 aifns;
+	u16 aifns;
 
 	/* TX OP Limit (in microseconds) for the access class. */
-	__le16 txop_limit;
+	u16 txop_limit;
 
 	/* dot11MaxReceiveLifetime to be used for the specified */
 	/* the access class. Overrides the global */
 	/* dot11MaxReceiveLifetime value */
-	__le32 max_rx_lifetime;
-} __packed;
+	u32 max_rx_lifetime;
+};
 
 struct wsm_edca_params {
 	/* NOTE: index is a linux queue id. */
@@ -1147,12 +1144,12 @@ struct wsm_edca_params {
 		     __uapsd) \
 	do {							\
 		struct wsm_edca_queue_params *p = &(__edca)->params[__queue]; \
-		p->cwmin = (__cw_min);				\
-		p->cwmax = (__cw_max);				\
-		p->aifns = (__aifs);				\
-		p->txop_limit = ((__txop) * TXOP_UNIT);		\
-		p->max_rx_lifetime = (__lifetime);		\
-		(__edca)->uapsd_enable[__queue] = (__uapsd);	\
+		p->cwmin = __cw_min;					\
+		p->cwmax = __cw_max;					\
+		p->aifns = __aifs;					\
+		p->txop_limit = ((__txop) * TXOP_UNIT);			\
+		p->max_rx_lifetime = __lifetime;			\
+		(__edca)->uapsd_enable[__queue] = (__uapsd);		\
 	} while (0)
 
 int wsm_set_edca_params(struct cw1200_common *priv,
@@ -1475,7 +1472,7 @@ static inline int wsm_set_template_frame(struct cw1200_common *priv,
 	u8 *p = skb_push(arg->skb, 4);
 	p[0] = arg->frame_type;
 	p[1] = arg->rate;
-	((u16 *)p)[1] = __cpu_to_le16(arg->skb->len - 4);
+	((__le16 *)p)[1] = __cpu_to_le16(arg->skb->len - 4);
 	ret = wsm_write_mib(priv, WSM_MIB_ID_TEMPLATE_FRAME, p, arg->skb->len);
 	skb_pull(arg->skb, 4);
 	return ret;
-- 
1.8.2.1


^ permalink raw reply related

* [PATCH] ipw2200: fix error return code in ipw_load()
From: Wei Yongjun @ 2013-06-21  2:42 UTC (permalink / raw)
  To: stas.yakovlev, linville; +Cc: yongjun_wei, linux-wireless

From: Wei Yongjun <yongjun_wei@trendmicro.com.cn>

Fix to return -ENOMEM in the ipw_rx_queue_alloc() error handling
case instead of 0, as done elsewhere in this function.

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
---
 drivers/net/wireless/ipw2x00/ipw2200.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/wireless/ipw2x00/ipw2200.c b/drivers/net/wireless/ipw2x00/ipw2200.c
index 4ed5e45..6b823a1 100644
--- a/drivers/net/wireless/ipw2x00/ipw2200.c
+++ b/drivers/net/wireless/ipw2x00/ipw2200.c
@@ -3548,6 +3548,7 @@ static int ipw_load(struct ipw_priv *priv)
 		ipw_rx_queue_reset(priv, priv->rxq);
 	if (!priv->rxq) {
 		IPW_ERROR("Unable to initialize Rx queue\n");
+		rc = -ENOMEM;
 		goto error;
 	}
 


^ permalink raw reply related

* Re: [PATCH] brcmfmac: Turn off ARP offloading when configured for AP.
From: Greg KH @ 2013-06-20 19:54 UTC (permalink / raw)
  To: Arend van Spriel; +Cc: stable, linux-wireless, Hante Meuleman, John W. Linville
In-Reply-To: <20130619141920.GB7395@kroah.com>

On Wed, Jun 19, 2013 at 07:19:20AM -0700, Greg KH wrote:
> On Wed, Jun 19, 2013 at 09:27:09AM +0200, Arend van Spriel wrote:
> > On 06/06/2013 10:55 AM, Arend van Spriel wrote:
> > >From: Hante Meuleman <meuleman@broadcom.com>
> > 
> > Hi Greg,
> > 
> > I noticed your review announcement for v3.9.7 and did not see the
> > change below. I sent it to stable because the original upstream
> > commit did not apply. Did I miss some step in the process?
> 
> Ah, somehow I missed your patch, sorry about that, I do have it in my
> mbox.  What kernel tree(s) do you want it to be applied to?  I'll pick
> it up in my next round of releases.

Now applied, sorry for the delay.

greg k-h

^ permalink raw reply

* RE: [Ilw] backtrack 5r3 not supporting intel centrino n 2230
From: Grumbach, Emmanuel @ 2013-06-20 19:35 UTC (permalink / raw)
  To: sanil gupta, linux-wireless@vger.kernel.org, ilw@linux.intel.com
In-Reply-To: <CAHd80D_Pt8Uj4K6kuYNcruvKA8YjYPrttoOptA74mQ-cgTpmhQ@mail.gmail.com>

Hello,

I guess you want to send this question to the backtrack support people. We will help you if you use mainline kernel.

Thanks,
       Emmanuel

From: ilw-bounces@linux.intel.com [mailto:ilw-bounces@linux.intel.com] On Behalf Of sanil gupta
Sent: Thursday, June 20, 2013 10:01 PM
To: linux-wireless@vger.kernel.org; ilw@linux.intel.com
Subject: [Ilw] backtrack 5r3 not supporting intel centrino n 2230

Hello
I am a new user to the backtrack and very interested in doing it but the problem is that i can't use internet using backtrack 5r3 as my wireless card is intel centrino n 2230.I request you to please help me out with this problem as soon as possible
thank you

^ permalink raw reply

* Re: BCM4331 deauthenticates every five minutes
From: Dan Williams @ 2013-06-20 15:24 UTC (permalink / raw)
  To: Arend van Spriel
  Cc: Chris Adams, Rafał Miłecki, Larry Finger, b43-dev,
	linux-wireless
In-Reply-To: <51C2BE54.20509@broadcom.com>

On Thu, 2013-06-20 at 10:33 +0200, Arend van Spriel wrote:
> On 06/19/2013 11:11 PM, Chris Adams wrote:
> > Once upon a time, Arend van Spriel <arend@broadcom.com> said:
> >> Can you make a capture using a wireless sniffer (using your thinkpad maybe)?
> >
> > How would I go about doing that?  I've done lots of network debugging
> > with tcpdump and such, but not much wireless stuff.
> >
> 
> I use wireshark these days. If you install that you can use the steps 
> below and select the wireless interface in wireshark to capture. I use 
> wlan0 as interface name, but it may be different for you.
> 
> 1. disable network-manager so it won't interfere.

It should be enough run "nmcli nm wifi off" and then un-rfkill the
interface, and NM will leave it alone until you turn wifi back on.  It
will also remove the interface from wpa_supplicant.

Dan

> 2. bring the interface down
> $ sudo ifconfig wlan0 down
> 3. change interface type to monitor
> $ sudo iw dev wlan0 set type monitor
> 4. bring up the interface
> $ sudo ifconfig wlan0 up
> 5. start wireshark and select wlan0
> $ gksudo wireshark
> 
> It will complain that running wireshark as root is not secure. If you 
> care about that, you should read [1].
> 
> Regards,
> Arend
> 
> [1] 
> http://wiki.wireshark.org/Security#Administrator.2Froot_account_not_required.21
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



^ permalink raw reply

* Re: [PATCH 2/1] wil6210: set vring index for all descriptors
From: Vladimir Kondratiev @ 2013-06-20 14:47 UTC (permalink / raw)
  To: Kirshenbaum Erez; +Cc: linux-wireless
In-Reply-To: <1371734684-4453-1-git-send-email-erezk@wilocity.com>

On Thursday, June 20, 2013 04:24:44 PM Kirshenbaum Erez wrote:
> The vring index (MAC queue id) must be set in all TX descriptors
> otherwise HW will fail to release descriptors for a specific vring
> (disconnect or vring switch flows).
> This is normally occurs when fragmentation required, if vring index
> will not be the same for all SKB descriptors HW will fail to flush
> this MAC queue.
> 
> Signed-off-by: Kirshenbaum Erez <erezk@wilocity.com>
> 
Here is my
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>

Thanks.

^ permalink raw reply

* [PATCH 2/1] wil6210: set vring index for all descriptors
From: Kirshenbaum Erez @ 2013-06-20 13:24 UTC (permalink / raw)
  To: qca_vkondrat; +Cc: linux-wireless, Kirshenbaum Erez

The vring index (MAC queue id) must be set in all TX descriptors
otherwise HW will fail to release descriptors for a specific vring
(disconnect or vring switch flows).
This is normally occurs when fragmentation required, if vring index
will not be the same for all SKB descriptors HW will fail to flush
this MAC queue.

Signed-off-by: Kirshenbaum Erez <erezk@wilocity.com>
---
 drivers/net/wireless/ath/wil6210/txrx.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/net/wireless/ath/wil6210/txrx.c b/drivers/net/wireless/ath/wil6210/txrx.c
index e1c492b..73d6c2d 100644
--- a/drivers/net/wireless/ath/wil6210/txrx.c
+++ b/drivers/net/wireless/ath/wil6210/txrx.c
@@ -621,7 +621,8 @@ static struct vring *wil_find_tx_vring(struct wil6210_priv *wil,
 	return NULL;
 }
 
-static int wil_tx_desc_map(struct vring_tx_desc *d, dma_addr_t pa, u32 len)
+static int wil_tx_desc_map(struct vring_tx_desc *d, dma_addr_t pa, u32 len,
+			   int vring_index)
 {
 	wil_desc_addr_set(&d->dma.addr, pa);
 	d->dma.ip_length = 0;
@@ -630,7 +631,7 @@ static int wil_tx_desc_map(struct vring_tx_desc *d, dma_addr_t pa, u32 len)
 	d->dma.error = 0;
 	d->dma.status = 0; /* BIT(0) should be 0 for HW_OWNED */
 	d->dma.length = cpu_to_le16((u16)len);
-	d->dma.d0 = 0;
+	d->dma.d0 = (vring_index << DMA_CFG_DESC_TX_0_QID_POS);
 	d->mac.d[0] = 0;
 	d->mac.d[1] = 0;
 	d->mac.d[2] = 0;
@@ -684,7 +685,7 @@ static int wil_tx_vring(struct wil6210_priv *wil, struct vring *vring,
 	if (unlikely(dma_mapping_error(dev, pa)))
 		return -EINVAL;
 	/* 1-st segment */
-	wil_tx_desc_map(d, pa, skb_headlen(skb));
+	wil_tx_desc_map(d, pa, skb_headlen(skb), vring_index);
 	d->mac.d[2] |= ((nr_frags + 1) <<
 		       MAC_CFG_DESC_TX_2_NUM_OF_DESCRIPTORS_POS);
 	if (nr_frags)
@@ -701,7 +702,7 @@ static int wil_tx_vring(struct wil6210_priv *wil, struct vring *vring,
 				DMA_TO_DEVICE);
 		if (unlikely(dma_mapping_error(dev, pa)))
 			goto dma_error;
-		wil_tx_desc_map(d, pa, len);
+		wil_tx_desc_map(d, pa, len, vring_index);
 		vring->ctx[i] = NULL;
 		*_d = *d;
 	}
@@ -709,7 +710,6 @@ static int wil_tx_vring(struct wil6210_priv *wil, struct vring *vring,
 	d->dma.d0 |= BIT(DMA_CFG_DESC_TX_0_CMD_EOP_POS);
 	d->dma.d0 |= BIT(9); /* BUG: undocumented bit */
 	d->dma.d0 |= BIT(DMA_CFG_DESC_TX_0_CMD_DMA_IT_POS);
-	d->dma.d0 |= (vring_index << DMA_CFG_DESC_TX_0_QID_POS);
 	*_d = *d;
 
 	wil_hex_dump_txrx("Tx ", DUMP_PREFIX_NONE, 32, 4,
-- 
1.7.11.7


^ permalink raw reply related

* [PATCH] nl80211/drivers: change bss channel to chandef
From: Simon Wunderlich @ 2013-06-20 14:10 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless, Simon Wunderlich

To prepare the wireless stack for 5/10 MHz channels, change the
cfg80211_bss structure to contain a chandef instead of a channel. This
allows to distinguish between BSSs with different widths (5, 10, 20+
MHz) on the same channel. Scanning or connecting explicitly in a
certain channel width can be added later.

Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
---
 drivers/net/wireless/ath/ath6kl/cfg80211.c         |    4 +-
 drivers/net/wireless/ath/ath6kl/wmi.c              |    5 +-
 drivers/net/wireless/ath/wil6210/wmi.c             |    5 +-
 .../net/wireless/brcm80211/brcmfmac/wl_cfg80211.c  |    2 +
 drivers/net/wireless/libertas/cfg.c                |    7 +-
 drivers/net/wireless/mwifiex/cfg80211.c            |    4 +-
 drivers/net/wireless/mwifiex/scan.c                |    3 +
 drivers/net/wireless/orinoco/scan.c                |    8 +-
 drivers/net/wireless/rndis_wlan.c                  |    4 +
 drivers/staging/wlan-ng/cfg80211.c                 |    9 +-
 include/net/cfg80211.h                             |   18 ++--
 net/mac80211/ibss.c                                |   20 ++--
 net/mac80211/mlme.c                                |   23 ++--
 net/mac80211/scan.c                                |    4 +-
 net/wireless/chan.c                                |    4 +-
 net/wireless/core.h                                |    2 +-
 net/wireless/ibss.c                                |    2 +-
 net/wireless/mlme.c                                |   16 +--
 net/wireless/nl80211.c                             |   14 +--
 net/wireless/scan.c                                |  111 ++++++++++++++------
 net/wireless/sme.c                                 |   21 +++-
 net/wireless/trace.h                               |   42 ++++----
 net/wireless/wext-sme.c                            |    2 +-
 23 files changed, 214 insertions(+), 116 deletions(-)

diff --git a/drivers/net/wireless/ath/ath6kl/cfg80211.c b/drivers/net/wireless/ath/ath6kl/cfg80211.c
index 2437ad2..0819e07 100644
--- a/drivers/net/wireless/ath/ath6kl/cfg80211.c
+++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c
@@ -686,6 +686,7 @@ ath6kl_add_bss_if_needed(struct ath6kl_vif *vif,
 {
 	struct ath6kl *ar = vif->ar;
 	struct cfg80211_bss *bss;
+	struct cfg80211_chan_def chandef;
 	u16 cap_mask, cap_val;
 	u8 *ie;
 
@@ -716,7 +717,8 @@ ath6kl_add_bss_if_needed(struct ath6kl_vif *vif,
 		ie[1] = vif->ssid_len;
 		memcpy(ie + 2, vif->ssid, vif->ssid_len);
 		memcpy(ie + 2 + vif->ssid_len, beacon_ie, beacon_ie_len);
-		bss = cfg80211_inform_bss(ar->wiphy, chan,
+		cfg80211_chandef_create(&chandef, chan, NL80211_CHAN_NO_HT);
+		bss = cfg80211_inform_bss(ar->wiphy, &chandef,
 					  bssid, 0, cap_val, 100,
 					  ie, 2 + vif->ssid_len + beacon_ie_len,
 					  0, GFP_KERNEL);
diff --git a/drivers/net/wireless/ath/ath6kl/wmi.c b/drivers/net/wireless/ath/ath6kl/wmi.c
index 87aefb4..4e42f29 100644
--- a/drivers/net/wireless/ath/ath6kl/wmi.c
+++ b/drivers/net/wireless/ath/ath6kl/wmi.c
@@ -1044,6 +1044,7 @@ static int ath6kl_wmi_bssinfo_event_rx(struct wmi *wmi, u8 *datap, int len,
 	struct wmi_bss_info_hdr2 *bih;
 	u8 *buf;
 	struct ieee80211_channel *channel;
+	struct cfg80211_chan_def chandef;
 	struct ath6kl *ar = wmi->parent_dev;
 	struct ieee80211_mgmt *mgmt;
 	struct cfg80211_bss *bss;
@@ -1120,7 +1121,9 @@ static int ath6kl_wmi_bssinfo_event_rx(struct wmi *wmi, u8 *datap, int len,
 
 	memcpy(&mgmt->u.beacon, buf, len);
 
-	bss = cfg80211_inform_bss_frame(ar->wiphy, channel, mgmt,
+	cfg80211_chandef_create(&chandef, channel, NL80211_CHAN_NO_HT);
+
+	bss = cfg80211_inform_bss_frame(ar->wiphy, &chandef, mgmt,
 					24 + len, (bih->snr - 95) * 100,
 					GFP_ATOMIC);
 	kfree(mgmt);
diff --git a/drivers/net/wireless/ath/wil6210/wmi.c b/drivers/net/wireless/ath/wil6210/wmi.c
index 527ffb5..e2047e5 100644
--- a/drivers/net/wireless/ath/wil6210/wmi.c
+++ b/drivers/net/wireless/ath/wil6210/wmi.c
@@ -300,6 +300,7 @@ static void wmi_evt_rx_mgmt(struct wil6210_priv *wil, int id, void *d, int len)
 {
 	struct wmi_rx_mgmt_packet_event *data = d;
 	struct wiphy *wiphy = wil_to_wiphy(wil);
+	struct cfg80211_chan_def chandef;
 	struct ieee80211_mgmt *rx_mgmt_frame =
 			(struct ieee80211_mgmt *)data->payload;
 	int ch_no = data->info.channel+1;
@@ -327,7 +328,9 @@ static void wmi_evt_rx_mgmt(struct wil6210_priv *wil, int id, void *d, int len)
 	if (ieee80211_is_beacon(fc) || ieee80211_is_probe_resp(fc)) {
 		struct cfg80211_bss *bss;
 
-		bss = cfg80211_inform_bss_frame(wiphy, channel, rx_mgmt_frame,
+		/* TODO: this is actually no 20 MHz channel width ... */
+		cfg80211_chandef_create(&chandef, channel, NL80211_CHAN_NO_HT);
+		bss = cfg80211_inform_bss_frame(wiphy, &chandef, rx_mgmt_frame,
 						d_len, signal, GFP_KERNEL);
 		if (bss) {
 			wil_dbg_wmi(wil, "Added BSS %pM\n",
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
index 8bd256b..f6151d0 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
@@ -2235,6 +2235,7 @@ static s32 brcmf_inform_single_bss(struct brcmf_cfg80211_info *cfg,
 {
 	struct wiphy *wiphy = cfg_to_wiphy(cfg);
 	struct ieee80211_channel *notify_channel;
+	struct cfg80211_chan_def chandef;
 	struct cfg80211_bss *bss;
 	struct ieee80211_supported_band *band;
 	struct brcmu_chan ch;
@@ -2279,6 +2280,7 @@ static s32 brcmf_inform_single_bss(struct brcmf_cfg80211_info *cfg,
 	brcmf_dbg(CONN, "Beacon interval: %d\n", notify_interval);
 	brcmf_dbg(CONN, "Signal: %d\n", notify_signal);
 
+	cfg80211_chandef_create(&chandef, channel, NL80211_CHAN_NO_HT);
 	bss = cfg80211_inform_bss(wiphy, notify_channel, (const u8 *)bi->BSSID,
 		0, notify_capability, notify_interval, notify_ie,
 		notify_ielen, notify_signal, GFP_KERNEL);
diff --git a/drivers/net/wireless/libertas/cfg.c b/drivers/net/wireless/libertas/cfg.c
index 116f4ab..e252fd7 100644
--- a/drivers/net/wireless/libertas/cfg.c
+++ b/drivers/net/wireless/libertas/cfg.c
@@ -504,6 +504,7 @@ static int lbs_ret_scan(struct lbs_private *priv, unsigned long dummy,
 	struct cmd_header *resp)
 {
 	struct cfg80211_bss *bss;
+	struct cfg80211_chan_def chandef;
 	struct cmd_ds_802_11_scan_rsp *scanresp = (void *)resp;
 	int bsssize;
 	const u8 *pos;
@@ -652,7 +653,9 @@ static int lbs_ret_scan(struct lbs_private *priv, unsigned long dummy,
 
 			if (channel &&
 			    !(channel->flags & IEEE80211_CHAN_DISABLED)) {
-				bss = cfg80211_inform_bss(wiphy, channel,
+				cfg80211_chandef_create(&chandef, channel,
+							NL80211_CHAN_NO_HT);
+				bss = cfg80211_inform_bss(wiphy, &chandef,
 					bssid, get_unaligned_le64(tsfdesc),
 					capa, intvl, ie, ielen,
 					LBS_SCAN_RSSI_TO_MBM(rssi),
@@ -1759,7 +1762,7 @@ static void lbs_join_post(struct lbs_private *priv,
 	lbs_deb_hex(LBS_DEB_CFG80211, "IE", fake_ie, fake - fake_ie);
 
 	bss = cfg80211_inform_bss(priv->wdev->wiphy,
-				  params->chandef.chan,
+				  &params->chandef,
 				  bssid,
 				  0,
 				  capability,
diff --git a/drivers/net/wireless/mwifiex/cfg80211.c b/drivers/net/wireless/mwifiex/cfg80211.c
index 856aea2..a2843fd 100644
--- a/drivers/net/wireless/mwifiex/cfg80211.c
+++ b/drivers/net/wireless/mwifiex/cfg80211.c
@@ -1514,6 +1514,7 @@ static int mwifiex_cfg80211_inform_ibss_bss(struct mwifiex_private *priv)
 	struct ieee80211_channel *chan;
 	struct mwifiex_bss_info bss_info;
 	struct cfg80211_bss *bss;
+	struct cfg80211_chan_def chandef;
 	int ie_len;
 	u8 ie_buf[IEEE80211_MAX_SSID_LEN + sizeof(struct ieee_types_header)];
 	enum ieee80211_band band;
@@ -1533,7 +1534,8 @@ static int mwifiex_cfg80211_inform_ibss_bss(struct mwifiex_private *priv)
 			ieee80211_channel_to_frequency(bss_info.bss_chan,
 						       band));
 
-	bss = cfg80211_inform_bss(priv->wdev->wiphy, chan,
+	cfg80211_chandef_create(&chandef, chan, NL80211_CHAN_NO_HT);
+	bss = cfg80211_inform_bss(priv->wdev->wiphy, &chandef,
 				  bss_info.bssid, 0, WLAN_CAPABILITY_IBSS,
 				  0, ie_buf, ie_len, 0, GFP_KERNEL);
 	cfg80211_put_bss(priv->wdev->wiphy, bss);
diff --git a/drivers/net/wireless/mwifiex/scan.c b/drivers/net/wireless/mwifiex/scan.c
index 801b6b7..410b281 100644
--- a/drivers/net/wireless/mwifiex/scan.c
+++ b/drivers/net/wireless/mwifiex/scan.c
@@ -1559,6 +1559,7 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv,
 	u8 is_bgscan_resp;
 	unsigned long flags;
 	struct cfg80211_bss *bss;
+	struct cfg80211_chan_def chandef;
 
 	is_bgscan_resp = (le16_to_cpu(resp->command)
 			  == HostCmd_CMD_802_11_BG_SCAN_QUERY);
@@ -1743,6 +1744,8 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv,
 			chan = ieee80211_get_channel(priv->wdev->wiphy, freq);
 
 			if (chan && !(chan->flags & IEEE80211_CHAN_DISABLED)) {
+				cfg80211_chandef_create(&chandef, channel,
+							NL80211_CHAN_NO_HT);
 				bss = cfg80211_inform_bss(priv->wdev->wiphy,
 					      chan, bssid, timestamp,
 					      cap_info_bitmap, beacon_period,
diff --git a/drivers/net/wireless/orinoco/scan.c b/drivers/net/wireless/orinoco/scan.c
index e8c5714..8837a81 100644
--- a/drivers/net/wireless/orinoco/scan.c
+++ b/drivers/net/wireless/orinoco/scan.c
@@ -76,6 +76,7 @@ static void orinoco_add_hostscan_result(struct orinoco_private *priv,
 {
 	struct wiphy *wiphy = priv_to_wiphy(priv);
 	struct ieee80211_channel *channel;
+	struct cfg80211_chan_def chandef;
 	struct cfg80211_bss *cbss;
 	u8 *ie;
 	u8 ie_buf[46];
@@ -122,7 +123,8 @@ static void orinoco_add_hostscan_result(struct orinoco_private *priv,
 	beacon_interval = le16_to_cpu(bss->a.beacon_interv);
 	signal = SIGNAL_TO_MBM(le16_to_cpu(bss->a.level));
 
-	cbss = cfg80211_inform_bss(wiphy, channel, bss->a.bssid, timestamp,
+	cfg80211_chandef_create(&chandef, channel, NL80211_CHAN_NO_HT);
+	cbss = cfg80211_inform_bss(wiphy, &chandef, bss->a.bssid, timestamp,
 				   capability, beacon_interval, ie_buf, ie_len,
 				   signal, GFP_KERNEL);
 	cfg80211_put_bss(wiphy, cbss);
@@ -134,6 +136,7 @@ void orinoco_add_extscan_result(struct orinoco_private *priv,
 {
 	struct wiphy *wiphy = priv_to_wiphy(priv);
 	struct ieee80211_channel *channel;
+	struct cfg80211_chan_def chandef;
 	struct cfg80211_bss *cbss;
 	const u8 *ie;
 	u64 timestamp;
@@ -155,7 +158,8 @@ void orinoco_add_extscan_result(struct orinoco_private *priv,
 	ie = bss->data;
 	signal = SIGNAL_TO_MBM(bss->level);
 
-	cbss = cfg80211_inform_bss(wiphy, channel, bss->bssid, timestamp,
+	cfg80211_chandef_create(&chandef, channel, NL80211_CHAN_NO_HT);
+	cbss = cfg80211_inform_bss(wiphy, &chandef, bss->bssid, timestamp,
 				   capability, beacon_interval, ie, ie_len,
 				   signal, GFP_KERNEL);
 	cfg80211_put_bss(wiphy, cbss);
diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
index 8169a85..e8a4e16 100644
--- a/drivers/net/wireless/rndis_wlan.c
+++ b/drivers/net/wireless/rndis_wlan.c
@@ -1984,6 +1984,7 @@ static bool rndis_bss_info_update(struct usbnet *usbdev,
 {
 	struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
 	struct ieee80211_channel *channel;
+	struct cfg80211_chan_def chandef;
 	struct cfg80211_bss *bss;
 	s32 signal;
 	u64 timestamp;
@@ -2023,6 +2024,7 @@ static bool rndis_bss_info_update(struct usbnet *usbdev,
 	capability = le16_to_cpu(fixed->capabilities);
 	beacon_interval = le16_to_cpu(fixed->beacon_interval);
 
+	cfg80211_chandef_create(&chandef, channel, NL80211_CHAN_NO_HT);
 	bss = cfg80211_inform_bss(priv->wdev.wiphy, channel, bssid->mac,
 		timestamp, capability, beacon_interval, ie, ie_len, signal,
 		GFP_KERNEL);
@@ -2648,6 +2650,7 @@ static void rndis_wlan_craft_connected_bss(struct usbnet *usbdev, u8 *bssid,
 	struct rndis_wlan_private *priv = get_rndis_wlan_priv(usbdev);
 	struct ieee80211_channel *channel;
 	struct ndis_80211_ssid ssid;
+	struct cfg80211_chan_def chandef;
 	struct cfg80211_bss *bss;
 	s32 signal;
 	u64 timestamp;
@@ -2712,6 +2715,7 @@ static void rndis_wlan_craft_connected_bss(struct usbnet *usbdev, u8 *bssid,
 		bssid, (u32)timestamp, capability, beacon_period, ie_len,
 		ssid.essid, signal);
 
+	cfg80211_chandef_create(&chandef, channel, NL80211_CHAN_NO_HT);
 	bss = cfg80211_inform_bss(priv->wdev.wiphy, channel, bssid,
 		timestamp, capability, beacon_period, ie_buf, ie_len,
 		signal, GFP_KERNEL);
diff --git a/drivers/staging/wlan-ng/cfg80211.c b/drivers/staging/wlan-ng/cfg80211.c
index f1bce18..e91d50a 100644
--- a/drivers/staging/wlan-ng/cfg80211.c
+++ b/drivers/staging/wlan-ng/cfg80211.c
@@ -334,8 +334,11 @@ int prism2_scan(struct wiphy *wiphy, struct cfg80211_scan_request *request)
 	wlandevice_t *wlandev;
 	struct p80211msg_dot11req_scan msg1;
 	struct p80211msg_dot11req_scan_results msg2;
+	struct cfg80211_chan_def chandef;
 	struct cfg80211_bss *bss;
+	struct ieee80211_channel *channel;
 	int result;
+	int freq;
 	int err = 0;
 	int numbss = 0;
 	int i = 0;
@@ -408,8 +411,10 @@ int prism2_scan(struct wiphy *wiphy, struct cfg80211_scan_request *request)
 		ie_buf[1] = msg2.ssid.data.len;
 		ie_len = ie_buf[1] + 2;
 		memcpy(&ie_buf[2], &(msg2.ssid.data.data), msg2.ssid.data.len);
-		bss = cfg80211_inform_bss(wiphy,
-			ieee80211_get_channel(wiphy, ieee80211_dsss_chan_to_freq(msg2.dschannel.data)),
+		freq = ieee80211_dsss_chan_to_freq(msg2.dschannel.data);
+		channel = ieee80211_get_channel(wiphy, freq);
+		cfg80211_chandef_create(&chandef, channel, NL80211_CHAN_NO_HT);
+		bss = cfg80211_inform_bss(wiphy, &chandef,
 			(const u8 *) &(msg2.bssid.data.data),
 			msg2.timestamp.data, msg2.capinfo.data,
 			msg2.beaconperiod.data,
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index e3a39fc..18c0850 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1402,7 +1402,7 @@ struct cfg80211_bss_ies {
  * This structure describes a BSS (which may also be a mesh network)
  * for use in scan results and similar.
  *
- * @channel: channel this BSS is on
+ * @chandef: chandef of the channel this BSS is on
  * @bssid: BSSID of the BSS
  * @beacon_interval: the beacon interval as from the frame
  * @capability: the capability field in host byte order
@@ -1423,7 +1423,7 @@ struct cfg80211_bss_ies {
  * @priv: private area for driver use, has at least wiphy->bss_priv_size bytes
  */
 struct cfg80211_bss {
-	struct ieee80211_channel *channel;
+	struct cfg80211_chan_def chandef;
 
 	const struct cfg80211_bss_ies __rcu *ies;
 	const struct cfg80211_bss_ies __rcu *beacon_ies;
@@ -3382,7 +3382,7 @@ void cfg80211_sched_scan_stopped(struct wiphy *wiphy);
  * cfg80211_inform_bss_frame - inform cfg80211 of a received BSS frame
  *
  * @wiphy: the wiphy reporting the BSS
- * @channel: The channel the frame was received on
+ * @chandef: The chandef of the channel the frame was received on
  * @mgmt: the management frame (probe response or beacon)
  * @len: length of the management frame
  * @signal: the signal strength, type depends on the wiphy's signal_type
@@ -3396,7 +3396,7 @@ void cfg80211_sched_scan_stopped(struct wiphy *wiphy);
  */
 struct cfg80211_bss * __must_check
 cfg80211_inform_bss_frame(struct wiphy *wiphy,
-			  struct ieee80211_channel *channel,
+			  struct cfg80211_chan_def *chandef,
 			  struct ieee80211_mgmt *mgmt, size_t len,
 			  s32 signal, gfp_t gfp);
 
@@ -3404,7 +3404,7 @@ cfg80211_inform_bss_frame(struct wiphy *wiphy,
  * cfg80211_inform_bss - inform cfg80211 of a new BSS
  *
  * @wiphy: the wiphy reporting the BSS
- * @channel: The channel the frame was received on
+ * @chandef: The chandef of the channel the frame was received on
  * @bssid: the BSSID of the BSS
  * @tsf: the TSF sent by the peer in the beacon/probe response (or 0)
  * @capability: the capability field sent by the peer
@@ -3422,22 +3422,22 @@ cfg80211_inform_bss_frame(struct wiphy *wiphy,
  */
 struct cfg80211_bss * __must_check
 cfg80211_inform_bss(struct wiphy *wiphy,
-		    struct ieee80211_channel *channel,
+		    struct cfg80211_chan_def *chandef,
 		    const u8 *bssid, u64 tsf, u16 capability,
 		    u16 beacon_interval, const u8 *ie, size_t ielen,
 		    s32 signal, gfp_t gfp);
 
 struct cfg80211_bss *cfg80211_get_bss(struct wiphy *wiphy,
-				      struct ieee80211_channel *channel,
+				      struct cfg80211_chan_def *chandef,
 				      const u8 *bssid,
 				      const u8 *ssid, size_t ssid_len,
 				      u16 capa_mask, u16 capa_val);
 static inline struct cfg80211_bss *
 cfg80211_get_ibss(struct wiphy *wiphy,
-		  struct ieee80211_channel *channel,
+		  struct cfg80211_chan_def *chandef,
 		  const u8 *ssid, size_t ssid_len)
 {
-	return cfg80211_get_bss(wiphy, channel, NULL, ssid, ssid_len,
+	return cfg80211_get_bss(wiphy, chandef, NULL, ssid, ssid_len,
 				WLAN_CAPABILITY_IBSS, WLAN_CAPABILITY_IBSS);
 }
 
diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
index ea7b9c2..bef96b8 100644
--- a/net/mac80211/ibss.c
+++ b/net/mac80211/ibss.c
@@ -246,7 +246,7 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
 	mod_timer(&ifibss->timer,
 		  round_jiffies(jiffies + IEEE80211_IBSS_MERGE_INTERVAL));
 
-	bss = cfg80211_inform_bss_frame(local->hw.wiphy, chan,
+	bss = cfg80211_inform_bss_frame(local->hw.wiphy, &chandef,
 					mgmt, presp->head_len, 0, GFP_KERNEL);
 	cfg80211_put_bss(local->hw.wiphy, bss);
 	netif_carrier_on(sdata->dev);
@@ -270,7 +270,7 @@ static void ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
 	if (beacon_int < 10)
 		beacon_int = 10;
 
-	sband = sdata->local->hw.wiphy->bands[cbss->channel->band];
+	sband = sdata->local->hw.wiphy->bands[cbss->chandef.chan->band];
 
 	basic_rates = 0;
 
@@ -294,7 +294,7 @@ static void ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
 
 	__ieee80211_sta_join_ibss(sdata, cbss->bssid,
 				  beacon_int,
-				  cbss->channel,
+				  cbss->chandef.chan,
 				  basic_rates,
 				  cbss->capability,
 				  tsf, false);
@@ -546,7 +546,8 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
 
 	/* different channel */
 	if (sdata->u.ibss.fixed_channel &&
-	    sdata->u.ibss.chandef.chan != cbss->channel)
+	    !cfg80211_chandef_compatible(&sdata->u.ibss.chandef,
+					 &cbss->chandef))
 		goto put_bss;
 
 	/* different SSID */
@@ -749,7 +750,7 @@ static void ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata)
 	struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
 	struct ieee80211_local *local = sdata->local;
 	struct cfg80211_bss *cbss;
-	struct ieee80211_channel *chan = NULL;
+	struct cfg80211_chan_def *chandef = NULL;
 	const u8 *bssid = NULL;
 	int active_ibss;
 	u16 capability;
@@ -768,10 +769,10 @@ static void ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata)
 	if (ifibss->fixed_bssid)
 		bssid = ifibss->bssid;
 	if (ifibss->fixed_channel)
-		chan = ifibss->chandef.chan;
+		chandef = &ifibss->chandef;
 	if (!is_zero_ether_addr(ifibss->bssid))
 		bssid = ifibss->bssid;
-	cbss = cfg80211_get_bss(local->hw.wiphy, chan, bssid,
+	cbss = cfg80211_get_bss(local->hw.wiphy, chandef, bssid,
 				ifibss->ssid, ifibss->ssid_len,
 				WLAN_CAPABILITY_IBSS | WLAN_CAPABILITY_PRIVACY,
 				capability);
@@ -800,7 +801,8 @@ static void ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata)
 		sdata_info(sdata, "Trigger new scan to find an IBSS to join\n");
 
 		ieee80211_request_ibss_scan(sdata, ifibss->ssid,
-					    ifibss->ssid_len, chan);
+					    ifibss->ssid_len,
+					    chandef ? chandef->chan : NULL);
 	} else {
 		int interval = IEEE80211_SCAN_INTERVAL;
 
@@ -1094,7 +1096,7 @@ int ieee80211_ibss_leave(struct ieee80211_sub_if_data *sdata)
 		if (ifibss->privacy)
 			capability |= WLAN_CAPABILITY_PRIVACY;
 
-		cbss = cfg80211_get_bss(local->hw.wiphy, ifibss->chandef.chan,
+		cbss = cfg80211_get_bss(local->hw.wiphy, &ifibss->chandef,
 					ifibss->bssid, ifibss->ssid,
 					ifibss->ssid_len, WLAN_CAPABILITY_IBSS |
 					WLAN_CAPABILITY_PRIVACY,
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index e0939eb..c7ffbc9 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -953,7 +953,7 @@ static void ieee80211_chswitch_work(struct work_struct *work)
 	}
 
 	/* XXX: shouldn't really modify cfg80211-owned data! */
-	ifmgd->associated->channel = local->_oper_chandef.chan;
+	ifmgd->associated->chandef = local->_oper_chandef;
 
 	/* XXX: wait for a beacon first? */
 	ieee80211_wake_queues_by_reason(&local->hw,
@@ -1053,7 +1053,7 @@ ieee80211_sta_process_chanswitch(struct ieee80211_sub_if_data *sdata,
 		count = elems->ext_chansw_ie->count;
 		mode = elems->ext_chansw_ie->mode;
 	} else if (elems->ch_switch_ie) {
-		new_band = cbss->channel->band;
+		new_band = cbss->chandef.chan->band;
 		new_chan_no = elems->ch_switch_ie->new_ch_num;
 		count = elems->ch_switch_ie->count;
 		mode = elems->ch_switch_ie->mode;
@@ -2030,7 +2030,8 @@ static void ieee80211_mgd_probe_ap_send(struct ieee80211_sub_if_data *sdata)
 
 		ieee80211_send_probe_req(sdata, dst, ssid + 2, ssid_len, NULL,
 					 0, (u32) -1, true, 0,
-					 ifmgd->associated->channel, false);
+					 ifmgd->associated->chandef.chan,
+					 false);
 		rcu_read_unlock();
 	}
 
@@ -2138,7 +2139,7 @@ struct sk_buff *ieee80211_ap_probereq_get(struct ieee80211_hw *hw,
 		ssid_len = ssid[1];
 
 	skb = ieee80211_build_probe_req(sdata, cbss->bssid,
-					(u32) -1, cbss->channel,
+					(u32) -1, cbss->chandef.chan,
 					ssid + 2, ssid_len,
 					NULL, 0, true);
 	rcu_read_unlock();
@@ -3316,7 +3317,7 @@ static int ieee80211_probe_auth(struct ieee80211_sub_if_data *sdata)
 		 */
 		ieee80211_send_probe_req(sdata, NULL, ssidie + 2, ssidie[1],
 					 NULL, 0, (u32) -1, true, 0,
-					 auth_data->bss->channel, false);
+					 auth_data->bss->chandef.chan, false);
 		rcu_read_unlock();
 	}
 
@@ -3711,7 +3712,7 @@ static int ieee80211_prep_channel(struct ieee80211_sub_if_data *sdata,
 	struct cfg80211_chan_def chandef;
 	int ret;
 
-	sband = local->hw.wiphy->bands[cbss->channel->band];
+	sband = local->hw.wiphy->bands[cbss->chandef.chan->band];
 
 	ifmgd->flags &= ~(IEEE80211_STA_DISABLE_40MHZ |
 			  IEEE80211_STA_DISABLE_80P80MHZ |
@@ -3758,7 +3759,7 @@ static int ieee80211_prep_channel(struct ieee80211_sub_if_data *sdata,
 	}
 
 	ifmgd->flags |= ieee80211_determine_chantype(sdata, sband,
-						     cbss->channel,
+						     cbss->chandef.chan,
 						     ht_oper, vht_oper,
 						     &chandef, true);
 
@@ -3823,7 +3824,7 @@ static int ieee80211_prep_connection(struct ieee80211_sub_if_data *sdata,
 		struct ieee80211_supported_band *sband;
 		const struct cfg80211_bss_ies *ies;
 
-		sband = local->hw.wiphy->bands[cbss->channel->band];
+		sband = local->hw.wiphy->bands[cbss->chandef.chan->band];
 
 		err = ieee80211_prep_channel(sdata, cbss);
 		if (err) {
@@ -3851,11 +3852,11 @@ static int ieee80211_prep_connection(struct ieee80211_sub_if_data *sdata,
 			basic_rates = BIT(min_rate_index);
 		}
 
-		new_sta->sta.supp_rates[cbss->channel->band] = rates;
+		new_sta->sta.supp_rates[cbss->chandef.chan->band] = rates;
 		sdata->vif.bss_conf.basic_rates = basic_rates;
 
 		/* cf. IEEE 802.11 9.2.12 */
-		if (cbss->channel->band == IEEE80211_BAND_2GHZ &&
+		if (cbss->chandef.chan->band == IEEE80211_BAND_2GHZ &&
 		    have_higher_than_11mbit)
 			sdata->flags |= IEEE80211_SDATA_OPERATING_GMODE;
 		else
@@ -4117,7 +4118,7 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata,
 		ifmgd->flags |= IEEE80211_STA_DISABLE_VHT;
 
 	/* Also disable HT if we don't support it or the AP doesn't use WMM */
-	sband = local->hw.wiphy->bands[req->bss->channel->band];
+	sband = local->hw.wiphy->bands[req->bss->chandef.chan->band];
 	if (!sband->ht_cap.ht_supported ||
 	    local->hw.queues < IEEE80211_NUM_ACS || !bss->wmm_used) {
 		ifmgd->flags |= IEEE80211_STA_DISABLE_HT;
diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c
index 1b122a7..2f460e4 100644
--- a/net/mac80211/scan.c
+++ b/net/mac80211/scan.c
@@ -65,6 +65,7 @@ ieee80211_bss_info_update(struct ieee80211_local *local,
 	bool beacon = ieee80211_is_beacon(mgmt->frame_control);
 	struct cfg80211_bss *cbss;
 	struct ieee80211_bss *bss;
+	struct cfg80211_chan_def chandef;
 	int clen, srlen;
 	s32 signal = 0;
 
@@ -73,7 +74,8 @@ ieee80211_bss_info_update(struct ieee80211_local *local,
 	else if (local->hw.flags & IEEE80211_HW_SIGNAL_UNSPEC)
 		signal = (rx_status->signal * 100) / local->hw.max_signal;
 
-	cbss = cfg80211_inform_bss_frame(local->hw.wiphy, channel,
+	cfg80211_chandef_create(&chandef, channel, NL80211_CHAN_NO_HT);
+	cbss = cfg80211_inform_bss_frame(local->hw.wiphy, &chandef,
 					 mgmt, len, signal, GFP_ATOMIC);
 	if (!cbss)
 		return NULL;
diff --git a/net/wireless/chan.c b/net/wireless/chan.c
index 50f6195..ddfd779 100644
--- a/net/wireless/chan.c
+++ b/net/wireless/chan.c
@@ -502,7 +502,7 @@ cfg80211_get_chan_state(struct wireless_dev *wdev,
 	switch (wdev->iftype) {
 	case NL80211_IFTYPE_ADHOC:
 		if (wdev->current_bss) {
-			*chan = wdev->current_bss->pub.channel;
+			*chan = wdev->current_bss->pub.chandef.chan;
 			*chanmode = wdev->ibss_fixed
 				  ? CHAN_MODE_SHARED
 				  : CHAN_MODE_EXCLUSIVE;
@@ -511,7 +511,7 @@ cfg80211_get_chan_state(struct wireless_dev *wdev,
 	case NL80211_IFTYPE_STATION:
 	case NL80211_IFTYPE_P2P_CLIENT:
 		if (wdev->current_bss) {
-			*chan = wdev->current_bss->pub.channel;
+			*chan = wdev->current_bss->pub.chandef.chan;
 			*chanmode = CHAN_MODE_SHARED;
 			return;
 		}
diff --git a/net/wireless/core.h b/net/wireless/core.h
index a6b45bf..b6c4749 100644
--- a/net/wireless/core.h
+++ b/net/wireless/core.h
@@ -285,7 +285,7 @@ int cfg80211_stop_ap(struct cfg80211_registered_device *rdev,
 /* MLME */
 int cfg80211_mlme_auth(struct cfg80211_registered_device *rdev,
 		       struct net_device *dev,
-		       struct ieee80211_channel *chan,
+		       struct cfg80211_chan_def *chandef,
 		       enum nl80211_auth_type auth_type,
 		       const u8 *bssid,
 		       const u8 *ssid, int ssid_len,
diff --git a/net/wireless/ibss.c b/net/wireless/ibss.c
index 39bff7d..c9761c8 100644
--- a/net/wireless/ibss.c
+++ b/net/wireless/ibss.c
@@ -373,7 +373,7 @@ int cfg80211_ibss_wext_giwfreq(struct net_device *dev,
 
 	wdev_lock(wdev);
 	if (wdev->current_bss)
-		chan = wdev->current_bss->pub.channel;
+		chan = wdev->current_bss->pub.chandef.chan;
 	else if (wdev->wext.ibss.chandef.chan)
 		chan = wdev->wext.ibss.chandef.chan;
 	wdev_unlock(wdev);
diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c
index a61a44b..70546aa 100644
--- a/net/wireless/mlme.c
+++ b/net/wireless/mlme.c
@@ -193,7 +193,7 @@ EXPORT_SYMBOL(cfg80211_michael_mic_failure);
 /* some MLME handling for userspace SME */
 int cfg80211_mlme_auth(struct cfg80211_registered_device *rdev,
 		       struct net_device *dev,
-		       struct ieee80211_channel *chan,
+		       struct cfg80211_chan_def *chandef,
 		       enum nl80211_auth_type auth_type,
 		       const u8 *bssid,
 		       const u8 *ssid, int ssid_len,
@@ -224,12 +224,13 @@ int cfg80211_mlme_auth(struct cfg80211_registered_device *rdev,
 	    ether_addr_equal(bssid, wdev->current_bss->pub.bssid))
 		return -EALREADY;
 
-	req.bss = cfg80211_get_bss(&rdev->wiphy, chan, bssid, ssid, ssid_len,
-				   WLAN_CAPABILITY_ESS, WLAN_CAPABILITY_ESS);
+	req.bss = cfg80211_get_bss(&rdev->wiphy, chandef, bssid, ssid,
+				   ssid_len, WLAN_CAPABILITY_ESS,
+				   WLAN_CAPABILITY_ESS);
 	if (!req.bss)
 		return -ENOENT;
 
-	err = cfg80211_can_use_chan(rdev, wdev, req.bss->channel,
+	err = cfg80211_can_use_chan(rdev, wdev, req.bss->chandef.chan,
 				    CHAN_MODE_SHARED);
 	if (err)
 		goto out;
@@ -283,6 +284,7 @@ int cfg80211_mlme_assoc(struct cfg80211_registered_device *rdev,
 			struct cfg80211_assoc_request *req)
 {
 	struct wireless_dev *wdev = dev->ieee80211_ptr;
+	struct cfg80211_chan_def chandef;
 	int err;
 
 	ASSERT_WDEV_LOCK(wdev);
@@ -297,8 +299,10 @@ int cfg80211_mlme_assoc(struct cfg80211_registered_device *rdev,
 	cfg80211_oper_and_vht_capa(&req->vht_capa_mask,
 				   rdev->wiphy.vht_capa_mod_mask);
 
-	req->bss = cfg80211_get_bss(&rdev->wiphy, chan, bssid, ssid, ssid_len,
-				    WLAN_CAPABILITY_ESS, WLAN_CAPABILITY_ESS);
+	cfg80211_chandef_create(&chandef, chan, NL80211_CHAN_NO_HT);
+	req->bss = cfg80211_get_bss(&rdev->wiphy, &chandef, bssid, ssid,
+				    ssid_len, WLAN_CAPABILITY_ESS,
+				    WLAN_CAPABILITY_ESS);
 	if (!req->bss)
 		return -ENOENT;
 
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 4ab1ffa..70d2b63 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -5608,7 +5608,8 @@ static int nl80211_send_bss(struct sk_buff *msg, struct netlink_callback *cb,
 	    nla_put_u16(msg, NL80211_BSS_BEACON_INTERVAL, res->beacon_interval))
 		goto nla_put_failure;
 	if (nla_put_u16(msg, NL80211_BSS_CAPABILITY, res->capability) ||
-	    nla_put_u32(msg, NL80211_BSS_FREQUENCY, res->channel->center_freq) ||
+	    nla_put_u32(msg, NL80211_BSS_FREQUENCY,
+			res->chandef.chan->center_freq) ||
 	    nla_put_u32(msg, NL80211_BSS_SEEN_MS_AGO,
 			jiffies_to_msecs(jiffies - intbss->ts)))
 		goto nla_put_failure;
@@ -5823,7 +5824,7 @@ static int nl80211_authenticate(struct sk_buff *skb, struct genl_info *info)
 {
 	struct cfg80211_registered_device *rdev = info->user_ptr[0];
 	struct net_device *dev = info->user_ptr[1];
-	struct ieee80211_channel *chan;
+	struct cfg80211_chan_def chandef;
 	const u8 *bssid, *ssid, *ie = NULL, *sae_data = NULL;
 	int err, ssid_len, ie_len = 0, sae_data_len = 0;
 	enum nl80211_auth_type auth_type;
@@ -5887,10 +5888,9 @@ static int nl80211_authenticate(struct sk_buff *skb, struct genl_info *info)
 		return -EOPNOTSUPP;
 
 	bssid = nla_data(info->attrs[NL80211_ATTR_MAC]);
-	chan = ieee80211_get_channel(&rdev->wiphy,
-		nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ]));
-	if (!chan || (chan->flags & IEEE80211_CHAN_DISABLED))
-		return -EINVAL;
+	err = nl80211_parse_chandef(rdev, info, &chandef);
+	if (!err)
+		return err;
 
 	ssid = nla_data(info->attrs[NL80211_ATTR_SSID]);
 	ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]);
@@ -5928,7 +5928,7 @@ static int nl80211_authenticate(struct sk_buff *skb, struct genl_info *info)
 		return 0;
 
 	wdev_lock(dev->ieee80211_ptr);
-	err = cfg80211_mlme_auth(rdev, dev, chan, auth_type, bssid,
+	err = cfg80211_mlme_auth(rdev, dev, &chandef, auth_type, bssid,
 				 ssid, ssid_len, ie, ie_len,
 				 key.p.key, key.p.key_len, key.idx,
 				 sae_data, sae_data_len);
diff --git a/net/wireless/scan.c b/net/wireless/scan.c
index dd01b58..2dfb357 100644
--- a/net/wireless/scan.c
+++ b/net/wireless/scan.c
@@ -419,6 +419,20 @@ enum bss_compare_mode {
 	BSS_CMP_HIDE_NUL,
 };
 
+static int cfg80211_chandef_compare(struct cfg80211_chan_def *a,
+				    struct cfg80211_chan_def *b)
+{
+	if (a->center_freq1 != b->center_freq1)
+		return b->center_freq1 - a->center_freq1;
+	if (a->center_freq2 != b->center_freq2)
+		return b->center_freq2 - a->center_freq2;
+	/* this is used only to create an order */
+	if (b->width > a->width)
+		return 1;
+	else
+		return -1;
+}
+
 static int cmp_bss(struct cfg80211_bss *a,
 		   struct cfg80211_bss *b,
 		   enum bss_compare_mode mode)
@@ -428,8 +442,8 @@ static int cmp_bss(struct cfg80211_bss *a,
 	const u8 *ie2 = NULL;
 	int i, r;
 
-	if (a->channel != b->channel)
-		return b->channel->center_freq - a->channel->center_freq;
+	if (!cfg80211_chandef_compatible(&a->chandef, &b->chandef))
+		return cfg80211_chandef_compare(&a->chandef, &b->chandef);
 
 	a_ies = rcu_access_pointer(a->ies);
 	if (!a_ies)
@@ -524,7 +538,7 @@ static int cmp_bss(struct cfg80211_bss *a,
 }
 
 struct cfg80211_bss *cfg80211_get_bss(struct wiphy *wiphy,
-				      struct ieee80211_channel *channel,
+				      struct cfg80211_chan_def *chandef,
 				      const u8 *bssid,
 				      const u8 *ssid, size_t ssid_len,
 				      u16 capa_mask, u16 capa_val)
@@ -533,7 +547,7 @@ struct cfg80211_bss *cfg80211_get_bss(struct wiphy *wiphy,
 	struct cfg80211_internal_bss *bss, *res = NULL;
 	unsigned long now = jiffies;
 
-	trace_cfg80211_get_bss(wiphy, channel, bssid, ssid, ssid_len, capa_mask,
+	trace_cfg80211_get_bss(wiphy, chandef, bssid, ssid, ssid_len, capa_mask,
 			       capa_val);
 
 	spin_lock_bh(&dev->bss_lock);
@@ -541,7 +555,8 @@ struct cfg80211_bss *cfg80211_get_bss(struct wiphy *wiphy,
 	list_for_each_entry(bss, &dev->bss_list, list) {
 		if ((bss->pub.capability & capa_mask) != capa_val)
 			continue;
-		if (channel && bss->pub.channel != channel)
+		if (chandef && chandef->chan &&
+		    !cfg80211_chandef_compatible(&bss->pub.chandef, chandef))
 			continue;
 		/* Don't get expired BSS structs */
 		if (time_after(now, bss->ts + IEEE80211_SCAN_RESULT_EXPIRE) &&
@@ -648,7 +663,8 @@ static bool cfg80211_combine_bsses(struct cfg80211_registered_device *dev,
 	list_for_each_entry(bss, &dev->bss_list, list) {
 		if (!ether_addr_equal(bss->pub.bssid, new->pub.bssid))
 			continue;
-		if (bss->pub.channel != new->pub.channel)
+		if (!cfg80211_chandef_compatible(&bss->pub.chandef,
+						 &new->pub.chandef))
 			continue;
 		if (rcu_access_pointer(bss->pub.beacon_ies))
 			continue;
@@ -684,7 +700,7 @@ cfg80211_bss_update(struct cfg80211_registered_device *dev,
 {
 	struct cfg80211_internal_bss *found = NULL;
 
-	if (WARN_ON(!tmp->pub.channel))
+	if (WARN_ON(!tmp->pub.chandef.chan))
 		return NULL;
 
 	tmp->ts = jiffies;
@@ -834,9 +850,10 @@ cfg80211_bss_update(struct cfg80211_registered_device *dev,
 	return NULL;
 }
 
-static struct ieee80211_channel *
-cfg80211_get_bss_channel(struct wiphy *wiphy, const u8 *ie, size_t ielen,
-			 struct ieee80211_channel *channel)
+static int
+cfg80211_get_bss_chandef(struct wiphy *wiphy, const u8 *ie, size_t ielen,
+			 struct cfg80211_chan_def *new_chandef,
+			 struct cfg80211_chan_def *chandef)
 {
 	const u8 *tmp;
 	u32 freq;
@@ -854,27 +871,54 @@ cfg80211_get_bss_channel(struct wiphy *wiphy, const u8 *ie, size_t ielen,
 		}
 	}
 
-	if (channel_number < 0)
-		return channel;
+	if (channel_number < 0) {
+		*new_chandef = *chandef;
+	} else {
+		freq = ieee80211_channel_to_frequency(channel_number,
+						      chandef->chan->band);
+		new_chandef->chan = ieee80211_get_channel(wiphy, freq);
+	}
+	if (!new_chandef->chan)
+		return -EINVAL;
+	if (!new_chandef->chan->flags & IEEE80211_CHAN_DISABLED)
+		return -EINVAL;
 
-	freq = ieee80211_channel_to_frequency(channel_number, channel->band);
-	channel = ieee80211_get_channel(wiphy, freq);
-	if (!channel)
-		return NULL;
-	if (channel->flags & IEEE80211_CHAN_DISABLED)
-		return NULL;
-	return channel;
+	/* use 20 MHz width on compatible channels. 5/10 MHz channels will
+	 * have a different width stored.
+	 */
+	switch (chandef->width) {
+	default:
+		WARN_ON_ONCE(1);
+		/* fall through */
+	case NL80211_CHAN_WIDTH_20:
+	case NL80211_CHAN_WIDTH_40:
+	case NL80211_CHAN_WIDTH_80:
+	case NL80211_CHAN_WIDTH_80P80:
+	case NL80211_CHAN_WIDTH_160:
+		new_chandef->width = NL80211_CHAN_WIDTH_20_NOHT;
+		break;
+	case NL80211_CHAN_WIDTH_5:
+		new_chandef->width = NL80211_CHAN_WIDTH_5;
+		break;
+	case NL80211_CHAN_WIDTH_10:
+		new_chandef->width = NL80211_CHAN_WIDTH_10;
+		break;
+	}
+	new_chandef->center_freq1 = new_chandef->chan->center_freq;
+	new_chandef->center_freq2 = 0;
+	return 0;
 }
 
 struct cfg80211_bss*
 cfg80211_inform_bss(struct wiphy *wiphy,
-		    struct ieee80211_channel *channel,
+		    struct cfg80211_chan_def *chandef,
 		    const u8 *bssid, u64 tsf, u16 capability,
 		    u16 beacon_interval, const u8 *ie, size_t ielen,
 		    s32 signal, gfp_t gfp)
 {
 	struct cfg80211_bss_ies *ies;
 	struct cfg80211_internal_bss tmp = {}, *res;
+	struct cfg80211_chan_def new_chandef;
 
 	if (WARN_ON(!wiphy))
 		return NULL;
@@ -883,12 +927,11 @@ cfg80211_inform_bss(struct wiphy *wiphy,
 			(signal < 0 || signal > 100)))
 		return NULL;
 
-	channel = cfg80211_get_bss_channel(wiphy, ie, ielen, channel);
-	if (!channel)
+	if (!cfg80211_get_bss_chandef(wiphy, ie, ielen, &new_chandef, chandef))
 		return NULL;
 
 	memcpy(tmp.pub.bssid, bssid, ETH_ALEN);
-	tmp.pub.channel = channel;
+	tmp.pub.chandef = new_chandef;
 	tmp.pub.signal = signal;
 	tmp.pub.beacon_interval = beacon_interval;
 	tmp.pub.capability = capability;
@@ -915,7 +958,7 @@ cfg80211_inform_bss(struct wiphy *wiphy,
 		return NULL;
 
 	if (res->pub.capability & WLAN_CAPABILITY_ESS)
-		regulatory_hint_found_beacon(wiphy, channel, gfp);
+		regulatory_hint_found_beacon(wiphy, new_chandef.chan, gfp);
 
 	trace_cfg80211_return_bss(&res->pub);
 	/* cfg80211_bss_update gives us a referenced result */
@@ -925,19 +968,20 @@ EXPORT_SYMBOL(cfg80211_inform_bss);
 
 struct cfg80211_bss *
 cfg80211_inform_bss_frame(struct wiphy *wiphy,
-			  struct ieee80211_channel *channel,
+			  struct cfg80211_chan_def *chandef,
 			  struct ieee80211_mgmt *mgmt, size_t len,
 			  s32 signal, gfp_t gfp)
 {
 	struct cfg80211_internal_bss tmp = {}, *res;
 	struct cfg80211_bss_ies *ies;
+	struct cfg80211_chan_def new_chandef;
 	size_t ielen = len - offsetof(struct ieee80211_mgmt,
 				      u.probe_resp.variable);
 
 	BUILD_BUG_ON(offsetof(struct ieee80211_mgmt, u.probe_resp.variable) !=
 			offsetof(struct ieee80211_mgmt, u.beacon.variable));
 
-	trace_cfg80211_inform_bss_frame(wiphy, channel, mgmt, len, signal);
+	trace_cfg80211_inform_bss_frame(wiphy, chandef, mgmt, len, signal);
 
 	if (WARN_ON(!mgmt))
 		return NULL;
@@ -952,9 +996,8 @@ cfg80211_inform_bss_frame(struct wiphy *wiphy,
 	if (WARN_ON(len < offsetof(struct ieee80211_mgmt, u.probe_resp.variable)))
 		return NULL;
 
-	channel = cfg80211_get_bss_channel(wiphy, mgmt->u.beacon.variable,
-					   ielen, channel);
-	if (!channel)
+	if (!cfg80211_get_bss_chandef(wiphy, mgmt->u.beacon.variable,
+				      ielen, &new_chandef, chandef))
 		return NULL;
 
 	ies = kmalloc(sizeof(*ies) + ielen, gfp);
@@ -971,7 +1014,7 @@ cfg80211_inform_bss_frame(struct wiphy *wiphy,
 	rcu_assign_pointer(tmp.pub.ies, ies);
 	
 	memcpy(tmp.pub.bssid, mgmt->bssid, ETH_ALEN);
-	tmp.pub.channel = channel;
+	tmp.pub.chandef = new_chandef;
 	tmp.pub.signal = signal;
 	tmp.pub.beacon_interval = le16_to_cpu(mgmt->u.probe_resp.beacon_int);
 	tmp.pub.capability = le16_to_cpu(mgmt->u.probe_resp.capab_info);
@@ -981,7 +1024,7 @@ cfg80211_inform_bss_frame(struct wiphy *wiphy,
 		return NULL;
 
 	if (res->pub.capability & WLAN_CAPABILITY_ESS)
-		regulatory_hint_found_beacon(wiphy, channel, gfp);
+		regulatory_hint_found_beacon(wiphy, new_chandef.chan, gfp);
 
 	trace_cfg80211_return_bss(&res->pub);
 	/* cfg80211_bss_update gives us a referenced result */
@@ -1241,6 +1284,7 @@ ieee80211_bss(struct wiphy *wiphy, struct iw_request_info *info,
 	      char *end_buf)
 {
 	const struct cfg80211_bss_ies *ies;
+	int freq;
 	struct iw_event iwe;
 	const u8 *ie;
 	u8 *buf, *cfg, *p;
@@ -1256,14 +1300,15 @@ ieee80211_bss(struct wiphy *wiphy, struct iw_request_info *info,
 
 	memset(&iwe, 0, sizeof(iwe));
 	iwe.cmd = SIOCGIWFREQ;
-	iwe.u.freq.m = ieee80211_frequency_to_channel(bss->pub.channel->center_freq);
+	freq = bss->pub.chandef.chan->center_freq;
+	iwe.u.freq.m = ieee80211_frequency_to_channel(freq);
 	iwe.u.freq.e = 0;
 	current_ev = iwe_stream_add_event(info, current_ev, end_buf, &iwe,
 					  IW_EV_FREQ_LEN);
 
 	memset(&iwe, 0, sizeof(iwe));
 	iwe.cmd = SIOCGIWFREQ;
-	iwe.u.freq.m = bss->pub.channel->center_freq;
+	iwe.u.freq.m = bss->pub.chandef.chan->center_freq;
 	iwe.u.freq.e = 6;
 	current_ev = iwe_stream_add_event(info, current_ev, end_buf, &iwe,
 					  IW_EV_FREQ_LEN);
diff --git a/net/wireless/sme.c b/net/wireless/sme.c
index ae7e2cb..112c024 100644
--- a/net/wireless/sme.c
+++ b/net/wireless/sme.c
@@ -139,6 +139,7 @@ static int cfg80211_conn_do_work(struct wireless_dev *wdev)
 	struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy);
 	struct cfg80211_connect_params *params;
 	struct cfg80211_assoc_request req = {};
+	struct cfg80211_chan_def chandef;
 	int err;
 
 	ASSERT_WDEV_LOCK(wdev);
@@ -157,8 +158,13 @@ static int cfg80211_conn_do_work(struct wireless_dev *wdev)
 	case CFG80211_CONN_AUTHENTICATE_NEXT:
 		BUG_ON(!rdev->ops->auth);
 		wdev->conn->state = CFG80211_CONN_AUTHENTICATING;
+		/* cfg80211_connect_params may hold an chandef in the future
+		 * to allow to connect to 5 or 10 MHz networks.
+		 */
+		cfg80211_chandef_create(&chandef, params->channel,
+					NL80211_CHAN_NO_HT);
 		return cfg80211_mlme_auth(rdev, wdev->netdev,
-					  params->channel, params->auth_type,
+					  &chandef, params->auth_type,
 					  params->bssid,
 					  params->ssid, params->ssid_len,
 					  NULL, 0,
@@ -242,6 +248,7 @@ void cfg80211_conn_work(struct work_struct *work)
 static struct cfg80211_bss *cfg80211_get_conn_bss(struct wireless_dev *wdev)
 {
 	struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy);
+	struct cfg80211_chan_def chandef;
 	struct cfg80211_bss *bss;
 	u16 capa = WLAN_CAPABILITY_ESS;
 
@@ -250,7 +257,9 @@ static struct cfg80211_bss *cfg80211_get_conn_bss(struct wireless_dev *wdev)
 	if (wdev->conn->params.privacy)
 		capa |= WLAN_CAPABILITY_PRIVACY;
 
-	bss = cfg80211_get_bss(wdev->wiphy, wdev->conn->params.channel,
+	cfg80211_chandef_create(&chandef, wdev->conn->params.channel,
+				NL80211_CHAN_NO_HT);
+	bss = cfg80211_get_bss(wdev->wiphy, &chandef,
 			       wdev->conn->params.bssid,
 			       wdev->conn->params.ssid,
 			       wdev->conn->params.ssid_len,
@@ -261,7 +270,7 @@ static struct cfg80211_bss *cfg80211_get_conn_bss(struct wireless_dev *wdev)
 
 	memcpy(wdev->conn->bssid, bss->bssid, ETH_ALEN);
 	wdev->conn->params.bssid = wdev->conn->bssid;
-	wdev->conn->params.channel = bss->channel;
+	wdev->conn->params.channel = bss->chandef.chan;
 	wdev->conn->state = CFG80211_CONN_AUTHENTICATE_NEXT;
 	schedule_work(&rdev->conn_work);
 
@@ -650,7 +659,7 @@ void __cfg80211_connect_result(struct net_device *dev, const u8 *bssid,
 	 * - country_ie + 2, the start of the country ie data, and
 	 * - and country_ie[1] which is the IE length
 	 */
-	regulatory_hint_11d(wdev->wiphy, bss->channel->band,
+	regulatory_hint_11d(wdev->wiphy, bss->chandef.chan->band,
 			    country_ie + 2, country_ie[1]);
 	kfree(country_ie);
 }
@@ -754,9 +763,11 @@ void cfg80211_roamed(struct net_device *dev,
 		     const u8 *resp_ie, size_t resp_ie_len, gfp_t gfp)
 {
 	struct wireless_dev *wdev = dev->ieee80211_ptr;
+	struct cfg80211_chan_def chandef;
 	struct cfg80211_bss *bss;
 
-	bss = cfg80211_get_bss(wdev->wiphy, channel, bssid, wdev->ssid,
+	cfg80211_chandef_create(&chandef, channel, NL80211_CHAN_NO_HT);
+	bss = cfg80211_get_bss(wdev->wiphy, &chandef, bssid, wdev->ssid,
 			       wdev->ssid_len, WLAN_CAPABILITY_ESS,
 			       WLAN_CAPABILITY_ESS);
 	if (WARN_ON(!bss))
diff --git a/net/wireless/trace.h b/net/wireless/trace.h
index e1534baf..e06d313 100644
--- a/net/wireless/trace.h
+++ b/net/wireless/trace.h
@@ -1900,15 +1900,15 @@ TRACE_EVENT(cfg80211_send_rx_assoc,
 	TP_STRUCT__entry(
 		NETDEV_ENTRY
 		MAC_ENTRY(bssid)
-		CHAN_ENTRY
+		CHAN_DEF_ENTRY
 	),
 	TP_fast_assign(
 		NETDEV_ASSIGN;
 		MAC_ASSIGN(bssid, bss->bssid);
-		CHAN_ASSIGN(bss->channel);
+		CHAN_DEF_ASSIGN(&bss->chandef);
 	),
-	TP_printk(NETDEV_PR_FMT ", " MAC_PR_FMT ", " CHAN_PR_FMT,
-		  NETDEV_PR_ARG, MAC_PR_ARG(bssid), CHAN_PR_ARG)
+	TP_printk(NETDEV_PR_FMT ", " MAC_PR_FMT ", " CHAN_DEF_PR_FMT,
+		  NETDEV_PR_ARG, MAC_PR_ARG(bssid), CHAN_DEF_PR_ARG)
 );
 
 DECLARE_EVENT_CLASS(netdev_frame_event,
@@ -2365,13 +2365,13 @@ DEFINE_EVENT(wiphy_only_evt, cfg80211_sched_scan_stopped,
 );
 
 TRACE_EVENT(cfg80211_get_bss,
-	TP_PROTO(struct wiphy *wiphy, struct ieee80211_channel *channel,
+	TP_PROTO(struct wiphy *wiphy, struct cfg80211_chan_def *chandef,
 		 const u8 *bssid, const u8 *ssid, size_t ssid_len,
 		 u16 capa_mask, u16 capa_val),
-	TP_ARGS(wiphy, channel, bssid, ssid, ssid_len, capa_mask, capa_val),
+	TP_ARGS(wiphy, chandef, bssid, ssid, ssid_len, capa_mask, capa_val),
 	TP_STRUCT__entry(
 		WIPHY_ENTRY
-		CHAN_ENTRY
+		CHAN_DEF_ENTRY
 		MAC_ENTRY(bssid)
 		__dynamic_array(u8, ssid, ssid_len)
 		__field(u16, capa_mask)
@@ -2379,38 +2379,39 @@ TRACE_EVENT(cfg80211_get_bss,
 	),
 	TP_fast_assign(
 		WIPHY_ASSIGN;
-		CHAN_ASSIGN(channel);
+		CHAN_DEF_ASSIGN(chandef);
 		MAC_ASSIGN(bssid, bssid);
 		memcpy(__get_dynamic_array(ssid), ssid, ssid_len);
 		__entry->capa_mask = capa_mask;
 		__entry->capa_val = capa_val;
 	),
-	TP_printk(WIPHY_PR_FMT ", " CHAN_PR_FMT ", " MAC_PR_FMT ", buf: %#.2x, "
-		  "capa_mask: %d, capa_val: %u", WIPHY_PR_ARG, CHAN_PR_ARG,
-		  MAC_PR_ARG(bssid), ((u8 *)__get_dynamic_array(ssid))[0],
+	TP_printk(WIPHY_PR_FMT ", " CHAN_DEF_PR_FMT ", " MAC_PR_FMT
+		  ", buf: %#.2x, capa_mask: %d, capa_val: %u", WIPHY_PR_ARG,
+		  CHAN_DEF_PR_ARG, MAC_PR_ARG(bssid),
+		  ((u8 *)__get_dynamic_array(ssid))[0],
 		  __entry->capa_mask, __entry->capa_val)
 );
 
 TRACE_EVENT(cfg80211_inform_bss_frame,
-	TP_PROTO(struct wiphy *wiphy, struct ieee80211_channel *channel,
+	TP_PROTO(struct wiphy *wiphy, struct cfg80211_chan_def *chandef,
 		 struct ieee80211_mgmt *mgmt, size_t len,
 		 s32 signal),
-	TP_ARGS(wiphy, channel, mgmt, len, signal),
+	TP_ARGS(wiphy, chandef, mgmt, len, signal),
 	TP_STRUCT__entry(
 		WIPHY_ENTRY
-		CHAN_ENTRY
+		CHAN_DEF_ENTRY
 		__dynamic_array(u8, mgmt, len)
 		__field(s32, signal)
 	),
 	TP_fast_assign(
 		WIPHY_ASSIGN;
-		CHAN_ASSIGN(channel);
+		CHAN_DEF_ASSIGN(chandef);
 		if (mgmt)
 			memcpy(__get_dynamic_array(mgmt), mgmt, len);
 		__entry->signal = signal;
 	),
-	TP_printk(WIPHY_PR_FMT ", " CHAN_PR_FMT "signal: %d",
-		  WIPHY_PR_ARG, CHAN_PR_ARG, __entry->signal)
+	TP_printk(WIPHY_PR_FMT ", " CHAN_DEF_PR_FMT "signal: %d",
+		  WIPHY_PR_ARG, CHAN_DEF_PR_ARG, __entry->signal)
 );
 
 DECLARE_EVENT_CLASS(cfg80211_bss_evt,
@@ -2418,13 +2419,14 @@ DECLARE_EVENT_CLASS(cfg80211_bss_evt,
 	TP_ARGS(pub),
 	TP_STRUCT__entry(
 		MAC_ENTRY(bssid)
-		CHAN_ENTRY
+		CHAN_DEF_ENTRY
 	),
 	TP_fast_assign(
 		MAC_ASSIGN(bssid, pub->bssid);
-		CHAN_ASSIGN(pub->channel);
+		CHAN_DEF_ASSIGN(&pub->chandef);
 	),
-	TP_printk(MAC_PR_FMT ", " CHAN_PR_FMT, MAC_PR_ARG(bssid), CHAN_PR_ARG)
+	TP_printk(MAC_PR_FMT ", " CHAN_DEF_PR_FMT, MAC_PR_ARG(bssid),
+		  CHAN_DEF_PR_ARG)
 );
 
 DEFINE_EVENT(cfg80211_bss_evt, cfg80211_return_bss,
diff --git a/net/wireless/wext-sme.c b/net/wireless/wext-sme.c
index 14c9a25..bca1c26 100644
--- a/net/wireless/wext-sme.c
+++ b/net/wireless/wext-sme.c
@@ -149,7 +149,7 @@ int cfg80211_mgd_wext_giwfreq(struct net_device *dev,
 
 	wdev_lock(wdev);
 	if (wdev->current_bss)
-		chan = wdev->current_bss->pub.channel;
+		chan = wdev->current_bss->pub.chandef.chan;
 	else if (wdev->wext.connect.channel)
 		chan = wdev->wext.connect.channel;
 	wdev_unlock(wdev);
-- 
1.7.10.4


^ permalink raw reply related

* Re: [PATCH 2/2] wil6210: add HW write-back option in TX descriptor
From: Vladimir Kondratiev @ 2013-06-20 14:00 UTC (permalink / raw)
  To: Kirshenbaum Erez; +Cc: linux-wireless
In-Reply-To: <1371732340-4149-1-git-send-email-erezk@wilocity.com>

On Thursday, June 20, 2013 03:45:40 PM Kirshenbaum Erez wrote:
> Map BIT 9 in TX DMA DWARD 0 as HW write back option.
> We must turn on this option in the last TX descriptor,
> this is required for old HW compatability.
> This option indicate to HW that WB is required for this descriptor.
> 
> Signed-off-by: Kirshenbaum Erez <erezk@wilocity.com>

Here is my
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>

Thanks for this.

^ permalink raw reply

* Re: [PATCH 1/2] wil6210: set vring index for all descriptors
From: Vladimir Kondratiev @ 2013-06-20 13:55 UTC (permalink / raw)
  To: Kirshenbaum Erez; +Cc: linux-wireless
In-Reply-To: <1371732325-4112-1-git-send-email-erezk@wilocity.com>

On Thursday, June 20, 2013 03:45:25 PM Kirshenbaum Erez wrote:
> The vring index (MAC queue id) must be set in all TX descriptors
> otherwise HW will fail to release descriptors for a specific vring  
> (disconnect or vring switch flows).
> This is normally occurs when fragmentation required, if vring index 
> will not be the same for all SKB descriptors HW will fail to flush this 
> MAC queue.
> 
> Signed-off-by: Kirshenbaum Erez <erezk@wilocity.com>
> ---
>  drivers/net/wireless/ath/wil6210/txrx.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/net/wireless/ath/wil6210/txrx.c b/drivers/net/wireless/ath/wil6210/txrx.c
> index e1c492b..b79ba10 100644
> --- a/drivers/net/wireless/ath/wil6210/txrx.c
> +++ b/drivers/net/wireless/ath/wil6210/txrx.c
> @@ -621,7 +621,8 @@ static struct vring *wil_find_tx_vring(struct wil6210_priv *wil,
>  	return NULL;
>  }
>  
> -static int wil_tx_desc_map(struct vring_tx_desc *d, dma_addr_t pa, u32 len)
> +static int wil_tx_desc_map(struct vring_tx_desc *d, dma_addr_t pa, u32 len,
> +			   int vring_index)
>  {
>  	wil_desc_addr_set(&d->dma.addr, pa);
>  	d->dma.ip_length = 0;
> @@ -631,6 +632,7 @@ static int wil_tx_desc_map(struct vring_tx_desc *d, dma_addr_t pa, u32 len)
>  	d->dma.status = 0; /* BIT(0) should be 0 for HW_OWNED */
>  	d->dma.length = cpu_to_le16((u16)len);
>  	d->dma.d0 = 0;
Then, remove line above
> +	d->dma.d0 = (vring_index << DMA_CFG_DESC_TX_0_QID_POS);
>  	d->mac.d[0] = 0;
>  	d->mac.d[1] = 0;
>  	d->mac.d[2] = 0;
<skip>

The rest looks fine

Thanks, Vladimir

^ 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