Browse Source

qcacld-3.0: CL 1446198 update fw common interface files

Added One tuple control flag bit WMI_FLAGS_IS_IPV6_ANYCAST and
added one parameter 'num_ns_ext_tuples_cfg' in wmi_resource_config
RTT definitions updated
Add wmi interface for MBO(MultiBand Operation) feature.

Change-Id: If698fc104e9ac39d6b58c88a542a30c2ba59d52b
CRs-fixed: 865207
Govind Singh 9 years ago
parent
commit
8618029254
4 changed files with 91 additions and 4 deletions
  1. 1 0
      core/wmi/wmi_unified.c
  2. 14 1
      target/inc/wmi_tlv_defs.h
  3. 75 2
      target/inc/wmi_unified.h
  4. 1 1
      target/inc/wmi_version.h

+ 1 - 0
core/wmi/wmi_unified.c

@@ -769,6 +769,7 @@ static uint8_t *get_wmi_cmd_string(WMI_CMD_ID wmi_command)
 		CASE_RETURN_STRING(WMI_FWTEST_CMDID);
 		CASE_RETURN_STRING(WMI_QBOOST_CFG_CMDID);
 		CASE_RETURN_STRING(WMI_PDEV_GET_NFCAL_POWER_CMDID);
+		CASE_RETURN_STRING(WMI_ROAM_SET_MBO_PARAM_CMDID);
 	}
 	return "Invalid WMI cmd";
 }

+ 14 - 1
target/inc/wmi_tlv_defs.h

@@ -657,6 +657,7 @@ typedef enum {
 	WMITLV_TAG_STRUC_wmi_pdev_nfcal_power_all_channels_freqNum,
 	WMITLV_TAG_STRUC_wmi_mu_report_total_mu,
 	WMITLV_TAG_STRUC_wmi_vdev_set_dscp_tid_map_cmd_fixed_param,
+	WMITLV_TAG_STRUC_wmi_roam_set_mbo_fixed_param,
 
 } WMITLV_TAG_ID;
 
@@ -922,7 +923,8 @@ typedef enum {
 	OP(WMI_PEER_SMART_ANT_SET_NODE_CONFIG_OPS_CMDID) \
 	OP(WMI_PEER_ATF_REQUEST_CMDID) \
 	OP(WMI_FWTEST_CMDID) \
-	OP(WMI_QBOOST_CFG_CMDID)
+	OP(WMI_QBOOST_CFG_CMDID) \
+	OP(WMI_ROAM_SET_MBO_PARAM_CMDID)
 
 /*
  * IMPORTANT: Please add _ALL_ WMI Events Here.
@@ -1211,6 +1213,17 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_CHAN_LIST);
 
 WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SCAN_CMD);
 
+/* Roam mbo configuration */
+#define WMITLV_TABLE_WMI_ROAM_SET_MBO_PARAM_CMDID(id, op, buf, len) \
+	WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_roam_set_mbo_fixed_param, wmi_roam_set_mbo_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+	WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, cellular_cap, WMITLV_SIZE_VAR) \
+	WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_supported_operating_class_param, supp_op_class_param, WMITLV_SIZE_VAR) \
+	WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, supp_op_class_list, WMITLV_SIZE_VAR) \
+	WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_mbo_non_preferred_channel_report_param, non_prefer_ch_param, WMITLV_SIZE_VAR) \
+	WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, non_prefer_ch_attr, WMITLV_SIZE_VAR)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SET_MBO_PARAM_CMDID);
+
 #define WMITLV_TABLE_WMI_VDEV_PLMREQ_START_CMDID(id,op,buf,len)	\
 	WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_plmreq_start_cmd_fixed_param, wmi_vdev_plmreq_start_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)	\
 	WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, channel_list, WMITLV_SIZE_VAR)

+ 75 - 2
target/inc/wmi_unified.h

