mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 06:03:36 -04:00
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
Conflicts: drivers/net/wireless/iwlwifi/iwl-core.h
This commit is contained in:
commit
6373464288
92 changed files with 7308 additions and 2805 deletions
|
|
@ -120,6 +120,24 @@
|
|||
#define IEEE80211_QOS_CTL_TID_MASK 0x000F
|
||||
#define IEEE80211_QOS_CTL_TAG1D_MASK 0x0007
|
||||
|
||||
/* U-APSD queue for WMM IEs sent by AP */
|
||||
#define IEEE80211_WMM_IE_AP_QOSINFO_UAPSD (1<<7)
|
||||
|
||||
/* U-APSD queues for WMM IEs sent by STA */
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_AC_VO (1<<0)
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_AC_VI (1<<1)
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_AC_BK (1<<2)
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_AC_BE (1<<3)
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_AC_MASK 0x0f
|
||||
|
||||
/* U-APSD max SP length for WMM IEs sent by STA */
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_SP_ALL 0x00
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_SP_2 0x01
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_SP_4 0x02
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_SP_6 0x03
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_SP_MASK 0x03
|
||||
#define IEEE80211_WMM_IE_STA_QOSINFO_SP_SHIFT 5
|
||||
|
||||
struct ieee80211_hdr {
|
||||
__le16 frame_control;
|
||||
__le16 duration_id;
|
||||
|
|
@ -130,6 +148,25 @@ struct ieee80211_hdr {
|
|||
u8 addr4[6];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct ieee80211_hdr_3addr {
|
||||
__le16 frame_control;
|
||||
__le16 duration_id;
|
||||
u8 addr1[6];
|
||||
u8 addr2[6];
|
||||
u8 addr3[6];
|
||||
__le16 seq_ctrl;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct ieee80211_qos_hdr {
|
||||
__le16 frame_control;
|
||||
__le16 duration_id;
|
||||
u8 addr1[6];
|
||||
u8 addr2[6];
|
||||
u8 addr3[6];
|
||||
__le16 seq_ctrl;
|
||||
__le16 qos_ctrl;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/**
|
||||
* ieee80211_has_tods - check if IEEE80211_FCTL_TODS is set
|
||||
* @fc: frame control bytes in little-endian byteorder
|
||||
|
|
|
|||
|
|
@ -295,6 +295,10 @@
|
|||
* This command is also used as an event to notify when a requested
|
||||
* remain-on-channel duration has expired.
|
||||
*
|
||||
* @NL80211_CMD_SET_TX_BITRATE_MASK: Set the mask of rates to be used in TX
|
||||
* rate selection. %NL80211_ATTR_IFINDEX is used to specify the interface
|
||||
* and @NL80211_ATTR_TX_RATES the set of allowed rates.
|
||||
*
|
||||
* @NL80211_CMD_MAX: highest used command number
|
||||
* @__NL80211_CMD_AFTER_LAST: internal use
|
||||
*/
|
||||
|
|
@ -381,6 +385,8 @@ enum nl80211_commands {
|
|||
NL80211_CMD_REMAIN_ON_CHANNEL,
|
||||
NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL,
|
||||
|
||||
NL80211_CMD_SET_TX_BITRATE_MASK,
|
||||
|
||||
/* add new commands above here */
|
||||
|
||||
/* used to define NL80211_CMD_MAX below */
|
||||
|
|
@ -430,6 +436,8 @@ enum nl80211_commands {
|
|||
* @NL80211_ATTR_WIPHY_RTS_THRESHOLD: RTS threshold (TX frames with length
|
||||
* larger than or equal to this use RTS/CTS handshake); allowed range:
|
||||
* 0..65536, disable with (u32)-1; dot11RTSThreshold; u32
|
||||
* @NL80211_ATTR_WIPHY_COVERAGE_CLASS: Coverage Class as defined by IEEE 802.11
|
||||
* section 7.3.2.9; dot11CoverageClass; u8
|
||||
*
|
||||
* @NL80211_ATTR_IFINDEX: network interface index of the device to operate on
|
||||
* @NL80211_ATTR_IFNAME: network interface name
|
||||
|
|
@ -638,6 +646,13 @@ enum nl80211_commands {
|
|||
*
|
||||
* @NL80211_ATTR_COOKIE: Generic 64-bit cookie to identify objects.
|
||||
*
|
||||
* @NL80211_ATTR_TX_RATES: Nested set of attributes
|
||||
* (enum nl80211_tx_rate_attributes) describing TX rates per band. The
|
||||
* enum nl80211_band value is used as the index (nla_type() of the nested
|
||||
* data. If a band is not included, it will be configured to allow all
|
||||
* rates based on negotiated supported rates information. This attribute
|
||||
* is used with %NL80211_CMD_SET_TX_BITRATE_MASK.
|
||||
*
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
*/
|
||||
|
|
@ -779,6 +794,10 @@ enum nl80211_attrs {
|
|||
|
||||
NL80211_ATTR_COOKIE,
|
||||
|
||||
NL80211_ATTR_WIPHY_COVERAGE_CLASS,
|
||||
|
||||
NL80211_ATTR_TX_RATES,
|
||||
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
|
|
@ -1359,13 +1378,20 @@ enum nl80211_channel_type {
|
|||
* @NL80211_BSS_BEACON_INTERVAL: beacon interval of the (I)BSS (u16)
|
||||
* @NL80211_BSS_CAPABILITY: capability field (CPU order, u16)
|
||||
* @NL80211_BSS_INFORMATION_ELEMENTS: binary attribute containing the
|
||||
* raw information elements from the probe response/beacon (bin)
|
||||
* raw information elements from the probe response/beacon (bin);
|
||||
* if the %NL80211_BSS_BEACON_IES attribute is present, the IEs here are
|
||||
* from a Probe Response frame; otherwise they are from a Beacon frame.
|
||||
* However, if the driver does not indicate the source of the IEs, these
|
||||
* IEs may be from either frame subtype.
|
||||
* @NL80211_BSS_SIGNAL_MBM: signal strength of probe response/beacon
|
||||
* in mBm (100 * dBm) (s32)
|
||||
* @NL80211_BSS_SIGNAL_UNSPEC: signal strength of the probe response/beacon
|
||||
* in unspecified units, scaled to 0..100 (u8)
|
||||
* @NL80211_BSS_STATUS: status, if this BSS is "used"
|
||||
* @NL80211_BSS_SEEN_MS_AGO: age of this BSS entry in ms
|
||||
* @NL80211_BSS_BEACON_IES: binary attribute containing the raw information
|
||||
* elements from a Beacon frame (bin); not present if no Beacon frame has
|
||||
* yet been received
|
||||
* @__NL80211_BSS_AFTER_LAST: internal
|
||||
* @NL80211_BSS_MAX: highest BSS attribute
|
||||
*/
|
||||
|
|
@ -1381,6 +1407,7 @@ enum nl80211_bss {
|
|||
NL80211_BSS_SIGNAL_UNSPEC,
|
||||
NL80211_BSS_STATUS,
|
||||
NL80211_BSS_SEEN_MS_AGO,
|
||||
NL80211_BSS_BEACON_IES,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_BSS_AFTER_LAST,
|
||||
|
|
@ -1478,4 +1505,33 @@ enum nl80211_key_attributes {
|
|||
NL80211_KEY_MAX = __NL80211_KEY_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_tx_rate_attributes - TX rate set attributes
|
||||
* @__NL80211_TXRATE_INVALID: invalid
|
||||
* @NL80211_TXRATE_LEGACY: Legacy (non-MCS) rates allowed for TX rate selection
|
||||
* in an array of rates as defined in IEEE 802.11 7.3.2.2 (u8 values with
|
||||
* 1 = 500 kbps) but without the IE length restriction (at most
|
||||
* %NL80211_MAX_SUPP_RATES in a single array).
|
||||
* @__NL80211_TXRATE_AFTER_LAST: internal
|
||||
* @NL80211_TXRATE_MAX: highest TX rate attribute
|
||||
*/
|
||||
enum nl80211_tx_rate_attributes {
|
||||
__NL80211_TXRATE_INVALID,
|
||||
NL80211_TXRATE_LEGACY,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_TXRATE_AFTER_LAST,
|
||||
NL80211_TXRATE_MAX = __NL80211_TXRATE_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_band - Frequency band
|
||||
* @NL80211_BAND_2GHZ - 2.4 GHz ISM band
|
||||
* @NL80211_BAND_5GHZ - around 5 GHz band (4.9 - 5.7 GHz)
|
||||
*/
|
||||
enum nl80211_band {
|
||||
NL80211_BAND_2GHZ,
|
||||
NL80211_BAND_5GHZ,
|
||||
};
|
||||
|
||||
#endif /* __LINUX_NL80211_H */
|
||||
|
|
|
|||
|
|
@ -39,8 +39,8 @@
|
|||
* @IEEE80211_BAND_5GHZ: around 5GHz band (4.9-5.7)
|
||||
*/
|
||||
enum ieee80211_band {
|
||||
IEEE80211_BAND_2GHZ,
|
||||
IEEE80211_BAND_5GHZ,
|
||||
IEEE80211_BAND_2GHZ = NL80211_BAND_2GHZ,
|
||||
IEEE80211_BAND_5GHZ = NL80211_BAND_5GHZ,
|
||||
|
||||
/* keep last */
|
||||
IEEE80211_NUM_BANDS
|
||||
|
|
@ -626,8 +626,14 @@ enum cfg80211_signal_type {
|
|||
* @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
|
||||
* is no guarantee that these are well-formed!)
|
||||
* 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
|
||||
|
|
@ -641,6 +647,10 @@ struct cfg80211_bss {
|
|||
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;
|
||||
|
||||
s32 signal;
|
||||
|
||||
|
|
@ -837,6 +847,7 @@ enum wiphy_params_flags {
|
|||
WIPHY_PARAM_RETRY_LONG = 1 << 1,
|
||||
WIPHY_PARAM_FRAG_THRESHOLD = 1 << 2,
|
||||
WIPHY_PARAM_RTS_THRESHOLD = 1 << 3,
|
||||
WIPHY_PARAM_COVERAGE_CLASS = 1 << 4,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -856,20 +867,11 @@ enum tx_power_setting {
|
|||
* cfg80211_bitrate_mask - masks for bitrate control
|
||||
*/
|
||||
struct cfg80211_bitrate_mask {
|
||||
/*
|
||||
* As discussed in Berlin, this struct really
|
||||
* should look like this:
|
||||
|
||||
struct {
|
||||
u32 legacy;
|
||||
u8 mcs[IEEE80211_HT_MCS_MASK_LEN];
|
||||
/* TODO: add support for masking MCS rates; e.g.: */
|
||||
/* u8 mcs[IEEE80211_HT_MCS_MASK_LEN]; */
|
||||
} control[IEEE80211_NUM_BANDS];
|
||||
|
||||
* Since we can always fix in-kernel users, let's keep
|
||||
* it simpler for now:
|
||||
*/
|
||||
u32 fixed; /* fixed bitrate, 0 == not fixed */
|
||||
u32 maxrate; /* in kbps, 0 == no limit */
|
||||
};
|
||||
/**
|
||||
* struct cfg80211_pmksa - PMK Security Association
|
||||
|
|
@ -1236,6 +1238,7 @@ struct wiphy {
|
|||
u8 retry_long;
|
||||
u32 frag_threshold;
|
||||
u32 rts_threshold;
|
||||
u8 coverage_class;
|
||||
|
||||
char fw_version[ETHTOOL_BUSINFO_LEN];
|
||||
u32 hw_version;
|
||||
|
|
|
|||
|
|
@ -107,12 +107,14 @@ enum ieee80211_max_queues {
|
|||
* 2^n-1 in the range 1..32767]
|
||||
* @cw_max: maximum contention window [like @cw_min]
|
||||
* @txop: maximum burst time in units of 32 usecs, 0 meaning disabled
|
||||
* @uapsd: is U-APSD mode enabled for the queue
|
||||
*/
|
||||
struct ieee80211_tx_queue_params {
|
||||
u16 txop;
|
||||
u16 cw_min;
|
||||
u16 cw_max;
|
||||
u8 aifs;
|
||||
bool uapsd;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -255,9 +257,6 @@ struct ieee80211_bss_conf {
|
|||
* @IEEE80211_TX_CTL_RATE_CTRL_PROBE: internal to mac80211, can be
|
||||
* set by rate control algorithms to indicate probe rate, will
|
||||
* be cleared for fragmented frames (except on the last fragment)
|
||||
* @IEEE80211_TX_INTFL_RCALGO: mac80211 internal flag, do not test or
|
||||
* set this flag in the driver; indicates that the rate control
|
||||
* algorithm was used and should be notified of TX status
|
||||
* @IEEE80211_TX_INTFL_NEED_TXPROCESSING: completely internal to mac80211,
|
||||
* used to indicate that a pending frame requires TX processing before
|
||||
* it can be sent out.
|
||||
|
|
@ -287,7 +286,6 @@ enum mac80211_tx_control_flags {
|
|||
IEEE80211_TX_STAT_AMPDU = BIT(10),
|
||||
IEEE80211_TX_STAT_AMPDU_NO_BACK = BIT(11),
|
||||
IEEE80211_TX_CTL_RATE_CTRL_PROBE = BIT(12),
|
||||
IEEE80211_TX_INTFL_RCALGO = BIT(13),
|
||||
IEEE80211_TX_INTFL_NEED_TXPROCESSING = BIT(14),
|
||||
IEEE80211_TX_INTFL_RETRIED = BIT(15),
|
||||
IEEE80211_TX_INTFL_DONT_ENCRYPT = BIT(16),
|
||||
|
|
@ -571,7 +569,13 @@ struct ieee80211_rx_status {
|
|||
* @IEEE80211_CONF_MONITOR: there's a monitor interface present -- use this
|
||||
* to determine for example whether to calculate timestamps for packets
|
||||
* or not, do not use instead of filter flags!
|
||||
* @IEEE80211_CONF_PS: Enable 802.11 power save mode (managed mode only)
|
||||
* @IEEE80211_CONF_PS: Enable 802.11 power save mode (managed mode only).
|
||||
* This is the power save mode defined by IEEE 802.11-2007 section 11.2,
|
||||
* meaning that the hardware still wakes up for beacons, is able to
|
||||
* transmit frames and receive the possible acknowledgment frames.
|
||||
* Not to be confused with hardware specific wakeup/sleep states,
|
||||
* driver is responsible for that. See the section "Powersave support"
|
||||
* for more.
|
||||
* @IEEE80211_CONF_IDLE: The device is running, but idle; if the flag is set
|
||||
* the driver should be prepared to handle configuration requests but
|
||||
* may turn the device off as much as possible. Typically, this flag will
|
||||
|
|
@ -611,7 +615,11 @@ enum ieee80211_conf_changed {
|
|||
/**
|
||||
* enum ieee80211_smps_mode - spatial multiplexing power save mode
|
||||
*
|
||||
* @
|
||||
* @IEEE80211_SMPS_AUTOMATIC: automatic
|
||||
* @IEEE80211_SMPS_OFF: off
|
||||
* @IEEE80211_SMPS_STATIC: static
|
||||
* @IEEE80211_SMPS_DYNAMIC: dynamic
|
||||
* @IEEE80211_SMPS_NUM_MODES: internal, don't use
|
||||
*/
|
||||
enum ieee80211_smps_mode {
|
||||
IEEE80211_SMPS_AUTOMATIC,
|
||||
|
|
@ -933,6 +941,11 @@ enum ieee80211_tkip_key_type {
|
|||
* Hardware supports dynamic spatial multiplexing powersave,
|
||||
* ie. can turn off all but one chain and then wake the rest
|
||||
* up as required after, for example, rts/cts handshake.
|
||||
*
|
||||
* @IEEE80211_HW_SUPPORTS_UAPSD:
|
||||
* Hardware supports Unscheduled Automatic Power Save Delivery
|
||||
* (U-APSD) in managed mode. The mode is configured with
|
||||
* conf_tx() operation.
|
||||
*/
|
||||
enum ieee80211_hw_flags {
|
||||
IEEE80211_HW_HAS_RATE_CONTROL = 1<<0,
|
||||
|
|
@ -952,6 +965,7 @@ enum ieee80211_hw_flags {
|
|||
IEEE80211_HW_BEACON_FILTER = 1<<14,
|
||||
IEEE80211_HW_SUPPORTS_STATIC_SMPS = 1<<15,
|
||||
IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS = 1<<16,
|
||||
IEEE80211_HW_SUPPORTS_UAPSD = 1<<17,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1130,18 +1144,24 @@ ieee80211_get_alt_retry_rate(const struct ieee80211_hw *hw,
|
|||
*
|
||||
* mac80211 has support for various powersave implementations.
|
||||
*
|
||||
* First, it can support hardware that handles all powersaving by
|
||||
* itself, such hardware should simply set the %IEEE80211_HW_SUPPORTS_PS
|
||||
* hardware flag. In that case, it will be told about the desired
|
||||
* powersave mode depending on the association status, and the driver
|
||||
* must take care of sending nullfunc frames when necessary, i.e. when
|
||||
* entering and leaving powersave mode. The driver is required to look at
|
||||
* the AID in beacons and signal to the AP that it woke up when it finds
|
||||
* traffic directed to it. This mode supports dynamic PS by simply
|
||||
* enabling/disabling PS.
|
||||
* First, it can support hardware that handles all powersaving by itself,
|
||||
* such hardware should simply set the %IEEE80211_HW_SUPPORTS_PS hardware
|
||||
* flag. In that case, it will be told about the desired powersave mode
|
||||
* with the %IEEE80211_CONF_PS flag depending on the association status.
|
||||
* The hardware must take care of sending nullfunc frames when necessary,
|
||||
* i.e. when entering and leaving powersave mode. The hardware is required
|
||||
* to look at the AID in beacons and signal to the AP that it woke up when
|
||||
* it finds traffic directed to it.
|
||||
*
|
||||
* Additionally, such hardware may set the %IEEE80211_HW_SUPPORTS_DYNAMIC_PS
|
||||
* flag to indicate that it can support dynamic PS mode itself (see below).
|
||||
* %IEEE80211_CONF_PS flag enabled means that the powersave mode defined in
|
||||
* IEEE 802.11-2007 section 11.2 is enabled. This is not to be confused
|
||||
* with hardware wakeup and sleep states. Driver is responsible for waking
|
||||
* up the hardware before issueing commands to the hardware and putting it
|
||||
* back to sleep at approriate times.
|
||||
*
|
||||
* When PS is enabled, hardware needs to wakeup for beacons and receive the
|
||||
* buffered multicast/broadcast frames after the beacon. Also it must be
|
||||
* possible to send frames and receive the acknowledment frame.
|
||||
*
|
||||
* Other hardware designs cannot send nullfunc frames by themselves and also
|
||||
* need software support for parsing the TIM bitmap. This is also supported
|
||||
|
|
@ -1149,14 +1169,35 @@ ieee80211_get_alt_retry_rate(const struct ieee80211_hw *hw,
|
|||
* %IEEE80211_HW_PS_NULLFUNC_STACK flags. The hardware is of course still
|
||||
* required to pass up beacons. The hardware is still required to handle
|
||||
* waking up for multicast traffic; if it cannot the driver must handle that
|
||||
* as best as it can, mac80211 is too slow.
|
||||
* as best as it can, mac80211 is too slow to do that.
|
||||
*
|
||||
* Dynamic powersave mode is an extension to normal powersave mode in which
|
||||
* the hardware stays awake for a user-specified period of time after sending
|
||||
* a frame so that reply frames need not be buffered and therefore delayed
|
||||
* to the next wakeup. This can either be supported by hardware, in which case
|
||||
* the driver needs to look at the @dynamic_ps_timeout hardware configuration
|
||||
* value, or by the stack if all nullfunc handling is in the stack.
|
||||
* Dynamic powersave is an extension to normal powersave in which the
|
||||
* hardware stays awake for a user-specified period of time after sending a
|
||||
* frame so that reply frames need not be buffered and therefore delayed to
|
||||
* the next wakeup. It's compromise of getting good enough latency when
|
||||
* there's data traffic and still saving significantly power in idle
|
||||
* periods.
|
||||
*
|
||||
* Dynamic powersave is supported by simply mac80211 enabling and disabling
|
||||
* PS based on traffic. Driver needs to only set %IEEE80211_HW_SUPPORTS_PS
|
||||
* flag and mac80211 will handle everything automatically. Additionally,
|
||||
* hardware having support for the dynamic PS feature may set the
|
||||
* %IEEE80211_HW_SUPPORTS_DYNAMIC_PS flag to indicate that it can support
|
||||
* dynamic PS mode itself. The driver needs to look at the
|
||||
* @dynamic_ps_timeout hardware configuration value and use it that value
|
||||
* whenever %IEEE80211_CONF_PS is set. In this case mac80211 will disable
|
||||
* dynamic PS feature in stack and will just keep %IEEE80211_CONF_PS
|
||||
* enabled whenever user has enabled powersave.
|
||||
*
|
||||
* Driver informs U-APSD client support by enabling
|
||||
* %IEEE80211_HW_SUPPORTS_UAPSD flag. The mode is configured through the
|
||||
* uapsd paramater in conf_tx() operation. Hardware needs to send the QoS
|
||||
* Nullfunc frames and stay awake until the service period has ended. To
|
||||
* utilize U-APSD, dynamic powersave is disabled for voip AC and all frames
|
||||
* from that AC are transmitted with powersave enabled.
|
||||
*
|
||||
* Note: U-APSD client mode is not yet supported with
|
||||
* %IEEE80211_HW_PS_NULLFUNC_STACK.
|
||||
*/
|
||||
|
||||
/**
|
||||
|
|
@ -1533,6 +1574,10 @@ enum ieee80211_ampdu_mlme_action {
|
|||
* and need to call wiphy_rfkill_set_hw_state() in the callback.
|
||||
* The callback can sleep.
|
||||
*
|
||||
* @set_coverage_class: Set slot time for given coverage class as specified
|
||||
* in IEEE 802.11-2007 section 17.3.8.6 and modify ACK timeout
|
||||
* accordingly. This callback is not required and may sleep.
|
||||
*
|
||||
* @testmode_cmd: Implement a cfg80211 test mode command.
|
||||
* The callback can sleep.
|
||||
*
|
||||
|
|
@ -1592,6 +1637,7 @@ struct ieee80211_ops {
|
|||
struct ieee80211_sta *sta, u16 tid, u16 *ssn);
|
||||
|
||||
void (*rfkill_poll)(struct ieee80211_hw *hw);
|
||||
void (*set_coverage_class)(struct ieee80211_hw *hw, u8 coverage_class);
|
||||
#ifdef CONFIG_NL80211_TESTMODE
|
||||
int (*testmode_cmd)(struct ieee80211_hw *hw, void *data, int len);
|
||||
#endif
|
||||
|
|
@ -1873,6 +1919,53 @@ static inline struct sk_buff *ieee80211_beacon_get(struct ieee80211_hw *hw,
|
|||
return ieee80211_beacon_get_tim(hw, vif, NULL, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* ieee80211_pspoll_get - retrieve a PS Poll template
|
||||
* @hw: pointer obtained from ieee80211_alloc_hw().
|
||||
* @vif: &struct ieee80211_vif pointer from the add_interface callback.
|
||||
*
|
||||
* Creates a PS Poll a template which can, for example, uploaded to
|
||||
* hardware. The template must be updated after association so that correct
|
||||
* AID, BSSID and MAC address is used.
|
||||
*
|
||||
* Note: Caller (or hardware) is responsible for setting the
|
||||
* &IEEE80211_FCTL_PM bit.
|
||||
*/
|
||||
struct sk_buff *ieee80211_pspoll_get(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif);
|
||||
|
||||
/**
|
||||
* ieee80211_nullfunc_get - retrieve a nullfunc template
|
||||
* @hw: pointer obtained from ieee80211_alloc_hw().
|
||||
* @vif: &struct ieee80211_vif pointer from the add_interface callback.
|
||||
*
|
||||
* Creates a Nullfunc template which can, for example, uploaded to
|
||||
* hardware. The template must be updated after association so that correct
|
||||
* BSSID and address is used.
|
||||
*
|
||||
* Note: Caller (or hardware) is responsible for setting the
|
||||
* &IEEE80211_FCTL_PM bit as well as Duration and Sequence Control fields.
|
||||
*/
|
||||
struct sk_buff *ieee80211_nullfunc_get(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif);
|
||||
|
||||
/**
|
||||
* ieee80211_probereq_get - retrieve a Probe Request template
|
||||
* @hw: pointer obtained from ieee80211_alloc_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
|
||||
*
|
||||
* Creates a Probe Request template which can, for example, be uploaded to
|
||||
* hardware.
|
||||
*/
|
||||
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);
|
||||
|
||||
/**
|
||||
* ieee80211_rts_get - RTS frame generation function
|
||||
* @hw: pointer obtained from ieee80211_alloc_hw().
|
||||
|
|
@ -2292,8 +2385,12 @@ enum rate_control_changed {
|
|||
* @short_preamble: whether mac80211 will request short-preamble transmission
|
||||
* if the selected rate supports it
|
||||
* @max_rate_idx: user-requested maximum rate (not MCS for now)
|
||||
* (deprecated; this will be removed once drivers get updated to use
|
||||
* rate_idx_mask)
|
||||
* @rate_idx_mask: user-requested rate mask (not MCS for now)
|
||||
* @skb: the skb that will be transmitted, the control information in it needs
|
||||
* to be filled in
|
||||
* @ap: whether this frame is sent out in AP mode
|
||||
*/
|
||||
struct ieee80211_tx_rate_control {
|
||||
struct ieee80211_hw *hw;
|
||||
|
|
@ -2303,6 +2400,8 @@ struct ieee80211_tx_rate_control {
|
|||
struct ieee80211_tx_rate reported_rate;
|
||||
bool rts, short_preamble;
|
||||
u8 max_rate_idx;
|
||||
u32 rate_idx_mask;
|
||||
bool ap;
|
||||
};
|
||||
|
||||
struct rate_control_ops {
|
||||
|
|
|
|||
Loading…
Reference in a new issue