aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet
diff options
context:
space:
mode:
authorScott Feldman <sfeldma@gmail.com>2015-02-25 23:15:36 -0500
committerDavid S. Miller <davem@davemloft.net>2015-02-26 11:21:57 -0500
commit7eb344f8731a0327155814f387984dedb1df032a (patch)
tree050bc4fed980c5d5627525cb9f5d76cc94d9f5c3 /drivers/net/ethernet
parent009f33ed6f9d9da0141c2d18b1c7912d2d9be7c1 (diff)
rocker: fix non-portable err return codes
The rocker device returns error codes if something goes wrong with descriptor processing. Originally the device used standard errno codes for different errors, but since those errno codes aren't portable across ARCHs, the device now returns hard-coded error codes that stay constant across diff ARCHs. Fix driver to use those same hard-coded values. Signed-off-by: Scott Feldman <sfeldma@gmail.com> Acked-by: Jiri Pirko <jiri@resnulli.us> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet')
-rw-r--r--drivers/net/ethernet/rocker/rocker.c25
-rw-r--r--drivers/net/ethernet/rocker/rocker.h13
2 files changed, 37 insertions, 1 deletions
diff --git a/drivers/net/ethernet/rocker/rocker.c b/drivers/net/ethernet/rocker/rocker.c
index 34389b6aa67c..61f2ef4dfa8d 100644
--- a/drivers/net/ethernet/rocker/rocker.c
+++ b/drivers/net/ethernet/rocker/rocker.c
@@ -789,7 +789,30 @@ static u32 __pos_inc(u32 pos, size_t limit)
789 789
790static int rocker_desc_err(struct rocker_desc_info *desc_info) 790static int rocker_desc_err(struct rocker_desc_info *desc_info)
791{ 791{
792 return -(desc_info->desc->comp_err & ~ROCKER_DMA_DESC_COMP_ERR_GEN); 792 int err = desc_info->desc->comp_err & ~ROCKER_DMA_DESC_COMP_ERR_GEN;
793
794 switch (err) {
795 case ROCKER_OK:
796 return 0;
797 case -ROCKER_ENOENT:
798 return -ENOENT;
799 case -ROCKER_ENXIO:
800 return -ENXIO;
801 case -ROCKER_ENOMEM:
802 return -ENOMEM;
803 case -ROCKER_EEXIST:
804 return -EEXIST;
805 case -ROCKER_EINVAL:
806 return -EINVAL;
807 case -ROCKER_EMSGSIZE:
808 return -EMSGSIZE;
809 case -ROCKER_ENOTSUP:
810 return -EOPNOTSUPP;
811 case -ROCKER_ENOBUFS:
812 return -ENOBUFS;
813 }
814
815 return -EINVAL;
793} 816}
794 817
795static void rocker_desc_gen_clear(struct rocker_desc_info *desc_info) 818static void rocker_desc_gen_clear(struct rocker_desc_info *desc_info)
diff --git a/drivers/net/ethernet/rocker/rocker.h b/drivers/net/ethernet/rocker/rocker.h
index a5bc432feada..76e79ede617f 100644
--- a/drivers/net/ethernet/rocker/rocker.h
+++ b/drivers/net/ethernet/rocker/rocker.h
@@ -14,6 +14,19 @@
14 14
15#include <linux/types.h> 15#include <linux/types.h>
16 16
17/* Return codes */
18enum {
19 ROCKER_OK = 0,
20 ROCKER_ENOENT = 2,
21 ROCKER_ENXIO = 6,
22 ROCKER_ENOMEM = 12,
23 ROCKER_EEXIST = 17,
24 ROCKER_EINVAL = 22,
25 ROCKER_EMSGSIZE = 90,
26 ROCKER_ENOTSUP = 95,
27 ROCKER_ENOBUFS = 105,
28};
29
17#define PCI_VENDOR_ID_REDHAT 0x1b36 30#define PCI_VENDOR_ID_REDHAT 0x1b36
18#define PCI_DEVICE_ID_REDHAT_ROCKER 0x0006 31#define PCI_DEVICE_ID_REDHAT_ROCKER 0x0006
19 32