|
@@ -464,20 +464,20 @@ void cm_set_vdev_link_id(struct cnx_mgr *cm_ctx,
|
|
wlan_vdev_set_link_id(cm_ctx->vdev, link_id);
|
|
wlan_vdev_set_link_id(cm_ctx->vdev, link_id);
|
|
}
|
|
}
|
|
|
|
|
|
-static void cm_update_vdev_mlme_macaddr(struct cnx_mgr *cm_ctx,
|
|
|
|
- struct cm_connect_req *req)
|
|
|
|
|
|
+static QDF_STATUS cm_update_vdev_mlme_macaddr(struct cnx_mgr *cm_ctx,
|
|
|
|
+ struct cm_connect_req *req)
|
|
{
|
|
{
|
|
struct qdf_mac_addr *mac;
|
|
struct qdf_mac_addr *mac;
|
|
bool eht_capab;
|
|
bool eht_capab;
|
|
uint8_t vdev_id = wlan_vdev_get_id(cm_ctx->vdev);
|
|
uint8_t vdev_id = wlan_vdev_get_id(cm_ctx->vdev);
|
|
|
|
|
|
if (wlan_vdev_mlme_get_opmode(cm_ctx->vdev) != QDF_STA_MODE)
|
|
if (wlan_vdev_mlme_get_opmode(cm_ctx->vdev) != QDF_STA_MODE)
|
|
- return;
|
|
|
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
|
|
|
|
wlan_psoc_mlme_get_11be_capab(wlan_vdev_get_psoc(cm_ctx->vdev),
|
|
wlan_psoc_mlme_get_11be_capab(wlan_vdev_get_psoc(cm_ctx->vdev),
|
|
&eht_capab);
|
|
&eht_capab);
|
|
if (!eht_capab)
|
|
if (!eht_capab)
|
|
- return;
|
|
|
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
|
|
|
|
mac = (struct qdf_mac_addr *)wlan_vdev_mlme_get_mldaddr(cm_ctx->vdev);
|
|
mac = (struct qdf_mac_addr *)wlan_vdev_mlme_get_mldaddr(cm_ctx->vdev);
|
|
|
|
|
|
@@ -493,6 +493,13 @@ static void cm_update_vdev_mlme_macaddr(struct cnx_mgr *cm_ctx,
|
|
CM_PREFIX_REF(vdev_id, req->cm_id),
|
|
CM_PREFIX_REF(vdev_id, req->cm_id),
|
|
QDF_MAC_ADDR_REF(mac->bytes));
|
|
QDF_MAC_ADDR_REF(mac->bytes));
|
|
} else {
|
|
} else {
|
|
|
|
+ if (wlan_vdev_mlme_is_mlo_link_vdev(cm_ctx->vdev)) {
|
|
|
|
+ mlme_debug(CM_PREFIX_FMT "MLIE is not present for partner" QDF_MAC_ADDR_FMT,
|
|
|
|
+ CM_PREFIX_REF(vdev_id, req->cm_id),
|
|
|
|
+ QDF_MAC_ADDR_REF(mac->bytes));
|
|
|
|
+ return QDF_STATUS_E_INVAL;
|
|
|
|
+ }
|
|
|
|
+
|
|
/* Use net_dev address for non-ML connection */
|
|
/* Use net_dev address for non-ML connection */
|
|
if (!qdf_is_macaddr_zero(mac)) {
|
|
if (!qdf_is_macaddr_zero(mac)) {
|
|
wlan_vdev_obj_lock(cm_ctx->vdev);
|
|
wlan_vdev_obj_lock(cm_ctx->vdev);
|
|
@@ -504,6 +511,8 @@ static void cm_update_vdev_mlme_macaddr(struct cnx_mgr *cm_ctx,
|
|
}
|
|
}
|
|
wlan_vdev_mlme_clear_mlo_vdev(cm_ctx->vdev);
|
|
wlan_vdev_mlme_clear_mlo_vdev(cm_ctx->vdev);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
}
|
|
}
|
|
#else
|
|
#else
|
|
static inline
|
|
static inline
|
|
@@ -511,9 +520,10 @@ void cm_set_vdev_link_id(struct cnx_mgr *cm_ctx,
|
|
struct cm_connect_req *req)
|
|
struct cm_connect_req *req)
|
|
{ }
|
|
{ }
|
|
|
|
|
|
-static void cm_update_vdev_mlme_macaddr(struct cnx_mgr *cm_ctx,
|
|
|
|
- struct cm_connect_req *req)
|
|
|
|
|
|
+static QDF_STATUS cm_update_vdev_mlme_macaddr(struct cnx_mgr *cm_ctx,
|
|
|
|
+ struct cm_connect_req *req)
|
|
{
|
|
{
|
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|
|
/**
|
|
/**
|
|
@@ -564,9 +574,10 @@ void cm_set_vdev_link_id(struct cnx_mgr *cm_ctx,
|
|
struct cm_connect_req *req)
|
|
struct cm_connect_req *req)
|
|
{ }
|
|
{ }
|
|
|
|
|
|
-static void cm_update_vdev_mlme_macaddr(struct cnx_mgr *cm_ctx,
|
|
|
|
- struct cm_connect_req *req)
|
|
|
|
|
|
+static QDF_STATUS cm_update_vdev_mlme_macaddr(struct cnx_mgr *cm_ctx,
|
|
|
|
+ struct cm_connect_req *req)
|
|
{
|
|
{
|
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
}
|
|
}
|
|
|
|
|
|
static struct qdf_mac_addr *cm_get_bss_peer_mld_addr(struct cm_connect_req *req)
|
|
static struct qdf_mac_addr *cm_get_bss_peer_mld_addr(struct cm_connect_req *req)
|
|
@@ -2078,7 +2089,10 @@ QDF_STATUS cm_try_next_candidate(struct cnx_mgr *cm_ctx,
|
|
*/
|
|
*/
|
|
if (status == QDF_STATUS_E_NOSUPPORT) {
|
|
if (status == QDF_STATUS_E_NOSUPPORT) {
|
|
/* Update vdev mlme mac address based on connection type */
|
|
/* Update vdev mlme mac address based on connection type */
|
|
- cm_update_vdev_mlme_macaddr(cm_ctx, &cm_req->connect_req);
|
|
|
|
|
|
+ status = cm_update_vdev_mlme_macaddr(cm_ctx,
|
|
|
|
+ &cm_req->connect_req);
|
|
|
|
+ if (QDF_IS_STATUS_ERROR(status))
|
|
|
|
+ goto connect_err;
|
|
|
|
|
|
cm_create_bss_peer(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)) {
|
|
@@ -2172,7 +2186,10 @@ QDF_STATUS cm_connect_active(struct cnx_mgr *cm_ctx, wlan_cm_id *cm_id)
|
|
*/
|
|
*/
|
|
if (status == QDF_STATUS_E_NOSUPPORT) {
|
|
if (status == QDF_STATUS_E_NOSUPPORT) {
|
|
/* Update vdev mlme mac address based on connection type */
|
|
/* Update vdev mlme mac address based on connection type */
|
|
- cm_update_vdev_mlme_macaddr(cm_ctx, &cm_req->connect_req);
|
|
|
|
|
|
+ status = cm_update_vdev_mlme_macaddr(cm_ctx,
|
|
|
|
+ &cm_req->connect_req);
|
|
|
|
+ if (QDF_IS_STATUS_ERROR(status))
|
|
|
|
+ goto connect_err;
|
|
|
|
|
|
cm_create_bss_peer(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)) {
|