qcacmn: Add WMI support for vdev delete all peer

Add WMI support for vdev delete all
peer request which will replace individual peer
delete of peers under a vdev during vdev down.

Change-Id: Ia41ae5fbf96a75d2a3e608564742d2a43e0ed2cc
CRs-Fixed: 2456858
This commit is contained in:
Naga
2019-06-24 17:05:45 +05:30
committed by nshrivas
parent 52beb2c087
commit 8e5172276f
5 changed files with 63 additions and 0 deletions

View File

@@ -86,6 +86,8 @@
#define WLAN_PDEV_F_MULTIVDEV_RESTART 0x10000000
/* MBSS IE enable */
#define WLAN_PDEV_F_MBSS_IE_ENABLE 0x20000000
/* VDEV Peer delete all */
#define WLAN_PDEV_F_DELETE_ALL_PEER 0x40000000
/* PDEV op flags */
/* Enable htrate for wep and tkip */

View File

@@ -571,6 +571,17 @@ wmi_unified_peer_flush_tids_send(wmi_unified_t wmi_handle,
uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
struct peer_flush_params *param);
/**
* wmi_unified_peer_delete_all_send() - send PEER delete all command to fw
* @wmi_hdl: wmi handle
* @param: pointer to hold peer delete all parameters
*
* Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
*/
QDF_STATUS wmi_unified_peer_delete_all_send(
wmi_unified_t wmi_hdl,
struct peer_delete_all_params *param);
/**
* wmi_set_peer_param() - set peer parameter in fw
* @wmi_handle: wmi handle

View File

@@ -945,6 +945,15 @@ struct peer_flush_params {
uint32_t peer_tid_bitmap;
uint8_t vdev_id;
};
/**
* struct peer_delete_all_params - peer delete all request parameter
* @vdev_id: vdev id
*/
struct peer_delete_all_params {
uint8_t vdev_id;
};
#endif
/**
@@ -4765,6 +4774,7 @@ typedef enum {
wmi_pdev_check_cal_version_event_id,
wmi_atf_peer_stats_event_id,
wmi_peer_delete_response_event_id,
wmi_peer_delete_all_response_event_id,
wmi_pdev_csa_switch_count_status_event_id,
wmi_reg_chan_list_cc_event_id,
wmi_offchan_data_tx_completion_event,
@@ -5321,6 +5331,7 @@ typedef enum {
wmi_service_adaptive_11r_support,
wmi_service_data_stall_recovery_support,
wmi_service_tx_compl_tsf64,
wmi_service_vdev_delete_all_peer,
wmi_services_max,
} wmi_conv_service_ids;
#define WMI_SERVICE_UNAVAILABLE 0xFFFF
@@ -7117,6 +7128,20 @@ struct wmi_host_peer_delete_response_event {
struct qdf_mac_addr mac_address;
};
/**
* struct wmi_host_vdev_peer_delete_all_response_event -
* VDEV peer delete all response
* @vdev_id: vdev id
* @status: status of request
* 0 - OK; command successful
* 1 - EINVAL; Requested invalid vdev_id
* 2 - EFAILED; Delete all peer failed
*/
struct wmi_host_vdev_peer_delete_all_response_event {
uint32_t vdev_id;
uint32_t status;
};
/**
* @struct wmi_host_dcs_interference_param
* @interference_type: Type of DCS Interference

View File

@@ -302,6 +302,10 @@ QDF_STATUS (*send_peer_delete_cmd)(wmi_unified_t wmi,
uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
uint8_t vdev_id);
QDF_STATUS (*send_peer_delete_all_cmd)(
wmi_unified_t wmi,
struct peer_delete_all_params *param);
QDF_STATUS
(*send_peer_unmap_conf_cmd)(wmi_unified_t wmi,
uint8_t vdev_id,
@@ -1711,6 +1715,17 @@ QDF_STATUS (*extract_peer_delete_response_event)(
void *evt_buf,
struct wmi_host_peer_delete_response_event *param);
QDF_STATUS (*extract_vdev_peer_delete_all_resp)(
wmi_unified_t wmi_handle,
void *evt_buf,
struct wmi_host_vdev_peer_delete_all_response_event
*peer_delete_all_rsp);
QDF_STATUS (*extract_vdev_peer_delete_all_response_event)(
wmi_unified_t wmi_handle,
void *evt_buf,
struct wmi_host_vdev_peer_delete_all_response_event *param);
bool (*is_management_record)(uint32_t cmd_id);
bool (*is_diag_event)(uint32_t event_id);
uint8_t *(*wmi_id_to_name)(uint32_t cmd_id);

View File

@@ -214,6 +214,16 @@ QDF_STATUS wmi_unified_peer_delete_send(wmi_unified_t wmi_handle,
return QDF_STATUS_E_FAILURE;
}
QDF_STATUS wmi_unified_peer_delete_all_send(
wmi_unified_t wmi_hdl,
struct peer_delete_all_params *param)
{
if (wmi_hdl->ops->send_peer_delete_all_cmd)
return wmi_hdl->ops->send_peer_delete_all_cmd(wmi_hdl, param);
return QDF_STATUS_E_FAILURE;
}
QDF_STATUS wmi_set_peer_param_send(wmi_unified_t wmi_handle,
uint8_t peer_addr[QDF_MAC_ADDR_SIZE],
struct peer_set_params *param)