mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 17:54:13 +08:00
RDMA/nes: Enable MC/UC after changing MTU
Re-enable multicast and unicast after changing MTU. Signed-off-by: Bob Sharp <bsharp@neteffect.com> Signed-off-by: Sweta Bhatt <sweta.bhatt@einfochips.com> Signed-off-by: Chien Tung <ctung@neteffect.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
7a8d14070b
commit
e0e31afbf9
@ -918,6 +918,10 @@ static int nes_netdev_change_mtu(struct net_device *netdev, int new_mtu)
|
||||
struct nes_device *nesdev = nesvnic->nesdev;
|
||||
int ret = 0;
|
||||
u8 jumbomode = 0;
|
||||
u32 nic_active;
|
||||
u32 nic_active_bit;
|
||||
u32 uc_all_active;
|
||||
u32 mc_all_active;
|
||||
|
||||
if ((new_mtu < ETH_ZLEN) || (new_mtu > max_mtu))
|
||||
return -EINVAL;
|
||||
@ -931,8 +935,24 @@ static int nes_netdev_change_mtu(struct net_device *netdev, int new_mtu)
|
||||
nes_nic_init_timer_defaults(nesdev, jumbomode);
|
||||
|
||||
if (netif_running(netdev)) {
|
||||
nic_active_bit = 1 << nesvnic->nic_index;
|
||||
mc_all_active = nes_read_indexed(nesdev,
|
||||
NES_IDX_NIC_MULTICAST_ALL) & nic_active_bit;
|
||||
uc_all_active = nes_read_indexed(nesdev,
|
||||
NES_IDX_NIC_UNICAST_ALL) & nic_active_bit;
|
||||
|
||||
nes_netdev_stop(netdev);
|
||||
nes_netdev_open(netdev);
|
||||
|
||||
nic_active = nes_read_indexed(nesdev,
|
||||
NES_IDX_NIC_MULTICAST_ALL);
|
||||
nic_active |= mc_all_active;
|
||||
nes_write_indexed(nesdev, NES_IDX_NIC_MULTICAST_ALL,
|
||||
nic_active);
|
||||
|
||||
nic_active = nes_read_indexed(nesdev, NES_IDX_NIC_UNICAST_ALL);
|
||||
nic_active |= uc_all_active;
|
||||
nes_write_indexed(nesdev, NES_IDX_NIC_UNICAST_ALL, nic_active);
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user