This source file includes following definitions.
- enic_dev_fw_info
- enic_dev_stats_dump
- enic_dev_add_station_addr
- enic_dev_del_station_addr
- enic_dev_packet_filter
- enic_dev_add_addr
- enic_dev_del_addr
- enic_dev_notify_unset
- enic_dev_hang_notify
- enic_dev_set_ig_vlan_rewrite_mode
- enic_dev_enable
- enic_dev_disable
- enic_dev_intr_coal_timer_info
- enic_vlan_rx_add_vid
- enic_vlan_rx_kill_vid
- enic_dev_status_to_errno
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 #include <linux/pci.h>
  20 #include <linux/etherdevice.h>
  21 
  22 #include "vnic_dev.h"
  23 #include "vnic_vic.h"
  24 #include "enic_res.h"
  25 #include "enic.h"
  26 #include "enic_dev.h"
  27 
  28 int enic_dev_fw_info(struct enic *enic, struct vnic_devcmd_fw_info **fw_info)
  29 {
  30         int err;
  31 
  32         spin_lock_bh(&enic->devcmd_lock);
  33         err = vnic_dev_fw_info(enic->vdev, fw_info);
  34         spin_unlock_bh(&enic->devcmd_lock);
  35 
  36         return err;
  37 }
  38 
  39 int enic_dev_stats_dump(struct enic *enic, struct vnic_stats **vstats)
  40 {
  41         int err;
  42 
  43         spin_lock_bh(&enic->devcmd_lock);
  44         err = vnic_dev_stats_dump(enic->vdev, vstats);
  45         spin_unlock_bh(&enic->devcmd_lock);
  46 
  47         return err;
  48 }
  49 
  50 int enic_dev_add_station_addr(struct enic *enic)
  51 {
  52         int err;
  53 
  54         if (!is_valid_ether_addr(enic->netdev->dev_addr))
  55                 return -EADDRNOTAVAIL;
  56 
  57         spin_lock_bh(&enic->devcmd_lock);
  58         err = vnic_dev_add_addr(enic->vdev, enic->netdev->dev_addr);
  59         spin_unlock_bh(&enic->devcmd_lock);
  60 
  61         return err;
  62 }
  63 
  64 int enic_dev_del_station_addr(struct enic *enic)
  65 {
  66         int err;
  67 
  68         if (!is_valid_ether_addr(enic->netdev->dev_addr))
  69                 return -EADDRNOTAVAIL;
  70 
  71         spin_lock_bh(&enic->devcmd_lock);
  72         err = vnic_dev_del_addr(enic->vdev, enic->netdev->dev_addr);
  73         spin_unlock_bh(&enic->devcmd_lock);
  74 
  75         return err;
  76 }
  77 
  78 int enic_dev_packet_filter(struct enic *enic, int directed, int multicast,
  79         int broadcast, int promisc, int allmulti)
  80 {
  81         int err;
  82 
  83         spin_lock_bh(&enic->devcmd_lock);
  84         err = vnic_dev_packet_filter(enic->vdev, directed,
  85                 multicast, broadcast, promisc, allmulti);
  86         spin_unlock_bh(&enic->devcmd_lock);
  87 
  88         return err;
  89 }
  90 
  91 int enic_dev_add_addr(struct enic *enic, const u8 *addr)
  92 {
  93         int err;
  94 
  95         spin_lock_bh(&enic->devcmd_lock);
  96         err = vnic_dev_add_addr(enic->vdev, addr);
  97         spin_unlock_bh(&enic->devcmd_lock);
  98 
  99         return err;
 100 }
 101 
 102 int enic_dev_del_addr(struct enic *enic, const u8 *addr)
 103 {
 104         int err;
 105 
 106         spin_lock_bh(&enic->devcmd_lock);
 107         err = vnic_dev_del_addr(enic->vdev, addr);
 108         spin_unlock_bh(&enic->devcmd_lock);
 109 
 110         return err;
 111 }
 112 
 113 int enic_dev_notify_unset(struct enic *enic)
 114 {
 115         int err;
 116 
 117         spin_lock_bh(&enic->devcmd_lock);
 118         err = vnic_dev_notify_unset(enic->vdev);
 119         spin_unlock_bh(&enic->devcmd_lock);
 120 
 121         return err;
 122 }
 123 
 124 int enic_dev_hang_notify(struct enic *enic)
 125 {
 126         int err;
 127 
 128         spin_lock_bh(&enic->devcmd_lock);
 129         err = vnic_dev_hang_notify(enic->vdev);
 130         spin_unlock_bh(&enic->devcmd_lock);
 131 
 132         return err;
 133 }
 134 
 135 int enic_dev_set_ig_vlan_rewrite_mode(struct enic *enic)
 136 {
 137         int err;
 138 
 139         spin_lock_bh(&enic->devcmd_lock);
 140         err = vnic_dev_set_ig_vlan_rewrite_mode(enic->vdev,
 141                 IG_VLAN_REWRITE_MODE_PRIORITY_TAG_DEFAULT_VLAN);
 142         spin_unlock_bh(&enic->devcmd_lock);
 143 
 144         return err;
 145 }
 146 
 147 int enic_dev_enable(struct enic *enic)
 148 {
 149         int err;
 150 
 151         spin_lock_bh(&enic->devcmd_lock);
 152         err = vnic_dev_enable_wait(enic->vdev);
 153         spin_unlock_bh(&enic->devcmd_lock);
 154 
 155         return err;
 156 }
 157 
 158 int enic_dev_disable(struct enic *enic)
 159 {
 160         int err;
 161 
 162         spin_lock_bh(&enic->devcmd_lock);
 163         err = vnic_dev_disable(enic->vdev);
 164         spin_unlock_bh(&enic->devcmd_lock);
 165 
 166         return err;
 167 }
 168 
 169 int enic_dev_intr_coal_timer_info(struct enic *enic)
 170 {
 171         int err;
 172 
 173         spin_lock_bh(&enic->devcmd_lock);
 174         err = vnic_dev_intr_coal_timer_info(enic->vdev);
 175         spin_unlock_bh(&enic->devcmd_lock);
 176 
 177         return err;
 178 }
 179 
 180 
 181 int enic_vlan_rx_add_vid(struct net_device *netdev, __be16 proto, u16 vid)
 182 {
 183         struct enic *enic = netdev_priv(netdev);
 184         int err;
 185 
 186         spin_lock_bh(&enic->devcmd_lock);
 187         err = enic_add_vlan(enic, vid);
 188         spin_unlock_bh(&enic->devcmd_lock);
 189 
 190         return err;
 191 }
 192 
 193 
 194 int enic_vlan_rx_kill_vid(struct net_device *netdev, __be16 proto, u16 vid)
 195 {
 196         struct enic *enic = netdev_priv(netdev);
 197         int err;
 198 
 199         spin_lock_bh(&enic->devcmd_lock);
 200         err = enic_del_vlan(enic, vid);
 201         spin_unlock_bh(&enic->devcmd_lock);
 202 
 203         return err;
 204 }
 205 
 206 int enic_dev_status_to_errno(int devcmd_status)
 207 {
 208         switch (devcmd_status) {
 209         case ERR_SUCCESS:
 210                 return 0;
 211         case ERR_EINVAL:
 212                 return -EINVAL;
 213         case ERR_EFAULT:
 214                 return -EFAULT;
 215         case ERR_EPERM:
 216                 return -EPERM;
 217         case ERR_EBUSY:
 218                 return -EBUSY;
 219         case ERR_ECMDUNKNOWN:
 220         case ERR_ENOTSUPPORTED:
 221                 return -EOPNOTSUPP;
 222         case ERR_EBADSTATE:
 223                 return -EINVAL;
 224         case ERR_ENOMEM:
 225                 return -ENOMEM;
 226         case ERR_ETIMEDOUT:
 227                 return -ETIMEDOUT;
 228         case ERR_ELINKDOWN:
 229                 return -ENETDOWN;
 230         case ERR_EINPROGRESS:
 231                 return -EINPROGRESS;
 232         case ERR_EMAXRES:
 233         default:
 234                 return (devcmd_status < 0) ? devcmd_status : -1;
 235         }
 236 }