Explorar el Código

qcacmn: Remove Union in mlo_link_set_active_param

Remove Union between link_num and vdev_bitmap as
it is possible send vdev_bitmap along with link_num
for forcemode MLO_LINK_FORCE_MODE_ACTIVE_NUM and
MLO_LINK_FORCE_MODE_INACTIVE_NUM.

Change-Id: Ie15c5f20d7990baebee50bdc7a37734331eb891c
CRs-Fixed: 3090334
Abhishek Singh hace 3 años
padre
commit
a83c541117
Se han modificado 2 ficheros con 19 adiciones y 14 borrados
  1. 9 8
      umac/mlo_mgr/inc/wlan_mlo_mgr_public_structs.h
  2. 10 6
      wmi/src/wmi_unified_11be_tlv.c

+ 9 - 8
umac/mlo_mgr/inc/wlan_mlo_mgr_public_structs.h

@@ -492,21 +492,22 @@ struct mlo_link_num_param {
  * struct mlo_link_set_active_param: MLO link set active params
  * @force_mode: operation to take (enum mlo_link_force_mode)
  * @reason: reason for the operation (enum mlo_link_force_reason)
- * @entry_num: number of the valid entries for link_num/vdev_bitmap
+ * @num_link_entry: number of the valid entries for link_num
+ * @num_vdev_bitmap: number of the valid entries for vdev_bitmap
  * @link_num: link number param array
  *  It's present only when force_mode is MLO_LINK_FORCE_MODE_ACTIVE_NUM or
  *  MLO_LINK_FORCE_MODE_INACTIVE_NUM
  * @vdev_bitmap: active/inactive vdev bitmap array
- *  It's present only when force_mode is MLO_LINK_FORCE_MODE_ACTIVE,
- *  MLO_LINK_FORCE_MODE_INACTIVE or MLO_LINK_FORCE_MODE_NO_FORCE.
+ *  It will be present when force_mode is MLO_LINK_FORCE_MODE_ACTIVE,
+ *  MLO_LINK_FORCE_MODE_INACTIVE, MLO_LINK_FORCE_MODE_NO_FORCE,
+ *  MLO_LINK_FORCE_MODE_ACTIVE_NUM or MLO_LINK_FORCE_MODE_INACTIVE_NUM
  */
 struct mlo_link_set_active_param {
 	uint32_t force_mode;
 	uint32_t reason;
-	uint32_t entry_num;
-	union {
-		struct mlo_link_num_param link_num[MLO_LINK_NUM_SZ];
-		uint32_t vdev_bitmap[MLO_VDEV_BITMAP_SZ];
-	};
+	uint32_t num_link_entry;
+	uint32_t num_vdev_bitmap;
+	struct mlo_link_num_param link_num[MLO_LINK_NUM_SZ];
+	uint32_t vdev_bitmap[MLO_VDEV_BITMAP_SZ];
 };
 #endif

+ 10 - 6
wmi/src/wmi_unified_11be_tlv.c

@@ -359,8 +359,10 @@ send_mlo_link_set_active_cmd_tlv(wmi_unified_t wmi_handle,
 	WMI_MLO_LINK_FORCE_MODE force_mode;
 	WMI_MLO_LINK_FORCE_REASON force_reason;
 
-	if (!param->entry_num) {
-		wmi_err("No entry is provided");
+	if (!param->num_vdev_bitmap && !param->num_link_entry) {
+		wmi_err("No entry is provided vdev bit map %d link entry %d",
+			param->num_vdev_bitmap,
+			param->num_link_entry);
 		return QDF_STATUS_E_INVAL;
 	}
 
@@ -375,12 +377,12 @@ send_mlo_link_set_active_cmd_tlv(wmi_unified_t wmi_handle,
 	switch (force_mode) {
 	case WMI_MLO_LINK_FORCE_ACTIVE_LINK_NUM:
 	case WMI_MLO_LINK_FORCE_INACTIVE_LINK_NUM:
-		num_link_num_param = param->entry_num;
-		break;
+		num_link_num_param = param->num_link_entry;
+		/* fallthrough */
 	case WMI_MLO_LINK_FORCE_ACTIVE:
 	case WMI_MLO_LINK_FORCE_INACTIVE:
 	case WMI_MLO_LINK_NO_FORCE:
-		num_vdev_bitmap = param->entry_num;
+		num_vdev_bitmap = param->num_vdev_bitmap;
 		break;
 	}
 
@@ -401,7 +403,9 @@ send_mlo_link_set_active_cmd_tlv(wmi_unified_t wmi_handle,
 	WMITLV_SET_HDR(&cmd->tlv_header, tag_id, tlv_len);
 	cmd->force_mode = force_mode;
 	cmd->reason = force_reason;
-	wmi_debug("mode %d reason %d", cmd->force_mode, cmd->reason);
+	wmi_debug("mode %d reason %d num_link_num_param %d num_vdev_bitmap %d",
+		  cmd->force_mode, cmd->reason, num_link_num_param,
+		  num_vdev_bitmap);
 	buf_ptr += sizeof(*cmd);
 
 	WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_STRUC,