qcacmn: Optimize tx completion processing in fast path

Optimize tx completion processing in fastpath by adding the list of
tx descs to the free list directly instead of individually accessing
each descriptor and adding it to free list. This gives advantages of
not taking descriptor pool lock for each descriptor and rather takes
the lock only once when appending the whole list of descs to the
free list.

Also removed unused member shinfo_addr from tx_desc structure. Removal
of this member enables increase of flags type from u16 to u32 without
increasing the size of tx_desc structure. These changes improved peak
KPI by 2% in SFE mode.

Change-Id: I995de9cc08c866ad6e1cd1efc76ac2a35d40fb7c
CRs-Fixed: 3584578
这个提交包含在:
Nandha Kishore Easwaran
2023-08-08 09:53:23 +05:30
提交者 Rahul Choudhary
父节点 fb7d334b7c
当前提交 15812b8137
修改 6 个文件,包含 221 行新增22 行删除

查看文件

@@ -4297,6 +4297,27 @@ static inline void dp_soc_get_ap_mld_mode(struct dp_soc *soc)
}
#endif
#ifdef QCA_VDEV_STATS_HW_OFFLOAD_SUPPORT
/**
* dp_soc_hw_txrx_stats_init() - Initialize hw_txrx_stats_en in dp_soc
* @soc: Datapath soc handle
*
* Return: none
*/
static inline
void dp_soc_hw_txrx_stats_init(struct dp_soc *soc)
{
soc->hw_txrx_stats_en =
wlan_cfg_get_vdev_stats_hw_offload_config(soc->wlan_cfg_ctx);
}
#else
static inline
void dp_soc_hw_txrx_stats_init(struct dp_soc *soc)
{
soc->hw_txrx_stats_en = 0;
}
#endif
/**
* dp_soc_init() - Initialize txrx SOC
* @soc: Opaque DP SOC handle
@@ -4485,6 +4506,8 @@ void *dp_soc_init(struct dp_soc *soc, HTC_HANDLE htc_handle,
soc->vdev_stats_id_map = 0;
dp_soc_hw_txrx_stats_init(soc);
dp_soc_get_ap_mld_mode(soc);
return soc;