enic: Add wrapper routines for new fw devcmds for port profile handling
authorRoopa Prabhu <roprabhu@cisco.com>
Tue, 29 Mar 2011 20:35:56 +0000 (20:35 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 31 Mar 2011 04:39:24 +0000 (21:39 -0700)
This patch adds wrapper routines to new port profile related fw devcmds and
removes the old ones

Signed-off-by: Roopa Prabhu <roprabhu@cisco.com>
Signed-off-by: David Wang <dwang2@cisco.com>
Signed-off-by: Christian Benvenuti <benve@cisco.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/enic/enic_dev.c
drivers/net/enic/enic_dev.h

index 37ad3a1c82eee76c136d8c3c6c8ac5f57bd07ba8..90687b14e60f088fb701da094924b1be6c1d33bf 100644 (file)
@@ -177,24 +177,24 @@ int enic_vnic_dev_deinit(struct enic *enic)
        return err;
 }
 
-int enic_dev_init_prov(struct enic *enic, struct vic_provinfo *vp)
+int enic_dev_init_prov2(struct enic *enic, struct vic_provinfo *vp)
 {
        int err;
 
        spin_lock(&enic->devcmd_lock);
-       err = vnic_dev_init_prov(enic->vdev,
+       err = vnic_dev_init_prov2(enic->vdev,
                (u8 *)vp, vic_provinfo_size(vp));
        spin_unlock(&enic->devcmd_lock);
 
        return err;
 }
 
-int enic_dev_init_done(struct enic *enic, int *done, int *error)
+int enic_dev_deinit_done(struct enic *enic, int *status)
 {
        int err;
 
        spin_lock(&enic->devcmd_lock);
-       err = vnic_dev_init_done(enic->vdev, done, error);
+       err = vnic_dev_deinit_done(enic->vdev, status);
        spin_unlock(&enic->devcmd_lock);
 
        return err;
@@ -219,3 +219,57 @@ void enic_vlan_rx_kill_vid(struct net_device *netdev, u16 vid)
        enic_del_vlan(enic, vid);
        spin_unlock(&enic->devcmd_lock);
 }
+
+int enic_dev_enable2(struct enic *enic, int active)
+{
+       int err;
+
+       spin_lock(&enic->devcmd_lock);
+       err = vnic_dev_enable2(enic->vdev, active);
+       spin_unlock(&enic->devcmd_lock);
+
+       return err;
+}
+
+int enic_dev_enable2_done(struct enic *enic, int *status)
+{
+       int err;
+
+       spin_lock(&enic->devcmd_lock);
+       err = vnic_dev_enable2_done(enic->vdev, status);
+       spin_unlock(&enic->devcmd_lock);
+
+       return err;
+}
+
+int enic_dev_status_to_errno(int devcmd_status)
+{
+       switch (devcmd_status) {
+       case ERR_SUCCESS:
+               return 0;
+       case ERR_EINVAL:
+               return -EINVAL;
+       case ERR_EFAULT:
+               return -EFAULT;
+       case ERR_EPERM:
+               return -EPERM;
+       case ERR_EBUSY:
+               return -EBUSY;
+       case ERR_ECMDUNKNOWN:
+       case ERR_ENOTSUPPORTED:
+               return -EOPNOTSUPP;
+       case ERR_EBADSTATE:
+               return -EINVAL;
+       case ERR_ENOMEM:
+               return -ENOMEM;
+       case ERR_ETIMEDOUT:
+               return -ETIMEDOUT;
+       case ERR_ELINKDOWN:
+               return -ENETDOWN;
+       case ERR_EINPROGRESS:
+               return -EINPROGRESS;
+       case ERR_EMAXRES:
+       default:
+               return (devcmd_status < 0) ? devcmd_status : -1;
+       }
+}
index 495f57fcb887798373bdfb0fa207a5009d8a4cf3..d5f6813376263e7ce52dfdbf82675f4ccc3a81cd 100644 (file)
@@ -35,7 +35,10 @@ int enic_dev_set_ig_vlan_rewrite_mode(struct enic *enic);
 int enic_dev_enable(struct enic *enic);
 int enic_dev_disable(struct enic *enic);
 int enic_vnic_dev_deinit(struct enic *enic);
-int enic_dev_init_prov(struct enic *enic, struct vic_provinfo *vp);
-int enic_dev_init_done(struct enic *enic, int *done, int *error);
+int enic_dev_init_prov2(struct enic *enic, struct vic_provinfo *vp);
+int enic_dev_deinit_done(struct enic *enic, int *status);
+int enic_dev_enable2(struct enic *enic, int arg);
+int enic_dev_enable2_done(struct enic *enic, int *status);
+int enic_dev_status_to_errno(int devcmd_status);
 
 #endif /* _ENIC_DEV_H_ */