qcacmn: Add force flag support for PTQM migration

Add force flag support for PTQM migration.
This flag will be used to allow migration to vdevs which are not
allowed to be selected as primary by using the ini config.
This will be helpful in scenarios where if the current primary link is
going down and peer ptqm needs to be migrated but the partner links of
that mld are the user disabled links for ptqm.
Also add skip_pumac_cnt to mark a link to be skipped from being selected
as new primary

Change-Id: Ia8c7881f37d32211a732c5c7394c4a608099b62a
CRs-Fixed: 3548552
Šī revīzija ir iekļauta:
Himanshu Batra
2023-06-28 15:25:56 +05:30
revīziju iesūtīja Rahul Choudhary
vecāks cf3f12281d
revīzija 444fa57930
5 mainīti faili ar 210 papildinājumiem un 42 dzēšanām

Parādīt failu

@@ -349,6 +349,7 @@ struct wlan_channel {
* @mlo_link_id: link id for mlo connection
* @mlo_external_sae_auth: MLO external SAE auth
* @wlan_vdev_mlo_lock: lock to protect the set/clear of
* @skip_pumac_cnt: Counter to skip vdev to be selected as pumac
* WLAN_VDEV_FEXT2_MLO feature flag in vdev MLME
*/
struct wlan_objmgr_vdev_mlme {
@@ -375,6 +376,9 @@ struct wlan_objmgr_vdev_mlme {
#else
qdf_mutex_t wlan_vdev_mlo_lock;
#endif
#ifdef QCA_SUPPORT_PRIMARY_LINK_MIGRATE
qdf_atomic_t skip_pumac_cnt;
#endif
#endif
};
@@ -2254,4 +2258,80 @@ static inline bool wlan_mlo_peer_delete_is_not_allowed(
WLAN_VDEV_OP_MLME_LEGACY_PEER_DISCON_TRIG);
}
#ifdef QCA_SUPPORT_PRIMARY_LINK_MIGRATE
/**
* wlan_vdev_init_skip_pumac_cnt() - init skip_pumac_cnt
* @vdev: VDEV object
*
* API to initialize skip_pumac_cnt
*
* Return: void
*/
static inline void
wlan_vdev_init_skip_pumac_cnt(struct wlan_objmgr_vdev *vdev)
{
qdf_atomic_init(&vdev->vdev_mlme.skip_pumac_cnt);
}
/**
* wlan_vdev_inc_skip_pumac_cnt() - inc skip_pumac_cnt
* @vdev: VDEV object
*
* API to increment skip_pumac_cnt
*
* Return: void
*/
static inline void
wlan_vdev_inc_skip_pumac_cnt(struct wlan_objmgr_vdev *vdev)
{
qdf_atomic_inc(&vdev->vdev_mlme.skip_pumac_cnt);
}
/**
* wlan_vdev_dec_skip_pumac_cnt() - dec skip_pumac_cnt
* @vdev: VDEV object
*
* API to decrement skip_pumac_cnt
*
* Return: void
*/
static inline void
wlan_vdev_dec_skip_pumac_cnt(struct wlan_objmgr_vdev *vdev)
{
qdf_atomic_dec(&vdev->vdev_mlme.skip_pumac_cnt);
}
/**
* wlan_vdev_read_skip_pumac_cnt() - read skip_pumac_cnt
* @vdev: VDEV object
*
* API to read skip_pumac_cnt value
*
* Return: skip_pumac_cnt value
*/
static inline int32_t
wlan_vdev_read_skip_pumac_cnt(struct wlan_objmgr_vdev *vdev)
{
return qdf_atomic_read(&vdev->vdev_mlme.skip_pumac_cnt);
}
#else
static inline void
wlan_vdev_init_skip_pumac_cnt(struct wlan_objmgr_vdev *vdev)
{ }
static inline void
wlan_vdev_inc_skip_pumac_cnt(struct wlan_objmgr_vdev *vdev)
{ }
static inline void
wlan_vdev_dec_skip_pumac_cnt(struct wlan_objmgr_vdev *vdev)
{ }
static inline int32_t
wlan_vdev_read_skip_pumac_cnt(struct wlan_objmgr_vdev *vdev)
{
return 0;
}
#endif
#endif /* _WLAN_OBJMGR_VDEV_OBJ_H_*/

Parādīt failu

@@ -236,6 +236,7 @@ struct wlan_objmgr_vdev *wlan_objmgr_vdev_obj_create(
vdev->vdev_objmgr.max_peer_count =
wlan_pdev_get_max_peer_count(pdev);
wlan_vdev_init_skip_pumac_cnt(vdev);
if (params->legacy_osif)
vdev->vdev_nif.osdev->legacy_osif_priv = params->legacy_osif;