Przeglądaj źródła

qcacmn: Extend Peer Assoc WMI to include more info on partner links

The FW needs mlo_flags of partner links as well during Assoc,
to handle more than 2-link MLO Association.
Extend the peer_assoc_ml_partner_links struct to pass them.

CRs-Fixed: 3403848
Change-Id: I543442ded6b5bc55c278b32f3d449eabacc49919
Vinay Adella 2 lat temu
rodzic
commit
865c4c6d28
2 zmienionych plików z 34 dodań i 0 usunięć
  1. 23 0
      wmi/inc/wmi_unified_param.h
  2. 11 0
      wmi/src/wmi_unified_11be_tlv.c

+ 23 - 0
wmi/inc/wmi_unified_param.h

@@ -1235,10 +1235,33 @@ struct peer_assoc_mlo_params {
  * struct ml_partner_info - partner link info
  * @vdev_id: vdev id
  * @hw_mld_link_id: unique hw link id across SoCs
+ * @mlo_enabled: indicate is MLO enabled
+ * @mlo_assoc_link: indicate is the link used to initialize the association
+ *                  of mlo connection
+ * @mlo_primary_umac: indicate is the link on primary UMAC, WIN only flag
+ * @mlo_logical_link_index_valid: indicate if the logial link index in is valid
+ * @mlo_peer_id_valid: indicate if the mlo peer id is valid
+ * @mlo_force_link_inactive: force the peer inactive
+ * @emlsr_support: indicate if eMLSR supported
+ * @emlmr_support: indicate if eMLMR supported
+ * @msd_cap_support: indicate if MSD supported
+ * @unused: spare bits
+ * @logical_link_index: Unique index for links of the mlo. Starts with Zero
  */
 struct ml_partner_info {
 	uint32_t vdev_id;
 	uint32_t hw_mld_link_id;
+	uint32_t mlo_enabled:1,
+		 mlo_assoc_link:1,
+		 mlo_primary_umac:1,
+		 mlo_logical_link_index_valid:1,
+		 mlo_peer_id_valid:1,
+		 mlo_force_link_inactive:1,
+		 emlsr_support:1,
+		 emlmr_support:1,
+		 msd_cap_support:1,
+		 unused:23;
+	uint32_t logical_link_index;
 };
 
 /**

+ 11 - 0
wmi/src/wmi_unified_11be_tlv.c

@@ -319,6 +319,17 @@ uint8_t *peer_assoc_add_ml_partner_links(uint8_t *buf_ptr,
 			       WMITLV_GET_STRUCT_TLVLEN(wmi_peer_assoc_mlo_partner_link_params));
 		ml_partner_link->vdev_id = partner_info[i].vdev_id;
 		ml_partner_link->hw_mld_link_id = partner_info[i].hw_mld_link_id;
+		WMI_MLO_FLAGS_SET_ENABLED(ml_partner_link->mlo_flags.mlo_flags,
+					  partner_info[i].mlo_enabled);
+		WMI_MLO_FLAGS_SET_ASSOC_LINK(ml_partner_link->mlo_flags.mlo_flags,
+					     partner_info[i].mlo_assoc_link);
+		WMI_MLO_FLAGS_SET_PRIMARY_UMAC(ml_partner_link->mlo_flags.mlo_flags,
+					       partner_info[i].mlo_primary_umac);
+		WMI_MLO_FLAGS_SET_LINK_INDEX_VALID(ml_partner_link->mlo_flags.mlo_flags,
+						   partner_info[i].mlo_logical_link_index_valid);
+		ml_partner_link->mlo_flags.emlsr_support = partner_info[i].emlsr_support;
+		ml_partner_link->logical_link_index = partner_info[i].logical_link_index;
+
 		ml_partner_link++;
 	}