]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Add new QCA vendor event for link state change
authorSurya Prakash Sivaraj <quic_suryapra@quicinc.com>
Fri, 13 Jun 2025 15:31:31 +0000 (21:01 +0530)
committerJouni Malinen <j@w1.fi>
Fri, 27 Jun 2025 08:27:47 +0000 (11:27 +0300)
Add QCA_NL80211_VENDOR_SUBCMD_LINK_STATE_CHANGE event to notify the
current active and inactive links among the affiliated MLO links. This
event is sent to userspace when there is a change in the status of the
links along with the reason for the link status change.

Signed-off-by: Surya Prakash Sivaraj <quic_suryapra@quicinc.com>
src/common/qca-vendor.h

index 4693e03286e5c5c43c9b6f4df926eca4b611fc9c..9c558e807c13b467f3064c229bbd7ba3c3524580 100644 (file)
@@ -1403,6 +1403,13 @@ enum qca_radiotap_vendor_ids {
  *
  *     The attributes used for the event reply are defined in
  *     enum qca_wlan_vendor_attr_wlan_telemetry_event_reply.
+ *
+ * @QCA_NL80211_VENDOR_SUBCMD_LINK_STATE_CHANGE: Vendor subcommand used to
+ *     notify the userspace about the current active and inactive links
+ *     among the affiliated MLO links, whenever there is a change in the
+ *     state of any of the links along with the reason.
+ *     The attributes used in this event are defined in the
+ *     enum qca_wlan_vendor_attr_link_state_change.
  */
 enum qca_nl80211_vendor_subcmds {
        QCA_NL80211_VENDOR_SUBCMD_UNSPEC = 0,
@@ -1650,6 +1657,7 @@ enum qca_nl80211_vendor_subcmds {
        QCA_NL80211_VENDOR_SUBCMD_P2P_SET_NOA = 261,
        QCA_NL80211_VENDOR_SUBCMD_WLAN_TELEMETRY_WIPHY = 262,
        QCA_NL80211_VENDOR_SUBCMD_WLAN_TELEMETRY_WDEV = 263,
+       QCA_NL80211_VENDOR_SUBCMD_LINK_STATE_CHANGE = 264,
 };
 
 /* Compatibility defines for previously used subcmd names.
@@ -20055,4 +20063,76 @@ enum qca_wlan_vendor_attr_wlan_telemetry_reo_error_types {
        QCA_WLAN_VENDOR_ATTR_TELEMETRY_REO_ERR_AFTER_LAST - 1,
 };
 
+/**
+ * enum qca_wlan_vendor_link_state_change_Reason - Defines the different types
+ * of reasons for the link state change. Will be used with
+ * QCA_WLAN_VENDOR_ATTR_LINK_STATE_CHANGE_REASON attribute.
+ *
+ * @QCA_WLAN_VENDOR_STATE_CHANGE_REASON_VDEV_UP: The link state change reported
+ * first time after the STA connection/interface up.
+ * @QCA_WLAN_VENDOR_STATE_CHANGE_REASON_LOW_RSSI: The link state change is due
+ * to low RSSI.
+ * @QCA_WLAN_VENDOR_STATE_CHANGE_REASON_BMISS: The link state change is due to
+ * beacon miss.
+ * @QCA_WLAN_VENDOR_STATE_CHANGE_REASON_LOW_QUALITY: The link state change is
+ * due to low link quality.
+ * @QCA_WLAN_VENDOR_STATE_CHANGE_REASON_CAPACITY: The link state change is due
+ * to congestion of the links.
+ * @QCA_WLAN_VENDOR_STATE_CHANGE_REASON_ULL_MODE: The link state change is due
+ * to ultra low latency mode.
+ * @QCA_WLAN_VENDOR_STATE_CHANGE_REASON_T2LM: The link state change is due to
+ * TID_TO_LINK mapping change.
+ * @QCA_WLAN_VENDOR_STATE_CHANGE_REASON_FORCED: The link state change is due to
+ * user forced enable/disable.
+ * @QCA_WLAN_VENDOR_STATE_CHANGE_REASON_BT_STATUS: The link state change is due
+ * to BT status.
+ * @QCA_WLAN_VENDOR_STATE_CHANGE_REASON_UNKNOWN: The link state change is due
+ * to unknown reason.
+ */
+enum qca_wlan_vendor_link_state_change_reason {
+       QCA_WLAN_VENDOR_STATE_CHANGE_REASON_VDEV_UP = 0,
+       QCA_WLAN_VENDOR_STATE_CHANGE_REASON_LOW_RSSI = 1,
+       QCA_WLAN_VENDOR_STATE_CHANGE_REASON_BMISS = 2,
+       QCA_WLAN_VENDOR_STATE_CHANGE_REASON_LOW_QUALITY = 3,
+       QCA_WLAN_VENDOR_STATE_CHANGE_REASON_CAPACITY = 4,
+       QCA_WLAN_VENDOR_STATE_CHANGE_REASON_ULL_MODE = 5,
+       QCA_WLAN_VENDOR_STATE_CHANGE_REASON_T2LM = 6,
+       QCA_WLAN_VENDOR_STATE_CHANGE_REASON_FORCED = 7,
+       QCA_WLAN_VENDOR_STATE_CHANGE_REASON_BT_STATUS = 8,
+       QCA_WLAN_VENDOR_STATE_CHANGE_REASON_UNKNOWN = 9,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_link_state_change - Attributes used by
+ * QCA_NL80211_VENDOR_SUBCMD_LINK_STATE_CHANGE vendor command.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_LINK_STATE_CHANGE_PEER_MLD_MAC: 6 byte MAC address.
+ * Indicates the associated AP MLD MAC address for the non-AP MLD interface.
+ * Indicates the peer MLD MAC address for the AP MLD interface
+ *
+ * @QCA_WLAN_VENDOR_ATTR_LINK_STATE_CHANGE_REASON: u32 attribute. Indicates the
+ * reason for the link state change triggering the event.
+ * See enum qca_wlan_vendor_link_state_change_reason for the possible
+ * reasons.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_LINK_STATE_CHANGE_ACTIVE_LINK_BITMAP: u32 attribute.
+ * Indicates the link ID bitmap of the current active links among the affliated
+ * MLO links.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_LINK_STATE_CHANGE_INACTIVE_LINK_BITMAP: u32 attribute.
+ * Indicates the link ID bitmap of the current inactive links among the
+ * affiliated MLO links.
+ */
+enum qca_wlan_vendor_attr_link_state_change {
+       QCA_WLAN_VENDOR_ATTR_LINK_STATE_CHANGE_INVALID = 0,
+       QCA_WLAN_VENDOR_ATTR_LINK_STATE_CHANGE_PEER_MLD_MAC = 1,
+       QCA_WLAN_VENDOR_ATTR_LINK_STATE_CHANGE_REASON = 2,
+       QCA_WLAN_VENDOR_ATTR_LINK_STATE_CHANGE_ACTIVE_LINK_BITMAP = 3,
+       QCA_WLAN_VENDOR_ATTR_LINK_STATE_CHANGE_INACTIVE_LINK_BITMAP = 4,
+       /* keep last */
+       QCA_WLAN_VENDOR_ATTR_LINK_STATE_CHANGE_AFTER_LAST,
+       QCA_WLAN_VENDOR_ATTR_LINK_STATE_CHANGE_MAX =
+       QCA_WLAN_VENDOR_ATTR_LINK_STATE_CHANGE_AFTER_LAST - 1,
+};
+
 #endif /* QCA_VENDOR_H */