qcacld-3.0: Send T2LM status event after assoc complete
Issue 1: Host sends T2LM status event twice during an association. Requirement is: Host should send T2LM status event to upper layer for an association only once if T2LM elements does not get change in between. Currently host sends T2LM status event (wlan_connectivity_t2lm_status_event) to upper layer in below cases: 1. When host receives t2lm action frame 2. Upon Re/Association Response frame reception or roam synch indication with reassociation response frame is received 3. While processing connects complete indication As there is no chance to get change T2LM status in between association response frame and connect complete indication. So, no need to send T2LM status event while processing assoc/reassoc response frame as by this time host doesn't updates T2LM IE information buffer. Issue 2: Currently host sends STA MLD MAC address via ASSOC RESP connectivity logging event. As per requirement, host should send MLD MAC address of MLD AP via ASSOC RESP connectivity logging event and mld address should not present in event in case of non-MLD AP connection. Fix is to send MLD MAC address of MLD AP instead of STA MLD MAC address via ASSOC RESP connectivity logging event. Change-Id: I57a5875775b0960ab3b307f1486bd9e6ff4dd9ac CRs-Fixed: 3647437
Este cometimento está contido em:

cometido por
Ravindra Konda

ascendente
dcf7c5f729
cometimento
f482ec3167
@@ -431,7 +431,7 @@ wlan_populate_mlo_mgmt_event_param(struct wlan_objmgr_vdev *vdev,
|
|||||||
enum wlan_main_tag tag)
|
enum wlan_main_tag tag)
|
||||||
{
|
{
|
||||||
struct mlo_link_switch_context *link_ctx;
|
struct mlo_link_switch_context *link_ctx;
|
||||||
struct qdf_mac_addr peer_mac;
|
struct qdf_mac_addr peer_mac, peer_mld_mac;
|
||||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||||
|
|
||||||
if (!mlo_is_mld_sta(vdev))
|
if (!mlo_is_mld_sta(vdev))
|
||||||
@@ -447,16 +447,18 @@ wlan_populate_mlo_mgmt_event_param(struct wlan_objmgr_vdev *vdev,
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
qdf_mem_copy(data->diag_cmn.bssid,
|
qdf_mem_copy(data->diag_cmn.bssid, peer_mac.bytes, QDF_MAC_ADDR_SIZE);
|
||||||
peer_mac.bytes,
|
|
||||||
QDF_MAC_ADDR_SIZE);
|
|
||||||
|
|
||||||
qdf_mem_copy(data->mld_addr,
|
status = wlan_vdev_get_bss_peer_mld_mac(vdev, &peer_mld_mac);
|
||||||
wlan_vdev_mlme_get_mldaddr(vdev),
|
if (QDF_IS_STATUS_ERROR(status)) {
|
||||||
QDF_MAC_ADDR_SIZE);
|
logging_err("vdev: %d failed to get mld mac address of peer",
|
||||||
|
wlan_vdev_get_id(vdev));
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
if (tag == WLAN_ASSOC_REQ ||
|
qdf_mem_copy(data->mld_addr, peer_mld_mac.bytes, QDF_MAC_ADDR_SIZE);
|
||||||
tag == WLAN_REASSOC_REQ) {
|
|
||||||
|
if (tag == WLAN_ASSOC_REQ || tag == WLAN_REASSOC_REQ) {
|
||||||
link_ctx = vdev->mlo_dev_ctx->link_ctx;
|
link_ctx = vdev->mlo_dev_ctx->link_ctx;
|
||||||
if (!link_ctx) {
|
if (!link_ctx) {
|
||||||
logging_debug("vdev: %d link_ctx not found",
|
logging_debug("vdev: %d link_ctx not found",
|
||||||
@@ -464,8 +466,7 @@ wlan_populate_mlo_mgmt_event_param(struct wlan_objmgr_vdev *vdev,
|
|||||||
return QDF_STATUS_E_INVAL;
|
return QDF_STATUS_E_INVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
data->supported_links =
|
data->supported_links = wlan_populate_band_bitmap(link_ctx);
|
||||||
wlan_populate_band_bitmap(link_ctx);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
@@ -559,8 +560,6 @@ wlan_connectivity_mlo_setup_event(struct wlan_objmgr_vdev *vdev)
|
|||||||
wlan_diag_event.num_links = num_links;
|
wlan_diag_event.num_links = num_links;
|
||||||
|
|
||||||
WLAN_HOST_DIAG_EVENT_REPORT(&wlan_diag_event, EVENT_WLAN_MLO_SETUP);
|
WLAN_HOST_DIAG_EVENT_REPORT(&wlan_diag_event, EVENT_WLAN_MLO_SETUP);
|
||||||
|
|
||||||
wlan_connectivity_t2lm_status_event(vdev);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define IS_LINK_SET(link_bitmap, link_id) ((link_bitmap) & (BIT(link_id)))
|
#define IS_LINK_SET(link_bitmap, link_id) ((link_bitmap) & (BIT(link_id)))
|
||||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador