Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
254 changes: 254 additions & 0 deletions config/subdoc_schemas_1_4/wifi7_mlo_associated_clients_subdoc_schema
Original file line number Diff line number Diff line change
@@ -0,0 +1,254 @@
{
"Version": "1.0",
"SubDocName": "associated clients",
"WiFiAssociatedClients": [{
"VapName": "private_ssid_2g",
"associatedClients": []
}, {
"VapName": "iot_ssid_2g",
"associatedClients": []
}, {
"VapName": "hotspot_open_2g",
"associatedClients": []
}, {
"VapName": "lnf_psk_2g",
"associatedClients": []
}, {
"VapName": "hotspot_secure_2g",
"associatedClients": []
}, {
"VapName": "lnf_radius_2g",
"associatedClients": []
}, {
"VapName": "mesh_backhaul_2g",
"associatedClients": []
}, {
"VapName": "mesh_sta_2g",
"associatedClients": []
}, {
"VapName": "private_ssid_5g",
"associatedClients": [{
"MACAddress": "6a:ec:3f:93:08:0c",
"WpaKeyMgmt": "sae-ext",
"PairwiseCipher": "gcmp-256",
"RSNCapabilities": 128,
"AuthenticationState": true,
"LastDataDownlinkRate": 864,
"LastDataUplinkRate": 600,
"SignalStrength": -49,
"Retransmissions": 171,
"Active": true,
"OperatingStandard": "ax",
"OperatingChannelBandwidth": "80",
"SNR": 43,
"InterferenceSources": "",
"DataFramesSentAck": 2819,
"DataFramesSentNoAck": 0,
"BytesSent": 2143594,
"BytesReceived": 3740310,
"RSSI": -49,
"MinRSSI": 0,
"MaxRSSI": 0,
"Disassociations": 0,
"AuthenticationFailures": 0,
"ActiveNumSpatialStreams": 2,
"PacketsSent": 2819,
"PacketsReceived": 8553,
"ErrorsSent": 0,
"RetransCount": 171,
"FailedRetransCount": 0,
"RetryCount": 0,
"MultipleRetryCount": 0,
"MaxUplinkRate": 1201,
"MaxDownlinkRate": 1201,
"LastConnectTime": 2574
}]
}, {
"VapName": "iot_ssid_5g",
"associatedClients": []
}, {
"VapName": "hotspot_open_5g",
"associatedClients": []
}, {
"VapName": "lnf_psk_5g",
"associatedClients": []
}, {
"VapName": "hotspot_secure_5g",
"associatedClients": []
}, {
"VapName": "lnf_radius_5g",
"associatedClients": []
}, {
"VapName": "mesh_backhaul_5g",
"associatedClients": []
}, {
"VapName": "mesh_sta_5g",
"associatedClients": []
}, {
"VapName": "private_ssid_6g",
"associatedClients": []
}, {
"VapName": "iot_ssid_6g",
"associatedClients": []
}, {
"VapName": "hotspot_open_6g",
"associatedClients": []
}, {
"VapName": "lnf_psk_6g",
"associatedClients": []
}, {
"VapName": "hotspot_secure_6g",
"associatedClients": []
}, {
"VapName": "mesh_backhaul_6g",
"associatedClients": []
}, {
"VapName": "mesh_sta_6g",
"associatedClients": []
}, {
"VapName": "private_ssid_mlo",
"associatedClients": [{
"MACAddress": "ae:1c:3f:36:5d:06",
"NumLinks": 3,
"Links": [{
"Band": "2g",
"LinkAddress": "9e:16:c3:d4:7c:21",
"AssociationLink": false,
"MLCapabilities": 1,
"TIDLinkMapNegotiation": 1,
"WpaKeyMgmt": "sae-ext",
"PairwiseCipher": "gcmp-256",
"RSNCapabilities": 204,
"AuthenticationState": true,
"LastDataDownlinkRate": 4294967,
"LastDataUplinkRate": 4294967,
"SignalStrength": -255,
"Retransmissions": 0,
"Active": true,
"OperatingStandard": "be",
"OperatingChannelBandwidth": "20",
"SNR": -168,
"InterferenceSources": "",
"DataFramesSentAck": 0,
"DataFramesSentNoAck": 0,
"BytesSent": 0,
"BytesReceived": 0,
"RSSI": -255,
"MinRSSI": 0,
"MaxRSSI": 0,
"Disassociations": 0,
"AuthenticationFailures": 0,
"ActiveNumSpatialStreams": 2,
"PacketsSent": 0,
"PacketsReceived": 0,
"ErrorsSent": 0,
"RetransCount": 0,
"FailedRetransCount": 0,
"RetryCount": 0,
"MultipleRetryCount": 0,
"MaxUplinkRate": 344,
"MaxDownlinkRate": 344,
"LastConnectTime": 2693
}, {
"Band": "5g",
"LinkAddress": "32:cf:2b:32:8b:b4",
"AssociationLink": true,
"MLCapabilities": 1,
"TIDLinkMapNegotiation": 1,
"WpaKeyMgmt": "sae-ext",
"PairwiseCipher": "gcmp-256",
"RSNCapabilities": 204,
"AuthenticationState": true,
"LastDataDownlinkRate": 1134,
"LastDataUplinkRate": 24,
"SignalStrength": -45,
"Retransmissions": 52,
"Active": true,
"OperatingStandard": "be",
"OperatingChannelBandwidth": "80",
"SNR": 47,
"InterferenceSources": "",
"DataFramesSentAck": 765,
"DataFramesSentNoAck": 52,
"BytesSent": 1202212,
"BytesReceived": 238729,
"RSSI": -45,
"MinRSSI": 0,
"MaxRSSI": 0,
"Disassociations": 0,
"AuthenticationFailures": 0,
"ActiveNumSpatialStreams": 2,
"PacketsSent": 817,
"PacketsReceived": 1803,
"ErrorsSent": 1,
"RetransCount": 52,
"FailedRetransCount": 52,
"RetryCount": 0,
"MultipleRetryCount": 0,
"MaxUplinkRate": 1441,
"MaxDownlinkRate": 1441,
"LastConnectTime": 2693
}, {
"Band": "6g",
"LinkAddress": "66:78:46:8f:f4:38",
"AssociationLink": false,
"MLCapabilities": 1,
"TIDLinkMapNegotiation": 1,
"WpaKeyMgmt": "sae-ext",
"PairwiseCipher": "gcmp-256",
"RSNCapabilities": 204,
"AuthenticationState": true,
"LastDataDownlinkRate": 1297,
"LastDataUplinkRate": 24,
"SignalStrength": -55,
"Retransmissions": 89,
"Active": true,
"OperatingStandard": "be",
"OperatingChannelBandwidth": "160",
"SNR": 31,
"InterferenceSources": "",
"DataFramesSentAck": 282,
"DataFramesSentNoAck": 89,
"BytesSent": 222082,
"BytesReceived": 120940,
"RSSI": -55,
"MinRSSI": 0,
"MaxRSSI": 0,
"Disassociations": 0,
"AuthenticationFailures": 0,
"ActiveNumSpatialStreams": 2,
"PacketsSent": 371,
"PacketsReceived": 739,
"ErrorsSent": 0,
"RetransCount": 89,
"FailedRetransCount": 89,
"RetryCount": 0,
"MultipleRetryCount": 0,
"MaxUplinkRate": 2882,
"MaxDownlinkRate": 2882,
"LastConnectTime": 2693
}]
}]
}, {
"VapName": "iot_ssid_mlo",
"associatedClients": []
}, {
"VapName": "hotspot_open_mlo",
"associatedClients": []
}, {
"VapName": "lnf_psk_mlo",
"associatedClients": []
}, {
"VapName": "hotspot_secure_mlo",
"associatedClients": []
}, {
"VapName": "lnf_radius_mlo",
"associatedClients": []
}, {
"VapName": "mesh_backhaul_mlo",
"associatedClients": []
}, {
"VapName": "mesh_sta_mlo",
"associatedClients": []
}]
}
12 changes: 12 additions & 0 deletions include/wifi_base.h
Original file line number Diff line number Diff line change
Expand Up @@ -1021,6 +1021,18 @@ typedef struct {
mac_address_t link_address;
} __attribute__((__packed__)) assoc_dev_data_t;

