Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0d6b425a authored by Kejian Yan's avatar Kejian Yan Committed by David S. Miller
Browse files

net: hns: bug fix about ping6



The current upstreaming code fails to ping other IPv6 net device, because
the enet receives the multicast packets with the src mac addr which is the
same as its mac addr. These packets need to be dropped.

Signed-off-by: default avatarKejian Yan <yankejian@huawei.com>
Signed-off-by: default avatarYisen Zhuang <Yisen.Zhuang@huawei.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent db219baf
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -564,6 +564,7 @@ static int hns_nic_poll_rx_skb(struct hns_nic_ring_data *ring_data,
	struct sk_buff *skb;
	struct hnae_desc *desc;
	struct hnae_desc_cb *desc_cb;
	struct ethhdr *eh;
	unsigned char *va;
	int bnum, length, i;
	int pull_len;
@@ -670,6 +671,14 @@ static int hns_nic_poll_rx_skb(struct hns_nic_ring_data *ring_data,
		return -EFAULT;
	}

	/* filter out multicast pkt with the same src mac as this port */
	eh = eth_hdr(skb);
	if (unlikely(is_multicast_ether_addr(eh->h_dest) &&
		     ether_addr_equal(ndev->dev_addr, eh->h_source))) {
		dev_kfree_skb_any(skb);
		return -EFAULT;
	}

	ring->stats.rx_pkts++;
	ring->stats.rx_bytes += skb->len;