qcacld-3.0: Update linkspeed state to F/W for roaming dp part

To avoid unmeaningful roaming, when low RSSI trigger,
only roam when rx linkspeed is also bad.
Steps:
1. F/W indicates feature supported by:
	wmi_service_linkspeed_roam_trigger_support
2. App sets vdev rx link speed threshold by vendor cmd.
3. Bus_bw_work gets rx link speed from data path periodically.
4. If found rx link speed change from good to poor, or poor to good, send
	to F/W.
5. F/W low rssi roaming is triggered only when both RSSI and link speed are
	poor.

Change-Id: I2c2a22c1f24a730783ee09455f4d70b099d9bff1
CRs-Fixed: 3255036
This commit is contained in:
Jianmin Zhu
2022-08-10 19:10:40 +08:00
committed by Madan Koyyalamudi
parent c4459eb18e
commit 71eb93c537
5 changed files with 157 additions and 2 deletions

View File

@@ -587,6 +587,7 @@ union wlan_tp_data {
* @os_if_dp_nud_stats_info: osif callback to print nud stats info
* @dp_get_pause_map: Callback API to get pause map count
* @dp_nud_failure_work: Callback API to handle NUD failuire work
* @link_monitoring_cb: Callback API to handle link speed change
*/
struct wlan_dp_psoc_callbacks {
hdd_cb_handle callback_ctx;
@@ -666,6 +667,9 @@ struct wlan_dp_psoc_callbacks {
void (*os_if_dp_nud_stats_info)(struct wlan_objmgr_vdev *vdev);
uint32_t (*dp_get_pause_map)(hdd_cb_handle context, uint8_t vdev_id);
void (*dp_nud_failure_work)(hdd_cb_handle context, uint8_t vdev_id);
void (*link_monitoring_cb)(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id,
bool is_link_speed_good);
};
/**

View File

@@ -1222,4 +1222,13 @@ void ucfg_dp_event_eapol_log(qdf_nbuf_t nbuf, enum qdf_proto_dir dir);
QDF_STATUS
ucfg_dp_softap_inspect_dhcp_packet(struct wlan_objmgr_vdev *vdev,
qdf_nbuf_t nbuf, enum qdf_proto_dir dir);
void
dp_ucfg_enable_link_monitoring(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev,
uint32_t threshold);
void
dp_ucfg_disable_link_monitoring(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_vdev *vdev);
#endif /* _WLAN_DP_UCFG_API_H_ */