···538538static void bcma_core_pci_fixup_addresses(struct pci_dev *dev)539539{540540 struct resource *res;541541- int pos;541541+ int pos, err;542542543543 if (dev->bus->ops->read != bcma_core_pci_hostmode_read_config) {544544 /* This is not a device on the PCI-core bridge. */···551551552552 for (pos = 0; pos < 6; pos++) {553553 res = &dev->resource[pos];554554- if (res->flags & (IORESOURCE_IO | IORESOURCE_MEM))555555- pci_assign_resource(dev, pos);554554+ if (res->flags & (IORESOURCE_IO | IORESOURCE_MEM)) {555555+ err = pci_assign_resource(dev, pos);556556+ if (err)557557+ pr_err("PCI: Problem fixing up the addresses on %s\n",558558+ pci_name(dev));559559+ }556560 }557561}558562DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, bcma_core_pci_fixup_addresses);
+8
drivers/bcma/main.c
···165165 }166166#endif167167168168+ if (bus->hosttype == BCMA_HOSTTYPE_SOC) {169169+ err = bcma_chipco_watchdog_register(&bus->drv_cc);170170+ if (err)171171+ bcma_err(bus, "Error registering watchdog driver\n");172172+ }173173+168174 return 0;169175}170176···183177 if (core->dev_registered)184178 device_unregister(&core->dev);185179 }180180+ if (bus->hosttype == BCMA_HOSTTYPE_SOC)181181+ platform_device_unregister(bus->drv_cc.watchdog);186182}187183188184int __devinit bcma_bus_register(struct bcma_bus *bus)
···11config AR552322 tristate "Atheros AR5523 wireless driver support"33 depends on MAC80211 && USB44+ select ATH_COMMON45 select FW_LOADER56 ---help---67 This module add support for AR5523 based USB dongles such as D-Link
···312312 }313313314314 bf = list_first_entry(&sc->tx.txbuf, struct ath_buf, list);315315- bf->bf_next = NULL;316315 list_del(&bf->list);317316318317 spin_unlock_bh(&sc->tx.txbuflock);···12621263 int tidno;1263126412641265 for (tidno = 0, tid = &an->tid[tidno];12651265- tidno < WME_NUM_TID; tidno++, tid++) {12661266+ tidno < IEEE80211_NUM_TIDS; tidno++, tid++) {1266126712671268 if (!tid->sched)12681269 continue;···12961297 int tidno;1297129812981299 for (tidno = 0, tid = &an->tid[tidno];12991299- tidno < WME_NUM_TID; tidno++, tid++) {13001300+ tidno < IEEE80211_NUM_TIDS; tidno++, tid++) {1300130113011302 ac = tid->ac;13021303 txq = ac->txq;···24472448 int tidno, acno;2448244924492450 for (tidno = 0, tid = &an->tid[tidno];24502450- tidno < WME_NUM_TID;24512451+ tidno < IEEE80211_NUM_TIDS;24512452 tidno++, tid++) {24522453 tid->an = an;24532454 tid->tidno = tidno;···24802481 int tidno;2481248224822483 for (tidno = 0, tid = &an->tid[tidno];24832483- tidno < WME_NUM_TID; tidno++, tid++) {24842484+ tidno < IEEE80211_NUM_TIDS; tidno++, tid++) {2484248524852486 ac = tid->ac;24862487 txq = ac->txq;
+1
drivers/net/wireless/ath/carl9170/Kconfig
···11config CARL917022 tristate "Linux Community AR9170 802.11n USB support"33 depends on USB && MAC80211 && EXPERIMENTAL44+ select ATH_COMMON45 select FW_LOADER56 select CRC3267 help
+2
drivers/net/wireless/ath/carl9170/rx.c
···814814815815 if (phy)816816 carl9170_rx_phy_status(ar, phy, &status);817817+ else818818+ status.flag |= RX_FLAG_NO_SIGNAL_VAL;817819818820 if (carl9170_handle_mpdu(ar, buf, mpdu_len, &status))819821 goto drop;
+7
drivers/net/wireless/ath/carl9170/tx.c
···14851485 }1486148614871487 if (info->flags & IEEE80211_TX_CTL_AMPDU) {14881488+ /* to static code analyzers and reviewers:14891489+ * mac80211 guarantees that a valid "sta"14901490+ * reference is present, if a frame is to14911491+ * be part of an ampdu. Hence any extra14921492+ * sta == NULL checks are redundant in this14931493+ * special case.14941494+ */14881495 run = carl9170_tx_ampdu_queue(ar, sta, skb);14891496 if (run)14901497 carl9170_tx_ampdu(ar);
···128128129129/* dongle configuration */130130struct brcmf_cfg80211_conf {131131- u32 mode; /* adhoc , infrastructure or ap */132131 u32 frag_threshold;133132 u32 rts_threshold;134133 u32 retry_short;···358359 * @active_scan: current scan mode.359360 * @sched_escan: e-scan for scheduled scan support running.360361 * @ibss_starter: indicates this sta is ibss starter.361361- * @link_up: link/connection up flag.362362 * @pwr_save: indicate whether dongle to support power save mode.363363 * @dongle_up: indicate whether dongle up or not.364364 * @roam_on: on/off switch for dongle self-roaming.···389391 bool active_scan;390392 bool sched_escan;391393 bool ibss_starter;392392- bool link_up;393394 bool pwr_save;394395 bool dongle_up;395396 bool roam_on;
+112
drivers/net/wireless/brcm80211/brcmsmac/debug.c
···11+/*22+ * Copyright (c) 2012 Broadcom Corporation33+ * Copyright (c) 2012 Canonical Ltd.44+ *55+ * Permission to use, copy, modify, and/or distribute this software for any66+ * purpose with or without fee is hereby granted, provided that the above77+ * copyright notice and this permission notice appear in all copies.88+ *99+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES1010+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF1111+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY1212+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES1313+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION1414+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN1515+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.1616+ */1717+#include <linux/debugfs.h>1818+#include <linux/if_ether.h>1919+#include <linux/if.h>120#include <linux/net.h>2121+#include <linux/netdevice.h>2222+#include <linux/ieee80211.h>2323+#include <linux/module.h>2424+#include <net/mac80211.h>2525+2626+#include <defs.h>2727+#include <brcmu_wifi.h>2828+#include <brcmu_utils.h>229#include "types.h"3030+#include "main.h"331#include "debug.h"432#include "brcms_trace_events.h"3333+3434+static struct dentry *root_folder;3535+3636+void brcms_debugfs_init(void)3737+{3838+ root_folder = debugfs_create_dir(KBUILD_MODNAME, NULL);3939+ if (IS_ERR(root_folder))4040+ root_folder = NULL;4141+}4242+4343+void brcms_debugfs_exit(void)4444+{4545+ if (!root_folder)4646+ return;4747+4848+ debugfs_remove_recursive(root_folder);4949+ root_folder = NULL;5050+}5151+5252+int brcms_debugfs_attach(struct brcms_pub *drvr)5353+{5454+ if (!root_folder)5555+ return -ENODEV;5656+5757+ drvr->dbgfs_dir = debugfs_create_dir(5858+ dev_name(&drvr->wlc->hw->d11core->dev), root_folder);5959+ return PTR_RET(drvr->dbgfs_dir);6060+}6161+6262+void brcms_debugfs_detach(struct brcms_pub *drvr)6363+{6464+ if (!IS_ERR_OR_NULL(drvr->dbgfs_dir))6565+ debugfs_remove_recursive(drvr->dbgfs_dir);6666+}6767+6868+struct dentry *brcms_debugfs_get_devdir(struct brcms_pub *drvr)6969+{7070+ return drvr->dbgfs_dir;7171+}7272+7373+static7474+ssize_t brcms_debugfs_hardware_read(struct file *f, char __user *data,7575+ size_t count, loff_t *ppos)7676+{7777+ char buf[128];7878+ int res;7979+ struct brcms_pub *drvr = f->private_data;8080+8181+ /* only allow read from start */8282+ if (*ppos > 0)8383+ return 0;8484+8585+ res = scnprintf(buf, sizeof(buf),8686+ "board vendor: %x\n"8787+ "board type: %x\n"8888+ "board revision: %x\n"8989+ "board flags: %x\n"9090+ "board flags2: %x\n"9191+ "firmware revision: %x\n",9292+ drvr->wlc->hw->d11core->bus->boardinfo.vendor,9393+ drvr->wlc->hw->d11core->bus->boardinfo.type,9494+ drvr->wlc->hw->boardrev,9595+ drvr->wlc->hw->boardflags,9696+ drvr->wlc->hw->boardflags2,9797+ drvr->wlc->ucode_rev9898+ );9999+100100+ return simple_read_from_buffer(data, count, ppos, buf, res);101101+}102102+103103+static const struct file_operations brcms_debugfs_hardware_ops = {104104+ .owner = THIS_MODULE,105105+ .open = simple_open,106106+ .read = brcms_debugfs_hardware_read107107+};108108+109109+void brcms_debugfs_create_files(struct brcms_pub *drvr)110110+{111111+ struct dentry *dentry = drvr->dbgfs_dir;112112+113113+ if (!IS_ERR_OR_NULL(dentry))114114+ debugfs_create_file("hardware", S_IRUGO, dentry,115115+ drvr, &brcms_debugfs_hardware_ops);116116+}51176118#define __brcms_fn(fn) \7119void __brcms_ ##fn(struct device *dev, const char *fmt, ...) \
+23
drivers/net/wireless/brcm80211/brcmsmac/debug.h
···11+/*22+ * Copyright (c) 2012 Broadcom Corporation33+ *44+ * Permission to use, copy, modify, and/or distribute this software for any55+ * purpose with or without fee is hereby granted, provided that the above66+ * copyright notice and this permission notice appear in all copies.77+ *88+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES99+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF1010+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY1111+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES1212+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION1313+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN1414+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.1515+ */116#ifndef _BRCMS_DEBUG_H_217#define _BRCMS_DEBUG_H_318···6348#define brcms_dbg_int(core, f, a...) brcms_dbg(core, BRCM_DL_INT, f, ##a)6449#define brcms_dbg_dma(core, f, a...) brcms_dbg(core, BRCM_DL_DMA, f, ##a)6550#define brcms_dbg_ht(core, f, a...) brcms_dbg(core, BRCM_DL_HT, f, ##a)5151+5252+struct brcms_pub;5353+void brcms_debugfs_init(void);5454+void brcms_debugfs_exit(void);5555+int brcms_debugfs_attach(struct brcms_pub *drvr);5656+void brcms_debugfs_detach(struct brcms_pub *drvr);5757+struct dentry *brcms_debugfs_get_devdir(struct brcms_pub *drvr);5858+void brcms_debugfs_create_files(struct brcms_pub *drvr);66596760#endif /* _BRCMS_DEBUG_H_ */
···10121012 * As a consequence, it's not as complicated as it sounds, just add10131013 * any lower rates to the ACK rate bitmap.10141014 */10151015- if (IWL_RATE_11M_INDEX < lowest_present_ofdm)10161016- ofdm |= IWL_RATE_11M_MASK >> IWL_FIRST_CCK_RATE;10171017- if (IWL_RATE_5M_INDEX < lowest_present_ofdm)10181018- ofdm |= IWL_RATE_5M_MASK >> IWL_FIRST_CCK_RATE;10191019- if (IWL_RATE_2M_INDEX < lowest_present_ofdm)10201020- ofdm |= IWL_RATE_2M_MASK >> IWL_FIRST_CCK_RATE;10151015+ if (IWL_RATE_11M_INDEX < lowest_present_cck)10161016+ cck |= IWL_RATE_11M_MASK >> IWL_FIRST_CCK_RATE;10171017+ if (IWL_RATE_5M_INDEX < lowest_present_cck)10181018+ cck |= IWL_RATE_5M_MASK >> IWL_FIRST_CCK_RATE;10191019+ if (IWL_RATE_2M_INDEX < lowest_present_cck)10201020+ cck |= IWL_RATE_2M_MASK >> IWL_FIRST_CCK_RATE;10211021 /* 1M already there or needed so always add */10221022 cck |= IWL_RATE_1M_MASK >> IWL_FIRST_CCK_RATE;10231023
···11241124 struct ieee80211_iface_limit *if_limit;11251125 struct ieee80211_iface_combination *if_combination;1126112611271127+ if (rt2x00dev->ops->max_ap_intf < 2)11281128+ return;11291129+11271130 /*11281131 * Build up AP interface limits structure.11291132 */···11841181 * structure ieee80211_vif.11851182 */11861183 rt2x00dev->hw->vif_data_size = sizeof(struct rt2x00_intf);11841184+11851185+ /*11861186+ * rt2x00 devices can only use the last n bits of the MAC address11871187+ * for virtual interfaces.11881188+ */11891189+ rt2x00dev->hw->wiphy->addr_mask[ETH_ALEN - 1] =11901190+ (rt2x00dev->ops->max_ap_intf - 1);1187119111881192 /*11891193 * Determine which operating modes are supported, all modes
···522522 FW_CMD_IQK_ENABLE = 30,523523};524524525525-/*526526- * Driver info contain PHY status525525+/* Driver info contain PHY status527526 * and other variabel size info528527 * PHY Status content as below529528 */
+10-10
drivers/net/wireless/rtlwifi/rtl8192se/dm.c
···465465 digtable->cur_igvalue =466466 digtable->rx_gain_range_min;467467 else468468- digtable->cur_igvalue = digtable->rssi_val + 10 -469469- digtable->back_val;468468+ digtable->cur_igvalue = digtable->rssi_val + 10469469+ - digtable->back_val;470470471471 if (falsealm_cnt->cnt_all > 10000)472472 digtable->cur_igvalue =···518518static void _rtl92s_dm_ctrl_initgain_bytwoport(struct ieee80211_hw *hw)519519{520520 struct rtl_priv *rtlpriv = rtl_priv(hw);521521- struct dig_t *digtable = &rtlpriv->dm_digtable;521521+ struct dig_t *dig = &rtlpriv->dm_digtable;522522523523 if (rtlpriv->mac80211.act_scanning)524524 return;···526526 /* Decide the current status and if modify initial gain or not */527527 if (rtlpriv->mac80211.link_state >= MAC80211_LINKED ||528528 rtlpriv->mac80211.opmode == NL80211_IFTYPE_ADHOC)529529- digtable->cur_sta_cstate = DIG_STA_CONNECT;529529+ dig->cur_sta_cstate = DIG_STA_CONNECT;530530 else531531- digtable->cur_sta_cstate = DIG_STA_DISCONNECT;531531+ dig->cur_sta_cstate = DIG_STA_DISCONNECT;532532533533- digtable->rssi_val = rtlpriv->dm.undec_sm_pwdb;533533+ dig->rssi_val = rtlpriv->dm.undec_sm_pwdb;534534535535 /* Change dig mode to rssi */536536- if (digtable->cur_sta_cstate != DIG_STA_DISCONNECT) {537537- if (digtable->dig_twoport_algorithm ==536536+ if (dig->cur_sta_cstate != DIG_STA_DISCONNECT) {537537+ if (dig->dig_twoport_algorithm ==538538 DIG_TWO_PORT_ALGO_FALSE_ALARM) {539539- digtable->dig_twoport_algorithm = DIG_TWO_PORT_ALGO_RSSI;539539+ dig->dig_twoport_algorithm = DIG_TWO_PORT_ALGO_RSSI;540540 rtl92s_phy_set_fw_cmd(hw, FW_CMD_DIG_MODE_SS);541541 }542542 }···544544 _rtl92s_dm_false_alarm_counter_statistics(hw);545545 _rtl92s_dm_initial_gain_sta_beforeconnect(hw);546546547547- digtable->pre_sta_cstate = digtable->cur_sta_cstate;547547+ dig->pre_sta_cstate = dig->cur_sta_cstate;548548}549549550550static void _rtl92s_dm_ctrl_initgain_byrssi(struct ieee80211_hw *hw)
+2-1
drivers/net/wireless/rtlwifi/rtl8192se/hw.c
···10891089 return err;10901090}1091109110921092-void rtl92se_set_mac_addr(struct rtl_io *io, const u8 * addr)10921092+void rtl92se_set_mac_addr(struct rtl_io *io, const u8 *addr)10931093{10941094+ /* This is a stub. */10941095}1095109610961097void rtl92se_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid)
···178178{179179 struct ssb_bus *bus = mcore->dev->bus;180180181181- if (bus->extif.dev)181181+ if (ssb_extif_available(&bus->extif))182182 mcore->nr_serial_ports = ssb_extif_serial_init(&bus->extif, mcore->serial_ports);183183- else if (bus->chipco.dev)183183+ else if (ssb_chipco_available(&bus->chipco))184184 mcore->nr_serial_ports = ssb_chipco_serial_init(&bus->chipco, mcore->serial_ports);185185 else186186 mcore->nr_serial_ports = 0;···191191 struct ssb_bus *bus = mcore->dev->bus;192192193193 /* When there is no chipcommon on the bus there is 4MB flash */194194- if (!bus->chipco.dev) {194194+ if (!ssb_chipco_available(&bus->chipco)) {195195 mcore->pflash.present = true;196196 mcore->pflash.buswidth = 2;197197 mcore->pflash.window = SSB_FLASH1;···227227 if (bus->chipco.capabilities & SSB_CHIPCO_CAP_PMU)228228 return ssb_pmu_get_cpu_clock(&bus->chipco);229229230230- if (bus->extif.dev) {230230+ if (ssb_extif_available(&bus->extif)) {231231 ssb_extif_get_clockcontrol(&bus->extif, &pll_type, &n, &m);232232- } else if (bus->chipco.dev) {232232+ } else if (ssb_chipco_available(&bus->chipco)) {233233 ssb_chipco_get_clockcpu(&bus->chipco, &pll_type, &n, &m);234234 } else235235 return 0;···265265 hz = 100000000;266266 ns = 1000000000 / hz;267267268268- if (bus->extif.dev)268268+ if (ssb_extif_available(&bus->extif))269269 ssb_extif_timing_init(&bus->extif, ns);270270- else if (bus->chipco.dev)270270+ else if (ssb_chipco_available(&bus->chipco))271271 ssb_chipco_timing_init(&bus->chipco, ns);272272273273 /* Assign IRQs to all cores on the bus, start with irq line 2, because serial usually takes 1 */
···5858 * structures here describe these capabilities in detail.5959 */60606161+struct wiphy;6262+6163/*6264 * wireless hardware capability structures6365 */···390388 const struct cfg80211_chan_def *chandef2);391389392390/**391391+ * cfg80211_chandef_valid - check if a channel definition is valid392392+ * @chandef: the channel definition to check393393+ */394394+bool cfg80211_chandef_valid(const struct cfg80211_chan_def *chandef);395395+396396+/**397397+ * cfg80211_chandef_usable - check if secondary channels can be used398398+ * @wiphy: the wiphy to validate against399399+ * @chandef: the channel definition to check400400+ * @prohibited_flags: the regulatory chanenl flags that must not be set401401+ */402402+bool cfg80211_chandef_usable(struct wiphy *wiphy,403403+ const struct cfg80211_chan_def *chandef,404404+ u32 prohibited_flags);405405+406406+/**393407 * enum survey_info_flags - survey information flags394408 *395409 * @SURVEY_INFO_NOISE_DBM: noise (in dBm) was filled in···538520 * @privacy: the BSS uses privacy539521 * @auth_type: Authentication type (algorithm)540522 * @inactivity_timeout: time in seconds to determine station's inactivity.523523+ * @p2p_ctwindow: P2P CT Window524524+ * @p2p_opp_ps: P2P opportunistic PS541525 */542526struct cfg80211_ap_settings {543527 struct cfg80211_chan_def chandef;···554534 bool privacy;555535 enum nl80211_auth_type auth_type;556536 int inactivity_timeout;537537+ u8 p2p_ctwindow;538538+ bool p2p_opp_ps;557539};558540559541/**···917895 * @ap_isolate: do not forward packets between connected stations918896 * @ht_opmode: HT Operation mode919897 * (u16 = opmode, -1 = do not change)898898+ * @p2p_ctwindow: P2P CT Window (-1 = no change)899899+ * @p2p_opp_ps: P2P opportunistic PS (-1 = no change)920900 */921901struct bss_parameters {922902 int use_cts_prot;···928904 u8 basic_rates_len;929905 int ap_isolate;930906 int ht_opmode;907907+ s8 p2p_ctwindow, p2p_opp_ps;931908};932909933910/**···10701045 u8 aifs;10711046};1072104710731073-/* from net/wireless.h */10741074-struct wiphy;10751075-10761048/**10771049 * DOC: Scanning and BSS list handling10781050 *···12061184};1207118512081186/**11871187+ * struct cfg80211_bss_ie_data - BSS entry IE data11881188+ * @rcu_head: internal use, for freeing11891189+ * @len: length of the IEs11901190+ * @data: IE data11911191+ */11921192+struct cfg80211_bss_ies {11931193+ struct rcu_head rcu_head;11941194+ int len;11951195+ u8 data[];11961196+};11971197+11981198+/**12091199 * struct cfg80211_bss - BSS description12101200 *12111201 * This structure describes a BSS (which may also be a mesh network)···12281194 * @tsf: timestamp of last received update12291195 * @beacon_interval: the beacon interval as from the frame12301196 * @capability: the capability field in host byte order12311231- * @information_elements: the information elements (Note that there11971197+ * @ies: the information elements (Note that there12321198 * is no guarantee that these are well-formed!); this is a pointer to12331199 * either the beacon_ies or proberesp_ies depending on whether Probe12341200 * Response frame has been received12351235- * @len_information_elements: total length of the information elements12361201 * @beacon_ies: the information elements from the last Beacon frame12371237- * @len_beacon_ies: total length of the beacon_ies12381202 * @proberesp_ies: the information elements from the last Probe Response frame12391239- * @len_proberesp_ies: total length of the proberesp_ies12401203 * @signal: signal strength value (type depends on the wiphy's signal_type)12411204 * @free_priv: function pointer to free private data12421205 * @priv: private area for driver use, has at least wiphy->bss_priv_size bytes12431206 */12441207struct cfg80211_bss {12081208+ u64 tsf;12091209+12451210 struct ieee80211_channel *channel;1246121112471247- u8 bssid[ETH_ALEN];12481248- u64 tsf;12491249- u16 beacon_interval;12501250- u16 capability;12511251- u8 *information_elements;12521252- size_t len_information_elements;12531253- u8 *beacon_ies;12541254- size_t len_beacon_ies;12551255- u8 *proberesp_ies;12561256- size_t len_proberesp_ies;12121212+ const struct cfg80211_bss_ies __rcu *ies;12131213+ const struct cfg80211_bss_ies __rcu *beacon_ies;12141214+ const struct cfg80211_bss_ies __rcu *proberesp_ies;12151215+12161216+ void (*free_priv)(struct cfg80211_bss *bss);1257121712581218 s32 signal;1259121912601260- void (*free_priv)(struct cfg80211_bss *bss);12201220+ u16 beacon_interval;12211221+ u16 capability;12221222+12231223+ u8 bssid[ETH_ALEN];12241224+12611225 u8 priv[0] __attribute__((__aligned__(sizeof(void *))));12621226};12631227···12631231 * ieee80211_bss_get_ie - find IE with given ID12641232 * @bss: the bss to search12651233 * @ie: the IE ID12341234+ *12351235+ * Note that the return value is an RCU-protected pointer, so12361236+ * rcu_read_lock() must be held when calling this function.12661237 * Returns %NULL if not found.12671238 */12681239const u8 *ieee80211_bss_get_ie(struct cfg80211_bss *bss, u8 ie);
+24
include/net/ieee80211_radiotap.h
···186186 * IEEE80211_RADIOTAP_AMPDU_STATUS u32, u16, u8, u8 unitless187187 *188188 * Contains the AMPDU information for the subframe.189189+ *190190+ * IEEE80211_RADIOTAP_VHT u16, u8, u8, u8[4], u8, u8, u16191191+ *192192+ * Contains VHT information about this frame.189193 */190194enum ieee80211_radiotap_type {191195 IEEE80211_RADIOTAP_TSFT = 0,···213209214210 IEEE80211_RADIOTAP_MCS = 19,215211 IEEE80211_RADIOTAP_AMPDU_STATUS = 20,212212+ IEEE80211_RADIOTAP_VHT = 21,216213217214 /* valid in every it_present bitmap, even vendor namespaces */218215 IEEE80211_RADIOTAP_RADIOTAP_NAMESPACE = 29,···286281#define IEEE80211_RADIOTAP_AMPDU_IS_LAST 0x0008287282#define IEEE80211_RADIOTAP_AMPDU_DELIM_CRC_ERR 0x0010288283#define IEEE80211_RADIOTAP_AMPDU_DELIM_CRC_KNOWN 0x0020284284+285285+/* For IEEE80211_RADIOTAP_VHT */286286+#define IEEE80211_RADIOTAP_VHT_KNOWN_STBC 0x0001287287+#define IEEE80211_RADIOTAP_VHT_KNOWN_TXOP_PS_NA 0x0002288288+#define IEEE80211_RADIOTAP_VHT_KNOWN_GI 0x0004289289+#define IEEE80211_RADIOTAP_VHT_KNOWN_SGI_NSYM_DIS 0x0008290290+#define IEEE80211_RADIOTAP_VHT_KNOWN_LDPC_EXTRA_OFDM_SYM 0x0010291291+#define IEEE80211_RADIOTAP_VHT_KNOWN_BEAMFORMED 0x0020292292+#define IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH 0x0040293293+#define IEEE80211_RADIOTAP_VHT_KNOWN_GROUP_ID 0x0080294294+#define IEEE80211_RADIOTAP_VHT_KNOWN_PARTIAL_AID 0x0100295295+296296+#define IEEE80211_RADIOTAP_VHT_FLAG_STBC 0x01297297+#define IEEE80211_RADIOTAP_VHT_FLAG_TXOP_PS_NA 0x02298298+#define IEEE80211_RADIOTAP_VHT_FLAG_SGI 0x04299299+#define IEEE80211_RADIOTAP_VHT_FLAG_SGI_NSYM_M10_9 0x08300300+#define IEEE80211_RADIOTAP_VHT_FLAG_LDPC_EXTRA_OFDM_SYM 0x10301301+#define IEEE80211_RADIOTAP_VHT_FLAG_BEAMFORMED 0x20302302+289303290304/* helpers */291305static inline int ieee80211_get_radiotap_len(unsigned char *data)
+8-4
include/net/mac80211.h
···164164 * active on the channel to receive MIMO transmissions165165 * @rx_chains_dynamic: The number of RX chains that must be enabled166166 * after RTS/CTS handshake to receive SMPS MIMO transmissions;167167- * this will always be >= @rx_chains_always.167167+ * this will always be >= @rx_chains_static.168168 * @drv_priv: data area for driver use, will always be aligned to169169 * sizeof(void *), size is determined in hw information.170170 */···14731473 * include _FMT. Use %IEEE80211_RADIOTAP_MCS_HAVE_* values, only14741474 * adding _BW is supported today.14751475 *14761476+ * @radiotap_vht_details: lists which VHT MCS information the HW reports,14771477+ * the default is _GI | _BANDWIDTH.14781478+ * Use the %IEEE80211_RADIOTAP_VHT_KNOWN_* values.14791479+ *14761480 * @netdev_features: netdev features to be set in each netdev created14771481 * from this HW. Note only HW checksum features are currently14781482 * compatible with mac80211. Other feature bits will be rejected.···15031499 u8 max_tx_aggregation_subframes;15041500 u8 offchannel_tx_hw_queue;15051501 u8 radiotap_mcs_details;15021502+ u16 radiotap_vht_details;15061503 netdev_features_t netdev_features;15071504};15081505···31443139 * @vif: &struct ieee80211_vif pointer from the add_interface callback.31453140 * @ssid: SSID buffer31463141 * @ssid_len: length of SSID31473147- * @ie: buffer containing all IEs except SSID for the template31483148- * @ie_len: length of the IE buffer31423142+ * @tailroom: tailroom to reserve at end of SKB for IEs31493143 *31503144 * Creates a Probe Request template which can, for example, be uploaded to31513145 * hardware.···31523148struct sk_buff *ieee80211_probereq_get(struct ieee80211_hw *hw,31533149 struct ieee80211_vif *vif,31543150 const u8 *ssid, size_t ssid_len,31553155- const u8 *ie, size_t ie_len);31513151+ size_t tailroom);3156315231573153/**31583154 * ieee80211_rts_get - RTS frame generation function
+16
include/uapi/linux/nl80211.h
···13031303 *13041304 * @NL80211_ATTR_SCAN_FLAGS: scan request control flags (u32)13051305 *13061306+ * @NL80211_ATTR_P2P_CTWINDOW: P2P GO Client Traffic Window (u8), used with13071307+ * the START_AP and SET_BSS commands13081308+ * @NL80211_ATTR_P2P_OPPPS: P2P GO opportunistic PS (u8), used with the13091309+ * START_AP and SET_BSS commands. This can have the values 0 or 1;13101310+ * if not given in START_AP 0 is assumed, if not given in SET_BSS13111311+ * no change is made.13121312+ *13061313 * @NL80211_ATTR_MAX: highest attribute number currently defined13071314 * @__NL80211_ATTR_AFTER_LAST: internal use13081315 */···15761569 NL80211_ATTR_CHANNEL_WIDTH,15771570 NL80211_ATTR_CENTER_FREQ1,15781571 NL80211_ATTR_CENTER_FREQ2,15721572+15731573+ NL80211_ATTR_P2P_CTWINDOW,15741574+ NL80211_ATTR_P2P_OPPPS,1579157515801576 /* add attributes here, update the policy in nl80211.c */15811577···31363126 * @NL80211_FEATURE_NEED_OBSS_SCAN: The driver expects userspace to perform31373127 * OBSS scans and generate 20/40 BSS coex reports. This flag is used only31383128 * for drivers implementing the CONNECT API, for AUTH/ASSOC it is implied.31293129+ * @NL80211_FEATURE_P2P_GO_CTWIN: P2P GO implementation supports CT Window31303130+ * setting31313131+ * @NL80211_FEATURE_P2P_GO_OPPPS: P2P GO implementation supports opportunistic31323132+ * powersave31393133 */31403134enum nl80211_feature_flags {31413135 NL80211_FEATURE_SK_TX_STATUS = 1 << 0,···31533139 NL80211_FEATURE_AP_SCAN = 1 << 8,31543140 NL80211_FEATURE_VIF_TXPOWER = 1 << 9,31553141 NL80211_FEATURE_NEED_OBSS_SCAN = 1 << 10,31423142+ NL80211_FEATURE_P2P_GO_CTWIN = 1 << 11,31433143+ NL80211_FEATURE_P2P_GO_OPPPS = 1 << 12,31563144};3157314531583146/**
+5
net/bluetooth/hci_core.c
···861861 /* Clear flags */862862 hdev->flags = 0;863863864864+ /* Controller radio is available but is currently powered down */865865+ hdev->amp_status = 0;866866+864867 memset(hdev->eir, 0, sizeof(hdev->eir));865868 memset(hdev->dev_class, 0, sizeof(hdev->dev_class));866869···1856185318571854 for (i = 0; i < NUM_REASSEMBLY; i++)18581855 kfree_skb(hdev->reassembly[i]);18561856+18571857+ cancel_work_sync(&hdev->power_on);1859185818601859 if (!test_bit(HCI_INIT, &hdev->flags) &&18611860 !test_bit(HCI_SETUP, &hdev->dev_flags)) {
···250250 * @rx_dropped: number of dropped MPDUs from this STA251251 * @last_signal: signal of last received frame from this STA252252 * @avg_signal: moving average of signal of received frames from this STA253253+ * @last_ack_signal: signal of last received Ack frame from this STA253254 * @last_seq_ctrl: last received seq/frag number from this STA (per RX queue)254255 * @tx_filtered_count: number of frames the hardware filtered for this STA255256 * @tx_retry_failed: number of frames that failed retry···330329 unsigned long rx_dropped;331330 int last_signal;332331 struct ewma avg_signal;332332+ int last_ack_signal;333333 /* Plus 1 for non-QoS frames */334334 __le16 last_seq_ctrl[IEEE80211_NUM_TIDS + 1];335335···553551 struct ieee80211_sub_if_data *sdata);554552void sta_set_rate_info_tx(struct sta_info *sta,555553 const struct ieee80211_tx_rate *rate,554554+ struct rate_info *rinfo);555555+void sta_set_rate_info_rx(struct sta_info *sta,556556 struct rate_info *rinfo);557557void ieee80211_sta_expire(struct ieee80211_sub_if_data *sdata,558558 unsigned long exp_time);