aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/broadcom/cnic_if.h
diff options
context:
space:
mode:
authorMichael Chan <mchan@broadcom.com>2014-03-17 19:19:07 -0800
committerDavid S. Miller <davem@davemloft.net>2014-03-18 16:02:16 -0400
commitbe1fefc21433f6202fcd76bdc7916e557fe80b9a (patch)
tree48f0fcfefc21f1be95c27673435c8c5cf2a5e15c /drivers/net/ethernet/broadcom/cnic_if.h
parentcnic: Use proper ulp_ops for per device operations. (diff)
downloadlinux-dev-be1fefc21433f6202fcd76bdc7916e557fe80b9a.tar.xz
linux-dev-be1fefc21433f6202fcd76bdc7916e557fe80b9a.zip
cnic,bnx2i,bnx2fc: Fix inconsistent use of page size
The bnx2/bnx2x rings are made up of linked pages. However there is an upper limit on the page size as some the page size settings are 16-bit in the hardware/firmware interface. In the current code, some parts use BNX2_PAGE_SIZE which has a 16K upper limit and some parts use PAGE_SIZE. On archs with >= 64K PAGE_SIZE, it generates some compile warnings. Define a new CNIC_PAGE_SZIE which has an upper limit of 16K and use it consistently in all relevant parts. Signed-off-by: Michael Chan <mchan@broadcom.com> Signed-off-by: Eddie Wai <eddie.wai@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/broadcom/cnic_if.h')
-rw-r--r--drivers/net/ethernet/broadcom/cnic_if.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/ethernet/broadcom/cnic_if.h b/drivers/net/ethernet/broadcom/cnic_if.h
index 8cf6b1926069..40bb5630d79b 100644
--- a/drivers/net/ethernet/broadcom/cnic_if.h
+++ b/drivers/net/ethernet/broadcom/cnic_if.h
@@ -24,6 +24,16 @@
#define MAX_CNIC_ULP_TYPE_EXT 3
#define MAX_CNIC_ULP_TYPE 4
+/* Use CPU native page size up to 16K for cnic ring sizes. */
+#if (PAGE_SHIFT > 14)
+#define CNIC_PAGE_BITS 14
+#else
+#define CNIC_PAGE_BITS PAGE_SHIFT
+#endif
+#define CNIC_PAGE_SIZE (1 << (CNIC_PAGE_BITS))
+#define CNIC_PAGE_ALIGN(addr) ALIGN(addr, CNIC_PAGE_SIZE)
+#define CNIC_PAGE_MASK (~((CNIC_PAGE_SIZE) - 1))
+
struct kwqe {
u32 kwqe_op_flag;