qcacmn: Action frame random mac addr tx support
1. Send add random mac addr rx filter WMI command to target 2. Add/Del the active random mac addr entry 3. Clear random mac addr from target if not active Change-Id: I9dcbdc20b76d9865da7a8db6ee013bf5e44e4407 CRs-Fixed: 2322097
This commit is contained in:
@@ -213,6 +213,81 @@ static QDF_STATUS extract_p2p_noa_ev_param_tlv(
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static QDF_STATUS
|
||||
send_set_mac_addr_rx_filter_cmd_tlv(wmi_unified_t wmi_handle,
|
||||
struct p2p_set_mac_filter *param)
|
||||
{
|
||||
wmi_vdev_add_mac_addr_to_rx_filter_cmd_fixed_param *cmd;
|
||||
uint32_t len;
|
||||
wmi_buf_t buf;
|
||||
int ret;
|
||||
|
||||
if (!wmi_handle) {
|
||||
WMI_LOGE("WMA context is invald!");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
len = sizeof(*cmd);
|
||||
buf = wmi_buf_alloc(wmi_handle, len);
|
||||
if (!buf) {
|
||||
WMI_LOGE("Failed allocate wmi buffer");
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
}
|
||||
|
||||
cmd = (wmi_vdev_add_mac_addr_to_rx_filter_cmd_fixed_param *)
|
||||
wmi_buf_data(buf);
|
||||
|
||||
WMITLV_SET_HDR(
|
||||
&cmd->tlv_header,
|
||||
WMITLV_TAG_STRUC_wmi_vdev_add_mac_addr_to_rx_filter_cmd_fixed_param,
|
||||
WMITLV_GET_STRUCT_TLVLEN(
|
||||
wmi_vdev_add_mac_addr_to_rx_filter_cmd_fixed_param));
|
||||
|
||||
cmd->vdev_id = param->vdev_id;
|
||||
cmd->freq = param->freq;
|
||||
WMI_CHAR_ARRAY_TO_MAC_ADDR(param->mac, &cmd->mac_addr);
|
||||
if (param->set)
|
||||
cmd->enable = 1;
|
||||
else
|
||||
cmd->enable = 0;
|
||||
WMI_LOGD("set random mac rx vdev %d freq %d set %d %pM",
|
||||
param->vdev_id, param->freq, param->set, param->mac);
|
||||
ret = wmi_unified_cmd_send(wmi_handle, buf, len,
|
||||
WMI_VDEV_ADD_MAC_ADDR_TO_RX_FILTER_CMDID);
|
||||
if (ret) {
|
||||
WMI_LOGE("Failed to send action frame random mac cmd");
|
||||
wmi_buf_free(buf);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static QDF_STATUS extract_mac_addr_rx_filter_evt_param_tlv(
|
||||
wmi_unified_t wmi_handle, void *evt_buf,
|
||||
struct p2p_set_mac_filter_evt *param)
|
||||
{
|
||||
WMI_VDEV_ADD_MAC_ADDR_TO_RX_FILTER_STATUS_EVENTID_param_tlvs *param_buf;
|
||||
wmi_vdev_add_mac_addr_to_rx_filter_status_event_fixed_param *event;
|
||||
|
||||
param_buf =
|
||||
(WMI_VDEV_ADD_MAC_ADDR_TO_RX_FILTER_STATUS_EVENTID_param_tlvs *)
|
||||
evt_buf;
|
||||
if (!param_buf) {
|
||||
WMI_LOGE("Invalid action frame filter mac event");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
event = param_buf->fixed_param;
|
||||
if (!event) {
|
||||
WMI_LOGE("Invalid fixed param");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
param->vdev_id = event->vdev_id;
|
||||
param->status = event->status;
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
#ifdef FEATURE_P2P_LISTEN_OFFLOAD
|
||||
/**
|
||||
* send_p2p_lo_start_cmd_tlv() - send p2p lo start request to fw
|
||||
@@ -406,6 +481,9 @@ void wmi_p2p_attach_tlv(wmi_unified_t wmi_handle)
|
||||
ops->send_set_p2pgo_oppps_req_cmd = send_set_p2pgo_oppps_req_cmd_tlv;
|
||||
ops->send_set_p2pgo_noa_req_cmd = send_set_p2pgo_noa_req_cmd_tlv;
|
||||
ops->extract_p2p_noa_ev_param = extract_p2p_noa_ev_param_tlv;
|
||||
ops->set_mac_addr_rx_filter = send_set_mac_addr_rx_filter_cmd_tlv,
|
||||
ops->extract_mac_addr_rx_filter_evt_param =
|
||||
extract_mac_addr_rx_filter_evt_param_tlv,
|
||||
wmi_p2p_listen_offload_attach_tlv(wmi_handle);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user