@@ -357,8 +357,8 @@ typedef enum {
 	/* TSF timestamp action for specified vdev */
 	WMI_VDEV_TSF_TSTAMP_ACTION_CMDID,
 	/*
-	 * set the capabilties IE, e.g. for extended caps in probe
-	 * requests, assoc req etc for frames FW locally generates
+	 * set the additional IEs in probe requests for scan or
+	 * assoc req etc for frames FW locally generates
 	 */
 	WMI_VDEV_SET_IE_CMDID,
 
@@ -498,6 +498,8 @@ typedef enum {
 	WMI_ROAM_SUBNET_CHANGE_CONFIG_CMDID,
 	/** configure thresholds for MAWC */
 	WMI_ROAM_CONFIGURE_MAWC_CMDID,
+	/** configure MultiBand Operation(refer WFA MBO spec) parameter */
+	WMI_ROAM_SET_MBO_PARAM_CMDID,
 
 	/** offload scan specific commands */
 	/** set offload scan AP profile   */
@@ -2134,6 +2136,12 @@ typedef struct {
 	*   0 - Don't allocate fragment descriptor for data packet.
 	*/
 	A_UINT32 alloc_frag_desc_for_data_pkt;
+
+	/*
+	 * how much space to allocate for NDP NS (neighbor solicitation)
+	 * specs
+	 */
+	A_UINT32 num_ns_ext_tuples_cfg;
 } wmi_resource_config;
 
 #define WMI_RSRC_CFG_FLAG_SET(word32, flag, value) \
@@ -7931,6 +7939,8 @@ typedef struct {
 #define WMI_NSOFF_FLAGS_VALID           (1 << 0)        /* the tuple entry is valid */
 #define WMI_NSOFF_FLAGS_MAC_VALID       (1 << 1)        /* the target mac address is valid */
 #define WMI_NSOFF_FLAGS_REMOTE_IP_VALID (1 << 2)        /* remote IP field is valid */
+/* whether the configured IPv6 address is anycast */
+#define WMI_NSOFF_FLAGS_IS_IPV6_ANYCAST (1 << 3)
 
 #define WMI_NSOFF_MAX_TARGET_IPS    2
 
@@ -12664,6 +12674,69 @@ typedef struct {
 	A_UINT32 sensor_status;
 } wmi_mawc_sensor_report_ind_cmd_fixed_param;
 
+/* MBO flag field definition */
+/*
+ * Bit 0: 0 - Allow to connect to both MBO and non-MBO AP
+ *        1 - Allow to connect to MBO AP only
+ * Bit 1-31 : reserved.
+ */
+#define WMI_ROAM_MBO_FLAG_MBO_ONLY_MODE  (1<<0)
+
+typedef struct {
+	/*
+	 * TLV tag and len; tag equals
+	 * WMITLV_TAG_STRUC_wmi_roam_set_mbo_fixed_param
+	 */
+	A_UINT32 tlv_header;
+	/** vdev id */
+	A_UINT32 vdev_id;
+	/** enable or disable MBO */
+	A_UINT32 enable;
+	/** MBO flags, refer to definition of MBO flags*/
+	A_UINT32 flags;
+} wmi_roam_set_mbo_fixed_param;
+
+typedef struct {
+	/*
+	 * TLV tag and len; tag equals
+	 * WMITLV_TAG_ARRAY_STRUC
+	 */
+	A_UINT32 tlv_header;
+	/** Current operating class number */
+	A_UINT32 cur_op_class;
+	/*
+	 * Country string of current reg domain,
+	 * the expected value should be same as country str defined
+	 * in country IE.
+	 * 3 octets (COUNTRY_STR) + 1 octet (always 0)
+	 * The ordering of this array must be maintained,
+	 * even when a big-endian host's WMI messages undergo
+	 * automatic byte reordering for conversion to the
+	 * little-endian ordering required by the target.
+	 * On big-endian hosts, this array may need to be byte-swapped
+	 * by the host, so the subsequent automatic byte-swap
+	 * will result in the correct final byte order.
+	 * global operating class: set country_str[0]=0
+	 */
+	A_UINT8 country_str[4];
+	/** Supported operating class number in current regdomain */
+	A_UINT32 supp_op_class_num;
+	/* The TLVs will follow. */
+	/* A_UINT32 supp_op_class_list[] */
+} wmi_supported_operating_class_param;
+
+typedef struct {
+	/*
+	 * TLV tag and len; tag equals
+	 * WMITLV_TAG_ARRAY_STRUC
+	 */
+	A_UINT32 tlv_header;
+	/** non preferred channel attribute length */
+	A_UINT32 non_prefer_ch_attr_len;
+	/* The TLVs will follow. */
+	/** A_UINT8 non_prefer_ch_attr[];*/
+} wmi_mbo_non_preferred_channel_report_param;
+
 typedef struct {
 	/* TLV tag and len; tag equals
 	 * WMITLV_TAG_STRUC_wmi_mawc_enable_sensor_event_fixed_param */

+ 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_ 198
+#define __WMI_REVISION_ 200
 
 /** The Version Namespace should not be normally changed. Only
  *  host and firmware of the same WMI namespace will work