From ca1b2d06e229f4726085dca3facc9f3a66a8340a Mon Sep 17 00:00:00 2001 From: Nitesh Shah Date: Thu, 21 Jul 2016 12:59:24 +0530 Subject: [PATCH] qcacld-3.0: CL 1594228 - update fw common interface files Propagation from qcacld-2.0 to qcacld-3.0 Define mechanism for WMI_SERVICE flags beyond 128. Change-Id: I0832f646e76d3e883a36ce3d5d6a63ad7bf83a4c CRs-fixed: 865207 --- target/inc/wmi_services.h | 380 +++++++++++++++++++++++++------------- target/inc/wmi_tlv_defs.h | 7 + target/inc/wmi_unified.h | 27 +++ target/inc/wmi_version.h | 2 +- 4 files changed, 283 insertions(+), 133 deletions(-) diff --git a/target/inc/wmi_services.h b/target/inc/wmi_services.h index 7d89b6308e..918c6bc733 100644 --- a/target/inc/wmi_services.h +++ b/target/inc/wmi_services.h @@ -39,157 +39,217 @@ extern "C" { #endif + + typedef enum { - WMI_SERVICE_BEACON_OFFLOAD = 0, /* beacon offload */ - WMI_SERVICE_SCAN_OFFLOAD, /* scan offload */ - WMI_SERVICE_ROAM_SCAN_OFFLOAD, /* roam scan offload */ - WMI_SERVICE_BCN_MISS_OFFLOAD, /* beacon miss offload */ - WMI_SERVICE_STA_PWRSAVE, /* fake sleep + basic power save */ - WMI_SERVICE_STA_ADVANCED_PWRSAVE, /* uapsd, pspoll, force sleep */ - WMI_SERVICE_AP_UAPSD, /* uapsd on AP */ - WMI_SERVICE_AP_DFS, /* DFS on AP */ - WMI_SERVICE_11AC, /* supports 11ac */ - WMI_SERVICE_BLOCKACK, /* Supports triggering ADDBA/DELBA from host */ - WMI_SERVICE_PHYERR, /* PHY error */ - WMI_SERVICE_BCN_FILTER, /* Beacon filter support */ - WMI_SERVICE_RTT, /* RTT (round trip time) support */ - WMI_SERVICE_WOW, /* WOW Support */ - WMI_SERVICE_RATECTRL_CACHE, /* Rate-control caching */ - WMI_SERVICE_IRAM_TIDS, /* TIDs in IRAM */ - WMI_SERVICE_ARPNS_OFFLOAD, /* ARP NS Offload support for STA vdev*/ - WMI_SERVICE_NLO, /* Network list offload service */ - WMI_SERVICE_GTK_OFFLOAD, /* GTK offload */ - WMI_SERVICE_SCAN_SCH, /* Scan Scheduler Service */ - WMI_SERVICE_CSA_OFFLOAD, /* CSA offload service */ - WMI_SERVICE_CHATTER, /* Chatter service */ - WMI_SERVICE_COEX_FREQAVOID, /* FW report freq range to avoid */ - WMI_SERVICE_PACKET_POWER_SAVE, /* packet power save service */ - WMI_SERVICE_FORCE_FW_HANG, /* Service to test the firmware recovery mechanism */ - WMI_SERVICE_GPIO, /* GPIO service */ - WMI_SERVICE_STA_DTIM_PS_MODULATED_DTIM, /* Modulated DTIM support */ - WMI_STA_UAPSD_BASIC_AUTO_TRIG, /* Basic version of station UAPSD AC Trigger Generation Method with - * variable tigger periods (service, delay, and suspend intervals) */ - WMI_STA_UAPSD_VAR_AUTO_TRIG, /* Station UAPSD AC Trigger Generation Method with variable - * trigger periods (service, delay, and suspend intervals) */ - WMI_SERVICE_STA_KEEP_ALIVE, /* Serivce to support the STA KEEP ALIVE mechanism */ - WMI_SERVICE_TX_ENCAP, /* Packet type for TX encapsulation */ - WMI_SERVICE_AP_PS_DETECT_OUT_OF_SYNC, /* detect out-of-sync sleeping stations */ - WMI_SERVICE_EARLY_RX, /* adaptive early-rx feature */ - WMI_SERVICE_STA_SMPS, /* STA MIMO-PS */ - WMI_SERVICE_FWTEST, /* Firmware test service */ - WMI_SERVICE_STA_WMMAC, /* STA WMMAC */ - WMI_SERVICE_TDLS, /* TDLS support */ - WMI_SERVICE_BURST, /* SIFS spaced burst support */ - WMI_SERVICE_MCC_BCN_INTERVAL_CHANGE, /* Dynamic beaocn interval change for SAP/P2p GO in MCC scenario */ - WMI_SERVICE_ADAPTIVE_OCS, /* Service to support adaptive off-channel scheduler */ - WMI_SERVICE_BA_SSN_SUPPORT, /* target will provide Sequence number for the peer/tid combo */ - WMI_SERVICE_FILTER_IPSEC_NATKEEPALIVE, - WMI_SERVICE_WLAN_HB, /* wlan HB service */ - WMI_SERVICE_LTE_ANT_SHARE_SUPPORT, /* support LTE/WLAN antenna sharing */ - WMI_SERVICE_BATCH_SCAN, /*Service to support batch scan */ - WMI_SERVICE_QPOWER, /* QPower service */ - WMI_SERVICE_PLMREQ, - WMI_SERVICE_THERMAL_MGMT, /* thermal throttling support */ - WMI_SERVICE_RMC, /* RMC support */ - WMI_SERVICE_MHF_OFFLOAD, /* multi-hop forwarding offload */ - WMI_SERVICE_COEX_SAR, /* target support SAR tx limit from WMI_PDEV_PARAM_TXPOWER_LIMITxG */ - WMI_SERVICE_BCN_TXRATE_OVERRIDE, /* Will support the bcn/prb rsp rate override */ - WMI_SERVICE_NAN, /* Neighbor Awareness Network */ - WMI_SERVICE_L1SS_STAT, /* L1SS statistics counter report */ - WMI_SERVICE_ESTIMATE_LINKSPEED, /* Linkspeed Estimation per peer */ - WMI_SERVICE_OBSS_SCAN, /* Service to support OBSS scan */ - WMI_SERVICE_TDLS_OFFCHAN, /* TDLS off channel support */ - WMI_SERVICE_TDLS_UAPSD_BUFFER_STA, /* TDLS UAPSD Buffer STA support */ - WMI_SERVICE_TDLS_UAPSD_SLEEP_STA, /* TDLS UAPSD Sleep STA support */ - WMI_SERVICE_IBSS_PWRSAVE, /* IBSS power save support */ - WMI_SERVICE_LPASS, /*Service to support LPASS */ - WMI_SERVICE_EXTSCAN, /* Extended Scans */ - WMI_SERVICE_D0WOW, /* D0-WOW Support */ - WMI_SERVICE_HSOFFLOAD, /* Hotspot offload feature Support */ - WMI_SERVICE_ROAM_HO_OFFLOAD, /* roam handover offload */ - WMI_SERVICE_RX_FULL_REORDER, /* target-based Rx full reorder */ - WMI_SERVICE_DHCP_OFFLOAD, /* DHCP offload support */ - WMI_SERVICE_STA_RX_IPA_OFFLOAD_SUPPORT, /* STA RX DATA offload to IPA support */ - WMI_SERVICE_MDNS_OFFLOAD, /* mDNS responder offload support */ - WMI_SERVICE_SAP_AUTH_OFFLOAD, /* softap auth offload */ - WMI_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT, /* Dual Band Simultaneous support */ - WMI_SERVICE_OCB, /* OCB mode support */ - WMI_SERVICE_AP_ARPNS_OFFLOAD, /* arp offload support for ap mode vdev */ - WMI_SERVICE_PER_BAND_CHAINMASK_SUPPORT, /* Per band chainmask support */ - WMI_SERVICE_PACKET_FILTER_OFFLOAD, /* Per vdev packet filters */ - WMI_SERVICE_MGMT_TX_HTT, /* Mgmt Tx via HTT interface */ - WMI_SERVICE_MGMT_TX_WMI, /* Mgmt Tx via WMI interface */ - WMI_SERVICE_EXT_MSG, /* WMI_SERVICE_READY_EXT msg follows */ - WMI_SERVICE_MAWC, /* Motion Aided WiFi Connectivity (MAWC)*/ - + WMI_SERVICE_BEACON_OFFLOAD = 0, /* beacon offload */ + WMI_SERVICE_SCAN_OFFLOAD = 1, /* scan offload */ + WMI_SERVICE_ROAM_SCAN_OFFLOAD = 2, /* roam scan offload */ + WMI_SERVICE_BCN_MISS_OFFLOAD = 3, /* beacon miss offload */ + /* fake sleep + basic power save */ + WMI_SERVICE_STA_PWRSAVE = 4, + WMI_SERVICE_STA_ADVANCED_PWRSAVE = 5, /* uapsd, pspoll, force sleep */ + WMI_SERVICE_AP_UAPSD = 6, /* uapsd on AP */ + WMI_SERVICE_AP_DFS = 7, /* DFS on AP */ + WMI_SERVICE_11AC = 8, /* supports 11ac */ + /* Supports triggering ADDBA/DELBA from host*/ + WMI_SERVICE_BLOCKACK = 9, + WMI_SERVICE_PHYERR = 10, /* PHY error */ + WMI_SERVICE_BCN_FILTER = 11, /* Beacon filter support */ + /* RTT (round trip time) support */ + WMI_SERVICE_RTT = 12, + WMI_SERVICE_WOW = 13, /* WOW Support */ + WMI_SERVICE_RATECTRL_CACHE = 14, /* Rate-control caching */ + WMI_SERVICE_IRAM_TIDS = 15, /* TIDs in IRAM */ + /* ARP NS Offload support for STA vdev */ + WMI_SERVICE_ARPNS_OFFLOAD = 16, + /* Network list offload service */ + WMI_SERVICE_NLO = 17, + WMI_SERVICE_GTK_OFFLOAD = 18, /* GTK offload */ + WMI_SERVICE_SCAN_SCH = 19, /* Scan Scheduler Service */ + WMI_SERVICE_CSA_OFFLOAD = 20, /* CSA offload service */ + WMI_SERVICE_CHATTER = 21, /* Chatter service */ + /* FW report freq range to avoid */ + WMI_SERVICE_COEX_FREQAVOID = 22, + WMI_SERVICE_PACKET_POWER_SAVE = 23, /* packet power save service */ + /* Service to test the firmware recovery mechanism */ + WMI_SERVICE_FORCE_FW_HANG = 24, + WMI_SERVICE_GPIO = 25, /* GPIO service */ + /* Modulated DTIM support */ + WMI_SERVICE_STA_DTIM_PS_MODULATED_DTIM = 26, + /** + * Basic version of station UAPSD AC Trigger Generation Method with + * variable tigger periods (service, delay, and suspend intervals) + */ + WMI_STA_UAPSD_BASIC_AUTO_TRIG = 27, + /** + * Station UAPSD AC Trigger Generation Method with variable + * trigger periods (service, delay, and suspend intervals) + */ + WMI_STA_UAPSD_VAR_AUTO_TRIG = 28, + /* Serivce to support the STA KEEP ALIVE mechanism */ + WMI_SERVICE_STA_KEEP_ALIVE = 29, + /* Packet type for TX encapsulation */ + WMI_SERVICE_TX_ENCAP = 30, + /* detect out-of-sync sleeping stations */ + WMI_SERVICE_AP_PS_DETECT_OUT_OF_SYNC = 31, + WMI_SERVICE_EARLY_RX = 32, /* adaptive early-rx feature */ + WMI_SERVICE_STA_SMPS = 33, /* STA MIMO-PS */ + WMI_SERVICE_FWTEST = 34, /* Firmware test service */ + WMI_SERVICE_STA_WMMAC = 35, /* STA WMMAC */ + WMI_SERVICE_TDLS = 36, /* TDLS support */ + WMI_SERVICE_BURST = 37, /* SIFS spaced burst support */ + /* Dynamic beaocn interval change for SAP/P2p GO in MCC scenario */ + WMI_SERVICE_MCC_BCN_INTERVAL_CHANGE = 38, + /* Service to support adaptive off-channel scheduler */ + WMI_SERVICE_ADAPTIVE_OCS = 39, + /* target will provide Sequence number for the peer/tid combo */ + WMI_SERVICE_BA_SSN_SUPPORT = 40, + WMI_SERVICE_FILTER_IPSEC_NATKEEPALIVE = 41, + WMI_SERVICE_WLAN_HB = 42, /* wlan HB service */ + /* support LTE/WLAN antenna sharing */ + WMI_SERVICE_LTE_ANT_SHARE_SUPPORT = 43, + WMI_SERVICE_BATCH_SCAN = 44, /*Service to support batch scan*/ + WMI_SERVICE_QPOWER = 45, /* QPower service */ + WMI_SERVICE_PLMREQ = 46, + WMI_SERVICE_THERMAL_MGMT = 47, /* thermal throttling support */ + WMI_SERVICE_RMC = 48, /* RMC support */ + /* multi-hop forwarding offload */ + WMI_SERVICE_MHF_OFFLOAD = 49, + /* target support SAR tx limit from WMI_PDEV_PARAM_TXPOWER_LIMITxG */ + WMI_SERVICE_COEX_SAR = 50, + /* Will support the bcn/prb rsp rate override */ + WMI_SERVICE_BCN_TXRATE_OVERRIDE = 51, + WMI_SERVICE_NAN = 52, /* Neighbor Awareness Network */ + /* L1SS statistics counter report */ + WMI_SERVICE_L1SS_STAT = 53, + /* Linkspeed Estimation per peer */ + WMI_SERVICE_ESTIMATE_LINKSPEED = 54, + /* Service to support OBSS scan */ + WMI_SERVICE_OBSS_SCAN = 55, + WMI_SERVICE_TDLS_OFFCHAN = 56, /* TDLS off channel support */ + /* TDLS UAPSD Buffer STA support */ + WMI_SERVICE_TDLS_UAPSD_BUFFER_STA = 57, + /* TDLS UAPSD Sleep STA support */ + WMI_SERVICE_TDLS_UAPSD_SLEEP_STA = 58, + WMI_SERVICE_IBSS_PWRSAVE = 59, /* IBSS power save support */ + WMI_SERVICE_LPASS = 60, /*Service to support LPASS*/ + WMI_SERVICE_EXTSCAN = 61, /* Extended Scans */ + WMI_SERVICE_D0WOW = 62, /* D0-WOW Support */ + /* Hotspot offload feature Support */ + WMI_SERVICE_HSOFFLOAD = 63, + WMI_SERVICE_ROAM_HO_OFFLOAD = 64, /* roam handover offload */ + /* target-based Rx full reorder */ + WMI_SERVICE_RX_FULL_REORDER = 65, + WMI_SERVICE_DHCP_OFFLOAD = 66, /* DHCP offload support */ + /* STA RX DATA offload to IPA support */ + WMI_SERVICE_STA_RX_IPA_OFFLOAD_SUPPORT = 67, + /* mDNS responder offload support */ + WMI_SERVICE_MDNS_OFFLOAD = 68, + WMI_SERVICE_SAP_AUTH_OFFLOAD = 69, /* softap auth offload */ + /* Dual Band Simultaneous support */ + WMI_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT = 70, + WMI_SERVICE_OCB = 71, /* OCB mode support */ + /* arp offload support for ap mode vdev */ + WMI_SERVICE_AP_ARPNS_OFFLOAD = 72, + /* Per band chainmask support */ + WMI_SERVICE_PER_BAND_CHAINMASK_SUPPORT = 73, + WMI_SERVICE_PACKET_FILTER_OFFLOAD = 74, /* Per vdev packet filters */ + WMI_SERVICE_MGMT_TX_HTT = 75, /* Mgmt Tx via HTT interface */ + WMI_SERVICE_MGMT_TX_WMI = 76, /* Mgmt Tx via WMI interface */ + /* WMI_SERVICE_READY_EXT msg follows */ + WMI_SERVICE_EXT_MSG = 77, + /* Motion Aided WiFi Connectivity (MAWC)*/ + WMI_SERVICE_MAWC = 78, /* target will send ASSOC_CONF after ASSOC_CMD is processed */ - WMI_SERVICE_PEER_ASSOC_CONF, - - /* enhanced green ap support */ - WMI_SERVICE_EGAP, + WMI_SERVICE_PEER_ASSOC_CONF = 79, + WMI_SERVICE_EGAP = 80, /* enhanced green ap support */ /* FW supports 11W PMF Offload for STA */ - WMI_SERVICE_STA_PMF_OFFLOAD, + WMI_SERVICE_STA_PMF_OFFLOAD = 81, /* FW supports unified D0 and D3 wow */ - WMI_SERVICE_UNIFIED_WOW_CAPABILITY, - WMI_SERVICE_ENHANCED_PROXY_STA, /* Enhanced ProxySTA mode support */ - WMI_SERVICE_ATF, /* Air Time Fairness support */ - WMI_SERVICE_COEX_GPIO, /* BTCOEX GPIO support */ - WMI_SERVICE_AUX_SPECTRAL_INTF, /* Aux Radio enhancement support for ignoring spectral scan intf from main radios */ - WMI_SERVICE_AUX_CHAN_LOAD_INTF, /* Aux Radio enhancement support for ignoring chan load intf from main radios*/ - WMI_SERVICE_BSS_CHANNEL_INFO_64, /* BSS channel info (freq, noise floor, 64-bit counters) event support */ - WMI_SERVICE_ENTERPRISE_MESH, /* Enterprise MESH Service Support */ - WMI_SERVICE_RESTRT_CHNL_SUPPORT, /* Restricted Channel Support */ - WMI_SERVICE_BPF_OFFLOAD, /* FW supports bpf offload */ - WMI_SERVICE_SYNC_DELETE_CMDS, /* FW sends response event for Peer, Vdev delete commands */ - WMI_SERVICE_SMART_ANTENNA_SW_SUPPORT, - WMI_SERVICE_SMART_ANTENNA_HW_SUPPORT, + WMI_SERVICE_UNIFIED_WOW_CAPABILITY = 82, + /* Enhanced ProxySTA mode support */ + WMI_SERVICE_ENHANCED_PROXY_STA = 83, + WMI_SERVICE_ATF = 84, /* Air Time Fairness support */ + WMI_SERVICE_COEX_GPIO = 85, /* BTCOEX GPIO support */ + /** + * Aux Radio enhancement support for ignoring spectral scan intf + * from main radios + */ + WMI_SERVICE_AUX_SPECTRAL_INTF = 86, + /** + * Aux Radio enhancement support for ignoring chan load intf + * from main radios + */ + WMI_SERVICE_AUX_CHAN_LOAD_INTF = 87, + /** + * BSS channel info (freq, noise floor, 64-bit counters) + * event support + */ + WMI_SERVICE_BSS_CHANNEL_INFO_64 = 88, + /* Enterprise MESH Service Support */ + WMI_SERVICE_ENTERPRISE_MESH = 89, + WMI_SERVICE_RESTRT_CHNL_SUPPORT = 90, /* Restricted Channel Support */ + WMI_SERVICE_BPF_OFFLOAD = 91, /* FW supports bpf offload */ + /* FW sends response event for Peer, Vdev delete commands */ + WMI_SERVICE_SYNC_DELETE_CMDS = 92, + WMI_SERVICE_SMART_ANTENNA_SW_SUPPORT = 93, + WMI_SERVICE_SMART_ANTENNA_HW_SUPPORT = 94, /* allow per-peer tx MCS min/max limits by host */ - WMI_SERVICE_RATECTRL_LIMIT_MAX_MIN_RATES, - WMI_SERVICE_NAN_DATA, /* FW supports NAN data */ - WMI_SERVICE_NAN_RTT, /* FW supports NAN RTT */ - WMI_SERVICE_11AX, /* FW supports 802.11ax */ + WMI_SERVICE_RATECTRL_LIMIT_MAX_MIN_RATES = 95, + WMI_SERVICE_NAN_DATA = 96, /* FW supports NAN data */ + WMI_SERVICE_NAN_RTT = 97, /* FW supports NAN RTT */ + WMI_SERVICE_11AX = 98, /* FW supports 802.11ax */ + /* WMI_SERVICE_DEPRECATED_REPLACE * FW supports these new WMI commands, to be used rather than * deprecated matching commands: * - WMI_PDEV_SET_PCL_CMDID (vs. WMI_SOC_SET_PCL_CMDID) - * - WMI_PDEV_SET_HW_MODE_CMDID (vs. WMI_SOC_SET_HW_MODE_CMDID) + * - WMI_PDEV_SET_HW_MODE_CMDID + * (vs. WMI_SOC_SET_HW_MODE_CMDID) * - WMI_PDEV_SET_MAC_CONFIG_CMDID - * (vs. WMI_SOC_SET_DUAL_MAC_CONFIG_CMDID) + * (vs. WMI_SOC_SET_DUAL_MAC_CONFIG_CMDID) * - WMI_PDEV_SET_ANTENNA_MODE_CMDID - * (vs. WMI_SOC_SET_ANTENNA_MODE_CMDID) - * - WMI_VDEV_SET_DSCP_TID_MAP_CMDID (vs. WMI_VDEV_SET_WMM_PARAMS_CMDID) + * (vs. WMI_SOC_SET_ANTENNA_MODE_CMDID) + * - WMI_VDEV_SET_DSCP_TID_MAP_CMDID + * (vs. WMI_VDEV_SET_WMM_PARAMS_CMDID) */ - WMI_SERVICE_DEPRECATED_REPLACE, - WMI_SERVICE_TDLS_CONN_TRACKER_IN_HOST_MODE, /* FW supports a new mode that allows to run connection tracker in host */ - WMI_SERVICE_ENHANCED_MCAST_FILTER,/* FW supports enhanced multicast filtering (of mcast IP inside ucast WLAN) */ + WMI_SERVICE_DEPRECATED_REPLACE = 99, + /** + * FW supports a new mode that allows to run connection tracker + * in host + */ + WMI_SERVICE_TDLS_CONN_TRACKER_IN_HOST_MODE = 100, + /** + * FW supports enhanced multicast filtering (of mcast IP inside + * ucast WLAN) + */ + WMI_SERVICE_ENHANCED_MCAST_FILTER = 101, /* periodic channel stats service */ - WMI_SERVICE_PERIODIC_CHAN_STAT_SUPPORT, - WMI_SERVICE_MESH_11S, /* 11s mesh service support */ - /* - * FW+HW supports 10 MHz(half rate) and 5 MHz(quarter rate) channel - * bandwidth + WMI_SERVICE_PERIODIC_CHAN_STAT_SUPPORT = 102, + WMI_SERVICE_MESH_11S = 103, + /** + * FW+HW supports 10 MHz (half rate) and 5 MHz (quarter rate) + * channel bandwidth */ - WMI_SERVICE_HALF_RATE_QUARTER_RATE_SUPPORT, - /* - * Support per-vdev specs of which rx frames - * to filter out - */ - WMI_SERVICE_VDEV_RX_FILTER, - WMI_SERVICE_P2P_LISTEN_OFFLOAD_SUPPORT, - /* + WMI_SERVICE_HALF_RATE_QUARTER_RATE_SUPPORT = 104, + /* Support per-vdev specs of which rx frames to filter out */ + WMI_SERVICE_VDEV_RX_FILTER = 105, + WMI_SERVICE_P2P_LISTEN_OFFLOAD_SUPPORT = 106, + /** * FW supports marking the first data packet which wakes * the host from suspend */ - WMI_SERVICE_MARK_FIRST_WAKEUP_PACKET, + WMI_SERVICE_MARK_FIRST_WAKEUP_PACKET = 107, /* FW supports command that can add/delete multiple mcast filters */ - WMI_SERVICE_MULTIPLE_MCAST_FILTER_SET, + WMI_SERVICE_MULTIPLE_MCAST_FILTER_SET = 108, /* WMI_SERVICE_HOST_MANAGED_RX_REORDER - * FW supports host-managed RX reorder. * Host managed RX reorder involves RX BA state machine handling * on peer/TID basis, REO configuration for HW based reordering/PN * check and processing reorder exceptions generated by HW. */ - WMI_SERVICE_HOST_MANAGED_RX_REORDER, + WMI_SERVICE_HOST_MANAGED_RX_REORDER = 109, /* Specify whether the target supports the following WMI messages * for reading / writing its flash memory: * WMI_READ_DATA_FROM_FLASH_CMDID, @@ -197,16 +257,39 @@ typedef enum { * WMI_TRANSFER_DATA_TO_FLASH_CMDID, * WMI_TRANSFER_DATA_TO_FLASH_COMPLETE_EVENTID, */ - WMI_SERVICE_FLASH_RDWR_SUPPORT, + WMI_SERVICE_FLASH_RDWR_SUPPORT = 110, + + + /*** ADD NEW SERVICES HERE UNTIL ALL VALUES UP TO 128 ARE USED ***/ + + WMI_MAX_SERVICE = 128, /* max service */ + + /** + * NOTE: + * The above service flags are delivered in the wmi_service_bitmap + * field of the WMI_SERVICE_READY_EVENT message. + * The below service flags are delivered in a + * WMI_SERVICE_AVAILABLE_EVENT message rather than in the + * WMI_SERVICE_READY_EVENT message's wmi_service_bitmap field. + * The WMI_SERVICE_AVAILABLE_EVENT message immediately precedes the + * WMI_SERVICE_READY_EVENT message. + */ + + /*PUT 1ST EXT SERVICE HERE:*//*WMI_SERVICE_xxxxxxxx=128,*/ + /*PUT 2ND EXT SERVICE HERE:*//*WMI_SERVICE_yyyyyyyy=129,*/ + + WMI_MAX_EXT_SERVICE - WMI_MAX_SERVICE = 128 /* max service */ } WMI_SERVICE; #define WMI_SERVICE_BM_SIZE ((WMI_MAX_SERVICE + sizeof(A_UINT32)- 1)/sizeof(A_UINT32)) -/* - * depreciated the name WMI_SERVICE_ROAM_OFFLOAD, but here to help compiling - * with old host driver +#define WMI_NUM_EXT_SERVICES (WMI_MAX_EXT_SERVICE - WMI_MAX_SERVICE) +#define WMI_SERVICE_EXT_BM_SIZE32 ((WMI_NUM_EXT_SERVICES + 31) / 32) + +/** + * depreciated the name WMI_SERVICE_ROAM_OFFLOAD, but here to help + * compiling with old host driver */ #define WMI_SERVICE_ROAM_OFFLOAD WMI_SERVICE_ROAM_SCAN_OFFLOAD @@ -225,6 +308,39 @@ typedef enum { ( ((pwmi_svc_bmap)[(svc_id)/(sizeof(A_UINT32))] & \ (1 << ((svc_id)%(sizeof(A_UINT32)))) ) != 0) +#define WMI_SERVICE_EXT_ENABLE(pwmi_svc_bmap, pwmi_svc_ext_bmap, svc_id) \ + do { \ + if (svc_id < WMI_MAX_SERVICE) { \ + WMI_SERVICE_ENABLE(pwmi_svc_bmap, svc_id); \ + } else { \ + int word = ((svc_id) - WMI_MAX_SERVICE) / 32; \ + int bit = (svc_id) & 0x1f; /* svc_id mod 32 */ \ + (pwmi_svc_ext_bmap)[word] |= (1 << bit); \ + } \ + } while (0) + +#define WMI_SERVICE_EXT_DISABLE(pwmi_svc_bmap, pwmi_svc_ext_bmap, svc_id) \ + do { \ + if (svc_id < WMI_MAX_SERVICE) { \ + WMI_SERVICE_DISABLE(pwmi_svc_bmap, svc_id); \ + } else { \ + int word = ((svc_id) - WMI_MAX_SERVICE) / 32; \ + int bit = (svc_id) & 0x1f; /* svc_id mod 32 */ \ + (pwmi_svc_ext_bmap)[word] &= ~(1 << bit); \ + } \ + } while (0) + +#define WMI_SERVICE_EXT_IS_ENABLED(pwmi_svc_bmap, pwmi_svc_ext_bmap, svc_id) \ + /* If the service ID is beyond the known limit, treat it as disabled */ \ + ((svc_id) >= WMI_MAX_EXT_SERVICE ? 0 : \ + /* If service ID is in the non-extension range, use the old check */ \ + (svc_id) < WMI_MAX_SERVICE ? \ + WMI_SERVICE_IS_ENABLED(pwmi_svc_bmap, svc_id) : \ + /* If service ID is in the extended range, check ext_bmap */ \ + (pwmi_svc_ext_bmap)[((svc_id) - WMI_MAX_SERVICE) / 32] >> \ + ((svc_id) & 0x1f)) + + #ifdef __cplusplus } #endif diff --git a/target/inc/wmi_tlv_defs.h b/target/inc/wmi_tlv_defs.h index 2dbe1edd3a..b1fb378d5d 100644 --- a/target/inc/wmi_tlv_defs.h +++ b/target/inc/wmi_tlv_defs.h @@ -724,6 +724,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_peer_set_rx_blocksize_cmd_fixed_param, WMITLV_TAG_STRUC_WMI_PDEV_SET_WAKEUP_CONFIG_CMDID_fixed_param, WMITLV_TAG_STRUC_wmi_tlv_buf_len_param, + WMITLV_TAG_STRUC_wmi_service_available_event_fixed_param, } WMITLV_TAG_ID; /* @@ -1173,6 +1174,7 @@ typedef enum { OP(WMI_P2P_LISTEN_OFFLOAD_STOPPED_EVENTID) \ OP(WMI_MGMT_TX_BUNDLE_COMPLETION_EVENTID) \ OP(WMI_READ_DATA_FROM_FLASH_EVENTID) \ + OP(WMI_SERVICE_AVAILABLE_EVENTID) \ /* add new EVT_LIST elements above this line */ /* TLV definitions of WMI commands */ @@ -2945,6 +2947,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_REORDER_QUEUE_REMOVE_CMDID); WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, wlan_dbs_hw_mode_list, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_READY_EVENTID); +/* service available event */ +#define WMITLV_TABLE_WMI_SERVICE_AVAILABLE_EVENTID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_service_available_event_fixed_param, wmi_service_available_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_SERVICE_AVAILABLE_EVENTID); + /* Service Ready Extension event */ #define WMITLV_TABLE_WMI_SERVICE_READY_EXT_EVENTID(id, op, buf, len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_service_ready_ext_event_fixed_param, wmi_service_ready_ext_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ diff --git a/target/inc/wmi_unified.h b/target/inc/wmi_unified.h index 3a3e18c73b..f30b422d8e 100644 --- a/target/inc/wmi_unified.h +++ b/target/inc/wmi_unified.h @@ -1002,6 +1002,13 @@ typedef enum { /** WMI is ready; after this event the wlan subsystem is initialized and can process commands. */ WMI_READY_EVENTID, + /** + * Specify what WMI services the target supports + * (for services beyond what fits in the WMI_SERVICE_READY_EVENT + * message's wmi_service_bitmap) + */ + WMI_SERVICE_AVAILABLE_EVENTID, + /** Scan specific events */ WMI_SCAN_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_SCAN), @@ -1898,6 +1905,26 @@ typedef struct { */ } wmi_service_ready_event_fixed_param; +#define WMI_SERVICE_SEGMENT_BM_SIZE32 4 /* 4x A_UINT32 = 128 bits */ +typedef struct { + /** + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_service_available_event_fixed_param + */ + A_UINT32 tlv_header; + /** + * The wmi_service_segment offset field specifies the position + * within the logical bitmap of WMI service flags at which the + * WMI service flags specified within this message begin. + * Since the first 128 WMI service flags are specified within + * the wmi_service_bitmap field of the WMI_SERVICE_READY_EVENT + * message, the wmi_service_segment_offset value is expected to + * be 128 or more. + */ + A_UINT32 wmi_service_segment_offset; + A_UINT32 wmi_service_segment_bitmap[WMI_SERVICE_SEGMENT_BM_SIZE32]; +} wmi_service_available_event_fixed_param; + typedef struct { /* TLV tag and len; tag equals *WMITLV_TAG_STRUC_WMI_SERVICE_EXT_READY_EVENT diff --git a/target/inc/wmi_version.h b/target/inc/wmi_version.h index 3e88514337..103f1660f5 100644 --- a/target/inc/wmi_version.h +++ b/target/inc/wmi_version.h @@ -36,7 +36,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility */ -#define __WMI_REVISION_ 277 +#define __WMI_REVISION_ 278 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work