qcacmn: MEC loopback check even when sa_is_valid not set

There is a case when the multicast/broadcast frame gets loop backed
even before a MEC WDS entry gets added, in this case
the MEC check based on sa_is_valid will fail, hence added
another ast lookup check.

Also fix the ast entry iterator to use _safe option, since
we are deleting ast entries in the same iterations

Change-Id: I0567893783649d991c3623a61c60fbc63d1a24ef
This commit is contained in:
Tallapragada Kalyan
2017-07-26 00:31:35 +05:30
committed by snandini
parent fb72b637f7
commit 1c14d5d8e9
5 changed files with 39 additions and 25 deletions

View File

@@ -54,14 +54,14 @@ void dp_rx_sec_ind_handler(void *soc_handle, uint16_t peer_id,
uint8_t dp_get_peer_mac_addr_frm_id(struct cdp_soc_t *soc_handle,
uint16_t peer_id, uint8_t *peer_mac);
struct dp_ast_entry *dp_peer_ast_hash_find(struct dp_soc *soc,
uint8_t *ast_mac_addr, int mac_addr_is_aligned);
#ifdef FEATURE_WDS
int dp_peer_add_ast(struct dp_soc *soc, struct dp_peer *peer,
uint8_t *mac_addr, uint8_t is_self);
void dp_peer_del_ast(struct dp_soc *soc,
struct dp_ast_entry *ast_entry);
struct dp_ast_entry *dp_peer_ast_hash_find(struct dp_soc *soc,
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)
@@ -72,6 +72,11 @@ 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
#ifdef DP_LFR