#if defined(CONFIG_IEEE80211BE)
typedef struct {
unsigned int num_links;
assoc_dev_data_t links[MAX_NUM_RADIOS];
} mlo_client_t;

typedef struct {
wifi_vap_name_t vap_name;
hash_map_t *mlo_sta_map;
} wifi_mld_unit_t;
#endif /* CONFIG_IEEE80211BE */

struct active_msmt_data;

typedef struct {
Expand Down
15 changes: 13 additions & 2 deletions source/core/wifi_ctrl_queue_handlers.c
Original file line number Diff line number Diff line change
Expand Up @@ -2133,9 +2133,13 @@ void process_disassoc_device_event(void *data)
} else {
assoc_dev_data_t *temp = hash_map_remove(rdk_vap_info->associated_devices_map, mac_str);
if (temp != NULL) {
wifi_util_dbg_print(WIFI_CTRL,"%s:%d vap_index: %d MAC: %s is MLD %d\n",
__func__, __LINE__, rdk_vap_info->vap_index, mac_str, temp->mld_info.cli_MLDSta);
mld_sta = temp->mld_info.cli_MLDSta;
if (mld_sta == true) {
wifi_util_info_print(WIFI_CTRL, "%s:%d MLO client disconnected %s\n",
__func__, __LINE__, mac_str);
}
wifi_util_dbg_print(WIFI_CTRL,"%s:%d vap_index: %d MAC: %s is MLD %d\n",
__func__, __LINE__, rdk_vap_info->vap_index, mac_str, mld_sta);
if (process_device_removal(rdk_vap_info, mac_str, temp,
p_wifi_mgr, &new_count, old_count) == RETURN_ERR) {
pthread_mutex_unlock(rdk_vap_info->associated_devices_lock);
Expand Down Expand Up @@ -2529,22 +2533,29 @@ void process_assoc_device_event(void *data)

if (assoc_data->mld_info.cli_MLDSta == true) {
int assoc_link_idx = -1;
int num_links = 0;

for (int link_idx = 0; link_idx < MAX_NUM_RADIOS; link_idx++) {
if (assoc_data->mld_info.cli_LinkInfo[link_idx].cli_Valid) {
if (assoc_data->mld_info.cli_LinkInfo[link_idx].cli_IsAssocLink) {
assoc_link_idx = link_idx;
}
assoc_dev_update_mlo_link(assoc_data, link_idx);
assoc_dev_event(assoc_data);

num_links++;
}
}

/* In case of MLO client upcoming LM_lite notification needs to be from assoc link */
if (assoc_link_idx != -1) {
assoc_dev_update_mlo_link(assoc_data, assoc_link_idx);
} else {
wifi_util_error_print(WIFI_CTRL, "%s:%d No valid associated link found for MLD STA " MAC_FMT "\n",
__func__, __LINE__, MAC_ARG(assoc_data->dev_stats.cli_MACAddress));
}
wifi_util_info_print(WIFI_CTRL, "%s:%d MLO client connected " MAC_FMT " with %d links\n",
__func__, __LINE__, MAC_ARG(assoc_data->dev_stats.cli_MACAddress), num_links);
} else {
assoc_dev_event(assoc_data);
}
Expand Down
Loading
Loading