qcacmn: Do not drop multicast pkts in DBDC QWRAP mode

We are not suppose to drop multicast loop backedpkts
received on a different radio. instead they should be
sent to dp link aggregator for setting certain flags.

Change-Id: Idae19c1b6a2caf2a1b2b58fac531c43e9c24db51
CRs-Fixed: 2351300
This commit is contained in:
Tallapragada Kalyan
2019-01-09 11:30:45 +05:30
committed by nshrivas
parent bfb0112412
commit f07025a708

View File

@@ -874,27 +874,23 @@ static inline bool check_qwrap_multicast_loopback(struct dp_vdev *vdev,
{
struct dp_vdev *psta_vdev;
struct dp_pdev *pdev = vdev->pdev;
struct dp_soc *soc = pdev->soc;
uint8_t *data = qdf_nbuf_data(nbuf);
uint8_t i;
for (i = 0; i < MAX_PDEV_CNT && soc->pdev_list[i]; i++) {
pdev = soc->pdev_list[i];
if (qdf_unlikely(vdev->proxysta_vdev)) {
/* In qwrap isolation mode, allow loopback packets as all
* packets go to RootAP and Loopback on the mpsta.
*/
if (vdev->isolation_vdev)
return false;
TAILQ_FOREACH(psta_vdev, &pdev->vdev_list, vdev_list_elem) {
if (qdf_unlikely(psta_vdev->proxysta_vdev &&
!qdf_mem_cmp(psta_vdev->mac_addr.raw,
&data[DP_MAC_ADDR_LEN], DP_MAC_ADDR_LEN))) {
/* Drop packet if source address is equal to
* any of the vdev addresses.
*/
return true;
}
if (qdf_unlikely(vdev->proxysta_vdev)) {
/* In qwrap isolation mode, allow loopback packets as all
* packets go to RootAP and Loopback on the mpsta.
*/
if (vdev->isolation_vdev)
return false;
TAILQ_FOREACH(psta_vdev, &pdev->vdev_list, vdev_list_elem) {
if (qdf_unlikely(psta_vdev->proxysta_vdev &&
!qdf_mem_cmp(psta_vdev->mac_addr.raw,
&data[DP_MAC_ADDR_LEN],
DP_MAC_ADDR_LEN))) {
/* Drop packet if source address is equal to
* any of the vdev addresses.
*/
return true;
}
}
}