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

Commit 9ea72dc9 authored by Xue Chaojing's avatar Xue Chaojing Committed by David S. Miller
Browse files

net-next/hinic:fix a bug in set mac address



In add_mac_addr(), if the MAC address is a muliticast address,
it will not be set, which causes the network card fail to receive
the multicast packet. This patch fixes this bug.

Signed-off-by: default avatarXue Chaojing <xuechaojing@huawei.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4a61abb1
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -600,9 +600,6 @@ static int add_mac_addr(struct net_device *netdev, const u8 *addr)
	u16 vid = 0;
	int err;

	if (!is_valid_ether_addr(addr))
		return -EADDRNOTAVAIL;

	netif_info(nic_dev, drv, netdev, "set mac addr = %02x %02x %02x %02x %02x %02x\n",
		   addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);

@@ -726,6 +723,7 @@ static void set_rx_mode(struct work_struct *work)
{
	struct hinic_rx_mode_work *rx_mode_work = work_to_rx_mode_work(work);
	struct hinic_dev *nic_dev = rx_mode_work_to_nic_dev(rx_mode_work);
	struct netdev_hw_addr *ha;

	netif_info(nic_dev, drv, nic_dev->netdev, "set rx mode work\n");

@@ -733,6 +731,9 @@ static void set_rx_mode(struct work_struct *work)

	__dev_uc_sync(nic_dev->netdev, add_mac_addr, remove_mac_addr);
	__dev_mc_sync(nic_dev->netdev, add_mac_addr, remove_mac_addr);

	netdev_for_each_mc_addr(ha, nic_dev->netdev)
		add_mac_addr(nic_dev->netdev, ha->addr);
}

static void hinic_set_rx_mode(struct net_device *netdev)