wlan: To get correct link speed while multiple clients are there.
When WFD client is connected, return the link speed for first
client connected.
CRs-Fixed: 533928
Change-Id: Ibeab93547f52b381cffe12d638d48a8029735d7b
diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c
index c8dea7c..84f325a 100644
--- a/CORE/HDD/src/wlan_hdd_hostapd.c
+++ b/CORE/HDD/src/wlan_hdd_hostapd.c
@@ -3633,13 +3633,26 @@
return valid;
}
- if ( hdd_string_to_hex ((char *)wrqu->data.pointer, wrqu->data.length, macAddress ) )
+ hddLog(VOS_TRACE_LEVEL_INFO, "%s wrqu->data.length= %d\n", __func__, wrqu->data.length);
+ status = hdd_string_to_hex ((char *)wrqu->data.pointer, wrqu->data.length, macAddress );
+
+ if (!VOS_IS_STATUS_SUCCESS(status ))
{
- hddLog(VOS_TRACE_LEVEL_FATAL, FL("ERROR: Command not found"));
- return -EINVAL;
+ hddLog(VOS_TRACE_LEVEL_ERROR, FL("String to Hex conversion Failed"));
}
- status = hdd_softap_GetStaId(pHostapdAdapter, (v_MACADDR_t *)macAddress, (void *)(&staId));
+ /* If no mac address is passed and/or its length is less than 18,
+ * link speed for first connected client will be returned.
+ */
+ if (!VOS_IS_STATUS_SUCCESS(status ) || wrqu->data.length < 18)
+ {
+ status = hdd_softap_GetConnectedStaId(pHostapdAdapter, (void *)(&staId));
+ }
+ else
+ {
+ status = hdd_softap_GetStaId(pHostapdAdapter,
+ (v_MACADDR_t *)macAddress, (void *)(&staId));
+ }
if (!VOS_IS_STATUS_SUCCESS(status))
{