mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 20:02:10 -04:00
wifi: ath12k: Enable AST index based address search in Station Mode
Currently, TCL performs the TX address search for each entry during transmission, which may lead to packet delays. To mitigate this issue, enable AST index-based address search during transmission in station mode. This AST index-based search is not enabled in AP mode due to the complexity involved in fetching peer information. Implement changes to retrieve the offset of ast_idx/ast_hash values from the PEER_MAP3 event, update the vdev search type to ADDRX, and enable AST lookup in the bank configuration. Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1 Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3 Signed-off-by: Thiraviyam Mariyappan <quic_tmariyap@quicinc.com> Signed-off-by: Nithyanantham Paramasivam <nithyanantham.paramasivam@oss.qualcomm.com> Reviewed-by: Mahendran P <quic_mahep@quicinc.com> Link: https://patch.msgid.link/20250422094255.131226-1-nithyanantham.paramasivam@oss.qualcomm.com Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
This commit is contained in:
committed by
Jeff Johnson
parent
6c262794ad
commit
55cbbf25fb
@@ -361,7 +361,10 @@ u32 ath12k_dp_tx_get_vdev_bank_config(struct ath12k_base *ab,
|
||||
u32_encode_bits(0, HAL_TX_BANK_CONFIG_EPD);
|
||||
|
||||
/* only valid if idx_lookup_override is not set in tcl_data_cmd */
|
||||
bank_config |= u32_encode_bits(0, HAL_TX_BANK_CONFIG_INDEX_LOOKUP_EN);
|
||||
if (ahvif->vdev_type == WMI_VDEV_TYPE_STA)
|
||||
bank_config |= u32_encode_bits(1, HAL_TX_BANK_CONFIG_INDEX_LOOKUP_EN);
|
||||
else
|
||||
bank_config |= u32_encode_bits(0, HAL_TX_BANK_CONFIG_INDEX_LOOKUP_EN);
|
||||
|
||||
bank_config |= u32_encode_bits(arvif->hal_addr_search_flags & HAL_TX_ADDRX_EN,
|
||||
HAL_TX_BANK_CONFIG_ADDRX_EN) |
|
||||
@@ -1105,11 +1108,8 @@ static void ath12k_dp_update_vdev_search(struct ath12k_link_vif *arvif)
|
||||
{
|
||||
switch (arvif->ahvif->vdev_type) {
|
||||
case WMI_VDEV_TYPE_STA:
|
||||
/* TODO: Verify the search type and flags since ast hash
|
||||
* is not part of peer mapv3
|
||||
*/
|
||||
arvif->hal_addr_search_flags = HAL_TX_ADDRY_EN;
|
||||
arvif->search_type = HAL_TX_ADDR_SEARCH_DEFAULT;
|
||||
arvif->search_type = HAL_TX_ADDR_SEARCH_INDEX;
|
||||
break;
|
||||
case WMI_VDEV_TYPE_AP:
|
||||
case WMI_VDEV_TYPE_IBSS:
|
||||
|
||||
@@ -1353,6 +1353,8 @@ struct htt_t2h_version_conf_msg {
|
||||
#define HTT_T2H_PEER_MAP_INFO1_MAC_ADDR_H16 GENMASK(15, 0)
|
||||
#define HTT_T2H_PEER_MAP_INFO1_HW_PEER_ID GENMASK(31, 16)
|
||||
#define HTT_T2H_PEER_MAP_INFO2_AST_HASH_VAL GENMASK(15, 0)
|
||||
#define HTT_T2H_PEER_MAP3_INFO2_HW_PEER_ID GENMASK(15, 0)
|
||||
#define HTT_T2H_PEER_MAP3_INFO2_AST_HASH_VAL GENMASK(31, 16)
|
||||
#define HTT_T2H_PEER_MAP_INFO2_NEXT_HOP_M BIT(16)
|
||||
#define HTT_T2H_PEER_MAP_INFO2_NEXT_HOP_S 16
|
||||
|
||||
|
||||
@@ -1840,8 +1840,12 @@ void ath12k_dp_htt_htc_t2h_msg_handler(struct ath12k_base *ab,
|
||||
HTT_T2H_PEER_MAP_INFO1_MAC_ADDR_H16);
|
||||
ath12k_dp_get_mac_addr(le32_to_cpu(resp->peer_map_ev.mac_addr_l32),
|
||||
peer_mac_h16, mac_addr);
|
||||
ast_hash = le32_get_bits(resp->peer_map_ev.info2,
|
||||
HTT_T2H_PEER_MAP3_INFO2_AST_HASH_VAL);
|
||||
hw_peer_id = le32_get_bits(resp->peer_map_ev.info2,
|
||||
HTT_T2H_PEER_MAP3_INFO2_HW_PEER_ID);
|
||||
ath12k_peer_map_event(ab, vdev_id, peer_id, mac_addr, ast_hash,
|
||||
peer_id);
|
||||
hw_peer_id);
|
||||
break;
|
||||
case HTT_T2H_MSG_TYPE_PEER_UNMAP:
|
||||
case HTT_T2H_MSG_TYPE_PEER_UNMAP2:
|
||||
|
||||
Reference in New Issue
Block a user