Browse Source

qcacmn: WMI support to obtain NAC RSSI

Added a WMI command to add and del peer from the list
of non associated clients for which the RSSI stats
need to be populated

Also added event handler to extract the rssi stats
from the WMI event

Change-Id: I9880c74798c13a52e1498b81735ad78f86fa41b8
CRs-Fixed: 2148773
Chaithanya Garrepalli 7 năm trước cách đây
mục cha
commit
140a053ade
3 tập tin đã thay đổi với 57 bổ sung0 xóa
  1. 20 0
      wmi_unified_api.h
  2. 31 0
      wmi_unified_param.h
  3. 6 0
      wmi_unified_priv.h

+ 20 - 0
wmi_unified_api.h

@@ -396,6 +396,15 @@ QDF_STATUS wmi_unified_vdev_down_send(void *wmi_hdl,
 
 QDF_STATUS wmi_unified_vdev_start_send(void *wmi_hdl,
 				struct vdev_start_params *req);
+/**
+ * wmi_unified_vdev_set_nac_rssi_send() - send NAC_RSSI command to fw
+ * @param wmi_handle   : handle to WMI
+ * @param req          : pointer to hold nac rssi request data
+ *
+ * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
+ */
+QDF_STATUS wmi_unified_vdev_set_nac_rssi_send(void *wmi_hdl,
+			struct vdev_scan_nac_rssi_params *req);
 
 QDF_STATUS wmi_unified_hidden_ssid_vdev_restart_send(void *wmi_hdl,
 		struct hidden_ssid_vdev_restart_params *restart_params);
@@ -1561,6 +1570,17 @@ QDF_STATUS wmi_extract_vdev_extd_stats(void *wmi_hdl, void *evt_buf,
 QDF_STATUS wmi_extract_bcn_stats(void *wmi_hdl, void *evt_buf,
 		uint32_t index, wmi_host_bcn_stats *vdev_bcn_stats);
 
+/**
+ * wmi_extract_vdev_nac_rssi_stats() - extract NAC_RSSI stats from event
+ * @wmi_handle: wmi handle
+ * @param evt_buf: pointer to event buffer
+ * @param vdev_extd_stats: Pointer to hold nac rssi stats
+ *
+ * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
+ */
+QDF_STATUS wmi_extract_vdev_nac_rssi_stats(void *wmi_hdl, void *evt_buf,
+		struct wmi_host_vdev_nac_rssi_event *vdev_nac_rssi_stats);
+
 QDF_STATUS wmi_unified_send_power_dbg_cmd(void *wmi_hdl,
 				struct wmi_power_dbg_params *param);
 

+ 31 - 0
wmi_unified_param.h

@@ -765,6 +765,22 @@ struct vdev_start_params {
 	bool ldpc_rx_enabled;
 };
 
+/**
+ * struct vdev_scan_nac_rssi_params - NAC_RSSI cmd parameter
+ * @vdev_id: vdev id
+ * @bssid_addr: BSSID address
+ * @client_addr: client address
+ * @chan_num: channel number
+ * @action:NAC_RSSI action,
+ */
+struct vdev_scan_nac_rssi_params {
+	uint32_t vdev_id;
+	uint8_t bssid_addr[IEEE80211_ADDR_LEN];
+	uint8_t client_addr[IEEE80211_ADDR_LEN];
+	uint32_t chan_num;
+	uint32_t action; /* WMI_FILTER_NAC_RSSI_ACTION */
+};
+
 /**
  * struct hidden_ssid_vdev_restart_params -
  *                    vdev restart cmd parameter
@@ -880,6 +896,7 @@ typedef enum {
 	WMI_HOST_REQUEST_INST_STAT  = 0x40,
 	WMI_HOST_REQUEST_PEER_EXTD_STAT =  0x80,
 	WMI_HOST_REQUEST_VDEV_EXTD_STAT =  0x100,
+	WMI_HOST_REQUEST_NAC_RSSI =  0x200,
 	WMI_HOST_REQUEST_BCN_STAT =  0x800,
 } wmi_host_stats_id;
 
@@ -5423,6 +5440,20 @@ typedef struct {
 	uint32_t reserved[13];
 } wmi_host_vdev_extd_stats;
 
+/**
+ * struct wmi_host_vdev_nac_rssi_event - VDEV nac rssi stats
+ * @vdev_id: unique id identifying the VDEV, generated by the caller
+ * @last_rssi: rssi
+ * @avg_rssi: averge rssi
+ * @rssi_seq_num: rssi sequence number
+ */
+struct wmi_host_vdev_nac_rssi_event {
+	uint32_t vdev_id;
+	uint32_t last_rssi;
+	uint32_t avg_rssi;
+	uint32_t rssi_seq_num;
+};
+
 /**
  * struct wmi_host_peer_stats - peer stats
  * @peer_macaddr: peer MAC address

+ 6 - 0
wmi_unified_priv.h

@@ -212,6 +212,9 @@ QDF_STATUS (*send_vdev_down_cmd)(wmi_unified_t wmi,
 QDF_STATUS (*send_vdev_start_cmd)(wmi_unified_t wmi,
 		struct vdev_start_params *req);
 
+QDF_STATUS (*send_vdev_set_nac_rssi_cmd)(wmi_unified_t wmi,
+		struct vdev_scan_nac_rssi_params *req);
+
 QDF_STATUS (*send_hidden_ssid_vdev_restart_cmd)(wmi_unified_t wmi_handle,
 		struct hidden_ssid_vdev_restart_params *restart_params);
 
@@ -1320,6 +1323,9 @@ QDF_STATUS (*extract_atf_token_info_ev)(wmi_unified_t wmi_handle,
 QDF_STATUS (*extract_vdev_extd_stats)(wmi_unified_t wmi_handle, void *evt_buf,
 		uint32_t index, wmi_host_vdev_extd_stats *vdev_extd_stats);
 
+QDF_STATUS (*extract_vdev_nac_rssi_stats)(wmi_unified_t wmi_handle, void *evt_buf,
+		struct wmi_host_vdev_nac_rssi_event *vdev_nac_rssi_stats);
+
 QDF_STATUS (*extract_bcn_stats)(wmi_unified_t wmi_handle, void *evt_buf,
 		uint32_t index, wmi_host_bcn_stats *bcn_stats);