diff options
author | Vasanthy Kolluri <vkolluri@cisco.com> | 2011-02-04 16:17:10 (GMT) |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-02-07 19:49:03 (GMT) |
commit | 115d56f723c45088ddf46fac1ebba7c333039150 (patch) | |
tree | f2ebd0b484fcc8b9ce69035bab42c9b2f0782767 | |
parent | 519874619f642afaf61530b0f4df3cd1e9a319e4 (diff) | |
download | linux-115d56f723c45088ddf46fac1ebba7c333039150.tar.xz |
enic: Bug Fix: Fix return values of enic_add/del_station_addr routines
Fix enic_add/del_station_addr routines to return appropriate error code when an invalid address is added or deleted.
Signed-off-by: Christian Benvenuti <benve@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>
-rw-r--r-- | drivers/net/enic/enic.h | 2 | ||||
-rw-r--r-- | drivers/net/enic/enic_dev.c | 26 |
2 files changed, 15 insertions, 13 deletions
diff --git a/drivers/net/enic/enic.h b/drivers/net/enic/enic.h index 1385a60..f38ad63 100644 --- a/drivers/net/enic/enic.h +++ b/drivers/net/enic/enic.h @@ -32,7 +32,7 @@ #define DRV_NAME "enic" #define DRV_DESCRIPTION "Cisco VIC Ethernet NIC Driver" -#define DRV_VERSION "2.1.1.3" +#define DRV_VERSION "2.1.1.4" #define DRV_COPYRIGHT "Copyright 2008-2011 Cisco Systems, Inc" #define ENIC_BARS_MAX 6 diff --git a/drivers/net/enic/enic_dev.c b/drivers/net/enic/enic_dev.c index a52dbd2..3826266 100644 --- a/drivers/net/enic/enic_dev.c +++ b/drivers/net/enic/enic_dev.c @@ -49,26 +49,28 @@ int enic_dev_stats_dump(struct enic *enic, struct vnic_stats **vstats) int enic_dev_add_station_addr(struct enic *enic) { - int err = 0; + int err; + + if (!is_valid_ether_addr(enic->netdev->dev_addr)) + return -EADDRNOTAVAIL; - if (is_valid_ether_addr(enic->netdev->dev_addr)) { - spin_lock(&enic->devcmd_lock); - err = vnic_dev_add_addr(enic->vdev, enic->netdev->dev_addr); - spin_unlock(&enic->devcmd_lock); - } + spin_lock(&enic->devcmd_lock); + err = vnic_dev_add_addr(enic->vdev, enic->netdev->dev_addr); + spin_unlock(&enic->devcmd_lock); return err; } int enic_dev_del_station_addr(struct enic *enic) { - int err = 0; + int err; + + if (!is_valid_ether_addr(enic->netdev->dev_addr)) + return -EADDRNOTAVAIL; - if (is_valid_ether_addr(enic->netdev->dev_addr)) { - spin_lock(&enic->devcmd_lock); - err = vnic_dev_del_addr(enic->vdev, enic->netdev->dev_addr); - spin_unlock(&enic->devcmd_lock); - } + spin_lock(&enic->devcmd_lock); + err = vnic_dev_del_addr(enic->vdev, enic->netdev->dev_addr); + spin_unlock(&enic->devcmd_lock); return err; } |