mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-26 06:33:19 -04:00
qcacmn: Loopback check for ucast frame after hmmc
Add a check to drop unicast frame being sent to same originating VAP after hmmc conversion of IGMP control packets Change-Id: Ic25812a7848af793075a0cb483100ebcf59d85b2
This commit is contained in:
parent
4050a850ac
commit
8bc9b42eb3
3 changed files with 36 additions and 0 deletions
|
|
@ -499,6 +499,8 @@ dp_rx_intrabss_fwd(struct dp_soc *soc,
|
|||
len = QDF_NBUF_CB_RX_PKT_LEN(nbuf);
|
||||
memset(nbuf_copy->cb, 0x0, sizeof(nbuf_copy->cb));
|
||||
|
||||
/* Set cb->ftype to intrabss FWD */
|
||||
qdf_nbuf_set_tx_ftype(nbuf_copy, CB_FTYPE_INTRABSS_FWD);
|
||||
if (dp_tx_send(dp_vdev_to_cdp_vdev(ta_peer->vdev), nbuf_copy)) {
|
||||
DP_STATS_INC_PKT(ta_peer, rx.intra_bss.fail, 1, len);
|
||||
tid_stats->fail_cnt[INTRABSS_DROP]++;
|
||||
|
|
|
|||
|
|
@ -1505,6 +1505,39 @@ static inline void dp_non_std_tx_comp_free_buff(struct dp_tx_desc_s *tx_desc,
|
|||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dp_tx_frame_is_drop() - checks if the packet is loopback
|
||||
* @vdev: DP vdev handle
|
||||
* @nbuf: skb
|
||||
*
|
||||
* Return: 1 if frame needs to be dropped else 0
|
||||
*/
|
||||
int dp_tx_frame_is_drop(struct dp_vdev *vdev, uint8_t *srcmac, uint8_t *dstmac)
|
||||
{
|
||||
struct dp_pdev *pdev = NULL;
|
||||
struct dp_ast_entry *src_ast_entry = NULL;
|
||||
struct dp_ast_entry *dst_ast_entry = NULL;
|
||||
struct dp_soc *soc = NULL;
|
||||
|
||||
qdf_assert(vdev);
|
||||
pdev = vdev->pdev;
|
||||
qdf_assert(pdev);
|
||||
soc = pdev->soc;
|
||||
|
||||
dst_ast_entry = dp_peer_ast_hash_find_by_pdevid
|
||||
(soc, dstmac, vdev->pdev->pdev_id);
|
||||
|
||||
src_ast_entry = dp_peer_ast_hash_find_by_pdevid
|
||||
(soc, srcmac, vdev->pdev->pdev_id);
|
||||
if (dst_ast_entry && src_ast_entry) {
|
||||
if (dst_ast_entry->peer->peer_ids[0] ==
|
||||
src_ast_entry->peer->peer_ids[0])
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_tx_send_msdu_single() - Setup descriptor and enqueue single MSDU to TCL
|
||||
* @vdev: DP vdev handle
|
||||
|
|
|
|||
|
|
@ -216,6 +216,7 @@ qdf_nbuf_t dp_tx_send_msdu_multiple(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
|
|||
qdf_nbuf_t dp_tx_non_std(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
|
||||
enum ol_tx_spec tx_spec, qdf_nbuf_t msdu_list);
|
||||
#endif
|
||||
int dp_tx_frame_is_drop(struct dp_vdev *vdev, uint8_t *srcmac, uint8_t *dstmac);
|
||||
|
||||
/**
|
||||
* dp_tx_comp_handler() - Tx completion handler
|
||||
|
|
|
|||
Loading…
Reference in a new issue