Browse Source

fw-api: CL 9672221 - update fw common interface files

Change-Id: I29f9768c0d2f2744583c7c046924962ab4fab410
WMI: add PDEV_FRAME_INJECT_CMD msg def
CRs-Fixed: 2262693
spuligil 5 years ago
parent
commit
b99d2f055a
4 changed files with 53 additions and 1 deletions
  1. 1 0
      fw/wmi_services.h
  2. 8 0
      fw/wmi_tlv_defs.h
  3. 43 0
      fw/wmi_unified.h
  4. 1 1
      fw/wmi_version.h

+ 1 - 0
fw/wmi_services.h

@@ -428,6 +428,7 @@ typedef  enum  {
     WMI_SERVICE_PEER_DELETE_NO_PEER_FLUSH_TIDS_CMD = 237, /* Host should not send WMI_PEER_FLUSH_TIDS_CMD as part of peer delete */
     WMI_SERVICE_NSS_RATIO_TO_HOST_SUPPORT = 238, /* Indicates firmware supports sending NSS ratio info to host */
     WMI_SERVICE_WPA3_SUITEB_ROAM_SUPPORT = 239, /* Indicates FW supports WPA3 SUITE B roaming */
+    WMI_SERVICE_PERIODIC_FRAME_INJECT_SUPPORT = 240, /* Indicates FW supports periodic frame injection */
 
 
     /******* ADD NEW SERVICES HERE *******/

+ 8 - 0
fw/wmi_tlv_defs.h

@@ -1049,6 +1049,7 @@ typedef enum {
     WMITLV_TAG_STRUC_wmi_vdev_get_big_data_cmd_fixed_param,
     WMITLV_TAG_STRUC_wmi_vdev_send_big_data_event_fixed_param,
     WMITLV_TAG_STRUC_wmi_nan_dmesg_event_fixed_param,
+    WMITLV_TAG_STRUC_wmi_frame_inject_cmd_fixed_param,
 } WMITLV_TAG_ID;
 
 /*
@@ -1478,6 +1479,7 @@ typedef enum {
     OP(WMI_VDEV_SET_PCL_CMDID) \
     OP(WMI_ROAM_GET_SCAN_CHANNEL_LIST_CMDID) \
     OP(WMI_VDEV_GET_BIG_DATA_CMDID) \
+    OP(WMI_PDEV_FRAME_INJECT_CMDID) \
     /* add new CMD_LIST elements above this line */
 
 
@@ -4293,6 +4295,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_GET_SCAN_CHANNEL_LIST_CMDID);
     WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_get_big_data_cmd_fixed_param, wmi_vdev_get_big_data_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
 WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_GET_BIG_DATA_CMDID);
 
+/* Frame inject command */
+#define WMITLV_TABLE_WMI_PDEV_FRAME_INJECT_CMDID(id,op,buf,len) \
+    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_frame_inject_cmd_fixed_param, wmi_frame_inject_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+    WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_FRAME_INJECT_CMDID);
+
 
 /************************** TLV definitions of WMI events *******************************/
 

+ 43 - 0
fw/wmi_unified.h

@@ -412,6 +412,8 @@ typedef enum {
     WMI_PDEV_SET_RAP_CONFIG_CMDID,
     /** Specify DSM filters along with disallow bssid filters */
     WMI_PDEV_DSM_FILTER_CMDID,
+    /** enable/disable periodic frame injection */
+    WMI_PDEV_FRAME_INJECT_CMDID,
 
     /* VDEV (virtual device) specific commands */
     /** vdev create */
@@ -10920,6 +10922,46 @@ typedef struct {
 /** app IE */
 } wmi_bcn_prb_info;
 
+enum wmi_frame_inject_type {
+    /* Transmit QoS null frame each period */
+    WMI_FRAME_INJECT_TYPE_QOS_NULL,
+    /* Transmit CTS to self each period */
+    WMI_FRAME_INJECT_TYPE_CTS_TO_SELF,
+    /* Transmit HOST provided buffer instead of forming frame in FW */
+    WMI_FRAME_INJECT_TYPE_HOST_BUFFER,
+    /* Max valid frame inject type for sanity checks*/
+    WMI_FRAME_INJECT_TYPE_MAX,
+};
+
+typedef struct {
+    /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_frame_inject_cmd_fixed_param */
+    A_UINT32 tlv_header;
+    /** unique id identifying the VDEV, generated by the caller.
+     * At any time only one vdev per mac can have this feature enabled.
+     * Two consecutive enable commands on same mac will result in previous
+     * command being disabled and new one being enabled.
+     */
+    A_UINT32 vdev_id;
+    /** enable or disable injection */
+    A_UINT32 enable;
+    /** frame type to be used for frame injection. possible values are
+     * defined in enum wmi_frame_inject_type.
+     */
+    A_UINT32 frame_type;
+    /** periodicity of frame injection in milliseconds */
+    A_UINT32 frame_inject_period;
+    /** Destination address of frame */
+    wmi_mac_addr frame_addr1;
+    /** variable buffer length. Can be used for frame template.
+     * data is in TLV data[]
+     */
+    A_UINT32 buf_len;
+    /*
+     * The TLVs follows:
+     * A_UINT8  data[]; <-- Variable length data
+     */
+} wmi_frame_inject_cmd_fixed_param;
+
 typedef struct {
     A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_bcn_tmpl_cmd_fixed_param */
     /** unique id identifying the VDEV, generated by the caller */
@@ -25371,6 +25413,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
         WMI_RETURN_STRING(WMI_VDEV_AUDIO_SYNC_QTIMER_CMDID);
         WMI_RETURN_STRING(WMI_ROAM_GET_SCAN_CHANNEL_LIST_CMDID);
         WMI_RETURN_STRING(WMI_VDEV_GET_BIG_DATA_CMDID);
+        WMI_RETURN_STRING(WMI_PDEV_FRAME_INJECT_CMDID);
     }
 
     return "Invalid WMI cmd";

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