qcacld-3.0: Disable legacy netdev params for TDLS

Since TDLS and STA share a common netdev interface,
when STA connection is made in 11a, 11b, 11g mode,
netdev parameters such as TSO/checksum are disabled.
If TDLS connection is formed over this Station,
TSO remains disabled as STA netdev is used.

This might result in loss of throughput when TDLS
connection is made with 11n, 11ac, 11ax dot11mode and
with wider bandwidth TDLS, this loss is more prominent.

Hence, overwrite the netdev params to enable TSO when
TDLS connection is formed in 11ax, 11ac, 11n mode if
the station is in 11a, 11b, 11g mode.
Also, disable the TSO params when TDLS tearsdown when
STA is in 11a, 11b, 11g mode.

Change-Id: I80deaef40d70030211e75a63e1339b1407627b52
CRs-Fixed: 3245258
This commit is contained in:
Utkarsh Bhatnagar
2022-08-09 23:39:45 +05:30
committed by Madan Koyyalamudi
parent 1e564784d5
commit 33f9595701
10 changed files with 244 additions and 6 deletions

View File

@@ -656,6 +656,18 @@ typedef QDF_STATUS (*tdls_vdev_init_cb)(struct wlan_objmgr_vdev *vdev);
*/
typedef void (*tdls_vdev_deinit_cb)(struct wlan_objmgr_vdev *vdev);
/**
* tdls_osif_cb() - Callbacks for updating osif params.
* @tdls_osif_conn_update: Update osif params when TDLS peer is connected
* @tdls_osif_disconn_update: Update osif params when TDLS peer is disconnected
*
* These callbacks will be used for updating osif params.
*/
struct tdls_osif_cb {
void (*tdls_osif_conn_update)(struct wlan_objmgr_vdev *vdev);
void (*tdls_osif_disconn_update)(struct wlan_objmgr_vdev *vdev);
};
/**
* struct tdls_start_params - tdls start params
* @config: tdls user config
@@ -672,6 +684,7 @@ typedef void (*tdls_vdev_deinit_cb)(struct wlan_objmgr_vdev *vdev);
* @tdls_dp_vdev_update: update vdev flags in datapath
* @tdls_osif_init_cb: callback to initialize the tdls priv
* @tdls_osif_deinit_cb: callback to deinitialize the tdls priv
* @tdls_osif_cb: callback to update osif params
*/
struct tdls_start_params {
struct tdls_user_config config;
@@ -692,6 +705,7 @@ struct tdls_start_params {
tdls_dp_vdev_update_flags_callback tdls_dp_vdev_update;
tdls_vdev_init_cb tdls_osif_init_cb;
tdls_vdev_deinit_cb tdls_osif_deinit_cb;
struct tdls_osif_cb tdls_osif_update_cb;
};
/**

View File

@@ -390,6 +390,15 @@ QDF_STATUS ucfg_tdls_set_rssi(struct wlan_objmgr_vdev *vdev,
*/
void ucfg_tdls_notify_connect_failure(struct wlan_objmgr_psoc *psoc);
/**
* ucfg_get_tdls_conn_peer_count() - This api is called to get number of
* connected TDLS peer
* @vdev: vdev object
*
* Return: tdls connected peer count
*/
uint16_t ucfg_get_tdls_conn_peer_count(struct wlan_objmgr_vdev *vdev);
/**
* ucfg_get_tdls_vdev() - Ucfg api to get tdls specific vdev object
* @psoc: wlan psoc object manager

View File

@@ -458,6 +458,10 @@ QDF_STATUS ucfg_tdls_update_config(struct wlan_objmgr_psoc *psoc,
soc_obj->tdls_dp_vdev_update = req->tdls_dp_vdev_update;
soc_obj->tdls_osif_init_cb = req->tdls_osif_init_cb;
soc_obj->tdls_osif_deinit_cb = req->tdls_osif_deinit_cb;
soc_obj->tdls_osif_update_cb.tdls_osif_conn_update =
req->tdls_osif_update_cb.tdls_osif_conn_update;
soc_obj->tdls_osif_update_cb.tdls_osif_disconn_update =
req->tdls_osif_update_cb.tdls_osif_disconn_update;
tdls_pm_call_backs.tdls_notify_increment_session =
tdls_notify_increment_session;
@@ -1215,6 +1219,11 @@ void ucfg_tdls_notify_connect_failure(struct wlan_objmgr_psoc *psoc)
return wlan_tdls_notify_connect_failure(psoc);
}
uint16_t ucfg_get_tdls_conn_peer_count(struct wlan_objmgr_vdev *vdev)
{
return tdls_get_connected_peer_count_from_vdev(vdev);
}
struct wlan_objmgr_vdev *ucfg_get_tdls_vdev(struct wlan_objmgr_psoc *psoc,
wlan_objmgr_ref_dbgid dbg_id)
{