Merge tag 'mac80211-next-for-davem-2019-04-26' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
Johannes Berg says: ==================== Various updates, notably: * extended key ID support (from 802.11-2016) * per-STA TX power control support * mac80211 TX performance improvements * HE (802.11ax) updates * mesh link probing support * enhancements of multi-BSSID support (also related to HE) * OWE userspace processing support ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -485,6 +485,7 @@ struct vif_params {
|
||||
* with the get_key() callback, must be in little endian,
|
||||
* length given by @seq_len.
|
||||
* @seq_len: length of @seq.
|
||||
* @mode: key install mode (RX_TX, NO_TX or SET_TX)
|
||||
*/
|
||||
struct key_params {
|
||||
const u8 *key;
|
||||
@@ -492,6 +493,7 @@ struct key_params {
|
||||
int key_len;
|
||||
int seq_len;
|
||||
u32 cipher;
|
||||
enum nl80211_key_mode mode;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -973,6 +975,27 @@ enum station_parameters_apply_mask {
|
||||
STATION_PARAM_APPLY_UAPSD = BIT(0),
|
||||
STATION_PARAM_APPLY_CAPABILITY = BIT(1),
|
||||
STATION_PARAM_APPLY_PLINK_STATE = BIT(2),
|
||||
STATION_PARAM_APPLY_STA_TXPOWER = BIT(3),
|
||||
};
|
||||
|
||||
/**
|
||||
* struct sta_txpwr - station txpower configuration
|
||||
*
|
||||
* Used to configure txpower for station.
|
||||
*
|
||||
* @power: tx power (in dBm) to be used for sending data traffic. If tx power
|
||||
* is not provided, the default per-interface tx power setting will be
|
||||
* overriding. Driver should be picking up the lowest tx power, either tx
|
||||
* power per-interface or per-station.
|
||||
* @type: In particular if TPC %type is NL80211_TX_POWER_LIMITED then tx power
|
||||
* will be less than or equal to specified from userspace, whereas if TPC
|
||||
* %type is NL80211_TX_POWER_AUTOMATIC then it indicates default tx power.
|
||||
* NL80211_TX_POWER_FIXED is not a valid configuration option for
|
||||
* per peer TPC.
|
||||
*/
|
||||
struct sta_txpwr {
|
||||
s16 power;
|
||||
enum nl80211_tx_power_setting type;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1047,6 +1070,7 @@ struct station_parameters {
|
||||
const struct ieee80211_he_cap_elem *he_capa;
|
||||
u8 he_capa_len;
|
||||
u16 airtime_weight;
|
||||
struct sta_txpwr txpwr;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1327,6 +1351,7 @@ struct cfg80211_tid_stats {
|
||||
* @fcs_err_count: number of packets (MPDUs) received from this station with
|
||||
* an FCS error. This counter should be incremented only when TA of the
|
||||
* received packet with an FCS error matches the peer MAC address.
|
||||
* @airtime_link_metric: mesh airtime link metric.
|
||||
*/
|
||||
struct station_info {
|
||||
u64 filled;
|
||||
@@ -1381,6 +1406,8 @@ struct station_info {
|
||||
|
||||
u32 rx_mpdu_count;
|
||||
u32 fcs_err_count;
|
||||
|
||||
u32 airtime_link_metric;
|
||||
};
|
||||
|
||||
#if IS_ENABLED(CONFIG_CFG80211)
|
||||
@@ -1832,11 +1859,19 @@ static inline void get_random_mask_addr(u8 *buf, const u8 *addr, const u8 *mask)
|
||||
* @bssid: BSSID to be matched; may be all-zero BSSID in case of SSID match
|
||||
* or no match (RSSI only)
|
||||
* @rssi_thold: don't report scan results below this threshold (in s32 dBm)
|
||||
* @per_band_rssi_thold: Minimum rssi threshold for each band to be applied
|
||||
* for filtering out scan results received. Drivers advertize this support
|
||||
* of band specific rssi based filtering through the feature capability
|
||||
* %NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD. These band
|
||||
* specific rssi thresholds take precedence over rssi_thold, if specified.
|
||||
* If not specified for any band, it will be assigned with rssi_thold of
|
||||
* corresponding matchset.
|
||||
*/
|
||||
struct cfg80211_match_set {
|
||||
struct cfg80211_ssid ssid;
|
||||
u8 bssid[ETH_ALEN];
|
||||
s32 rssi_thold;
|
||||
s32 per_band_rssi_thold[NUM_NL80211_BANDS];
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -3099,6 +3134,32 @@ struct cfg80211_pmsr_request {
|
||||
struct cfg80211_pmsr_request_peer peers[];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct cfg80211_update_owe_info - OWE Information
|
||||
*
|
||||
* This structure provides information needed for the drivers to offload OWE
|
||||
* (Opportunistic Wireless Encryption) processing to the user space.
|
||||
*
|
||||
* Commonly used across update_owe_info request and event interfaces.
|
||||
*
|
||||
* @peer: MAC address of the peer device for which the OWE processing
|
||||
* has to be done.
|
||||
* @status: status code, %WLAN_STATUS_SUCCESS for successful OWE info
|
||||
* processing, use %WLAN_STATUS_UNSPECIFIED_FAILURE if user space
|
||||
* cannot give you the real status code for failures. Used only for
|
||||
* OWE update request command interface (user space to driver).
|
||||
* @ie: IEs obtained from the peer or constructed by the user space. These are
|
||||
* the IEs of the remote peer in the event from the host driver and
|
||||
* the constructed IEs by the user space in the request interface.
|
||||
* @ie_len: Length of IEs in octets.
|
||||
*/
|
||||
struct cfg80211_update_owe_info {
|
||||
u8 peer[ETH_ALEN] __aligned(2);
|
||||
u16 status;
|
||||
const u8 *ie;
|
||||
size_t ie_len;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct cfg80211_ops - backend description for wireless configuration
|
||||
*
|
||||
@@ -3436,6 +3497,13 @@ struct cfg80211_pmsr_request {
|
||||
* Statistics should be cumulative, currently no way to reset is provided.
|
||||
* @start_pmsr: start peer measurement (e.g. FTM)
|
||||
* @abort_pmsr: abort peer measurement
|
||||
*
|
||||
* @update_owe_info: Provide updated OWE info to driver. Driver implementing SME
|
||||
* but offloading OWE processing to the user space will get the updated
|
||||
* DH IE through this interface.
|
||||
*
|
||||
* @probe_mesh_link: Probe direct Mesh peer's link quality by sending data frame
|
||||
* and overrule HWMP path selection algorithm.
|
||||
*/
|
||||
struct cfg80211_ops {
|
||||
int (*suspend)(struct wiphy *wiphy, struct cfg80211_wowlan *wow);
|
||||
@@ -3750,6 +3818,10 @@ struct cfg80211_ops {
|
||||
struct cfg80211_pmsr_request *request);
|
||||
void (*abort_pmsr)(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
struct cfg80211_pmsr_request *request);
|
||||
int (*update_owe_info)(struct wiphy *wiphy, struct net_device *dev,
|
||||
struct cfg80211_update_owe_info *owe_info);
|
||||
int (*probe_mesh_link)(struct wiphy *wiphy, struct net_device *dev,
|
||||
const u8 *buf, size_t len);
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -5491,6 +5563,28 @@ static inline void cfg80211_gen_new_bssid(const u8 *bssid, u8 max_bssid,
|
||||
u64_to_ether_addr(new_bssid_u64, new_bssid);
|
||||
}
|
||||
|
||||
/**
|
||||
* cfg80211_is_element_inherited - returns if element ID should be inherited
|
||||
* @element: element to check
|
||||
* @non_inherit_element: non inheritance element
|
||||
*/
|
||||
bool cfg80211_is_element_inherited(const struct element *element,
|
||||
const struct element *non_inherit_element);
|
||||
|
||||
/**
|
||||
* cfg80211_merge_profile - merges a MBSSID profile if it is split between IEs
|
||||
* @ie: ies
|
||||
* @ielen: length of IEs
|
||||
* @mbssid_elem: current MBSSID element
|
||||
* @sub_elem: current MBSSID subelement (profile)
|
||||
* @merged_ie: location of the merged profile
|
||||
* @max_copy_len: max merged profile length
|
||||
*/
|
||||
size_t cfg80211_merge_profile(const u8 *ie, size_t ielen,
|
||||
const struct element *mbssid_elem,
|
||||
const struct element *sub_elem,
|
||||
u8 *merged_ie, size_t max_copy_len);
|
||||
|
||||
/**
|
||||
* enum cfg80211_bss_frame_type - frame type that the BSS data came from
|
||||
* @CFG80211_BSS_FTYPE_UNKNOWN: driver doesn't know whether the data is
|
||||
@@ -7213,4 +7307,14 @@ void cfg80211_pmsr_complete(struct wireless_dev *wdev,
|
||||
#define wiphy_WARN(wiphy, format, args...) \
|
||||
WARN(1, "wiphy: %s\n" format, wiphy_name(wiphy), ##args);
|
||||
|
||||
/**
|
||||
* cfg80211_update_owe_info_event - Notify the peer's OWE info to user space
|
||||
* @netdev: network device
|
||||
* @owe_info: peer's owe info
|
||||
* @gfp: allocation flags
|
||||
*/
|
||||
void cfg80211_update_owe_info_event(struct net_device *netdev,
|
||||
struct cfg80211_update_owe_info *owe_info,
|
||||
gfp_t gfp);
|
||||
|
||||
#endif /* __NET_CFG80211_H */
|
||||
|
Reference in New Issue
Block a user