Pārlūkot izejas kodu

qcacld-3.0: Fix wrong MBSSID information for VDEV UP command

VDEV UP command doesn't include right MBSSID information, it will
cause data stall issue and so on.

Fix is to provide right MBSSID information with VDEV UP command.

Change-Id: I0201722c14dee1b01b8dacc7e3095301fb02fd3a
CRs-Fixed: 2434405
hqu 6 gadi atpakaļ
vecāks
revīzija
bcacd8416b

+ 21 - 0
mlme/core/inc/wlan_mlme_vdev_mgr_interface.h

@@ -147,6 +147,27 @@ bool mlme_get_cac_required(struct wlan_objmgr_vdev *vdev);
 QDF_STATUS
 mlme_set_cac_required(struct wlan_objmgr_vdev *vdev, bool val);
 
+/**
+ * mlme_set_mbssid_info() - save mbssid info
+ * @vdev: vdev pointer
+ * @mbssid_info: mbssid info
+ *
+ * Return: QDF_STATUS
+ */
+QDF_STATUS
+mlme_set_mbssid_info(struct wlan_objmgr_vdev *vdev,
+		     struct scan_mbssid_info *mbssid_info);
+
+/**
+ * mlme_get_mbssid_info() - get mbssid info
+ * @vdev: vdev pointer
+ * @mbss_11ax: mbss 11ax info
+ *
+ * Return: None
+ */
+void mlme_get_mbssid_info(struct wlan_objmgr_vdev *vdev,
+			  struct vdev_mlme_mbss_11ax *mbss_11ax);
+
 /**
  * mlme_is_vdev_in_beaconning_mode() - check if vdev is beaconing mode
  * @vdev_opmode: vdev opmode

+ 35 - 0
mlme/core/src/wlan_mlme_vdev_mgr_interface.c

@@ -752,6 +752,41 @@ bool mlme_get_cac_required(struct wlan_objmgr_vdev *vdev)
 	return mlme_priv->cac_required_for_new_channel;
 }
 
+QDF_STATUS mlme_set_mbssid_info(struct wlan_objmgr_vdev *vdev,
+				struct scan_mbssid_info *mbssid_info)
+{
+	struct vdev_mlme_obj *vdev_mlme;
+	struct vdev_mlme_mbss_11ax *mbss_11ax;
+
+	vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
+	if (!vdev_mlme) {
+		mlme_legacy_err("vdev component object is NULL");
+		return QDF_STATUS_E_FAILURE;
+	}
+
+	mbss_11ax = &vdev_mlme->mgmt.mbss_11ax;
+	mbss_11ax->profile_idx = mbssid_info->profile_num;
+	mbss_11ax->profile_num = mbssid_info->profile_count;
+	qdf_mem_copy(mbss_11ax->trans_bssid,
+		     mbssid_info->trans_bssid, QDF_MAC_ADDR_SIZE);
+
+	return QDF_STATUS_SUCCESS;
+}
+
+void mlme_get_mbssid_info(struct wlan_objmgr_vdev *vdev,
+			  struct vdev_mlme_mbss_11ax *mbss_11ax)
+{
+	struct vdev_mlme_obj *vdev_mlme;
+
+	vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
+	if (!vdev_mlme) {
+		mlme_legacy_err("vdev component object is NULL");
+		return;
+	}
+
+	mbss_11ax = &vdev_mlme->mgmt.mbss_11ax;
+}
+
 /**
  * vdevmgr_mlme_ext_hdl_create () - Create mlme legacy priv object
  * @vdev_mlme: vdev mlme object