qcacmn: Fix Intra-BSS forwarding issue

Extract ast_table manipulation functions from WDS feature flag

Change-Id: I029e151f608a6bb60344d817d7b7c75b86ca981b
CRs-Fixed: 2110304
This commit is contained in:
Yun Park
2017-09-13 16:33:35 -07:00
committed by snandini
parent 0d7163dbd4
commit 92af713fa2
3 changed files with 5 additions and 35 deletions

View File

@@ -1590,8 +1590,6 @@ static void dp_wds_aging_timer_fn(void *soc_hdl)
*/ */
static void dp_soc_wds_attach(struct dp_soc *soc) static void dp_soc_wds_attach(struct dp_soc *soc)
{ {
qdf_spinlock_create(&soc->ast_lock);
qdf_timer_init(soc->osdev, &soc->wds_aging_timer, qdf_timer_init(soc->osdev, &soc->wds_aging_timer,
dp_wds_aging_timer_fn, (void *)soc, dp_wds_aging_timer_fn, (void *)soc,
QDF_TIMER_TYPE_WAKE_APPS); QDF_TIMER_TYPE_WAKE_APPS);
@@ -1609,7 +1607,6 @@ static void dp_soc_wds_detach(struct dp_soc *soc)
{ {
qdf_timer_stop(&soc->wds_aging_timer); qdf_timer_stop(&soc->wds_aging_timer);
qdf_timer_free(&soc->wds_aging_timer); qdf_timer_free(&soc->wds_aging_timer);
qdf_spinlock_destroy(&soc->ast_lock);
} }
#else #else
static void dp_soc_wds_attach(struct dp_soc *soc) static void dp_soc_wds_attach(struct dp_soc *soc)
@@ -1890,6 +1887,7 @@ static int dp_soc_cmn_setup(struct dp_soc *soc)
goto fail1; goto fail1;
} }
qdf_spinlock_create(&soc->ast_lock);
dp_soc_wds_attach(soc); dp_soc_wds_attach(soc);
/* Reset the cpu ring map if radio is NSS offloaded */ /* Reset the cpu ring map if radio is NSS offloaded */
@@ -2590,6 +2588,7 @@ static void dp_soc_detach_wifi3(void *txrx_soc)
wlan_cfg_soc_detach(soc->wlan_cfg_ctx); wlan_cfg_soc_detach(soc->wlan_cfg_ctx);
dp_soc_wds_detach(soc); dp_soc_wds_detach(soc);
qdf_spinlock_destroy(&soc->ast_lock);
qdf_mem_free(soc); qdf_mem_free(soc);
} }
@@ -4981,6 +4980,9 @@ static void dp_txrx_path_stats(struct dp_soc *soc)
DP_TRACE(FATAL, "intra-bss packets %u msdus ( %u bytes),", DP_TRACE(FATAL, "intra-bss packets %u msdus ( %u bytes),",
pdev->stats.rx.intra_bss.pkts.num, pdev->stats.rx.intra_bss.pkts.num,
pdev->stats.rx.intra_bss.pkts.bytes); pdev->stats.rx.intra_bss.pkts.bytes);
DP_TRACE(FATAL, "intra-bss fails %u msdus ( %u bytes),",
pdev->stats.rx.intra_bss.fail.num,
pdev->stats.rx.intra_bss.fail.bytes);
DP_TRACE(FATAL, "raw packets %u msdus ( %u bytes),", DP_TRACE(FATAL, "raw packets %u msdus ( %u bytes),",
pdev->stats.rx.raw.num, pdev->stats.rx.raw.num,
pdev->stats.rx.raw.bytes); pdev->stats.rx.raw.bytes);

View File

@@ -190,7 +190,6 @@ void dp_peer_find_hash_add(struct dp_soc *soc, struct dp_peer *peer)
qdf_spin_unlock_bh(&soc->peer_ref_mutex); qdf_spin_unlock_bh(&soc->peer_ref_mutex);
} }
#ifdef FEATURE_WDS
/* /*
* dp_peer_ast_hash_attach() - Allocate and initialize AST Hash Table * dp_peer_ast_hash_attach() - Allocate and initialize AST Hash Table
* @soc: SoC handle * @soc: SoC handle
@@ -487,20 +486,6 @@ void dp_peer_del_ast(struct dp_soc *soc,
dp_peer_ast_hash_remove(soc, ast_entry); dp_peer_ast_hash_remove(soc, ast_entry);
qdf_mem_free(ast_entry); qdf_mem_free(ast_entry);
} }
#else
static int dp_peer_ast_hash_attach(struct dp_soc *soc)
{
return 0;
}
static void dp_peer_ast_hash_detach(struct dp_soc *soc)
{
}
static inline void dp_peer_map_ast(struct dp_soc *soc, struct dp_peer *peer,
uint8_t *mac_addr, uint16_t hw_peer_id, uint8_t vdev_id)
{
}
#endif
#if ATH_SUPPORT_WRAP #if ATH_SUPPORT_WRAP
static struct dp_peer *dp_peer_find_hash_find(struct dp_soc *soc, static struct dp_peer *dp_peer_find_hash_find(struct dp_soc *soc,

View File

@@ -55,29 +55,12 @@ uint8_t dp_get_peer_mac_addr_frm_id(struct cdp_soc_t *soc_handle,
uint16_t peer_id, uint8_t *peer_mac); uint16_t peer_id, uint8_t *peer_mac);
#ifdef FEATURE_WDS
int dp_peer_add_ast(struct dp_soc *soc, struct dp_peer *peer, int dp_peer_add_ast(struct dp_soc *soc, struct dp_peer *peer,
uint8_t *mac_addr, uint8_t is_self); uint8_t *mac_addr, uint8_t is_self);
void dp_peer_del_ast(struct dp_soc *soc, void dp_peer_del_ast(struct dp_soc *soc,
struct dp_ast_entry *ast_entry); struct dp_ast_entry *ast_entry);
struct dp_ast_entry *dp_peer_ast_hash_find(struct dp_soc *soc, struct dp_ast_entry *dp_peer_ast_hash_find(struct dp_soc *soc,
uint8_t *ast_mac_addr, int mac_addr_is_aligned); uint8_t *ast_mac_addr, int mac_addr_is_aligned);
#else
static inline int dp_peer_add_ast(struct dp_soc *soc, struct dp_peer *peer,
uint8_t *mac_addr, uint8_t is_self)
{
return 0;
}
static inline void dp_peer_del_ast(struct dp_soc *soc,
struct dp_ast_entry *ast_entry)
{
}
static inline struct dp_ast_entry *dp_peer_ast_hash_find(struct dp_soc *soc,
uint8_t *ast_mac_addr, int mac_addr_is_aligned)
{
return NULL;
}
#endif
/* /*
* dp_get_vdev_from_soc_vdev_id_wifi3() - * dp_get_vdev_from_soc_vdev_id_wifi3() -