Merge tag 'mac80211-next-for-davem-2016-06-09' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
Johannes Berg says: ==================== For the next cycle, we have the following: * the biggest change is Michał's work on integrating FQ/codel with the mac80211 internal software queues * cfg80211 connect result gets clarified for the "no connection at all" case * advertisement of per-interface type capabilities, in case they differ (which makes a lot of sense for some capabilities) * most of the nl80211 & hwsim unprivileged namespace operation changes * human-readable VHT capabilities in debugfs * some other cleanups, like spelling ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -2367,19 +2367,23 @@ struct cfg80211_qos_map {
|
||||
* (invoked with the wireless_dev mutex held)
|
||||
*
|
||||
* @connect: Connect to the ESS with the specified parameters. When connected,
|
||||
* call cfg80211_connect_result() with status code %WLAN_STATUS_SUCCESS.
|
||||
* If the connection fails for some reason, call cfg80211_connect_result()
|
||||
* with the status from the AP. The driver is allowed to roam to other
|
||||
* BSSes within the ESS when the other BSS matches the connect parameters.
|
||||
* When such roaming is initiated by the driver, the driver is expected to
|
||||
* verify that the target matches the configured security parameters and
|
||||
* to use Reassociation Request frame instead of Association Request frame.
|
||||
* The connect function can also be used to request the driver to perform
|
||||
* a specific roam when connected to an ESS. In that case, the prev_bssid
|
||||
* call cfg80211_connect_result()/cfg80211_connect_bss() with status code
|
||||
* %WLAN_STATUS_SUCCESS. If the connection fails for some reason, call
|
||||
* cfg80211_connect_result()/cfg80211_connect_bss() with the status code
|
||||
* from the AP or cfg80211_connect_timeout() if no frame with status code
|
||||
* was received.
|
||||
* The driver is allowed to roam to other BSSes within the ESS when the
|
||||
* other BSS matches the connect parameters. When such roaming is initiated
|
||||
* by the driver, the driver is expected to verify that the target matches
|
||||
* the configured security parameters and to use Reassociation Request
|
||||
* frame instead of Association Request frame.
|
||||
* The connect function can also be used to request the driver to perform a
|
||||
* specific roam when connected to an ESS. In that case, the prev_bssid
|
||||
* parameter is set to the BSSID of the currently associated BSS as an
|
||||
* indication of requesting reassociation. In both the driver-initiated and
|
||||
* new connect() call initiated roaming cases, the result of roaming is
|
||||
* indicated with a call to cfg80211_roamed() or cfg80211_roamed_bss().
|
||||
* indication of requesting reassociation.
|
||||
* In both the driver-initiated and new connect() call initiated roaming
|
||||
* cases, the result of roaming is indicated with a call to
|
||||
* cfg80211_roamed() or cfg80211_roamed_bss().
|
||||
* (invoked with the wireless_dev mutex held)
|
||||
* @disconnect: Disconnect from the BSS/ESS.
|
||||
* (invoked with the wireless_dev mutex held)
|
||||
@@ -3079,6 +3083,24 @@ struct wiphy_vendor_command {
|
||||
unsigned long *storage);
|
||||
};
|
||||
|
||||
/**
|
||||
* struct wiphy_iftype_ext_capab - extended capabilities per interface type
|
||||
* @iftype: interface type
|
||||
* @extended_capabilities: extended capabilities supported by the driver,
|
||||
* additional capabilities might be supported by userspace; these are the
|
||||
* 802.11 extended capabilities ("Extended Capabilities element") and are
|
||||
* in the same format as in the information element. See IEEE Std
|
||||
* 802.11-2012 8.4.2.29 for the defined fields.
|
||||
* @extended_capabilities_mask: mask of the valid values
|
||||
* @extended_capabilities_len: length of the extended capabilities
|
||||
*/
|
||||
struct wiphy_iftype_ext_capab {
|
||||
enum nl80211_iftype iftype;
|
||||
const u8 *extended_capabilities;
|
||||
const u8 *extended_capabilities_mask;
|
||||
u8 extended_capabilities_len;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct wiphy - wireless hardware description
|
||||
* @reg_notifier: the driver's regulatory notification callback,
|
||||
@@ -3199,9 +3221,14 @@ struct wiphy_vendor_command {
|
||||
* additional capabilities might be supported by userspace; these are
|
||||
* the 802.11 extended capabilities ("Extended Capabilities element")
|
||||
* and are in the same format as in the information element. See
|
||||
* 802.11-2012 8.4.2.29 for the defined fields.
|
||||
* 802.11-2012 8.4.2.29 for the defined fields. These are the default
|
||||
* extended capabilities to be used if the capabilities are not specified
|
||||
* for a specific interface type in iftype_ext_capab.
|
||||
* @extended_capabilities_mask: mask of the valid values
|
||||
* @extended_capabilities_len: length of the extended capabilities
|
||||
* @iftype_ext_capab: array of extended capabilities per interface type
|
||||
* @num_iftype_ext_capab: number of interface types for which extended
|
||||
* capabilities are specified separately.
|
||||
* @coalesce: packet coalescing support information
|
||||
*
|
||||
* @vendor_commands: array of vendor commands supported by the hardware
|
||||
@@ -3301,6 +3328,9 @@ struct wiphy {
|
||||
const u8 *extended_capabilities, *extended_capabilities_mask;
|
||||
u8 extended_capabilities_len;
|
||||
|
||||
const struct wiphy_iftype_ext_capab *iftype_ext_capab;
|
||||
unsigned int num_iftype_ext_capab;
|
||||
|
||||
/* If multiple wiphys are registered and you're handed e.g.
|
||||
* a regular netdev with assigned ieee80211_ptr, you won't
|
||||
* know whether it points to a wiphy your driver has registered
|
||||
@@ -4680,7 +4710,7 @@ static inline void cfg80211_testmode_event(struct sk_buff *skb, gfp_t gfp)
|
||||
void cfg80211_connect_bss(struct net_device *dev, const u8 *bssid,
|
||||
struct cfg80211_bss *bss, const u8 *req_ie,
|
||||
size_t req_ie_len, const u8 *resp_ie,
|
||||
size_t resp_ie_len, u16 status, gfp_t gfp);
|
||||
size_t resp_ie_len, int status, gfp_t gfp);
|
||||
|
||||
/**
|
||||
* cfg80211_connect_result - notify cfg80211 of connection result
|
||||
@@ -4709,6 +4739,29 @@ cfg80211_connect_result(struct net_device *dev, const u8 *bssid,
|
||||
resp_ie_len, status, gfp);
|
||||
}
|
||||
|
||||
/**
|
||||
* cfg80211_connect_timeout - notify cfg80211 of connection timeout
|
||||
*
|
||||
* @dev: network device
|
||||
* @bssid: the BSSID of the AP
|
||||
* @req_ie: association request IEs (maybe be %NULL)
|
||||
* @req_ie_len: association request IEs length
|
||||
* @gfp: allocation flags
|
||||
*
|
||||
* It should be called by the underlying driver whenever connect() has failed
|
||||
* in a sequence where no explicit authentication/association rejection was
|
||||
* received from the AP. This could happen, e.g., due to not being able to send
|
||||
* out the Authentication or Association Request frame or timing out while
|
||||
* waiting for the response.
|
||||
*/
|
||||
static inline void
|
||||
cfg80211_connect_timeout(struct net_device *dev, const u8 *bssid,
|
||||
const u8 *req_ie, size_t req_ie_len, gfp_t gfp)
|
||||
{
|
||||
cfg80211_connect_bss(dev, bssid, NULL, req_ie, req_ie_len, NULL, 0, -1,
|
||||
gfp);
|
||||
}
|
||||
|
||||
/**
|
||||
* cfg80211_roamed - notify cfg80211 of roaming
|
||||
*
|
||||
|
@@ -21,6 +21,7 @@
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/ieee80211.h>
|
||||
#include <net/cfg80211.h>
|
||||
#include <net/codel.h>
|
||||
#include <asm/unaligned.h>
|
||||
|
||||
/**
|
||||
@@ -895,7 +896,18 @@ struct ieee80211_tx_info {
|
||||
unsigned long jiffies;
|
||||
};
|
||||
/* NB: vif can be NULL for injected frames */
|
||||
struct ieee80211_vif *vif;
|
||||
union {
|
||||
/* NB: vif can be NULL for injected frames */
|
||||
struct ieee80211_vif *vif;
|
||||
|
||||
/* When packets are enqueued on txq it's easy
|
||||
* to re-construct the vif pointer. There's no
|
||||
* more space in tx_info so it can be used to
|
||||
* store the necessary enqueue time for packet
|
||||
* sojourn time computation.
|
||||
*/
|
||||
codel_time_t enqueue_time;
|
||||
};
|
||||
struct ieee80211_key_conf *hw_key;
|
||||
u32 flags;
|
||||
/* 4 bytes free */
|
||||
@@ -2147,9 +2159,6 @@ enum ieee80211_hw_flags {
|
||||
* @n_cipher_schemes: a size of an array of cipher schemes definitions.
|
||||
* @cipher_schemes: a pointer to an array of cipher scheme definitions
|
||||
* supported by HW.
|
||||
*
|
||||
* @txq_ac_max_pending: maximum number of frames per AC pending in all txq
|
||||
* entries for a vif.
|
||||
*/
|
||||
struct ieee80211_hw {
|
||||
struct ieee80211_conf conf;
|
||||
@@ -2180,7 +2189,6 @@ struct ieee80211_hw {
|
||||
u8 uapsd_max_sp_len;
|
||||
u8 n_cipher_schemes;
|
||||
const struct ieee80211_cipher_scheme *cipher_schemes;
|
||||
int txq_ac_max_pending;
|
||||
};
|
||||
|
||||
static inline bool _ieee80211_hw_check(struct ieee80211_hw *hw,
|
||||
|
Reference in New Issue
Block a user