diff --git a/os_if/linux/qca_vendor.h b/os_if/linux/qca_vendor.h index 7bb93ff1be..059477929d 100644 --- a/os_if/linux/qca_vendor.h +++ b/os_if/linux/qca_vendor.h @@ -1056,171 +1056,6 @@ enum qca_wlan_vendor_attr_get_station_info { QCA_WLAN_VENDOR_ATTR_GET_STATION_INFO_AFTER_LAST - 1, }; -/** - * enum qca_nl80211_vendor_subcmds_index - vendor sub commands index - * - * @QCA_NL80211_VENDOR_SUBCMD_AVOID_FREQUENCY_INDEX: Avoid frequency - * @QCA_NL80211_VENDOR_SUBCMD_NAN_INDEX: Nan - * @QCA_NL80211_VENDOR_SUBCMD_STATS_EXT_INDEX: Ext stats - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_START_INDEX: Ext scan start - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_STOP_INDEX: Ext scan stop - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_CAPABILITIES_INDEX: Ext scan get - * capability - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_CACHED_RESULTS_INDEX: Ext scan get - * cached results - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SCAN_RESULTS_AVAILABLE_INDEX: Ext scan - * results available - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_FULL_SCAN_RESULT_INDEX: Ext scan full - * scan result - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SCAN_EVENT_INDEX: Ext scan event - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_AP_FOUND_INDEX: Ext scan hot list - * AP found - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_BSSID_HOTLIST_INDEX: Ext scan set - * bssid hotlist - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_BSSID_HOTLIST_INDEX: Ext scan reset - * bssid hotlist - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SIGNIFICANT_CHANGE_INDEX: Ext scan - * significant change - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_SIGNIFICANT_CHANGE_INDEX: Ext scan - * set significant change - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_SIGNIFICANT_CHANGE_INDEX: Ext scan - * reset significant change - * @QCA_NL80211_VENDOR_SUBCMD_LL_STATS_SET_INDEX: Set stats - * @QCA_NL80211_VENDOR_SUBCMD_LL_STATS_GET_INDEX: Get stats - * @QCA_NL80211_VENDOR_SUBCMD_LL_STATS_CLR_INDEX: Clear stats - * @QCA_NL80211_VENDOR_SUBCMD_LL_RADIO_STATS_INDEX: Radio stats - * @QCA_NL80211_VENDOR_SUBCMD_LL_IFACE_STATS_INDEX: Iface stats - * @QCA_NL80211_VENDOR_SUBCMD_LL_PEER_INFO_STATS_INDEX: Peer info stats - * @QCA_NL80211_VENDOR_SUBCMD_LL_STATS_EXT_INDEX: MAC layer counters - * @QCA_NL80211_VENDOR_SUBCMD_TDLS_STATE_CHANGE_INDEX: Ext tdls state change - * @QCA_NL80211_VENDOR_SUBCMD_DO_ACS_INDEX: ACS command - * @QCA_NL80211_VENDOR_SUBCMD_KEY_MGMT_ROAM_AUTH_INDEX: Pass Roam and Auth info - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_AP_LOST_INDEX: hotlist ap lost - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_NETWORK_FOUND_INDEX: - * pno network found index - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_PASSPOINT_NETWORK_FOUND_INDEX: - * passpoint match found index - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_SSID_HOTLIST_INDEX: - * set ssid hotlist index - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_SSID_HOTLIST_INDEX: - * reset ssid hotlist index - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_SSID_FOUND_INDEX: - * hotlist ssid found index - * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_SSID_LOST_INDEX: - * hotlist ssid lost index - * @QCA_NL80211_VENDOR_SUBCMD_DCC_STATS_EVENT_INDEX - * dcc stats event index - * @QCA_NL80211_VENDOR_SUBCMD_SCAN_INDEX: vendor scan index - * @QCA_NL80211_VENDOR_SUBCMD_SCAN_DONE_INDEX: - * vendor scan complete event index - * @QCA_NL80211_VENDOR_SUBCMD_GW_PARAM_CONFIG_INDEX: - * update gateway parameters index - * @QCA_NL80211_VENDOR_SUBCMD_INTEROP_ISSUES_AP_INDEX: - * update aps info which has interop issues events index - * @QCA_NL80211_VENDOR_SUBCMD_TSF_INDEX: TSF response events index - * @QCA_NL80211_VENDOR_SUBCMD_P2P_LO_EVENT_INDEX: - * P2P listen offload index - * @QCA_NL80211_VENDOR_SUBCMD_SAP_CONDITIONAL_CHAN_SWITCH_INDEX: SAP - * conditional channel switch index - * @QCA_NL80211_VENDOR_SUBCMD_NUD_STATS_GET_INDEX: NUD DEBUG Stats index - * @QCA_NL80211_VENDOR_SUBCMD_HANG_REASON_INDEX: hang event reason index - * @QCA_NL80211_VENDOR_SUBCMD_WLAN_MAC_INFO_INDEX: MAC mode info index - * @QCA_NL80211_VENDOR_SUBCMD_NAN_EXT_INDEX: NAN Extended index - * @QCA_NL80211_VENDOR_SUBCMD_BEACON_REPORTING_INDEX: Beacon reporting index - * @QCA_NL80211_VENDOR_SUBCMD_REQUEST_SAR_LIMITS_INDEX: Request SAR limit index - */ - -enum qca_nl80211_vendor_subcmds_index { - QCA_NL80211_VENDOR_SUBCMD_AVOID_FREQUENCY_INDEX = 0, - - QCA_NL80211_VENDOR_SUBCMD_NAN_INDEX, - -#ifdef WLAN_FEATURE_STATS_EXT - QCA_NL80211_VENDOR_SUBCMD_STATS_EXT_INDEX, -#endif /* WLAN_FEATURE_STATS_EXT */ - -#ifdef FEATURE_WLAN_EXTSCAN - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_START_INDEX, - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_STOP_INDEX, - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_CAPABILITIES_INDEX, - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_CACHED_RESULTS_INDEX, - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SCAN_RESULTS_AVAILABLE_INDEX, - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_FULL_SCAN_RESULT_INDEX, - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SCAN_EVENT_INDEX, - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_AP_FOUND_INDEX, - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_BSSID_HOTLIST_INDEX, - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_BSSID_HOTLIST_INDEX, - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SIGNIFICANT_CHANGE_INDEX, - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_SIGNIFICANT_CHANGE_INDEX, - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_SIGNIFICANT_CHANGE_INDEX, -#endif /* FEATURE_WLAN_EXTSCAN */ - -#ifdef WLAN_FEATURE_LINK_LAYER_STATS - QCA_NL80211_VENDOR_SUBCMD_LL_STATS_SET_INDEX, - QCA_NL80211_VENDOR_SUBCMD_LL_STATS_GET_INDEX, - QCA_NL80211_VENDOR_SUBCMD_LL_STATS_CLR_INDEX, - QCA_NL80211_VENDOR_SUBCMD_LL_RADIO_STATS_INDEX, - QCA_NL80211_VENDOR_SUBCMD_LL_IFACE_STATS_INDEX, - QCA_NL80211_VENDOR_SUBCMD_LL_PEER_INFO_STATS_INDEX, - QCA_NL80211_VENDOR_SUBCMD_LL_STATS_EXT_INDEX, -#endif /* WLAN_FEATURE_LINK_LAYER_STATS */ - - QCA_NL80211_VENDOR_SUBCMD_TDLS_STATE_CHANGE_INDEX, - QCA_NL80211_VENDOR_SUBCMD_DO_ACS_INDEX, -#ifdef WLAN_FEATURE_ROAM_OFFLOAD - QCA_NL80211_VENDOR_SUBCMD_KEY_MGMT_ROAM_AUTH_INDEX, -#endif - /* DFS */ - QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_STARTED_INDEX, - QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_FINISHED_INDEX, - QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_ABORTED_INDEX, - QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_NOP_FINISHED_INDEX, - QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_RADAR_DETECTED_INDEX, -#ifdef FEATURE_WLAN_EXTSCAN - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_AP_LOST_INDEX, - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_NETWORK_FOUND_INDEX, - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_PASSPOINT_NETWORK_FOUND_INDEX, - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_SSID_HOTLIST_INDEX, - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_SSID_HOTLIST_INDEX, - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_SSID_FOUND_INDEX, - QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_SSID_LOST_INDEX, -#endif /* FEATURE_WLAN_EXTSCAN */ - QCA_NL80211_VENDOR_SUBCMD_GET_WIFI_CONFIGURATION_INDEX, - QCA_NL80211_VENDOR_SUBCMD_MONITOR_RSSI_INDEX, -#ifdef WLAN_FEATURE_MEMDUMP - QCA_NL80211_VENDOR_SUBCMD_WIFI_LOGGER_MEMORY_DUMP_INDEX, -#endif /* WLAN_FEATURE_MEMDUMP */ - /* OCB events */ - QCA_NL80211_VENDOR_SUBCMD_DCC_STATS_EVENT_INDEX, - QCA_NL80211_VENDOR_SUBCMD_SCAN_INDEX, - QCA_NL80211_VENDOR_SUBCMD_SCAN_DONE_INDEX, - QCA_NL80211_VENDOR_SUBCMD_GW_PARAM_CONFIG_INDEX, - QCA_NL80211_VENDOR_SUBCMD_INTEROP_ISSUES_AP_INDEX, -#ifdef WLAN_FEATURE_TSF - QCA_NL80211_VENDOR_SUBCMD_TSF_INDEX, -#endif - QCA_NL80211_VENDOR_SUBCMD_NDP_INDEX, - QCA_NL80211_VENDOR_SUBCMD_P2P_LO_EVENT_INDEX, - QCA_NL80211_VENDOR_SUBCMD_SAP_CONDITIONAL_CHAN_SWITCH_INDEX, - QCA_NL80211_VENDOR_SUBCMD_UPDATE_EXTERNAL_ACS_CONFIG, - QCA_NL80211_VENDOR_SUBCMD_PWR_SAVE_FAIL_DETECTED_INDEX, - QCA_NL80211_VENDOR_SUBCMD_NUD_STATS_GET_INDEX, - QCA_NL80211_VENDOR_SUBCMD_HANG_REASON_INDEX, - QCA_NL80211_VENDOR_SUBCMD_WLAN_MAC_INFO_INDEX, - QCA_NL80211_VENDOR_SUBCMD_NAN_EXT_INDEX, - QCA_NL80211_VENDOR_SUBCMD_THROUGHPUT_CHANGE_EVENT_INDEX, - QCA_NL80211_VENDOR_SUBCMD_LINK_PROPERTIES_INDEX, - QCA_NL80211_VENDOR_SUBCMD_PEER_STATS_CACHE_FLUSH_INDEX, - QCA_NL80211_VENDOR_SUBCMD_BEACON_REPORTING_INDEX, - QCA_NL80211_VENDOR_SUBCMD_ROAM_INDEX, - QCA_NL80211_VENDOR_SUBCMD_OEM_DATA_INDEX, - QCA_NL80211_VENDOR_SUBCMD_REQUEST_SAR_LIMITS_INDEX, - QCA_NL80211_VENDOR_SUBCMD_UPDATE_STA_INFO_INDEX, - QCA_NL80211_VENDOR_SUBCMD_UPDATE_SSID_INDEX, - QCA_NL80211_VENDOR_SUBCMD_WIFI_FW_STATS_INDEX, - QCA_NL80211_VENDOR_SUBCMD_MBSSID_TX_VDEV_STATUS_INDEX, -}; - /** * enum qca_wlan_vendor_attr_tdls_enable - TDLS enable attribute * @@ -7543,42 +7378,6 @@ enum qca_wlan_vendor_attr_mac_info { }; -#if !(defined (SUPPORT_WDEV_CFG80211_VENDOR_EVENT_ALLOC)) && \ - (LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0)) && \ - !(defined(WITH_BACKPORTS)) - -static inline struct sk_buff * -backported_cfg80211_vendor_event_alloc(struct wiphy *wiphy, - struct wireless_dev *wdev, - int approxlen, - int event_idx, gfp_t gfp) -{ - struct sk_buff *skb; - - skb = cfg80211_vendor_event_alloc(wiphy, approxlen, event_idx, gfp); - - if (skb && wdev) { - struct nlattr *attr; - u32 ifindex = wdev->netdev->ifindex; - - nla_nest_cancel(skb, ((void **)skb->cb)[2]); - if (nla_put_u32(skb, NL80211_ATTR_IFINDEX, ifindex)) - goto nla_fail; - - attr = nla_nest_start(skb, NL80211_ATTR_VENDOR_DATA); - ((void **)skb->cb)[2] = attr; - } - - return skb; - -nla_fail: - kfree_skb(skb); - - return NULL; -} -#define cfg80211_vendor_event_alloc backported_cfg80211_vendor_event_alloc -#endif - /** * enum he_fragmentation_val - HE fragmentation support values * Indicates level of dynamic fragmentation that is supported by diff --git a/os_if/linux/wlan_cfg80211.h b/os_if/linux/wlan_cfg80211.h index 83792921ee..32f3152ae6 100644 --- a/os_if/linux/wlan_cfg80211.h +++ b/os_if/linux/wlan_cfg80211.h @@ -61,6 +61,213 @@ #define osif_enter_dev(dev) \ QDF_TRACE_ENTER(QDF_MODULE_ID_OS_IF, "enter(%s)", (dev)->name) +/** + * enum qca_nl80211_vendor_subcmds_index - vendor sub commands index + * + * @QCA_NL80211_VENDOR_SUBCMD_AVOID_FREQUENCY_INDEX: Avoid frequency + * @QCA_NL80211_VENDOR_SUBCMD_NAN_INDEX: Nan + * @QCA_NL80211_VENDOR_SUBCMD_STATS_EXT_INDEX: Ext stats + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_START_INDEX: Ext scan start + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_STOP_INDEX: Ext scan stop + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_CAPABILITIES_INDEX: Ext scan get + * capability + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_CACHED_RESULTS_INDEX: Ext scan get + * cached results + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SCAN_RESULTS_AVAILABLE_INDEX: Ext scan + * results available + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_FULL_SCAN_RESULT_INDEX: Ext scan full + * scan result + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SCAN_EVENT_INDEX: Ext scan event + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_AP_FOUND_INDEX: Ext scan hot list + * AP found + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_BSSID_HOTLIST_INDEX: Ext scan set + * bssid hotlist + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_BSSID_HOTLIST_INDEX: Ext scan reset + * bssid hotlist + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SIGNIFICANT_CHANGE_INDEX: Ext scan + * significant change + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_SIGNIFICANT_CHANGE_INDEX: Ext scan + * set significant change + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_SIGNIFICANT_CHANGE_INDEX: Ext scan + * reset significant change + * @QCA_NL80211_VENDOR_SUBCMD_LL_STATS_SET_INDEX: Set stats + * @QCA_NL80211_VENDOR_SUBCMD_LL_STATS_GET_INDEX: Get stats + * @QCA_NL80211_VENDOR_SUBCMD_LL_STATS_CLR_INDEX: Clear stats + * @QCA_NL80211_VENDOR_SUBCMD_LL_RADIO_STATS_INDEX: Radio stats + * @QCA_NL80211_VENDOR_SUBCMD_LL_IFACE_STATS_INDEX: Iface stats + * @QCA_NL80211_VENDOR_SUBCMD_LL_PEER_INFO_STATS_INDEX: Peer info stats + * @QCA_NL80211_VENDOR_SUBCMD_LL_STATS_EXT_INDEX: MAC layer counters + * @QCA_NL80211_VENDOR_SUBCMD_TDLS_STATE_CHANGE_INDEX: Ext tdls state change + * @QCA_NL80211_VENDOR_SUBCMD_DO_ACS_INDEX: ACS command + * @QCA_NL80211_VENDOR_SUBCMD_KEY_MGMT_ROAM_AUTH_INDEX: Pass Roam and Auth info + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_AP_LOST_INDEX: hotlist ap lost + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_NETWORK_FOUND_INDEX: + * pno network found index + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_PASSPOINT_NETWORK_FOUND_INDEX: + * passpoint match found index + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_SSID_HOTLIST_INDEX: + * set ssid hotlist index + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_SSID_HOTLIST_INDEX: + * reset ssid hotlist index + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_SSID_FOUND_INDEX: + * hotlist ssid found index + * @QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_SSID_LOST_INDEX: + * hotlist ssid lost index + * @QCA_NL80211_VENDOR_SUBCMD_DCC_STATS_EVENT_INDEX + * dcc stats event index + * @QCA_NL80211_VENDOR_SUBCMD_SCAN_INDEX: vendor scan index + * @QCA_NL80211_VENDOR_SUBCMD_SCAN_DONE_INDEX: + * vendor scan complete event index + * @QCA_NL80211_VENDOR_SUBCMD_GW_PARAM_CONFIG_INDEX: + * update gateway parameters index + * @QCA_NL80211_VENDOR_SUBCMD_INTEROP_ISSUES_AP_INDEX: + * update aps info which has interop issues events index + * @QCA_NL80211_VENDOR_SUBCMD_TSF_INDEX: TSF response events index + * @QCA_NL80211_VENDOR_SUBCMD_P2P_LO_EVENT_INDEX: + * P2P listen offload index + * @QCA_NL80211_VENDOR_SUBCMD_SAP_CONDITIONAL_CHAN_SWITCH_INDEX: SAP + * conditional channel switch index + * @QCA_NL80211_VENDOR_SUBCMD_NUD_STATS_GET_INDEX: NUD DEBUG Stats index + * @QCA_NL80211_VENDOR_SUBCMD_HANG_REASON_INDEX: hang event reason index + * @QCA_NL80211_VENDOR_SUBCMD_WLAN_MAC_INFO_INDEX: MAC mode info index + * @QCA_NL80211_VENDOR_SUBCMD_NAN_EXT_INDEX: NAN Extended index + * @QCA_NL80211_VENDOR_SUBCMD_BEACON_REPORTING_INDEX: Beacon reporting index + * @QCA_NL80211_VENDOR_SUBCMD_REQUEST_SAR_LIMITS_INDEX: Request SAR limit index + * @QCA_NL80211_VENDOR_SUBCMD_UPDATE_STA_INFO_INDEX: Update STA info index + * @QCA_NL80211_VENDOR_SUBCMD_UPDATE_SSID_INDEX: Update SSID index + * @QCA_NL80211_VENDOR_SUBCMD_WIFI_FW_STATS_INDEX: Wifi FW stats index + * @QCA_NL80211_VENDOR_SUBCMD_MBSSID_TX_VDEV_STATUS_INDEX: + * MBSSID TX VDEV status index + */ + +enum qca_nl80211_vendor_subcmds_index { + QCA_NL80211_VENDOR_SUBCMD_AVOID_FREQUENCY_INDEX = 0, + + QCA_NL80211_VENDOR_SUBCMD_NAN_INDEX, + +#ifdef WLAN_FEATURE_STATS_EXT + QCA_NL80211_VENDOR_SUBCMD_STATS_EXT_INDEX, +#endif /* WLAN_FEATURE_STATS_EXT */ + +#ifdef FEATURE_WLAN_EXTSCAN + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_START_INDEX, + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_STOP_INDEX, + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_CAPABILITIES_INDEX, + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_GET_CACHED_RESULTS_INDEX, + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SCAN_RESULTS_AVAILABLE_INDEX, + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_FULL_SCAN_RESULT_INDEX, + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SCAN_EVENT_INDEX, + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_AP_FOUND_INDEX, + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_BSSID_HOTLIST_INDEX, + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_BSSID_HOTLIST_INDEX, + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SIGNIFICANT_CHANGE_INDEX, + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_SIGNIFICANT_CHANGE_INDEX, + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_SIGNIFICANT_CHANGE_INDEX, +#endif /* FEATURE_WLAN_EXTSCAN */ + +#ifdef WLAN_FEATURE_LINK_LAYER_STATS + QCA_NL80211_VENDOR_SUBCMD_LL_STATS_SET_INDEX, + QCA_NL80211_VENDOR_SUBCMD_LL_STATS_GET_INDEX, + QCA_NL80211_VENDOR_SUBCMD_LL_STATS_CLR_INDEX, + QCA_NL80211_VENDOR_SUBCMD_LL_RADIO_STATS_INDEX, + QCA_NL80211_VENDOR_SUBCMD_LL_IFACE_STATS_INDEX, + QCA_NL80211_VENDOR_SUBCMD_LL_PEER_INFO_STATS_INDEX, + QCA_NL80211_VENDOR_SUBCMD_LL_STATS_EXT_INDEX, +#endif /* WLAN_FEATURE_LINK_LAYER_STATS */ + + QCA_NL80211_VENDOR_SUBCMD_TDLS_STATE_CHANGE_INDEX, + QCA_NL80211_VENDOR_SUBCMD_DO_ACS_INDEX, +#ifdef WLAN_FEATURE_ROAM_OFFLOAD + QCA_NL80211_VENDOR_SUBCMD_KEY_MGMT_ROAM_AUTH_INDEX, +#endif + /* DFS */ + QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_STARTED_INDEX, + QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_FINISHED_INDEX, + QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_ABORTED_INDEX, + QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_CAC_NOP_FINISHED_INDEX, + QCA_NL80211_VENDOR_SUBCMD_DFS_OFFLOAD_RADAR_DETECTED_INDEX, +#ifdef FEATURE_WLAN_EXTSCAN + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_AP_LOST_INDEX, + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_NETWORK_FOUND_INDEX, + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_PNO_PASSPOINT_NETWORK_FOUND_INDEX, + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_SET_SSID_HOTLIST_INDEX, + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_RESET_SSID_HOTLIST_INDEX, + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_SSID_FOUND_INDEX, + QCA_NL80211_VENDOR_SUBCMD_EXTSCAN_HOTLIST_SSID_LOST_INDEX, +#endif /* FEATURE_WLAN_EXTSCAN */ + QCA_NL80211_VENDOR_SUBCMD_GET_WIFI_CONFIGURATION_INDEX, + QCA_NL80211_VENDOR_SUBCMD_MONITOR_RSSI_INDEX, +#ifdef WLAN_FEATURE_MEMDUMP + QCA_NL80211_VENDOR_SUBCMD_WIFI_LOGGER_MEMORY_DUMP_INDEX, +#endif /* WLAN_FEATURE_MEMDUMP */ + /* OCB events */ + QCA_NL80211_VENDOR_SUBCMD_DCC_STATS_EVENT_INDEX, + QCA_NL80211_VENDOR_SUBCMD_SCAN_INDEX, + QCA_NL80211_VENDOR_SUBCMD_SCAN_DONE_INDEX, + QCA_NL80211_VENDOR_SUBCMD_GW_PARAM_CONFIG_INDEX, + QCA_NL80211_VENDOR_SUBCMD_INTEROP_ISSUES_AP_INDEX, +#ifdef WLAN_FEATURE_TSF + QCA_NL80211_VENDOR_SUBCMD_TSF_INDEX, +#endif + QCA_NL80211_VENDOR_SUBCMD_NDP_INDEX, + QCA_NL80211_VENDOR_SUBCMD_P2P_LO_EVENT_INDEX, + QCA_NL80211_VENDOR_SUBCMD_SAP_CONDITIONAL_CHAN_SWITCH_INDEX, + QCA_NL80211_VENDOR_SUBCMD_UPDATE_EXTERNAL_ACS_CONFIG, + QCA_NL80211_VENDOR_SUBCMD_PWR_SAVE_FAIL_DETECTED_INDEX, + QCA_NL80211_VENDOR_SUBCMD_NUD_STATS_GET_INDEX, + QCA_NL80211_VENDOR_SUBCMD_HANG_REASON_INDEX, + QCA_NL80211_VENDOR_SUBCMD_WLAN_MAC_INFO_INDEX, + QCA_NL80211_VENDOR_SUBCMD_NAN_EXT_INDEX, + QCA_NL80211_VENDOR_SUBCMD_THROUGHPUT_CHANGE_EVENT_INDEX, + QCA_NL80211_VENDOR_SUBCMD_LINK_PROPERTIES_INDEX, + QCA_NL80211_VENDOR_SUBCMD_PEER_STATS_CACHE_FLUSH_INDEX, + QCA_NL80211_VENDOR_SUBCMD_BEACON_REPORTING_INDEX, + QCA_NL80211_VENDOR_SUBCMD_ROAM_INDEX, + QCA_NL80211_VENDOR_SUBCMD_OEM_DATA_INDEX, + QCA_NL80211_VENDOR_SUBCMD_REQUEST_SAR_LIMITS_INDEX, + QCA_NL80211_VENDOR_SUBCMD_UPDATE_STA_INFO_INDEX, + QCA_NL80211_VENDOR_SUBCMD_UPDATE_SSID_INDEX, + QCA_NL80211_VENDOR_SUBCMD_WIFI_FW_STATS_INDEX, + QCA_NL80211_VENDOR_SUBCMD_MBSSID_TX_VDEV_STATUS_INDEX, +}; + +#if !defined(SUPPORT_WDEV_CFG80211_VENDOR_EVENT_ALLOC) && \ + (LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0)) && \ + !defined(WITH_BACKPORTS) + +static inline struct sk_buff * +backported_cfg80211_vendor_event_alloc(struct wiphy *wiphy, + struct wireless_dev *wdev, + int approxlen, + int event_idx, gfp_t gfp) +{ + struct sk_buff *skb; + + skb = cfg80211_vendor_event_alloc(wiphy, approxlen, event_idx, gfp); + + if (skb && wdev) { + struct nlattr *attr; + u32 ifindex = wdev->netdev->ifindex; + + nla_nest_cancel(skb, ((void **)skb->cb)[2]); + if (nla_put_u32(skb, NL80211_ATTR_IFINDEX, ifindex)) + goto nla_fail; + + attr = nla_nest_start(skb, NL80211_ATTR_VENDOR_DATA); + ((void **)skb->cb)[2] = attr; + } + + return skb; + +nla_fail: + kfree_skb(skb); + + return NULL; +} + +#define cfg80211_vendor_event_alloc backported_cfg80211_vendor_event_alloc +#endif + /* For kernel version >= 5.2, driver needs to provide policy */ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 2, 0)) #define vendor_command_policy(__policy, __maxattr) \