Author: Bob Sharp <[EMAIL PROTECTED]>

Re-enable multicast and unicast after changing MTU.

Signed-off-by: Bob Sharp <[EMAIL PROTECTED]>
Signed-off-by: Sweta Bhatt <[EMAIL PROTECTED]>
Signed-off-by: Chien Tung <[EMAIL PROTECTED]>
--
 drivers/infiniband/hw/nes/nes_nic.c |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/drivers/infiniband/hw/nes/nes_nic.c 
b/drivers/infiniband/hw/nes/nes_nic.c
index 1b0938c..77e258a 100644
--- a/drivers/infiniband/hw/nes/nes_nic.c
+++ b/drivers/infiniband/hw/nes/nes_nic.c
@@ -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;
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to