aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/nl80211.h46
-rw-r--r--include/net/cfg80211.h19
2 files changed, 65 insertions, 0 deletions
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h
index 28ba20fda3e2..89947597b9ce 100644
--- a/include/linux/nl80211.h
+++ b/include/linux/nl80211.h
@@ -323,6 +323,12 @@
323 * the TX command and %NL80211_ATTR_FRAME includes the contents of the 323 * the TX command and %NL80211_ATTR_FRAME includes the contents of the
324 * frame. %NL80211_ATTR_ACK flag is included if the recipient acknowledged 324 * frame. %NL80211_ATTR_ACK flag is included if the recipient acknowledged
325 * the frame. 325 * the frame.
326 * @NL80211_CMD_SET_CQM: Connection quality monitor configuration. This command
327 * is used to configure connection quality monitoring notification trigger
328 * levels.
329 * @NL80211_CMD_NOTIFY_CQM: Connection quality monitor notification. This
330 * command is used as an event to indicate the that a trigger level was
331 * reached.
326 * 332 *
327 * @NL80211_CMD_MAX: highest used command number 333 * @NL80211_CMD_MAX: highest used command number
328 * @__NL80211_CMD_AFTER_LAST: internal use 334 * @__NL80211_CMD_AFTER_LAST: internal use
@@ -419,6 +425,9 @@ enum nl80211_commands {
419 NL80211_CMD_SET_POWER_SAVE, 425 NL80211_CMD_SET_POWER_SAVE,
420 NL80211_CMD_GET_POWER_SAVE, 426 NL80211_CMD_GET_POWER_SAVE,
421 427
428 NL80211_CMD_SET_CQM,
429 NL80211_CMD_NOTIFY_CQM,
430
422 /* add new commands above here */ 431 /* add new commands above here */
423 432
424 /* used to define NL80211_CMD_MAX below */ 433 /* used to define NL80211_CMD_MAX below */
@@ -691,6 +700,9 @@ enum nl80211_commands {
691 * @NL80211_ATTR_ACK: Flag attribute indicating that the frame was 700 * @NL80211_ATTR_ACK: Flag attribute indicating that the frame was
692 * acknowledged by the recipient. 701 * acknowledged by the recipient.
693 * 702 *
703 * @NL80211_ATTR_CQM: connection quality monitor configuration in a
704 * nested attribute with %NL80211_ATTR_CQM_* sub-attributes.
705 *
694 * @NL80211_ATTR_MAX: highest attribute number currently defined 706 * @NL80211_ATTR_MAX: highest attribute number currently defined
695 * @__NL80211_ATTR_AFTER_LAST: internal use 707 * @__NL80211_ATTR_AFTER_LAST: internal use
696 */ 708 */
@@ -842,6 +854,8 @@ enum nl80211_attrs {
842 854
843 NL80211_ATTR_PS_STATE, 855 NL80211_ATTR_PS_STATE,
844 856
857 NL80211_ATTR_CQM,
858
845 /* add attributes here, update the policy in nl80211.c */ 859 /* add attributes here, update the policy in nl80211.c */
846 860
847 __NL80211_ATTR_AFTER_LAST, 861 __NL80211_ATTR_AFTER_LAST,
@@ -1583,4 +1597,36 @@ enum nl80211_ps_state {
1583 NL80211_PS_ENABLED, 1597 NL80211_PS_ENABLED,
1584}; 1598};
1585 1599
1600/**
1601 * enum nl80211_attr_cqm - connection quality monitor attributes
1602 * @__NL80211_ATTR_CQM_INVALID: invalid
1603 * @NL80211_ATTR_CQM_RSSI_THOLD: RSSI threshold in dBm (zero to disable)
1604 * @NL80211_ATTR_CQM_RSSI_HYST: RSSI hysteresis in dBm
1605 * @NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT: RSSI threshold event
1606 * @__NL80211_ATTR_CQM_AFTER_LAST: internal
1607 * @NL80211_ATTR_CQM_MAX: highest key attribute
1608 */
1609enum nl80211_attr_cqm {
1610 __NL80211_ATTR_CQM_INVALID,
1611 NL80211_ATTR_CQM_RSSI_THOLD,
1612 NL80211_ATTR_CQM_RSSI_HYST,
1613 NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT,
1614
1615 /* keep last */
1616 __NL80211_ATTR_CQM_AFTER_LAST,
1617 NL80211_ATTR_CQM_MAX = __NL80211_ATTR_CQM_AFTER_LAST - 1
1618};
1619
1620/**
1621 * enum nl80211_cqm_rssi_threshold_event - RSSI threshold event
1622 * @NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW - The RSSI level is lower than the
1623 * configured threshold
1624 * @NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH - The RSSI is higher than the
1625 * configured threshold
1626 */
1627enum nl80211_cqm_rssi_threshold_event {
1628 NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW,
1629 NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH,
1630};
1631
1586#endif /* __LINUX_NL80211_H */ 1632#endif /* __LINUX_NL80211_H */
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 3d134a1fb96b..868cfd3b9724 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1007,6 +1007,7 @@ struct cfg80211_pmksa {
1007 * RSN IE. It allows for faster roaming between WPA2 BSSIDs. 1007 * RSN IE. It allows for faster roaming between WPA2 BSSIDs.
1008 * @del_pmksa: Delete a cached PMKID. 1008 * @del_pmksa: Delete a cached PMKID.
1009 * @flush_pmksa: Flush all cached PMKIDs. 1009 * @flush_pmksa: Flush all cached PMKIDs.
1010 * @set_cqm_rssi_config: Configure connection quality monitor RSSI threshold.
1010 * 1011 *
1011 */ 1012 */
1012struct cfg80211_ops { 1013struct cfg80211_ops {
@@ -1152,6 +1153,10 @@ struct cfg80211_ops {
1152 1153
1153 int (*set_power_mgmt)(struct wiphy *wiphy, struct net_device *dev, 1154 int (*set_power_mgmt)(struct wiphy *wiphy, struct net_device *dev,
1154 bool enabled, int timeout); 1155 bool enabled, int timeout);
1156
1157 int (*set_cqm_rssi_config)(struct wiphy *wiphy,
1158 struct net_device *dev,
1159 s32 rssi_thold, u32 rssi_hyst);
1155}; 1160};
1156 1161
1157/* 1162/*
@@ -2337,4 +2342,18 @@ bool cfg80211_rx_action(struct net_device *dev, int freq, const u8 *buf,
2337void cfg80211_action_tx_status(struct net_device *dev, u64 cookie, 2342void cfg80211_action_tx_status(struct net_device *dev, u64 cookie,
2338 const u8 *buf, size_t len, bool ack, gfp_t gfp); 2343 const u8 *buf, size_t len, bool ack, gfp_t gfp);
2339 2344
2345
2346/**
2347 * cfg80211_cqm_rssi_notify - connection quality monitoring rssi event
2348 * @dev: network device
2349 * @rssi_event: the triggered RSSI event
2350 * @gfp: context flags
2351 *
2352 * This function is called when a configured connection quality monitoring
2353 * rssi threshold reached event occurs.
2354 */
2355void cfg80211_cqm_rssi_notify(struct net_device *dev,
2356 enum nl80211_cqm_rssi_threshold_event rssi_event,
2357 gfp_t gfp);
2358
2340#endif /* __NET_CFG80211_H */ 2359#endif /* __NET_CFG80211_H */