qcacld-3.0: Enable roaming only on wlan0
Current implementation of host driver will support fast roaming only
on a single device even in DBS mode. It is allowed on the first
STA, i.e. wlan device created in driver initialization. Dynamic roaming
disable/enable is allowed only on that device. Roaming is marked as not
allowed on other devices.
Change-Id: I3e3a72eb4d8fe81f6d3b784ab70023d2e3ac5618
CRs-Fixed: 1092386
diff --git a/core/hdd/src/wlan_hdd_ioctl.c b/core/hdd/src/wlan_hdd_ioctl.c
index ba48e4c..33f3bbb 100644
--- a/core/hdd/src/wlan_hdd_ioctl.c
+++ b/core/hdd/src/wlan_hdd_ioctl.c
@@ -3281,6 +3281,11 @@
uint8_t *value = command;
uint8_t roamMode = CFG_LFR_FEATURE_ENABLED_DEFAULT;
+ if (!adapter->fast_roaming_allowed) {
+ hdd_err("Roaming is always disabled on this interface");
+ goto exit;
+ }
+
/* Move pointer to ahead of SETROAMMODE<delimiter> */
value = value + SIZE_OF_SETROAMMODE + 1;
@@ -4315,6 +4320,11 @@
uint8_t *value = command;
uint8_t lfrMode = CFG_LFR_FEATURE_ENABLED_DEFAULT;
+ if (!adapter->fast_roaming_allowed) {
+ hdd_err("Roaming is always disabled on this interface");
+ goto exit;
+ }
+
/* Move pointer to ahead of SETFASTROAM<delimiter> */
value = value + command_len + 1;
@@ -5644,6 +5654,12 @@
goto exit;
}
+ if (!adapter->fast_roaming_allowed) {
+ hdd_warn("Fast roaming is not allowed on this device hence this operation is not permitted!");
+ ret = -EPERM;
+ goto exit;
+ }
+
/* Move pointer to ahead of SETCCXMODE<delimiter> */
value = value + command_len + 1;