Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
#ifndef LINUX_BCM47XX_WDT_H_
|
||||
#define LINUX_BCM47XX_WDT_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
|
||||
struct bcm47xx_wdt {
|
||||
u32 (*timer_set)(struct bcm47xx_wdt *, u32);
|
||||
u32 (*timer_set_ms)(struct bcm47xx_wdt *, u32);
|
||||
u32 max_timer_ms;
|
||||
|
||||
void *driver_data;
|
||||
};
|
||||
|
||||
static inline void *bcm47xx_wdt_get_drvdata(struct bcm47xx_wdt *wdt)
|
||||
{
|
||||
return wdt->driver_data;
|
||||
}
|
||||
#endif /* LINUX_BCM47XX_WDT_H_ */
|
||||
@@ -1,6 +1,8 @@
|
||||
#ifndef LINUX_BCMA_DRIVER_CC_H_
|
||||
#define LINUX_BCMA_DRIVER_CC_H_
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
/** ChipCommon core registers. **/
|
||||
#define BCMA_CC_ID 0x0000
|
||||
#define BCMA_CC_ID_ID 0x0000FFFF
|
||||
@@ -570,6 +572,8 @@ struct bcma_drv_cc {
|
||||
int nr_serial_ports;
|
||||
struct bcma_serial_port serial_ports[4];
|
||||
#endif /* CONFIG_BCMA_DRIVER_MIPS */
|
||||
u32 ticks_per_ms;
|
||||
struct platform_device *watchdog;
|
||||
};
|
||||
|
||||
/* Register access */
|
||||
@@ -593,8 +597,7 @@ extern void bcma_chipco_resume(struct bcma_drv_cc *cc);
|
||||
|
||||
void bcma_chipco_bcm4331_ext_pa_lines_ctl(struct bcma_drv_cc *cc, bool enable);
|
||||
|
||||
extern void bcma_chipco_watchdog_timer_set(struct bcma_drv_cc *cc,
|
||||
u32 ticks);
|
||||
extern u32 bcma_chipco_watchdog_timer_set(struct bcma_drv_cc *cc, u32 ticks);
|
||||
|
||||
void bcma_chipco_irq_mask(struct bcma_drv_cc *cc, u32 mask, u32 value);
|
||||
|
||||
|
||||
@@ -1212,6 +1212,21 @@ struct ieee80211_vht_cap {
|
||||
struct ieee80211_vht_mcs_info supp_mcs;
|
||||
} __packed;
|
||||
|
||||
/**
|
||||
* enum ieee80211_vht_chanwidth - VHT channel width
|
||||
* @IEEE80211_VHT_CHANWIDTH_USE_HT: use the HT operation IE to
|
||||
* determine the channel width (20 or 40 MHz)
|
||||
* @IEEE80211_VHT_CHANWIDTH_80MHZ: 80 MHz bandwidth
|
||||
* @IEEE80211_VHT_CHANWIDTH_160MHZ: 160 MHz bandwidth
|
||||
* @IEEE80211_VHT_CHANWIDTH_80P80MHZ: 80+80 MHz bandwidth
|
||||
*/
|
||||
enum ieee80211_vht_chanwidth {
|
||||
IEEE80211_VHT_CHANWIDTH_USE_HT = 0,
|
||||
IEEE80211_VHT_CHANWIDTH_80MHZ = 1,
|
||||
IEEE80211_VHT_CHANWIDTH_160MHZ = 2,
|
||||
IEEE80211_VHT_CHANWIDTH_80P80MHZ = 3,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ieee80211_vht_operation - VHT operation IE
|
||||
*
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <linux/pci.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include <linux/ssb/ssb_regs.h>
|
||||
|
||||
@@ -432,6 +433,7 @@ struct ssb_bus {
|
||||
#ifdef CONFIG_SSB_EMBEDDED
|
||||
/* Lock for GPIO register access. */
|
||||
spinlock_t gpio_lock;
|
||||
struct platform_device *watchdog;
|
||||
#endif /* EMBEDDED */
|
||||
|
||||
/* Internal-only stuff follows. Do not touch. */
|
||||
|
||||
@@ -591,6 +591,8 @@ struct ssb_chipcommon {
|
||||
/* Fast Powerup Delay constant */
|
||||
u16 fast_pwrup_delay;
|
||||
struct ssb_chipcommon_pmu pmu;
|
||||
u32 ticks_per_ms;
|
||||
u32 max_timer_ms;
|
||||
};
|
||||
|
||||
static inline bool ssb_chipco_available(struct ssb_chipcommon *cc)
|
||||
@@ -630,8 +632,7 @@ enum ssb_clkmode {
|
||||
extern void ssb_chipco_set_clockmode(struct ssb_chipcommon *cc,
|
||||
enum ssb_clkmode mode);
|
||||
|
||||
extern void ssb_chipco_watchdog_timer_set(struct ssb_chipcommon *cc,
|
||||
u32 ticks);
|
||||
extern u32 ssb_chipco_watchdog_timer_set(struct ssb_chipcommon *cc, u32 ticks);
|
||||
|
||||
void ssb_chipco_irq_mask(struct ssb_chipcommon *cc, u32 mask, u32 value);
|
||||
|
||||
|
||||
@@ -152,6 +152,9 @@
|
||||
/* watchdog */
|
||||
#define SSB_EXTIF_WATCHDOG_CLK 48000000 /* Hz */
|
||||
|
||||
#define SSB_EXTIF_WATCHDOG_MAX_TIMER ((1 << 28) - 1)
|
||||
#define SSB_EXTIF_WATCHDOG_MAX_TIMER_MS (SSB_EXTIF_WATCHDOG_MAX_TIMER \
|
||||
/ (SSB_EXTIF_WATCHDOG_CLK / 1000))
|
||||
|
||||
|
||||
#ifdef CONFIG_SSB_DRIVER_EXTIF
|
||||
@@ -171,8 +174,7 @@ extern void ssb_extif_get_clockcontrol(struct ssb_extif *extif,
|
||||
extern void ssb_extif_timing_init(struct ssb_extif *extif,
|
||||
unsigned long ns);
|
||||
|
||||
extern void ssb_extif_watchdog_timer_set(struct ssb_extif *extif,
|
||||
u32 ticks);
|
||||
extern u32 ssb_extif_watchdog_timer_set(struct ssb_extif *extif, u32 ticks);
|
||||
|
||||
/* Extif GPIO pin access */
|
||||
u32 ssb_extif_gpio_in(struct ssb_extif *extif, u32 mask);
|
||||
@@ -205,10 +207,52 @@ void ssb_extif_get_clockcontrol(struct ssb_extif *extif,
|
||||
}
|
||||
|
||||
static inline
|
||||
void ssb_extif_watchdog_timer_set(struct ssb_extif *extif,
|
||||
u32 ticks)
|
||||
void ssb_extif_timing_init(struct ssb_extif *extif, unsigned long ns)
|
||||
{
|
||||
}
|
||||
|
||||
static inline
|
||||
u32 ssb_extif_watchdog_timer_set(struct ssb_extif *extif, u32 ticks)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline u32 ssb_extif_gpio_in(struct ssb_extif *extif, u32 mask)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline u32 ssb_extif_gpio_out(struct ssb_extif *extif, u32 mask,
|
||||
u32 value)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline u32 ssb_extif_gpio_outen(struct ssb_extif *extif, u32 mask,
|
||||
u32 value)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline u32 ssb_extif_gpio_polarity(struct ssb_extif *extif, u32 mask,
|
||||
u32 value)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline u32 ssb_extif_gpio_intmask(struct ssb_extif *extif, u32 mask,
|
||||
u32 value)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SSB_SERIAL
|
||||
static inline int ssb_extif_serial_init(struct ssb_extif *extif,
|
||||
struct ssb_serial_port *ports)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_SSB_SERIAL */
|
||||
|
||||
#endif /* CONFIG_SSB_DRIVER_EXTIF */
|
||||
#endif /* LINUX_SSB_EXTIFCORE_H_ */
|
||||
|
||||
@@ -376,7 +376,7 @@ extern int l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt);
|
||||
extern int l2cap_recv_acldata(struct hci_conn *hcon, struct sk_buff *skb,
|
||||
u16 flags);
|
||||
|
||||
extern int sco_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr);
|
||||
extern int sco_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 *flags);
|
||||
extern void sco_connect_cfm(struct hci_conn *hcon, __u8 status);
|
||||
extern void sco_disconn_cfm(struct hci_conn *hcon, __u8 reason);
|
||||
extern int sco_recv_scodata(struct hci_conn *hcon, struct sk_buff *skb);
|
||||
@@ -577,6 +577,7 @@ struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst);
|
||||
int hci_conn_del(struct hci_conn *conn);
|
||||
void hci_conn_hash_flush(struct hci_dev *hdev);
|
||||
void hci_conn_check_pending(struct hci_dev *hdev);
|
||||
void hci_conn_accept(struct hci_conn *conn, int mask);
|
||||
|
||||
struct hci_chan *hci_chan_create(struct hci_conn *conn);
|
||||
void hci_chan_del(struct hci_chan *chan);
|
||||
@@ -766,7 +767,7 @@ void hci_conn_del_sysfs(struct hci_conn *conn);
|
||||
#define lmp_sniffsubr_capable(dev) ((dev)->features[5] & LMP_SNIFF_SUBR)
|
||||
#define lmp_pause_enc_capable(dev) ((dev)->features[5] & LMP_PAUSE_ENC)
|
||||
#define lmp_ext_inq_capable(dev) ((dev)->features[6] & LMP_EXT_INQ)
|
||||
#define lmp_le_br_capable(dev) ((dev)->features[6] & LMP_SIMUL_LE_BR)
|
||||
#define lmp_le_br_capable(dev) !!((dev)->features[6] & LMP_SIMUL_LE_BR)
|
||||
#define lmp_ssp_capable(dev) ((dev)->features[6] & LMP_SIMPLE_PAIR)
|
||||
#define lmp_no_flush_capable(dev) ((dev)->features[6] & LMP_NO_FLUSH)
|
||||
#define lmp_lsto_capable(dev) ((dev)->features[7] & LMP_LSTO)
|
||||
@@ -775,12 +776,30 @@ void hci_conn_del_sysfs(struct hci_conn *conn);
|
||||
|
||||
/* ----- Extended LMP capabilities ----- */
|
||||
#define lmp_host_ssp_capable(dev) ((dev)->host_features[0] & LMP_HOST_SSP)
|
||||
#define lmp_host_le_capable(dev) ((dev)->host_features[0] & LMP_HOST_LE)
|
||||
#define lmp_host_le_br_capable(dev) ((dev)->host_features[0] & LMP_HOST_LE_BREDR)
|
||||
#define lmp_host_le_capable(dev) !!((dev)->host_features[0] & LMP_HOST_LE)
|
||||
#define lmp_host_le_br_capable(dev) !!((dev)->host_features[0] & LMP_HOST_LE_BREDR)
|
||||
|
||||
/* returns true if at least one AMP active */
|
||||
static inline bool hci_amp_capable(void)
|
||||
{
|
||||
struct hci_dev *hdev;
|
||||
bool ret = false;
|
||||
|
||||
read_lock(&hci_dev_list_lock);
|
||||
list_for_each_entry(hdev, &hci_dev_list, list)
|
||||
if (hdev->amp_type == HCI_AMP &&
|
||||
test_bit(HCI_UP, &hdev->flags))
|
||||
ret = true;
|
||||
read_unlock(&hci_dev_list_lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ----- HCI protocols ----- */
|
||||
#define HCI_PROTO_DEFER 0x01
|
||||
|
||||
static inline int hci_proto_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr,
|
||||
__u8 type)
|
||||
__u8 type, __u8 *flags)
|
||||
{
|
||||
switch (type) {
|
||||
case ACL_LINK:
|
||||
@@ -788,7 +807,7 @@ static inline int hci_proto_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr,
|
||||
|
||||
case SCO_LINK:
|
||||
case ESCO_LINK:
|
||||
return sco_connect_ind(hdev, bdaddr);
|
||||
return sco_connect_ind(hdev, bdaddr, flags);
|
||||
|
||||
default:
|
||||
BT_ERR("unknown link type %d", type);
|
||||
|
||||
@@ -611,7 +611,7 @@ enum {
|
||||
CONF_MTU_DONE,
|
||||
CONF_MODE_DONE,
|
||||
CONF_CONNECT_PEND,
|
||||
CONF_NO_FCS_RECV,
|
||||
CONF_RECV_NO_FCS,
|
||||
CONF_STATE2_DEVICE,
|
||||
CONF_EWS_RECV,
|
||||
CONF_LOC_CONF_PEND,
|
||||
|
||||
+53
-18
@@ -58,6 +58,8 @@
|
||||
* structures here describe these capabilities in detail.
|
||||
*/
|
||||
|
||||
struct wiphy;
|
||||
|
||||
/*
|
||||
* wireless hardware capability structures
|
||||
*/
|
||||
@@ -387,6 +389,22 @@ const struct cfg80211_chan_def *
|
||||
cfg80211_chandef_compatible(const struct cfg80211_chan_def *chandef1,
|
||||
const struct cfg80211_chan_def *chandef2);
|
||||
|
||||
/**
|
||||
* cfg80211_chandef_valid - check if a channel definition is valid
|
||||
* @chandef: the channel definition to check
|
||||
*/
|
||||
bool cfg80211_chandef_valid(const struct cfg80211_chan_def *chandef);
|
||||
|
||||
/**
|
||||
* cfg80211_chandef_usable - check if secondary channels can be used
|
||||
* @wiphy: the wiphy to validate against
|
||||
* @chandef: the channel definition to check
|
||||
* @prohibited_flags: the regulatory chanenl flags that must not be set
|
||||
*/
|
||||
bool cfg80211_chandef_usable(struct wiphy *wiphy,
|
||||
const struct cfg80211_chan_def *chandef,
|
||||
u32 prohibited_flags);
|
||||
|
||||
/**
|
||||
* enum survey_info_flags - survey information flags
|
||||
*
|
||||
@@ -520,6 +538,8 @@ struct cfg80211_beacon_data {
|
||||
* @privacy: the BSS uses privacy
|
||||
* @auth_type: Authentication type (algorithm)
|
||||
* @inactivity_timeout: time in seconds to determine station's inactivity.
|
||||
* @p2p_ctwindow: P2P CT Window
|
||||
* @p2p_opp_ps: P2P opportunistic PS
|
||||
*/
|
||||
struct cfg80211_ap_settings {
|
||||
struct cfg80211_chan_def chandef;
|
||||
@@ -534,6 +554,8 @@ struct cfg80211_ap_settings {
|
||||
bool privacy;
|
||||
enum nl80211_auth_type auth_type;
|
||||
int inactivity_timeout;
|
||||
u8 p2p_ctwindow;
|
||||
bool p2p_opp_ps;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -895,6 +917,8 @@ struct mpath_info {
|
||||
* @ap_isolate: do not forward packets between connected stations
|
||||
* @ht_opmode: HT Operation mode
|
||||
* (u16 = opmode, -1 = do not change)
|
||||
* @p2p_ctwindow: P2P CT Window (-1 = no change)
|
||||
* @p2p_opp_ps: P2P opportunistic PS (-1 = no change)
|
||||
*/
|
||||
struct bss_parameters {
|
||||
int use_cts_prot;
|
||||
@@ -904,6 +928,7 @@ struct bss_parameters {
|
||||
u8 basic_rates_len;
|
||||
int ap_isolate;
|
||||
int ht_opmode;
|
||||
s8 p2p_ctwindow, p2p_opp_ps;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1045,9 +1070,6 @@ struct ieee80211_txq_params {
|
||||
u8 aifs;
|
||||
};
|
||||
|
||||
/* from net/wireless.h */
|
||||
struct wiphy;
|
||||
|
||||
/**
|
||||
* DOC: Scanning and BSS list handling
|
||||
*
|
||||
@@ -1183,6 +1205,18 @@ enum cfg80211_signal_type {
|
||||
CFG80211_SIGNAL_TYPE_UNSPEC,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct cfg80211_bss_ie_data - BSS entry IE data
|
||||
* @rcu_head: internal use, for freeing
|
||||
* @len: length of the IEs
|
||||
* @data: IE data
|
||||
*/
|
||||
struct cfg80211_bss_ies {
|
||||
struct rcu_head rcu_head;
|
||||
int len;
|
||||
u8 data[];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct cfg80211_bss - BSS description
|
||||
*
|
||||
@@ -1194,36 +1228,34 @@ enum cfg80211_signal_type {
|
||||
* @tsf: timestamp of last received update
|
||||
* @beacon_interval: the beacon interval as from the frame
|
||||
* @capability: the capability field in host byte order
|
||||
* @information_elements: the information elements (Note that there
|
||||
* @ies: the information elements (Note that there
|
||||
* is no guarantee that these are well-formed!); this is a pointer to
|
||||
* either the beacon_ies or proberesp_ies depending on whether Probe
|
||||
* Response frame has been received
|
||||
* @len_information_elements: total length of the information elements
|
||||
* @beacon_ies: the information elements from the last Beacon frame
|
||||
* @len_beacon_ies: total length of the beacon_ies
|
||||
* @proberesp_ies: the information elements from the last Probe Response frame
|
||||
* @len_proberesp_ies: total length of the proberesp_ies
|
||||
* @signal: signal strength value (type depends on the wiphy's signal_type)
|
||||
* @free_priv: function pointer to free private data
|
||||
* @priv: private area for driver use, has at least wiphy->bss_priv_size bytes
|
||||
*/
|
||||
struct cfg80211_bss {
|
||||
u64 tsf;
|
||||
|
||||
struct ieee80211_channel *channel;
|
||||
|
||||
u8 bssid[ETH_ALEN];
|
||||
u64 tsf;
|
||||
u16 beacon_interval;
|
||||
u16 capability;
|
||||
u8 *information_elements;
|
||||
size_t len_information_elements;
|
||||
u8 *beacon_ies;
|
||||
size_t len_beacon_ies;
|
||||
u8 *proberesp_ies;
|
||||
size_t len_proberesp_ies;
|
||||
const struct cfg80211_bss_ies __rcu *ies;
|
||||
const struct cfg80211_bss_ies __rcu *beacon_ies;
|
||||
const struct cfg80211_bss_ies __rcu *proberesp_ies;
|
||||
|
||||
void (*free_priv)(struct cfg80211_bss *bss);
|
||||
|
||||
s32 signal;
|
||||
|
||||
void (*free_priv)(struct cfg80211_bss *bss);
|
||||
u16 beacon_interval;
|
||||
u16 capability;
|
||||
|
||||
u8 bssid[ETH_ALEN];
|
||||
|
||||
u8 priv[0] __attribute__((__aligned__(sizeof(void *))));
|
||||
};
|
||||
|
||||
@@ -1231,6 +1263,9 @@ struct cfg80211_bss {
|
||||
* ieee80211_bss_get_ie - find IE with given ID
|
||||
* @bss: the bss to search
|
||||
* @ie: the IE ID
|
||||
*
|
||||
* Note that the return value is an RCU-protected pointer, so
|
||||
* rcu_read_lock() must be held when calling this function.
|
||||
* Returns %NULL if not found.
|
||||
*/
|
||||
const u8 *ieee80211_bss_get_ie(struct cfg80211_bss *bss, u8 ie);
|
||||
|
||||
@@ -186,6 +186,10 @@ struct ieee80211_radiotap_header {
|
||||
* IEEE80211_RADIOTAP_AMPDU_STATUS u32, u16, u8, u8 unitless
|
||||
*
|
||||
* Contains the AMPDU information for the subframe.
|
||||
*
|
||||
* IEEE80211_RADIOTAP_VHT u16, u8, u8, u8[4], u8, u8, u16
|
||||
*
|
||||
* Contains VHT information about this frame.
|
||||
*/
|
||||
enum ieee80211_radiotap_type {
|
||||
IEEE80211_RADIOTAP_TSFT = 0,
|
||||
@@ -209,6 +213,7 @@ enum ieee80211_radiotap_type {
|
||||
|
||||
IEEE80211_RADIOTAP_MCS = 19,
|
||||
IEEE80211_RADIOTAP_AMPDU_STATUS = 20,
|
||||
IEEE80211_RADIOTAP_VHT = 21,
|
||||
|
||||
/* valid in every it_present bitmap, even vendor namespaces */
|
||||
IEEE80211_RADIOTAP_RADIOTAP_NAMESPACE = 29,
|
||||
@@ -282,6 +287,25 @@ enum ieee80211_radiotap_type {
|
||||
#define IEEE80211_RADIOTAP_AMPDU_DELIM_CRC_ERR 0x0010
|
||||
#define IEEE80211_RADIOTAP_AMPDU_DELIM_CRC_KNOWN 0x0020
|
||||
|
||||
/* For IEEE80211_RADIOTAP_VHT */
|
||||
#define IEEE80211_RADIOTAP_VHT_KNOWN_STBC 0x0001
|
||||
#define IEEE80211_RADIOTAP_VHT_KNOWN_TXOP_PS_NA 0x0002
|
||||
#define IEEE80211_RADIOTAP_VHT_KNOWN_GI 0x0004
|
||||
#define IEEE80211_RADIOTAP_VHT_KNOWN_SGI_NSYM_DIS 0x0008
|
||||
#define IEEE80211_RADIOTAP_VHT_KNOWN_LDPC_EXTRA_OFDM_SYM 0x0010
|
||||
#define IEEE80211_RADIOTAP_VHT_KNOWN_BEAMFORMED 0x0020
|
||||
#define IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH 0x0040
|
||||
#define IEEE80211_RADIOTAP_VHT_KNOWN_GROUP_ID 0x0080
|
||||
#define IEEE80211_RADIOTAP_VHT_KNOWN_PARTIAL_AID 0x0100
|
||||
|
||||
#define IEEE80211_RADIOTAP_VHT_FLAG_STBC 0x01
|
||||
#define IEEE80211_RADIOTAP_VHT_FLAG_TXOP_PS_NA 0x02
|
||||
#define IEEE80211_RADIOTAP_VHT_FLAG_SGI 0x04
|
||||
#define IEEE80211_RADIOTAP_VHT_FLAG_SGI_NSYM_M10_9 0x08
|
||||
#define IEEE80211_RADIOTAP_VHT_FLAG_LDPC_EXTRA_OFDM_SYM 0x10
|
||||
#define IEEE80211_RADIOTAP_VHT_FLAG_BEAMFORMED 0x20
|
||||
|
||||
|
||||
/* helpers */
|
||||
static inline int ieee80211_get_radiotap_len(unsigned char *data)
|
||||
{
|
||||
|
||||
@@ -164,7 +164,7 @@ enum ieee80211_chanctx_change {
|
||||
* active on the channel to receive MIMO transmissions
|
||||
* @rx_chains_dynamic: The number of RX chains that must be enabled
|
||||
* after RTS/CTS handshake to receive SMPS MIMO transmissions;
|
||||
* this will always be >= @rx_chains_always.
|
||||
* this will always be >= @rx_chains_static.
|
||||
* @drv_priv: data area for driver use, will always be aligned to
|
||||
* sizeof(void *), size is determined in hw information.
|
||||
*/
|
||||
@@ -1473,6 +1473,10 @@ enum ieee80211_hw_flags {
|
||||
* include _FMT. Use %IEEE80211_RADIOTAP_MCS_HAVE_* values, only
|
||||
* adding _BW is supported today.
|
||||
*
|
||||
* @radiotap_vht_details: lists which VHT MCS information the HW reports,
|
||||
* the default is _GI | _BANDWIDTH.
|
||||
* Use the %IEEE80211_RADIOTAP_VHT_KNOWN_* values.
|
||||
*
|
||||
* @netdev_features: netdev features to be set in each netdev created
|
||||
* from this HW. Note only HW checksum features are currently
|
||||
* compatible with mac80211. Other feature bits will be rejected.
|
||||
@@ -1499,6 +1503,7 @@ struct ieee80211_hw {
|
||||
u8 max_tx_aggregation_subframes;
|
||||
u8 offchannel_tx_hw_queue;
|
||||
u8 radiotap_mcs_details;
|
||||
u16 radiotap_vht_details;
|
||||
netdev_features_t netdev_features;
|
||||
};
|
||||
|
||||
@@ -3139,8 +3144,7 @@ struct sk_buff *ieee80211_nullfunc_get(struct ieee80211_hw *hw,
|
||||
* @vif: &struct ieee80211_vif pointer from the add_interface callback.
|
||||
* @ssid: SSID buffer
|
||||
* @ssid_len: length of SSID
|
||||
* @ie: buffer containing all IEs except SSID for the template
|
||||
* @ie_len: length of the IE buffer
|
||||
* @tailroom: tailroom to reserve at end of SKB for IEs
|
||||
*
|
||||
* Creates a Probe Request template which can, for example, be uploaded to
|
||||
* hardware.
|
||||
@@ -3148,7 +3152,7 @@ struct sk_buff *ieee80211_nullfunc_get(struct ieee80211_hw *hw,
|
||||
struct sk_buff *ieee80211_probereq_get(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
const u8 *ssid, size_t ssid_len,
|
||||
const u8 *ie, size_t ie_len);
|
||||
size_t tailroom);
|
||||
|
||||
/**
|
||||
* ieee80211_rts_get - RTS frame generation function
|
||||
|
||||
@@ -1303,6 +1303,13 @@ enum nl80211_commands {
|
||||
*
|
||||
* @NL80211_ATTR_SCAN_FLAGS: scan request control flags (u32)
|
||||
*
|
||||
* @NL80211_ATTR_P2P_CTWINDOW: P2P GO Client Traffic Window (u8), used with
|
||||
* the START_AP and SET_BSS commands
|
||||
* @NL80211_ATTR_P2P_OPPPS: P2P GO opportunistic PS (u8), used with the
|
||||
* START_AP and SET_BSS commands. This can have the values 0 or 1;
|
||||
* if not given in START_AP 0 is assumed, if not given in SET_BSS
|
||||
* no change is made.
|
||||
*
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
*/
|
||||
@@ -1570,6 +1577,9 @@ enum nl80211_attrs {
|
||||
NL80211_ATTR_CENTER_FREQ1,
|
||||
NL80211_ATTR_CENTER_FREQ2,
|
||||
|
||||
NL80211_ATTR_P2P_CTWINDOW,
|
||||
NL80211_ATTR_P2P_OPPPS,
|
||||
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
@@ -3126,6 +3136,10 @@ enum nl80211_ap_sme_features {
|
||||
* @NL80211_FEATURE_NEED_OBSS_SCAN: The driver expects userspace to perform
|
||||
* OBSS scans and generate 20/40 BSS coex reports. This flag is used only
|
||||
* for drivers implementing the CONNECT API, for AUTH/ASSOC it is implied.
|
||||
* @NL80211_FEATURE_P2P_GO_CTWIN: P2P GO implementation supports CT Window
|
||||
* setting
|
||||
* @NL80211_FEATURE_P2P_GO_OPPPS: P2P GO implementation supports opportunistic
|
||||
* powersave
|
||||
*/
|
||||
enum nl80211_feature_flags {
|
||||
NL80211_FEATURE_SK_TX_STATUS = 1 << 0,
|
||||
@@ -3139,6 +3153,8 @@ enum nl80211_feature_flags {
|
||||
NL80211_FEATURE_AP_SCAN = 1 << 8,
|
||||
NL80211_FEATURE_VIF_TXPOWER = 1 << 9,
|
||||
NL80211_FEATURE_NEED_OBSS_SCAN = 1 << 10,
|
||||
NL80211_FEATURE_P2P_GO_CTWIN = 1 << 11,
|
||||
NL80211_FEATURE_P2P_GO_OPPPS = 1 << 12,
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user