enic: Bug fix: Reset driver count of registered unicast addresses to zero during...
authorVasanthy Kolluri <vkolluri@cisco.com>
Thu, 17 Feb 2011 08:53:12 +0000 (08:53 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 17 Feb 2011 22:14:08 +0000 (14:14 -0800)
During a device reset, clear the counter for the no. of unicast addresses registered.
Also, rename the routines that update unicast and multicast address lists.

Signed-off-by: Christian Benvenuti <benve@cisco.com>
Signed-off-by: Danny Guo <dannguo@cisco.com>
Signed-off-by: Vasanthy Kolluri <vkolluri@cisco.com>
Signed-off-by: Roopa Prabhu <roprabhu@cisco.com>
Signed-off-by: David Wang <dwang2@cisco.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/enic/enic.h
drivers/net/enic/enic_main.c

index 57fcaeea94f731e6372cde3e19d355d8de443157..5f4eb45345c1c4bb508206af9a2308a306aca362 100644 (file)
@@ -32,7 +32,7 @@
 
 #define DRV_NAME               "enic"
 #define DRV_DESCRIPTION                "Cisco VIC Ethernet NIC Driver"
-#define DRV_VERSION            "2.1.1.6"
+#define DRV_VERSION            "2.1.1.7"
 #define DRV_COPYRIGHT          "Copyright 2008-2011 Cisco Systems, Inc"
 
 #define ENIC_BARS_MAX          6
index 0c243704ca401110e71fd48d3c45304145da2022..a625a0e0916961db660bb173fbe27a8ff8fb2aae 100644 (file)
@@ -874,9 +874,10 @@ static struct net_device_stats *enic_get_stats(struct net_device *netdev)
        return net_stats;
 }
 
-static void enic_reset_multicast_list(struct enic *enic)
+static void enic_reset_addr_lists(struct enic *enic)
 {
        enic->mc_count = 0;
+       enic->uc_count = 0;
        enic->flags = 0;
 }
 
@@ -941,7 +942,7 @@ static int enic_set_mac_address(struct net_device *netdev, void *p)
        return enic_dev_add_station_addr(enic);
 }
 
-static void enic_add_multicast_addr_list(struct enic *enic)
+static void enic_update_multicast_addr_list(struct enic *enic)
 {
        struct net_device *netdev = enic->netdev;
        struct netdev_hw_addr *ha;
@@ -996,7 +997,7 @@ static void enic_add_multicast_addr_list(struct enic *enic)
        enic->mc_count = mc_count;
 }
 
-static void enic_add_unicast_addr_list(struct enic *enic)
+static void enic_update_unicast_addr_list(struct enic *enic)
 {
        struct net_device *netdev = enic->netdev;
        struct netdev_hw_addr *ha;
@@ -1073,9 +1074,9 @@ static void enic_set_rx_mode(struct net_device *netdev)
        }
 
        if (!promisc) {
-               enic_add_unicast_addr_list(enic);
+               enic_update_unicast_addr_list(enic);
                if (!allmulti)
-                       enic_add_multicast_addr_list(enic);
+                       enic_update_multicast_addr_list(enic);
        }
 }
 
@@ -2067,7 +2068,7 @@ static void enic_reset(struct work_struct *work)
        enic_dev_hang_notify(enic);
        enic_stop(enic->netdev);
        enic_dev_hang_reset(enic);
-       enic_reset_multicast_list(enic);
+       enic_reset_addr_lists(enic);
        enic_init_vnic_resources(enic);
        enic_set_rss_nic_cfg(enic);
        enic_dev_set_ig_vlan_rewrite_mode(enic);