qcacld-3.0: Don't send peer update after peer delete
During tdls peer delete, wmi command WMI_PEER_DELETE has been send but later on from driver wmi command for peer update is send without checking for peer reference before sending to fw. Fix, to check for peer reference before posting the cmd to fw. change-ID: I216d1ad726af3369c227ae566e22949cadb8300c CRs-Fixed: 2667811
This commit is contained in:
@@ -490,8 +490,11 @@ static QDF_STATUS tdls_activate_add_peer(struct tdls_add_peer_request *req)
|
||||
TDLS_LINK_CONNECTING, TDLS_LINK_SUCCESS);
|
||||
|
||||
status = tdls_pe_add_peer(req);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
tdls_err(QDF_MAC_ADDR_STR " add peer failed with status %d",
|
||||
QDF_MAC_ADDR_ARRAY(mac), status);
|
||||
goto setlink;
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
||||
@@ -950,8 +953,11 @@ tdls_activate_update_peer(struct tdls_update_peer_request *req)
|
||||
|
||||
tdls_set_peer_caps(vdev_obj, mac, &req->update_peer_req);
|
||||
status = tdls_pe_update_peer(req);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
tdls_err(QDF_MAC_ADDR_STR " update peer failed with status %d",
|
||||
QDF_MAC_ADDR_ARRAY(mac), status);
|
||||
goto setlink;
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
||||
@@ -1182,6 +1188,13 @@ QDF_STATUS tdls_process_del_peer(struct tdls_oper_request *req)
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (!peer->valid_entry) {
|
||||
tdls_err("invalid peer:" QDF_MAC_ADDR_STR " link state %d",
|
||||
QDF_MAC_ADDR_ARRAY(mac), peer->link_status);
|
||||
status = QDF_STATUS_E_INVAL;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (soc_obj->tdls_dp_vdev_update)
|
||||
soc_obj->tdls_dp_vdev_update(&soc_obj->soc,
|
||||
wlan_vdev_get_id(vdev),
|
||||
|
@@ -522,8 +522,12 @@ void tdls_indicate_teardown(struct tdls_vdev_priv_obj *tdls_vdev,
|
||||
return;
|
||||
}
|
||||
|
||||
if (TDLS_LINK_CONNECTED != curr_peer->link_status)
|
||||
if (curr_peer->link_status != TDLS_LINK_CONNECTED) {
|
||||
tdls_err("link state %d peer:" QDF_MAC_ADDR_STR,
|
||||
curr_peer->link_status,
|
||||
QDF_MAC_ADDR_ARRAY(curr_peer->peer_mac.bytes));
|
||||
return;
|
||||
}
|
||||
|
||||
tdls_set_peer_link_status(curr_peer,
|
||||
TDLS_LINK_TEARING,
|
||||
|
@@ -613,6 +613,9 @@ void tdls_set_peer_link_status(struct tdls_peer *peer,
|
||||
struct tdls_soc_priv_obj *soc_obj;
|
||||
struct tdls_vdev_priv_obj *vdev_obj;
|
||||
|
||||
tdls_debug("state %d reason %d peer:" QDF_MAC_ADDR_STR,
|
||||
link_status, link_reason,
|
||||
QDF_MAC_ADDR_ARRAY(peer->peer_mac.bytes));
|
||||
peer->link_status = link_status;
|
||||
|
||||
if (link_status >= TDLS_LINK_DISCOVERED)
|
||||
|
Reference in New Issue
Block a user