qcacmn: Add API to stop reconfig timer

Add API to stop link reconfig timer on vdev or ml dev.
Add API to query the reconfig timer state.

Change-Id: I729d403122e4e84cdf0dced21c49176397e10e5d
CRs-Fixed: 3352937
このコミットが含まれているのは:
Liangwei Dong
2022-11-24 16:20:26 +08:00
committed by Madan Koyyalamudi
コミット 1ffc60a883
2個のファイルの変更107行の追加0行の削除

ファイルの表示

@@ -621,6 +621,31 @@ bool mlo_is_sta_csa_param_handled(struct wlan_objmgr_vdev *vdev,
*/ */
void mlo_internal_disconnect_links(struct wlan_objmgr_vdev *vdev); void mlo_internal_disconnect_links(struct wlan_objmgr_vdev *vdev);
/**
* mlo_sta_vdev_get_reconfig_timer_state() - Get ml reconfig timer state on
* vdev
* @vdev: vdev pointer
*
* Return: true if reconfig timer is active, otherwise false
*/
bool mlo_sta_vdev_get_reconfig_timer_state(struct wlan_objmgr_vdev *vdev);
/**
* mlo_sta_stop_reconfig_timer_by_vdev() - Stop ml reconfig timer
* @vdev: vdev pointer
*
* Return: None
*/
void mlo_sta_stop_reconfig_timer_by_vdev(struct wlan_objmgr_vdev *vdev);
/**
* mlo_sta_stop_reconfig_timer() - Stop reconfig timer on all vdev on ml dev
* @vdev: vdev pointer
*
* Return: None
*/
void mlo_sta_stop_reconfig_timer(struct wlan_objmgr_vdev *vdev);
/** /**
* mlo_sta_get_vdev_list() - get mlo vdev list * mlo_sta_get_vdev_list() - get mlo vdev list
* @vdev: vdev pointer * @vdev: vdev pointer
@@ -805,6 +830,21 @@ void mlo_sta_get_vdev_list(struct wlan_objmgr_vdev *vdev,
{ {
} }
static inline bool
mlo_sta_vdev_get_reconfig_timer_state(struct wlan_objmgr_vdev *vdev)
{
return false;
}
static inline void
mlo_sta_stop_reconfig_timer_by_vdev(struct wlan_objmgr_vdev *vdev)
{
}
static inline void mlo_sta_stop_reconfig_timer(struct wlan_objmgr_vdev *vdev)
{
}
static inline static inline
void mlo_set_keys_saved(struct wlan_objmgr_vdev *vdev, void mlo_set_keys_saved(struct wlan_objmgr_vdev *vdev,
struct qdf_mac_addr *mac_address, bool value) struct qdf_mac_addr *mac_address, bool value)

ファイルの表示

@@ -2035,6 +2035,73 @@ void mlo_sta_get_vdev_list(struct wlan_objmgr_vdev *vdev, uint16_t *vdev_count,
mlo_dev_lock_release(dev_ctx); mlo_dev_lock_release(dev_ctx);
} }
bool mlo_sta_vdev_get_reconfig_timer_state(struct wlan_objmgr_vdev *vdev)
{
struct vdev_mlme_obj *vdev_mlme;
if (!vdev || !mlo_is_mld_sta(vdev))
return false;
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
if (!vdev_mlme) {
mlo_err("vdev mlme is null");
return false;
}
return vdev_mlme->ml_reconfig_started;
}
void mlo_sta_stop_reconfig_timer_by_vdev(struct wlan_objmgr_vdev *vdev)
{
struct vdev_mlme_obj *vdev_mlme;
if (!vdev || !mlo_is_mld_sta(vdev))
return;
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
if (!vdev_mlme) {
mlo_err("vdev mlme is null");
return;
}
if (!vdev_mlme->ml_reconfig_started)
return;
qdf_timer_stop(&vdev_mlme->ml_reconfig_timer);
mlo_debug("vdev %d reconfig timer active to stop",
wlan_vdev_get_id(vdev));
vdev_mlme->ml_reconfig_started = false;
}
void mlo_sta_stop_reconfig_timer(struct wlan_objmgr_vdev *vdev)
{
struct wlan_objmgr_vdev *wlan_vdev_list[WLAN_UMAC_MLO_MAX_VDEVS] = {0};
uint16_t vdev_count = 0;
uint8_t i;
if (!vdev || !mlo_is_mld_sta(vdev))
return;
mlo_get_ml_vdev_list(vdev, &vdev_count, wlan_vdev_list);
if (!vdev_count) {
mlo_err("vdev num 0 in mld dev");
return;
}
for (i = 0; i < vdev_count; i++) {
if (!wlan_vdev_list[i]) {
mlo_err("vdev is null in mld");
goto release_ref;
}
mlo_sta_stop_reconfig_timer_by_vdev(wlan_vdev_list[i]);
}
release_ref:
for (i = 0; i < vdev_count; i++)
mlo_release_vdev_ref(wlan_vdev_list[i]);
}
void mlo_set_keys_saved(struct wlan_objmgr_vdev *vdev, void mlo_set_keys_saved(struct wlan_objmgr_vdev *vdev,
struct qdf_mac_addr *mac_address, bool value) struct qdf_mac_addr *mac_address, bool value)
{ {