qcacmn: Fix NAWDS mcast loopback issue in intraBSS
For NAWDS intraBSS mcast traffic add check for SA and DA peer to avoid loopback Change-Id: Ifb987dbfe6d6f427cd8873315d4ffd67390b4e6f
This commit is contained in:

committed by
Madan Koyyalamudi

parent
a4167759a9
commit
2c1ccc9baf
@@ -545,6 +545,8 @@ bool dp_rx_intrabss_mcbc_fwd(struct dp_soc *soc, struct dp_peer *ta_peer,
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
len = QDF_NBUF_CB_RX_PKT_LEN(nbuf);
|
len = QDF_NBUF_CB_RX_PKT_LEN(nbuf);
|
||||||
|
qdf_nbuf_set_tx_fctx_type(nbuf_copy, &ta_peer->peer_id,
|
||||||
|
CB_FTYPE_INTRABSS_FWD);
|
||||||
if (dp_tx_send((struct cdp_soc_t *)soc,
|
if (dp_tx_send((struct cdp_soc_t *)soc,
|
||||||
ta_peer->vdev->vdev_id, nbuf_copy)) {
|
ta_peer->vdev->vdev_id, nbuf_copy)) {
|
||||||
DP_STATS_INC_PKT(ta_peer, rx.intra_bss.fail, 1, len);
|
DP_STATS_INC_PKT(ta_peer, rx.intra_bss.fail, 1, len);
|
||||||
|
@@ -3001,6 +3001,10 @@ void dp_tx_nawds_handler(struct dp_soc *soc, struct dp_vdev *vdev,
|
|||||||
if (ast_entry)
|
if (ast_entry)
|
||||||
sa_peer_id = ast_entry->peer_id;
|
sa_peer_id = ast_entry->peer_id;
|
||||||
qdf_spin_unlock_bh(&soc->ast_lock);
|
qdf_spin_unlock_bh(&soc->ast_lock);
|
||||||
|
} else {
|
||||||
|
if ((qdf_nbuf_get_tx_ftype(nbuf) == CB_FTYPE_INTRABSS_FWD) &&
|
||||||
|
qdf_nbuf_get_tx_fctx(nbuf))
|
||||||
|
sa_peer_id = *(uint32_t *)qdf_nbuf_get_tx_fctx(nbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
qdf_spin_lock_bh(&vdev->peer_list_lock);
|
qdf_spin_lock_bh(&vdev->peer_list_lock);
|
||||||
@@ -3010,13 +3014,11 @@ void dp_tx_nawds_handler(struct dp_soc *soc, struct dp_vdev *vdev,
|
|||||||
/* Multicast packets needs to be
|
/* Multicast packets needs to be
|
||||||
* dropped in case of intra bss forwarding
|
* dropped in case of intra bss forwarding
|
||||||
*/
|
*/
|
||||||
if (!soc->ast_offload_support) {
|
if (sa_peer_id == peer->peer_id) {
|
||||||
if (sa_peer_id == peer->peer_id) {
|
dp_tx_debug("multicast packet");
|
||||||
dp_tx_debug("multicast packet");
|
DP_STATS_INC(peer, tx.nawds_mcast_drop,
|
||||||
DP_STATS_INC(peer, tx.nawds_mcast_drop,
|
1);
|
||||||
1);
|
continue;
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nbuf_clone = qdf_nbuf_clone(nbuf);
|
nbuf_clone = qdf_nbuf_clone(nbuf);
|
||||||
|
Reference in New Issue
Block a user