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
このコミットが含まれているのは:
@@ -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)
|
||||||
{
|
{
|
||||||
|
新しいイシューから参照
ユーザーをブロックする