Browse Source

qcacld-3.0: Cache roam triggers when roaming is in progress

When roaming is in progress, if the roam control vendor command
is received to update the roam triggers, the command is rejected
but the trigger bitmap value is not cached at the driver.
This causes old roam trigger values to be updated in the next RSO
command.

Cache the roam trigger bitmap in mlme when roaming is in
progress.

Change-Id: Iae7d3babf5f3883df1939a31d40050db9b78af32
CRs-Fixed: 2971772
Pragaspathi Thilagaraj 3 years ago
parent
commit
05957e00cd
1 changed files with 9 additions and 7 deletions
  1. 9 7
      core/hdd/src/wlan_hdd_cfg80211.c

+ 9 - 7
core/hdd/src/wlan_hdd_cfg80211.c

@@ -4862,6 +4862,11 @@ hdd_send_roam_triggers_to_sme(struct hdd_context *hdd_ctx,
 		return QDF_STATUS_E_FAILURE;
 	}
 
+	triggers.vdev_id = vdev_id;
+	triggers.trigger_bitmap =
+	    wlan_hdd_convert_control_roam_trigger_bitmap(roam_trigger_bitmap);
+	hdd_debug("trigger bitmap: 0x%x converted trigger_bitmap: 0x%x",
+		  roam_trigger_bitmap, triggers.trigger_bitmap);
 	/*
 	 * In standalone STA, if this vendor command is received between
 	 * ROAM_START and roam synch indication, it is better to reject
@@ -4874,15 +4879,12 @@ hdd_send_roam_triggers_to_sme(struct hdd_context *hdd_ctx,
 	 * vdev.
 	 */
 	if (hdd_is_roaming_in_progress(hdd_ctx)) {
+		mlme_set_roam_trigger_bitmap(hdd_ctx->psoc, adapter->vdev_id,
+					     triggers.trigger_bitmap);
 		hdd_err("Reject set roam trigger as roaming is in progress");
-		return QDF_STATUS_E_FAILURE;
-	}
 
-	triggers.vdev_id = vdev_id;
-	triggers.trigger_bitmap =
-	    wlan_hdd_convert_control_roam_trigger_bitmap(roam_trigger_bitmap);
-	hdd_debug("trigger bitmap: 0x%x converted trigger_bitmap: 0x%x",
-		  roam_trigger_bitmap, triggers.trigger_bitmap);
+		return QDF_STATUS_E_BUSY;
+	}
 
 	/*
 	 * roam trigger bitmap is > 0 - Roam triggers are set.