qcacmn: avoid wds source port learning for STA in HKV2
Changes to avoid WDS source port learning in STA mode if ast override feature is supported by HW Change-Id: I248c8815429e7417dcf3f451912ee5f037af9c25
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

parent
3e93e5f8ae
commit
2467ed1445
@@ -8129,13 +8129,18 @@ void *dp_soc_attach_wifi3(void *ctrl_psoc, void *hif_handle,
|
|||||||
target_type = hal_get_target_type(soc->hal_soc);
|
target_type = hal_get_target_type(soc->hal_soc);
|
||||||
switch (target_type) {
|
switch (target_type) {
|
||||||
case TARGET_TYPE_QCA6290:
|
case TARGET_TYPE_QCA6290:
|
||||||
|
wlan_cfg_set_reo_dst_ring_size(soc->wlan_cfg_ctx,
|
||||||
|
REO_DST_RING_SIZE_QCA6290);
|
||||||
|
soc->ast_override_support = 1;
|
||||||
|
break;
|
||||||
#ifdef QCA_WIFI_QCA6390
|
#ifdef QCA_WIFI_QCA6390
|
||||||
case TARGET_TYPE_QCA6390:
|
case TARGET_TYPE_QCA6390:
|
||||||
#endif
|
|
||||||
wlan_cfg_set_reo_dst_ring_size(soc->wlan_cfg_ctx,
|
wlan_cfg_set_reo_dst_ring_size(soc->wlan_cfg_ctx,
|
||||||
REO_DST_RING_SIZE_QCA6290);
|
REO_DST_RING_SIZE_QCA6290);
|
||||||
wlan_cfg_set_raw_mode_war(soc->wlan_cfg_ctx, true);
|
wlan_cfg_set_raw_mode_war(soc->wlan_cfg_ctx, true);
|
||||||
|
soc->ast_override_support = 1;
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
case TARGET_TYPE_QCA8074:
|
case TARGET_TYPE_QCA8074:
|
||||||
wlan_cfg_set_reo_dst_ring_size(soc->wlan_cfg_ctx,
|
wlan_cfg_set_reo_dst_ring_size(soc->wlan_cfg_ctx,
|
||||||
REO_DST_RING_SIZE_QCA8074);
|
REO_DST_RING_SIZE_QCA8074);
|
||||||
@@ -8147,6 +8152,7 @@ void *dp_soc_attach_wifi3(void *ctrl_psoc, void *hif_handle,
|
|||||||
REO_DST_RING_SIZE_QCA8074);
|
REO_DST_RING_SIZE_QCA8074);
|
||||||
wlan_cfg_set_raw_mode_war(soc->wlan_cfg_ctx, false);
|
wlan_cfg_set_raw_mode_war(soc->wlan_cfg_ctx, false);
|
||||||
soc->hw_nac_monitor_support = 1;
|
soc->hw_nac_monitor_support = 1;
|
||||||
|
soc->ast_override_support = 1;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
qdf_print("%s: Unknown tgt type %d\n", __func__, target_type);
|
qdf_print("%s: Unknown tgt type %d\n", __func__, target_type);
|
||||||
|
@@ -416,6 +416,12 @@ dp_rx_wds_srcport_learn(struct dp_soc *soc,
|
|||||||
if (!(qdf_nbuf_is_rx_chfrag_start(nbuf) &&
|
if (!(qdf_nbuf_is_rx_chfrag_start(nbuf) &&
|
||||||
hal_rx_get_mpdu_mac_ad4_valid(rx_tlv_hdr)))
|
hal_rx_get_mpdu_mac_ad4_valid(rx_tlv_hdr)))
|
||||||
return;
|
return;
|
||||||
|
} else {
|
||||||
|
/* For HKv2 Source port learing is not needed in STA mode
|
||||||
|
* as we have support in HW
|
||||||
|
*/
|
||||||
|
if (soc->ast_override_support)
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(wds_src_mac, (qdf_nbuf_data(nbuf) + IEEE80211_ADDR_LEN),
|
memcpy(wds_src_mac, (qdf_nbuf_data(nbuf) + IEEE80211_ADDR_LEN),
|
||||||
|
@@ -923,7 +923,12 @@ static QDF_STATUS dp_tx_hw_enqueue(struct dp_soc *soc, struct dp_vdev *vdev,
|
|||||||
hal_tx_desc_set_buf_offset(hal_tx_desc_cached, tx_desc->pkt_offset);
|
hal_tx_desc_set_buf_offset(hal_tx_desc_cached, tx_desc->pkt_offset);
|
||||||
hal_tx_desc_set_encap_type(hal_tx_desc_cached, tx_desc->tx_encap_type);
|
hal_tx_desc_set_encap_type(hal_tx_desc_cached, tx_desc->tx_encap_type);
|
||||||
hal_tx_desc_set_lmac_id(soc->hal_soc, hal_tx_desc_cached,
|
hal_tx_desc_set_lmac_id(soc->hal_soc, hal_tx_desc_cached,
|
||||||
HAL_TX_DESC_DEFAULT_LMAC_ID);
|
vdev->pdev->pdev_id);
|
||||||
|
|
||||||
|
hal_tx_desc_set_search_type(soc->hal_soc, hal_tx_desc_cached,
|
||||||
|
vdev->search_type);
|
||||||
|
hal_tx_desc_set_search_index(soc->hal_soc, hal_tx_desc_cached,
|
||||||
|
vdev->bss_ast_hash);
|
||||||
hal_tx_desc_set_dscp_tid_table_id(soc->hal_soc, hal_tx_desc_cached,
|
hal_tx_desc_set_dscp_tid_table_id(soc->hal_soc, hal_tx_desc_cached,
|
||||||
vdev->dscp_tid_map_id);
|
vdev->dscp_tid_map_id);
|
||||||
hal_tx_desc_set_encrypt_type(hal_tx_desc_cached,
|
hal_tx_desc_set_encrypt_type(hal_tx_desc_cached,
|
||||||
@@ -3214,6 +3219,11 @@ void dp_tx_vdev_update_search_flags(struct dp_vdev *vdev)
|
|||||||
vdev->hal_desc_addr_search_flags = HAL_TX_DESC_ADDRY_EN;
|
vdev->hal_desc_addr_search_flags = HAL_TX_DESC_ADDRY_EN;
|
||||||
else
|
else
|
||||||
vdev->hal_desc_addr_search_flags = HAL_TX_DESC_ADDRX_EN;
|
vdev->hal_desc_addr_search_flags = HAL_TX_DESC_ADDRX_EN;
|
||||||
|
|
||||||
|
if (vdev->opmode == wlan_op_mode_sta)
|
||||||
|
vdev->search_type = HAL_TX_ADDR_INDEX_SEARCH;
|
||||||
|
else
|
||||||
|
vdev->search_type = HAL_TX_ADDR_SEARCH_DEFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef QCA_LL_TX_FLOW_CONTROL_V2
|
#ifdef QCA_LL_TX_FLOW_CONTROL_V2
|
||||||
|
@@ -688,6 +688,9 @@ struct dp_soc {
|
|||||||
/*cce disable*/
|
/*cce disable*/
|
||||||
bool cce_disable;
|
bool cce_disable;
|
||||||
|
|
||||||
|
/*ast override support in HW*/
|
||||||
|
bool ast_override_support;
|
||||||
|
|
||||||
/* Link descriptor memory banks */
|
/* Link descriptor memory banks */
|
||||||
struct {
|
struct {
|
||||||
void *base_vaddr_unaligned;
|
void *base_vaddr_unaligned;
|
||||||
@@ -1407,6 +1410,10 @@ struct dp_vdev {
|
|||||||
|
|
||||||
/* SWAR for HW: Enable WEP bit in the AMSDU frames for RAW mode */
|
/* SWAR for HW: Enable WEP bit in the AMSDU frames for RAW mode */
|
||||||
bool raw_mode_war;
|
bool raw_mode_war;
|
||||||
|
|
||||||
|
/* Address search type to be set in TX descriptor */
|
||||||
|
uint8_t search_type;
|
||||||
|
|
||||||
/* AST hash value for BSS peer in HW valid for STA VAP*/
|
/* AST hash value for BSS peer in HW valid for STA VAP*/
|
||||||
uint16_t bss_ast_hash;
|
uint16_t bss_ast_hash;
|
||||||
};
|
};
|
||||||
|
@@ -116,6 +116,10 @@ do { \
|
|||||||
#define HAL_TX_DESC_ADDRY_EN 0x2
|
#define HAL_TX_DESC_ADDRY_EN 0x2
|
||||||
#define HAL_TX_DESC_DEFAULT_LMAC_ID 0x3
|
#define HAL_TX_DESC_DEFAULT_LMAC_ID 0x3
|
||||||
|
|
||||||
|
#define HAL_TX_ADDR_SEARCH_DEFAULT 0x0
|
||||||
|
#define HAL_TX_ADDR_INDEX_SEARCH 0x1
|
||||||
|
#define HAL_TX_FLOW_INDEX_SEARCH 0x2
|
||||||
|
|
||||||
enum hal_tx_ret_buf_manager {
|
enum hal_tx_ret_buf_manager {
|
||||||
HAL_WBM_SW0_BM_ID = 3,
|
HAL_WBM_SW0_BM_ID = 3,
|
||||||
HAL_WBM_SW1_BM_ID = 4,
|
HAL_WBM_SW1_BM_ID = 4,
|
||||||
|
Reference in New Issue
Block a user