|
@@ -237,6 +237,11 @@
|
|
|
/* MLO link removal is in progress on this VDEV */
|
|
|
#define WLAN_VDEV_OP_MLO_LINK_REMOVAL_IN_PROGRESS 0x01000000
|
|
|
|
|
|
+ /* flag to indicate disconnect only legacy peers due to moving to DFS channel
|
|
|
+ * from non-DFS channel
|
|
|
+ */
|
|
|
+#define WLAN_VDEV_OP_MLME_LEGACY_PEER_DISCON_TRIG 0x02000000
|
|
|
+
|
|
|
/* CAPABILITY: IBSS available */
|
|
|
#define WLAN_VDEV_C_IBSS 0x00000001
|
|
|
/* CAPABILITY: HOSTAP avail */
|
|
@@ -379,18 +384,19 @@ struct wlan_objmgr_vdev_nif {
|
|
|
|
|
|
/**
|
|
|
* struct wlan_objmgr_vdev_objmgr - vdev object manager sub structure
|
|
|
- * @vdev_id: VDEV id
|
|
|
- * @print_cnt: Count to throttle Logical delete prints
|
|
|
- * @self_peer: Self PEER
|
|
|
- * @bss_peer: BSS PEER
|
|
|
- * @wlan_peer_list: PEER list
|
|
|
- * @wlan_pdev: PDEV pointer
|
|
|
- * @wlan_peer_count: Peer count
|
|
|
- * @max_peer_count: Max Peer count
|
|
|
- * @c_flags: creation specific flags
|
|
|
- * @ref_cnt: Ref count
|
|
|
- * @ref_id_dbg: Array to track Ref count
|
|
|
- * @trace: Trace ref and deref
|
|
|
+ * @vdev_id: VDEV id
|
|
|
+ * @print_cnt: Count to throttle Logical delete prints
|
|
|
+ * @self_peer: Self PEER
|
|
|
+ * @bss_peer: BSS PEER
|
|
|
+ * @wlan_peer_list: PEER list
|
|
|
+ * @wlan_pdev: PDEV pointer
|
|
|
+ * @wlan_peer_count: Peer count
|
|
|
+ * @wlan_ml_peer_count: Multilink Peer count
|
|
|
+ * @max_peer_count: Max Peer count
|
|
|
+ * @c_flags: creation specific flags
|
|
|
+ * @ref_cnt: Ref count
|
|
|
+ * @ref_id_dbg: Array to track Ref count
|
|
|
+ * @trace: Trace ref and deref
|
|
|
*/
|
|
|
struct wlan_objmgr_vdev_objmgr {
|
|
|
uint8_t vdev_id;
|
|
@@ -400,6 +406,9 @@ struct wlan_objmgr_vdev_objmgr {
|
|
|
qdf_list_t wlan_peer_list;
|
|
|
struct wlan_objmgr_pdev *wlan_pdev;
|
|
|
uint16_t wlan_peer_count;
|
|
|
+#ifdef WLAN_FEATURE_11BE_MLO
|
|
|
+ uint16_t wlan_ml_peer_count;
|
|
|
+#endif
|
|
|
uint16_t max_peer_count;
|
|
|
uint32_t c_flags;
|
|
|
qdf_atomic_t ref_cnt;
|
|
@@ -1565,6 +1574,29 @@ static inline uint16_t wlan_vdev_get_peer_count(struct wlan_objmgr_vdev *vdev)
|
|
|
return vdev->vdev_objmgr.wlan_peer_count;
|
|
|
}
|
|
|
|
|
|
+#ifdef WLAN_FEATURE_11BE_MLO
|
|
|
+/**
|
|
|
+ * wlan_vdev_get_legacy_peer_count() - get vdev peer count
|
|
|
+ * @vdev: VDEV object
|
|
|
+ *
|
|
|
+ * API to get legacy peer count from VDEV
|
|
|
+ *
|
|
|
+ * Return: peer_count - vdev's peer count
|
|
|
+ */
|
|
|
+static inline uint16_t wlan_vdev_get_legacy_peer_count(
|
|
|
+ struct wlan_objmgr_vdev *vdev)
|
|
|
+{
|
|
|
+ return vdev->vdev_objmgr.wlan_peer_count -
|
|
|
+ vdev->vdev_objmgr.wlan_ml_peer_count;
|
|
|
+}
|
|
|
+#else
|
|
|
+static inline uint16_t wlan_vdev_get_legacy_peer_count(
|
|
|
+ struct wlan_objmgr_vdev *vdev)
|
|
|
+{
|
|
|
+ return vdev->vdev_objmgr.wlan_peer_count;
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
/**
|
|
|
* wlan_vdev_mlme_is_ap() - Check whether @vdev is an AP or not
|
|
|
* @vdev: VDEV object
|
|
@@ -2098,4 +2130,42 @@ QDF_STATUS wlan_vdev_get_bss_peer_mld_mac(struct wlan_objmgr_vdev *vdev,
|
|
|
struct qdf_mac_addr *mld_mac);
|
|
|
#endif
|
|
|
|
|
|
+/**
|
|
|
+ * wlan_objmgr_vdev_set_ml_peer_count() - set ml_peer_count value
|
|
|
+ * @vdev: vdev object pointer
|
|
|
+ * @ml_peer_count: ml peer count to be set
|
|
|
+ *
|
|
|
+ * Return: void
|
|
|
+ */
|
|
|
+#ifdef WLAN_FEATURE_11BE_MLO
|
|
|
+static inline void
|
|
|
+wlan_objmgr_vdev_set_ml_peer_count(struct wlan_objmgr_vdev *vdev,
|
|
|
+ uint16_t ml_peer_count)
|
|
|
+{
|
|
|
+ vdev->vdev_objmgr.wlan_ml_peer_count = ml_peer_count;
|
|
|
+}
|
|
|
+#else
|
|
|
+static inline void
|
|
|
+wlan_objmgr_vdev_set_ml_peer_count(struct wlan_objmgr_vdev *vdev,
|
|
|
+ uint16_t ml_peer_count)
|
|
|
+{
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
+/**
|
|
|
+ * wlan_mlo_peer_delete_is_not_allowed()
|
|
|
+ * @vdev: VDEV object
|
|
|
+ *
|
|
|
+ * API to check if WLAN_VDEV_OP_MLME_LEGACY_PEER_DISCON_TRIG is set therefore
|
|
|
+ * whether mlo peer delete should be allowed or not
|
|
|
+ *
|
|
|
+ * Return: True if MLO peer delete is not allowed, otherwise false.
|
|
|
+ */
|
|
|
+static inline bool wlan_mlo_peer_delete_is_not_allowed(
|
|
|
+ struct wlan_objmgr_vdev *vdev)
|
|
|
+{
|
|
|
+ return wlan_vdev_mlme_op_flags_get(vdev,
|
|
|
+ WLAN_VDEV_OP_MLME_LEGACY_PEER_DISCON_TRIG);
|
|
|
+}
|
|
|
+
|
|
|
#endif /* _WLAN_OBJMGR_VDEV_OBJ_H_*/
|