From 8618029254d0ef15e48ebbcb40479cfc8aee26a6 Mon Sep 17 00:00:00 2001 From: Govind Singh Date: Mon, 1 Feb 2016 14:03:37 +0530 Subject: [PATCH] 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 --- core/wmi/wmi_unified.c | 1 + target/inc/wmi_tlv_defs.h | 15 +++++++- target/inc/wmi_unified.h | 77 ++++++++++++++++++++++++++++++++++++++- target/inc/wmi_version.h | 2 +- 4 files changed, 91 insertions(+), 4 deletions(-) diff --git a/core/wmi/wmi_unified.c b/core/wmi/wmi_unified.c index cb632fe7fc4a..0081f71cd2f1 100644 --- a/core/wmi/wmi_unified.c +++ b/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"; } diff --git a/target/inc/wmi_tlv_defs.h b/target/inc/wmi_tlv_defs.h index 24f1cd56671c..34f2219c0866 100644 --- a/target/inc/wmi_tlv_defs.h +++ b/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) diff --git a/target/inc/wmi_unified.h b/target/inc/wmi_unified.h index 6f89a043f27b..390b6265f37d 100644 --- a/target/inc/wmi_unified.h +++ b/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 */ diff --git a/target/inc/wmi_version.h b/target/inc/wmi_version.h index 75791f378b70..92962ba318d0 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_ 198 +#define __WMI_REVISION_ 200 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work