qcacmn: Add support to set MAC address command in WMI
As part of new enhancements, driver is supporting MAC address update after VDE creation in the FW. To support this feature add WMI support to send MAC address command to the FW. Change-Id: Ie4b7291520793c8aa501fefccaf7b91ab22e9054 CRs-Fixed: 3084119
This commit is contained in:

gecommit door
Madan Koyyalamudi

bovenliggende
16219ce7ce
commit
707fb8a2f8
@@ -4579,4 +4579,16 @@ QDF_STATUS
|
||||
wmi_unified_pdev_set_mec_timer(struct wmi_unified *wmi_handle,
|
||||
struct set_mec_timer_params *param);
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
|
||||
/**
|
||||
* wmi_unified_send_set_mac_addr() - Send VDEV set MAC address command to FW
|
||||
* @wmi_handle: WMI handle
|
||||
* @params: Set MAC address command params
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS for success or error code
|
||||
*/
|
||||
QDF_STATUS wmi_unified_send_set_mac_addr(struct wmi_unified *wmi_handle,
|
||||
struct set_mac_addr_params *params);
|
||||
#endif
|
||||
#endif /* _WMI_UNIFIED_API_H_ */
|
||||
|
@@ -4722,6 +4722,9 @@ typedef enum {
|
||||
#endif
|
||||
wmi_pdev_fips_extend_event_id,
|
||||
wmi_roam_frame_event_id,
|
||||
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
|
||||
wmi_vdev_update_mac_addr_conf_eventid,
|
||||
#endif
|
||||
wmi_events_max,
|
||||
} wmi_conv_event_id;
|
||||
|
||||
@@ -5336,6 +5339,9 @@ typedef enum {
|
||||
wmi_service_phy_dma_byte_swap_support,
|
||||
wmi_service_spectral_session_info_support,
|
||||
wmi_service_mu_snif,
|
||||
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
|
||||
wmi_service_dynamic_update_vdev_macaddr_support,
|
||||
#endif
|
||||
wmi_services_max,
|
||||
} wmi_conv_service_ids;
|
||||
#define WMI_SERVICE_UNAVAILABLE 0xFFFF
|
||||
@@ -8301,6 +8307,20 @@ struct set_mec_timer_params {
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
|
||||
/**
|
||||
* struct set_mac_addr_params - Set MAC address command parameter
|
||||
* @vdev_id: vdev id
|
||||
* @mac_addr: VDEV MAC address
|
||||
* @mmld_addr: MLD address of the vdev
|
||||
*/
|
||||
struct set_mac_addr_params {
|
||||
uint8_t vdev_id;
|
||||
struct qdf_mac_addr mac_addr;
|
||||
struct qdf_mac_addr mld_addr;
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_FEATURE_SON
|
||||
/**
|
||||
* struct wmi_host_inst_rssi_stats_resp - inst rssi stats
|
||||
|
@@ -2789,6 +2789,11 @@ QDF_STATUS
|
||||
(*extract_inst_rssi_stats_resp)(wmi_unified_t wmi_handle, void *evt_buf,
|
||||
struct wmi_host_inst_rssi_stats_resp *inst_rssi_resp);
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
|
||||
QDF_STATUS (*send_set_mac_address_cmd)(wmi_unified_t wmi,
|
||||
struct set_mac_addr_params *params);
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Forward declartion for psoc*/
|
||||
|
@@ -3662,3 +3662,14 @@ wmi_unified_pdev_set_mec_timer(struct wmi_unified *wmi_handle,
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
|
||||
QDF_STATUS wmi_unified_send_set_mac_addr(struct wmi_unified *wmi_handle,
|
||||
struct set_mac_addr_params *params)
|
||||
{
|
||||
if (wmi_handle->ops->send_set_mac_address_cmd)
|
||||
return wmi_handle->ops->send_set_mac_address_cmd(wmi_handle,
|
||||
params);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
#endif
|
||||
|
@@ -16770,6 +16770,51 @@ send_set_halphy_cal_tlv(wmi_unified_t wmi_handle,
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
|
||||
/**
|
||||
* send_set_mac_address_cmd_tlv() - send set MAC address command to fw
|
||||
* @wmi: wmi handle
|
||||
* @params: set MAC address command params
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS for success or error code
|
||||
*/
|
||||
static QDF_STATUS
|
||||
send_set_mac_address_cmd_tlv(wmi_unified_t wmi,
|
||||
struct set_mac_addr_params *params)
|
||||
{
|
||||
wmi_vdev_update_mac_addr_cmd_fixed_param *cmd;
|
||||
wmi_buf_t buf;
|
||||
int32_t len = sizeof(*cmd);
|
||||
|
||||
buf = wmi_buf_alloc(wmi, len);
|
||||
if (!buf)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
||||
cmd = (wmi_vdev_update_mac_addr_cmd_fixed_param *)wmi_buf_data(buf);
|
||||
WMITLV_SET_HDR(
|
||||
&cmd->tlv_header,
|
||||
WMITLV_TAG_STRUC_wmi_vdev_update_mac_addr_cmd_fixed_param,
|
||||
WMITLV_GET_STRUCT_TLVLEN
|
||||
(wmi_vdev_update_mac_addr_cmd_fixed_param));
|
||||
cmd->vdev_id = params->vdev_id;
|
||||
WMI_CHAR_ARRAY_TO_MAC_ADDR(params->mac_addr.bytes, &cmd->vdev_macaddr);
|
||||
WMI_CHAR_ARRAY_TO_MAC_ADDR(params->mld_addr.bytes, &cmd->mld_macaddr);
|
||||
|
||||
wmi_debug("vdev %d mac_addr " QDF_MAC_ADDR_FMT " mld_addr "
|
||||
QDF_MAC_ADDR_FMT, cmd->vdev_id,
|
||||
QDF_MAC_ADDR_REF(params->mac_addr.bytes),
|
||||
QDF_MAC_ADDR_REF(params->mld_addr.bytes));
|
||||
wmi_mtrace(WMI_VDEV_UPDATE_MAC_ADDR_CMDID, cmd->vdev_id, 0);
|
||||
if (wmi_unified_cmd_send(wmi, buf, len,
|
||||
WMI_VDEV_UPDATE_MAC_ADDR_CMDID)) {
|
||||
wmi_buf_free(buf);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
struct wmi_ops tlv_ops = {
|
||||
.send_vdev_create_cmd = send_vdev_create_cmd_tlv,
|
||||
.send_vdev_delete_cmd = send_vdev_delete_cmd_tlv,
|
||||
@@ -17178,9 +17223,14 @@ struct wmi_ops tlv_ops = {
|
||||
.send_mgmt_rx_reo_filter_config_cmd =
|
||||
send_mgmt_rx_reo_filter_config_cmd_tlv,
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||
.send_roam_set_param_cmd = send_roam_set_param_cmd_tlv,
|
||||
#endif /* WLAN_FEATURE_ROAM_OFFLOAD */
|
||||
|
||||
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
|
||||
.send_set_mac_address_cmd = send_set_mac_address_cmd_tlv,
|
||||
#endif
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -17619,6 +17669,10 @@ event_ids[wmi_roam_scan_chan_list_id] =
|
||||
#endif
|
||||
event_ids[wmi_roam_frame_event_id] =
|
||||
WMI_ROAM_FRAME_EVENTID;
|
||||
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
|
||||
event_ids[wmi_vdev_update_mac_addr_conf_eventid] =
|
||||
WMI_VDEV_UPDATE_MAC_ADDR_CONF_EVENTID;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef WLAN_FEATURE_LINK_LAYER_STATS
|
||||
@@ -18058,6 +18112,10 @@ static void populate_tlv_service(uint32_t *wmi_service)
|
||||
wmi_service[wmi_service_spectral_session_info_support] =
|
||||
WMI_SERVICE_UNAVAILABLE;
|
||||
wmi_service[wmi_service_mu_snif] = WMI_SERVICE_MU_SNIF;
|
||||
#ifdef WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE
|
||||
wmi_service[wmi_service_dynamic_update_vdev_macaddr_support] =
|
||||
WMI_SERVICE_DYNAMIC_VDEV_MAC_ADDR_UPDATE_SUPPORT;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
|
Verwijs in nieuw issue
Block a user