qcacmn: Update vdev mlme MAC address based on connection type
Management frames from STA should carry SA as link MAC address for ML connection and net device address for non-ML connection. To achieve this, update vdev mlme MAC address to link MAC address for ML connection and to net dev MAC address for non-ML connection. Change-Id: I2285a43882039dfc706fbf73a494cc09bcba19c7 CRs-Fixed: 2993031
Tento commit je obsažen v:

odevzdal
Madan Koyyalamudi

rodič
6a5a2ec74a
revize
e95a45c0f7
@@ -458,17 +458,43 @@ void cm_set_vdev_link_id(struct cnx_mgr *cm_ctx,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void cm_update_vdev_mlme_macaddr(struct cnx_mgr *cm_ctx,
|
||||
struct cm_connect_req *req)
|
||||
{
|
||||
wlan_vdev_obj_lock(cm_ctx->vdev);
|
||||
if (req->cur_candidate->entry->ie_list.multi_link) {
|
||||
/* Use link address for ML connection */
|
||||
wlan_vdev_mlme_set_macaddr(cm_ctx->vdev,
|
||||
cm_ctx->vdev->vdev_mlme.linkaddr);
|
||||
} else {
|
||||
/* Use net_dev address for non-ML connection */
|
||||
wlan_vdev_mlme_set_macaddr(cm_ctx->vdev,
|
||||
cm_ctx->vdev->vdev_mlme.mldaddr);
|
||||
}
|
||||
wlan_vdev_obj_unlock(cm_ctx->vdev);
|
||||
}
|
||||
#else
|
||||
static inline
|
||||
void cm_set_vdev_link_id(struct cnx_mgr *cm_ctx,
|
||||
struct cm_connect_req *req)
|
||||
{ }
|
||||
|
||||
static void cm_update_vdev_mlme_macaddr(struct cnx_mgr *cm_ctx,
|
||||
struct cm_connect_req *req)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
static inline
|
||||
void cm_set_vdev_link_id(struct cnx_mgr *cm_ctx,
|
||||
struct cm_connect_req *req)
|
||||
{ }
|
||||
|
||||
static void cm_update_vdev_mlme_macaddr(struct cnx_mgr *cm_ctx,
|
||||
struct cm_connect_req *req)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
static void cm_create_bss_peer(struct cnx_mgr *cm_ctx,
|
||||
@@ -848,6 +874,9 @@ cm_peer_create_on_bss_select_ind_resp(struct cnx_mgr *cm_ctx, wlan_cm_id *cm_id)
|
||||
if (!cm_req)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
|
||||
/* Update vdev mlme mac address based on connection type */
|
||||
cm_update_vdev_mlme_macaddr(cm_ctx, &cm_req->connect_req);
|
||||
|
||||
cm_create_bss_peer(cm_ctx, &cm_req->connect_req);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
@@ -1448,14 +1477,19 @@ QDF_STATUS cm_try_next_candidate(struct cnx_mgr *cm_ctx,
|
||||
cm_update_ser_timer_for_new_candidate(cm_ctx, resp->cm_id);
|
||||
|
||||
status = cm_send_bss_select_ind(cm_ctx, &cm_req->connect_req);
|
||||
|
||||
/*
|
||||
* If candidate select indication is not supported continue with bss
|
||||
* peer create, else peer will be created after resp.
|
||||
*/
|
||||
if (status == QDF_STATUS_E_NOSUPPORT)
|
||||
if (status == QDF_STATUS_E_NOSUPPORT) {
|
||||
/* Update vdev mlme mac address based on connection type */
|
||||
cm_update_vdev_mlme_macaddr(cm_ctx, &cm_req->connect_req);
|
||||
|
||||
cm_create_bss_peer(cm_ctx, &cm_req->connect_req);
|
||||
else if (QDF_IS_STATUS_ERROR(status))
|
||||
} else if (QDF_IS_STATUS_ERROR(status)) {
|
||||
goto connect_err;
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
||||
@@ -1518,10 +1552,14 @@ QDF_STATUS cm_connect_active(struct cnx_mgr *cm_ctx, wlan_cm_id *cm_id)
|
||||
* If candidate select indication is not supported continue with bss
|
||||
* peer create, else peer will be created after resp.
|
||||
*/
|
||||
if (status == QDF_STATUS_E_NOSUPPORT)
|
||||
if (status == QDF_STATUS_E_NOSUPPORT) {
|
||||
/* Update vdev mlme mac address based on connection type */
|
||||
cm_update_vdev_mlme_macaddr(cm_ctx, &cm_req->connect_req);
|
||||
|
||||
cm_create_bss_peer(cm_ctx, &cm_req->connect_req);
|
||||
else if (QDF_IS_STATUS_ERROR(status))
|
||||
} else if (QDF_IS_STATUS_ERROR(status)) {
|
||||
goto connect_err;
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele