qcacld-3.0: Create STA self peer with MLD mac address
For station case, create self peer with MLD MAC address. Change-Id: I53b545763f15df5650e8b4b3dc7ea6ffddc88228 CRs-Fixed: 2994409
This commit is contained in:
@@ -4692,7 +4692,7 @@ QDF_STATUS sme_vdev_delete(mac_handle_t mac_handle,
|
||||
{
|
||||
QDF_STATUS status;
|
||||
struct mac_context *mac = MAC_CONTEXT(mac_handle);
|
||||
uint8_t vdev_id = wlan_vdev_get_id(vdev);
|
||||
uint8_t *self_peer_macaddr, vdev_id = wlan_vdev_get_id(vdev);
|
||||
struct scheduler_msg self_peer_delete_msg = {0};
|
||||
struct del_vdev_params *del_self_peer;
|
||||
|
||||
@@ -4732,10 +4732,14 @@ QDF_STATUS sme_vdev_delete(mac_handle_t mac_handle,
|
||||
if (!del_self_peer)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
||||
self_peer_macaddr = wlan_vdev_mlme_get_mldaddr(vdev);
|
||||
if (qdf_is_macaddr_zero((struct qdf_mac_addr *)self_peer_macaddr))
|
||||
self_peer_macaddr = wlan_vdev_mlme_get_macaddr(vdev);
|
||||
|
||||
del_self_peer->vdev = vdev;
|
||||
del_self_peer->vdev_id = wlan_vdev_get_id(vdev);
|
||||
qdf_mem_copy(del_self_peer->self_mac_addr,
|
||||
wlan_vdev_mlme_get_macaddr(vdev), sizeof(tSirMacAddr));
|
||||
qdf_mem_copy(del_self_peer->self_mac_addr, self_peer_macaddr,
|
||||
sizeof(tSirMacAddr));
|
||||
|
||||
self_peer_delete_msg.bodyptr = del_self_peer;
|
||||
self_peer_delete_msg.callback = mlme_vdev_self_peer_delete;
|
||||
|
@@ -2559,6 +2559,7 @@ QDF_STATUS wma_vdev_self_peer_create(struct vdev_mlme_obj *vdev_mlme)
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
struct wlan_objmgr_vdev *vdev = vdev_mlme->vdev;
|
||||
tp_wma_handle wma_handle;
|
||||
uint8_t peer_vdev_id, *self_peer_macaddr;
|
||||
|
||||
wma_handle = cds_get_context(QDF_MODULE_ID_WMA);
|
||||
if (!wma_handle)
|
||||
@@ -2574,9 +2575,26 @@ QDF_STATUS wma_vdev_self_peer_create(struct vdev_mlme_obj *vdev_mlme)
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
wma_err("Failed to create peer %d", status);
|
||||
} else if (vdev_mlme->mgmt.generic.type == WMI_VDEV_TYPE_STA) {
|
||||
if (!qdf_is_macaddr_zero(
|
||||
(struct qdf_mac_addr *)vdev->vdev_mlme.mldaddr))
|
||||
self_peer_macaddr = vdev->vdev_mlme.mldaddr;
|
||||
else
|
||||
self_peer_macaddr = vdev->vdev_mlme.macaddr;
|
||||
|
||||
/**
|
||||
* Self peer is used for the frames exchanged before
|
||||
* association. For ML STA, Self peer create will be triggered
|
||||
* for both the VDEVs, but one self peer is enough. So in case
|
||||
* of ML, use MLD address for the self peer and ignore self peer
|
||||
* creation for the partner link vdev.
|
||||
*/
|
||||
if (wma_objmgr_peer_exist(wma_handle, self_peer_macaddr,
|
||||
&peer_vdev_id))
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
||||
obj_peer = wma_create_objmgr_peer(wma_handle,
|
||||
wlan_vdev_get_id(vdev),
|
||||
vdev->vdev_mlme.macaddr,
|
||||
self_peer_macaddr,
|
||||
WMI_PEER_TYPE_DEFAULT);
|
||||
if (!obj_peer) {
|
||||
wma_err("Failed to create obj mgr peer for self");
|
||||
|
Reference in New Issue
Block a user