diff options
| author | Pradeep Reddy Potteti <ppotte@codeaurora.org> | 2017-02-17 12:35:02 +0530 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-03-20 07:27:53 -0700 |
| commit | c8aaba77e9415d593db7a547bbc04eaa548f5b4f (patch) | |
| tree | 3bb27c6628f45b24cb6f9ca88c4af46eaf3dcd1f | |
| parent | dbb5e6fdb6741380c6d41a164c93f5adbd350435 (diff) | |
qcacld-2.0: CL 2860646 - update fw common interface files
WMI common changes for Rx packet routing
Change-Id: Ic0faf646309fe2f64f954186654560adfd82809e
CRs-fixed: 865207
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_services.h | 1 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_tlv_defs.h | 6 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_unified.h | 47 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_version.h | 2 | ||||
| -rw-r--r-- | CORE/SERVICES/WMI/wmi_unified.c | 1 |
5 files changed, 56 insertions, 1 deletions
diff --git a/CORE/SERVICES/COMMON/wmi_services.h b/CORE/SERVICES/COMMON/wmi_services.h index 315f96003747..f5936a555c47 100644 --- a/CORE/SERVICES/COMMON/wmi_services.h +++ b/CORE/SERVICES/COMMON/wmi_services.h @@ -280,6 +280,7 @@ typedef enum { WMI_SERVICE_11D_OFFLOAD = 118, /* support 11D scan offload in FW */ WMI_SERVICE_HW_DATA_FILTERING = 119, WMI_SERVICE_MULTIPLE_VDEV_RESTART=120, /* Support for single command for multiple vdev restart */ + WMI_SERVICE_PKT_ROUTING=121, /* Support for routing specific data packets to selected destination rings */ /***** ADD NEW SERVICES HERE UNTIL ALL VALUES UP TO 128 ARE USED *****/ diff --git a/CORE/SERVICES/COMMON/wmi_tlv_defs.h b/CORE/SERVICES/COMMON/wmi_tlv_defs.h index 2daf7359b909..811d188b9ff4 100644 --- a/CORE/SERVICES/COMMON/wmi_tlv_defs.h +++ b/CORE/SERVICES/COMMON/wmi_tlv_defs.h @@ -791,6 +791,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_chip_power_save_failure_detected_fixed_param, WMITLV_TAG_STRUC_wmi_pdev_multiple_vdev_restart_request_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_pdev_csa_switch_count_status_event_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_update_pkt_routing_cmd_fixed_param, } WMITLV_TAG_ID; /* @@ -1112,6 +1113,7 @@ typedef enum { OP(WMI_HW_DATA_FILTER_CMDID) \ OP(WMI_PDEV_MULTIPLE_VDEV_RESTART_REQUEST_CMDID) \ OP(WMI_LPI_OEM_REQ_CMDID) \ + OP(WMI_PDEV_UPDATE_PKT_ROUTING_CMDID) \ /* add new CMD_LIST elements above this line */ /* @@ -3196,6 +3198,10 @@ WMITLV_CREATE_PARAM_STRUC(WMI_HW_DATA_FILTER_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_channel, wmi_channel, chan, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_MULTIPLE_VDEV_RESTART_REQUEST_CMDID); +#define WMITLV_TABLE_WMI_PDEV_UPDATE_PKT_ROUTING_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_update_pkt_routing_cmd_fixed_param, wmi_pdev_update_pkt_routing_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_UPDATE_PKT_ROUTING_CMDID); + /************************** TLV definitions of WMI events *******************************/ /* Service Ready event */ diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h index d01c322a2584..7d5ab344d542 100644 --- a/CORE/SERVICES/COMMON/wmi_unified.h +++ b/CORE/SERVICES/COMMON/wmi_unified.h @@ -360,6 +360,8 @@ typedef enum { WMI_PDEV_SET_STATS_THRESHOLD_CMDID, /** vdev restart request for multiple vdevs */ WMI_PDEV_MULTIPLE_VDEV_RESTART_REQUEST_CMDID, + /** Pdev update packet routing command */ + WMI_PDEV_UPDATE_PKT_ROUTING_CMDID, /* VDEV (virtual device) specific commands */ /** vdev create */ @@ -17905,6 +17907,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_HW_DATA_FILTER_CMDID); WMI_RETURN_STRING(WMI_PDEV_MULTIPLE_VDEV_RESTART_REQUEST_CMDID); WMI_RETURN_STRING(WMI_LPI_OEM_REQ_CMDID); + WMI_RETURN_STRING(WMI_PDEV_UPDATE_PKT_ROUTING_CMDID); } return "Invalid WMI cmd"; @@ -18149,6 +18152,50 @@ typedef struct { */ } wmi_pdev_csa_switch_count_status_event_fixed_param; +/* Operation types for packet routing command */ +typedef enum { + WMI_PDEV_ADD_PKT_ROUTING, + WMI_PDEV_DEL_PKT_ROUTING, +} wmi_pdev_pkt_routing_op_code; + +/* Packet routing types based on specific data types */ +typedef enum { + WMI_PDEV_ROUTING_TYPE_ARP_IPV4, + WMI_PDEV_ROUTING_TYPE_NS_IPV6, + WMI_PDEV_ROUTING_TYPE_IGMP_IPV4, + WMI_PDEV_ROUTING_TYPE_MLD_IPV6, + WMI_PDEV_ROUTING_TYPE_DHCP_IPV4, + WMI_PDEV_ROUTING_TYPE_DHCP_IPV6, +} wmi_pdev_pkt_routing_type; + +/* This command shall be sent only when no VDEV is up. + * If the command is sent after any VDEV is up, target will ignore the command + */ +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_update_pkt_routing_cmd_fixed_param + */ + A_UINT32 tlv_header; + /** Identifies pdev on which routing needs to be applied */ + A_UINT32 pdev_id; + /** Indicates the routing operation type: add/delete */ + A_UINT32 op_code; /* wmi_pdev_pkt_routing_op_code */ + /** Bitmap of multiple pkt routing types for a given destination ring + * and meta data + */ + A_UINT32 routing_type_bitmap; /* see wmi_pdev_pkt_routing_type */ + /** 5 bits [4:0] are used to specify the destination ring where the + * CCE matched packet needs to be routed. + */ + A_UINT32 dest_ring; + /** 16 bits [15:0] meta data can be passed to CCE. + * When the superrule matches, + * CCE copies this back in RX_MSDU_END_TLV. + */ + A_UINT32 meta_data; +} wmi_pdev_update_pkt_routing_cmd_fixed_param; + + /* ADD NEW DEFS HERE */ /***************************************************************************** diff --git a/CORE/SERVICES/COMMON/wmi_version.h b/CORE/SERVICES/COMMON/wmi_version.h index 8e38e809b97f..7e03e7a6d144 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_ 347 +#define __WMI_REVISION_ 348 /** 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 9dc8e28c57ae..ab54cdc80161 100644 --- a/CORE/SERVICES/WMI/wmi_unified.c +++ b/CORE/SERVICES/WMI/wmi_unified.c @@ -738,6 +738,7 @@ static u_int8_t* get_wmi_cmd_string(WMI_CMD_ID wmi_command) CASE_RETURN_STRING(WMI_HW_DATA_FILTER_CMDID); CASE_RETURN_STRING(WMI_PDEV_MULTIPLE_VDEV_RESTART_REQUEST_CMDID); CASE_RETURN_STRING(WMI_LPI_OEM_REQ_CMDID); + CASE_RETURN_STRING(WMI_PDEV_UPDATE_PKT_ROUTING_CMDID); } return "Invalid WMI cmd"; } |
