summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsyeh <syeh@qca.qualcomm.com>2014-10-15 17:33:38 +0800
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-10-27 15:24:13 -0700
commit5db8f0792c4842dac263b4e6b576c0eafe773fc2 (patch)
tree755502b26f28f08222a34683dee57b0112a08f2c
parent8bf277a18ada0f506d96c493b6e6ed4fe3486899 (diff)
qcacld: update fw common interface files
This change set update the fw common interface files associated with the CL 1116936 Change-Id: I834868c155a531585b5c06037b895ff3ea00ff2f CRs-Fixed: 739441
-rw-r--r--CORE/SERVICES/COMMON/wmi_services.h1
-rw-r--r--CORE/SERVICES/COMMON/wmi_tlv_defs.h31
-rw-r--r--CORE/SERVICES/COMMON/wmi_unified.h80
-rw-r--r--CORE/SERVICES/COMMON/wmi_version.h2
-rw-r--r--CORE/SERVICES/WMI/wmi_unified.c4
5 files changed, 116 insertions, 2 deletions
diff --git a/CORE/SERVICES/COMMON/wmi_services.h b/CORE/SERVICES/COMMON/wmi_services.h
index c3041810bcc6..41ad47d36a98 100644
--- a/CORE/SERVICES/COMMON/wmi_services.h
+++ b/CORE/SERVICES/COMMON/wmi_services.h
@@ -113,6 +113,7 @@ typedef enum {
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_MAX_SERVICE=128 /* max service */
} WMI_SERVICE;
diff --git a/CORE/SERVICES/COMMON/wmi_tlv_defs.h b/CORE/SERVICES/COMMON/wmi_tlv_defs.h
index c72a87f3e79b..2f0e334bfede 100644
--- a/CORE/SERVICES/COMMON/wmi_tlv_defs.h
+++ b/CORE/SERVICES/COMMON/wmi_tlv_defs.h
@@ -513,7 +513,12 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_scan_prob_req_oui_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_key_material,
WMITLV_TAG_STRUC_wmi_tdls_set_offchan_mode_cmd_fixed_param,
- WMITLV_TAG_STRUC_wmi_set_led_flashing_cmd_fixed_param
+ WMITLV_TAG_STRUC_wmi_set_led_flashing_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_mdns_offload_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_mdns_set_fqdn_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_mdns_set_resp_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_mdns_get_stats_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_mdns_stats_event_fixed_param
} WMITLV_TAG_ID;
/*
@@ -1956,6 +1961,25 @@ WMITLV_CREATE_PARAM_STRUC(WMI_IPA_OFFLOAD_ENABLE_DISABLE_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_set_led_flashing_cmd_fixed_param, wmi_set_led_flashing_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_LED_FLASHING_CMDID);
+/* mDNS responder offload param Cmd */
+#define WMITLV_TABLE_WMI_MDNS_OFFLOAD_ENABLE_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mdns_offload_cmd_fixed_param, wmi_mdns_offload_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_MDNS_OFFLOAD_ENABLE_CMDID);
+
+#define WMITLV_TABLE_WMI_MDNS_SET_FQDN_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mdns_set_fqdn_cmd_fixed_param, wmi_mdns_set_fqdn_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, fqdn_data, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_MDNS_SET_FQDN_CMDID);
+
+#define WMITLV_TABLE_WMI_MDNS_SET_RESPONSE_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mdns_set_resp_cmd_fixed_param, wmi_mdns_set_resp_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, resp_data, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_MDNS_SET_RESPONSE_CMDID);
+
+#define WMITLV_TABLE_WMI_MDNS_GET_STATS_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mdns_get_stats_cmd_fixed_param, wmi_mdns_get_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_MDNS_GET_STATS_CMDID);
+
/************************** TLV definitions of WMI events *******************************/
/* Service Ready event */
@@ -2412,6 +2436,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_D0_WOW_DISABLE_ACK_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_temperature_event_fixed_param, wmi_pdev_temperature_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_TEMPERATURE_EVENTID);
+/* mDNS offload stats event */
+#define WMITLV_TABLE_WMI_MDNS_STATS_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mdns_stats_event_fixed_param, wmi_mdns_stats_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_MDNS_STATS_EVENTID);
+
#ifdef __cplusplus
}
#endif
diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h
index 1b97dfcd0630..257962480af0 100644
--- a/CORE/SERVICES/COMMON/wmi_unified.h
+++ b/CORE/SERVICES/COMMON/wmi_unified.h
@@ -177,6 +177,7 @@ typedef enum {
WMI_GRP_EXTSCAN,
WMI_GRP_DHCP_OFL,
WMI_GRP_IPA,
+ WMI_GRP_MDNS_OFL,
} WMI_GRP_ID;
#define WMI_CMD_GRP_START_ID(grp_id) (((grp_id) << 12) | 0x1)
@@ -689,6 +690,12 @@ typedef enum {
/** IPA Offload features related commands */
WMI_IPA_OFFLOAD_ENABLE_DISABLE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_IPA),
+
+ /** mDNS responder offload commands */
+ WMI_MDNS_OFFLOAD_ENABLE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MDNS_OFL),
+ WMI_MDNS_SET_FQDN_CMDID,
+ WMI_MDNS_SET_RESPONSE_CMDID,
+ WMI_MDNS_GET_STATS_CMDID,
} WMI_CMD_ID;
typedef enum {
@@ -937,6 +944,10 @@ typedef enum {
WMI_EXTSCAN_WLAN_CHANGE_RESULTS_EVENTID,
WMI_EXTSCAN_HOTLIST_MATCH_EVENTID,
WMI_EXTSCAN_CAPABILITIES_EVENTID,
+
+ /* mDNS offload events */
+ WMI_MDNS_STATS_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_MDNS_OFL),
+
} WMI_EVT_ID;
/* defines for OEM message sub-types */
@@ -8936,6 +8947,75 @@ typedef struct{
A_UINT32 led_x1; /* led flashing parameter1 */
} wmi_set_led_flashing_cmd_fixed_param;
+/**
+ * The purpose of the multicast Domain Name System (mDNS) is to resolve host names to IP addresses
+ * within small networks that do not include a local name server.
+ * It utilizes essentially the same programming interfaces, packet formats and operating semantics
+ * as the unicast DNS, and the advantage is zero configuration service while no need for central or
+ * global server.
+ * Based on mDNS, the DNS-SD (Service Discovery) allows clients to discover a named list of services
+ * by type in a specified domain using standard DNS queries.
+ * Here, we provide the ability to advertise the available services by responding to mDNS queries.
+ */
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mdns_offload_cmd_fixed_param */
+ A_UINT32 vdev_id;
+ A_UINT32 enable;
+} wmi_mdns_offload_cmd_fixed_param;
+
+#define WMI_MAX_MDNS_FQDN_LEN 64
+#define WMI_MAX_MDNS_RESP_LEN 512
+#define WMI_MDNS_FQDN_TYPE_GENERAL 0
+#define WMI_MDNS_FQDN_TYPE_UNIQUE 1
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mdns_set_fqdn_cmd_fixed_param */
+ A_UINT32 vdev_id;
+ /** type of fqdn, general or unique */
+ A_UINT32 type;
+ /** length of fqdn */
+ A_UINT32 fqdn_len;
+ /* Following this structure is the TLV byte stream of fqdn data of length fqdn_len
+ * A_UINT8 fqdn_data[]; // fully-qualified domain name to check if match with the received queries
+ */
+} wmi_mdns_set_fqdn_cmd_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mdns_set_resp_cmd_fixed_param */
+ A_UINT32 vdev_id;
+ /** Answer Resource Record count */
+ A_UINT32 AR_count;
+ /** length of response */
+ A_UINT32 resp_len;
+ /* Following this structure is the TLV byte stream of resp data of length resp_len
+ * A_UINT8 resp_data[]; // responses consisits of Resource Records
+ */
+} wmi_mdns_set_resp_cmd_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mdns_get_stats_cmd_fixed_param */
+ A_UINT32 vdev_id;
+} wmi_mdns_get_stats_cmd_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mdns_stats_event_fixed_param */
+ A_UINT32 vdev_id;
+ /** curTimestamp in milliseconds */
+ A_UINT32 curTimestamp;
+ /** last received Query in milliseconds */
+ A_UINT32 lastQueryTimestamp;
+ /** last sent Response in milliseconds */
+ A_UINT32 lastResponseTimestamp;
+ /** stats of received queries */
+ A_UINT32 totalQueries;
+ /** stats of macth queries */
+ A_UINT32 totalMatches;
+ /** stats of responses */
+ A_UINT32 totalResponses;
+ /** indicate the current status of mDNS offload */
+ A_UINT32 status;
+} wmi_mdns_stats_event_fixed_param;
+
#ifdef __cplusplus
}
#endif
diff --git a/CORE/SERVICES/COMMON/wmi_version.h b/CORE/SERVICES/COMMON/wmi_version.h
index 920faa17ed2f..228577e7de55 100644
--- a/CORE/SERVICES/COMMON/wmi_version.h
+++ b/CORE/SERVICES/COMMON/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_ 73
+#define __WMI_REVISION_ 74
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work
diff --git a/CORE/SERVICES/WMI/wmi_unified.c b/CORE/SERVICES/WMI/wmi_unified.c
index f802a15bb5c1..a9f741a8af66 100644
--- a/CORE/SERVICES/WMI/wmi_unified.c
+++ b/CORE/SERVICES/WMI/wmi_unified.c
@@ -596,6 +596,10 @@ static u_int8_t* get_wmi_cmd_string(WMI_CMD_ID wmi_command)
CASE_RETURN_STRING(WMI_SCAN_PROB_REQ_OUI_CMDID);
CASE_RETURN_STRING(WMI_TDLS_SET_OFFCHAN_MODE_CMDID);
CASE_RETURN_STRING(WMI_PDEV_SET_LED_FLASHING_CMDID);
+ CASE_RETURN_STRING(WMI_MDNS_OFFLOAD_ENABLE_CMDID);
+ CASE_RETURN_STRING(WMI_MDNS_SET_FQDN_CMDID);
+ CASE_RETURN_STRING(WMI_MDNS_SET_RESPONSE_CMDID);
+ CASE_RETURN_STRING(WMI_MDNS_GET_STATS_CMDID);
}
return "Invalid WMI cmd";
}