1
0

qcacmn: Add functionality to send bridge MAC to firmware

Add functions to send bridge MAC programmed from user
space to firmware.This change is part of a workaround
to fix an looping issue which resulted in wrongly adding
bridge's own MAC address to fw WDS table.Send MAC address
to target to avoid adding our own bridge address to fw
WDS table as part of source port learning.

Change-Id: I815d3c3f106cd2f528ac9172712ec6c2f47f4410
CRs-Fixed: 2070956
Este cometimento está contido em:
Jeevan Kukkalli
2017-06-16 18:07:28 +05:30
cometido por Nandini Suresh
ascendente 7544a40193
cometimento 0aeff78c35
2 ficheiros modificados com 50 adições e 0 eliminações

Ver ficheiro

@@ -663,6 +663,36 @@ static QDF_STATUS send_peer_del_wds_entry_cmd_non_tlv(wmi_unified_t wmi_handle,
WMI_PEER_REMOVE_WDS_ENTRY_CMDID);
}
/**
* send_set_bridge_mac_addr_cmd_non_tlv() - send set bridge MAC addr command to fw
* @wmi_handle: wmi handle
* @param: pointer holding bridge addr details
*
* Return: 0 for success or error code
*/
QDF_STATUS send_set_bridge_mac_addr_cmd_non_tlv(wmi_unified_t wmi_handle,
struct set_bridge_mac_addr_params *param)
{
wmi_peer_add_wds_entry_cmd *cmd;
wmi_buf_t buf;
uint8_t null_macaddr[IEEE80211_ADDR_LEN];
int len = sizeof(wmi_peer_add_wds_entry_cmd);
buf = wmi_buf_alloc(wmi_handle, len);
if (!buf) {
qdf_print("%s: wmi_buf_alloc failed\n", __func__);
return QDF_STATUS_E_NOMEM;
}
qdf_mem_zero(null_macaddr, IEEE80211_ADDR_LEN);
cmd = (wmi_peer_add_wds_entry_cmd *)wmi_buf_data(buf);
WMI_CHAR_ARRAY_TO_MAC_ADDR(param->bridge_addr, &cmd->wds_macaddr);
WMI_CHAR_ARRAY_TO_MAC_ADDR(null_macaddr, &cmd->peer_macaddr);
cmd->flags = 0xffffffff;
return wmi_unified_cmd_send(wmi_handle, buf, len,
WMI_PEER_ADD_WDS_ENTRY_CMDID);
}
/**
* send_peer_update_wds_entry_cmd_non_tlv() - send peer update command to fw
* @wmi_handle: wmi handle
@@ -8144,6 +8174,7 @@ struct wmi_ops non_tlv_ops = {
.send_mcast_group_update_cmd = send_mcast_group_update_cmd_non_tlv,
.send_peer_add_wds_entry_cmd = send_peer_add_wds_entry_cmd_non_tlv,
.send_peer_del_wds_entry_cmd = send_peer_del_wds_entry_cmd_non_tlv,
.send_set_bridge_mac_addr_cmd = send_set_bridge_mac_addr_cmd_non_tlv,
.send_peer_update_wds_entry_cmd =
send_peer_update_wds_entry_cmd_non_tlv,
.send_phyerr_enable_cmd = send_phyerr_enable_cmd_non_tlv,