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:
Bapiraju Alla
2021-07-15 10:07:50 -07:00
committed by Madan Koyyalamudi
부모 dff8372b60
커밋 aaff44964d
2개의 변경된 파일26개의 추가작업 그리고 4개의 파일을 삭제

파일 보기

@@ -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");