aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/enic/vnic_dev.h
diff options
context:
space:
mode:
authorScott Feldman <scofeldm@cisco.com>2009-09-03 13:01:58 -0400
committerDavid S. Miller <davem@davemloft.net>2009-09-03 23:19:10 -0400
commit4badc385d1a9e140ad0992537237fc22211adad0 (patch)
tree5edf87f3240b4ad5c999e025c47d379f09f91296 /drivers/net/enic/vnic_dev.h
parent27e6c7d33835e7f347cdfb5025766b7d9a6596d1 (diff)
enic: workaround A0 erratum
A0 revision ASIC has an erratum on the RQ desc cache on chip where the cache can become corrupted causing pkt buf writes to wrong locations. The s/w workaround is to post a dummy RQ desc in the ring every 32 descs, causing a flush of the cache. A0 parts are not production, but there are enough of these parts in the wild in test setups to warrant including workaround. A1 revision ASIC parts fix erratum. Signed-off-by: Scott Feldman <scofeldm@cisco.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/enic/vnic_dev.h')
-rw-r--r--drivers/net/enic/vnic_dev.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/enic/vnic_dev.h b/drivers/net/enic/vnic_dev.h
index d960edb8cdf5..db1d63e0b97c 100644
--- a/drivers/net/enic/vnic_dev.h
+++ b/drivers/net/enic/vnic_dev.h
@@ -41,6 +41,12 @@ static inline void writeq(u64 val, void __iomem *reg)
41} 41}
42#endif 42#endif
43 43
44enum vnic_dev_hw_version {
45 VNIC_DEV_HW_VER_UNKNOWN,
46 VNIC_DEV_HW_VER_A1,
47 VNIC_DEV_HW_VER_A2,
48};
49
44enum vnic_dev_intr_mode { 50enum vnic_dev_intr_mode {
45 VNIC_DEV_INTR_MODE_UNKNOWN, 51 VNIC_DEV_INTR_MODE_UNKNOWN,
46 VNIC_DEV_INTR_MODE_INTX, 52 VNIC_DEV_INTR_MODE_INTX,
@@ -88,6 +94,8 @@ int vnic_dev_cmd(struct vnic_dev *vdev, enum vnic_devcmd_cmd cmd,
88 u64 *a0, u64 *a1, int wait); 94 u64 *a0, u64 *a1, int wait);
89int vnic_dev_fw_info(struct vnic_dev *vdev, 95int vnic_dev_fw_info(struct vnic_dev *vdev,
90 struct vnic_devcmd_fw_info **fw_info); 96 struct vnic_devcmd_fw_info **fw_info);
97int vnic_dev_hw_version(struct vnic_dev *vdev,
98 enum vnic_dev_hw_version *hw_ver);
91int vnic_dev_spec(struct vnic_dev *vdev, unsigned int offset, unsigned int size, 99int vnic_dev_spec(struct vnic_dev *vdev, unsigned int offset, unsigned int size,
92 void *value); 100 void *value);
93int vnic_dev_stats_clear(struct vnic_dev *vdev); 101int vnic_dev_stats_clear(struct vnic_dev *vdev);