Forráskód Böngészése

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
Nitesh Shah 8 éve
szülő
commit
ca1b2d06e2
4 módosított fájl, 283 hozzáadás és 133 törlés
  1. 248 132
      target/inc/wmi_services.h
  2. 7 0
      target/inc/wmi_tlv_defs.h
  3. 27 0
      target/inc/wmi_unified.h
  4. 1 1
      target/inc/wmi_version.h

+ 248 - 132
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)*/
 
-	/* target will send ASSOC_CONF after ASSOC_CMD is processed */
-	WMI_SERVICE_PEER_ASSOC_CONF,
 
-	/* enhanced green ap support */
-	WMI_SERVICE_EGAP,
+typedef enum {
+	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 = 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) */
-	/* 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_DEPRECATED_REPLACE = 99,
+	/**
+	 * FW supports a new mode that allows to run connection tracker
+	 * in host
 	 */
-	WMI_SERVICE_HALF_RATE_QUARTER_RATE_SUPPORT,
-	/*
-	 * Support per-vdev specs of which rx frames
-	 * to filter out
+	WMI_SERVICE_TDLS_CONN_TRACKER_IN_HOST_MODE = 100,
+	/**
+	 * FW supports enhanced multicast filtering (of mcast IP inside
+	 * ucast WLAN)
 	 */
-	WMI_SERVICE_VDEV_RX_FILTER,
-	WMI_SERVICE_P2P_LISTEN_OFFLOAD_SUPPORT,
-	/*
+	WMI_SERVICE_ENHANCED_MCAST_FILTER = 101,
+	/* periodic channel stats service */
+	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 = 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

+ 7 - 0
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) \

+ 27 - 0
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

+ 1 - 1
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