aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorAjit Khaparde <ajit.khaparde@emulex.com>2013-05-01 05:37:17 -0400
committerDavid S. Miller <davem@davemloft.net>2013-05-02 16:43:13 -0400
commitbbdc42f8147d19f71fe4bc3db8a83e03a21af7a4 (patch)
treea2ae46a3afd00387881da62cacf96feadf10107a /drivers/net
parentb29d3145183da4e07d4b570fa8acdd3ac4a5c572 (diff)
be2net: Fix to use version 2 of cq_create for SkyHawk-R devices
SkyHawk-R devices should use v2 of cq_create command. BE3/BE2 devices can use version 0 of the command to create a CQ. Signed-off-by: Ajit Khaparde <ajit.khaparde@emulex.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/ethernet/emulex/benet/be_cmds.c27
-rw-r--r--drivers/net/ethernet/emulex/benet/be_cmds.h2
2 files changed, 15 insertions, 14 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c
index 25d3290b8cac..6d848b607427 100644
--- a/drivers/net/ethernet/emulex/benet/be_cmds.c
+++ b/drivers/net/ethernet/emulex/benet/be_cmds.c
@@ -961,19 +961,8 @@ int be_cmd_cq_create(struct be_adapter *adapter, struct be_queue_info *cq,
961 OPCODE_COMMON_CQ_CREATE, sizeof(*req), wrb, NULL); 961 OPCODE_COMMON_CQ_CREATE, sizeof(*req), wrb, NULL);
962 962
963 req->num_pages = cpu_to_le16(PAGES_4K_SPANNED(q_mem->va, q_mem->size)); 963 req->num_pages = cpu_to_le16(PAGES_4K_SPANNED(q_mem->va, q_mem->size));
964 if (lancer_chip(adapter)) { 964
965 req->hdr.version = 2; 965 if (BEx_chip(adapter)) {
966 req->page_size = 1; /* 1 for 4K */
967 AMAP_SET_BITS(struct amap_cq_context_lancer, nodelay, ctxt,
968 no_delay);
969 AMAP_SET_BITS(struct amap_cq_context_lancer, count, ctxt,
970 __ilog2_u32(cq->len/256));
971 AMAP_SET_BITS(struct amap_cq_context_lancer, valid, ctxt, 1);
972 AMAP_SET_BITS(struct amap_cq_context_lancer, eventable,
973 ctxt, 1);
974 AMAP_SET_BITS(struct amap_cq_context_lancer, eqid,
975 ctxt, eq->id);
976 } else {
977 AMAP_SET_BITS(struct amap_cq_context_be, coalescwm, ctxt, 966 AMAP_SET_BITS(struct amap_cq_context_be, coalescwm, ctxt,
978 coalesce_wm); 967 coalesce_wm);
979 AMAP_SET_BITS(struct amap_cq_context_be, nodelay, 968 AMAP_SET_BITS(struct amap_cq_context_be, nodelay,
@@ -983,6 +972,18 @@ int be_cmd_cq_create(struct be_adapter *adapter, struct be_queue_info *cq,
983 AMAP_SET_BITS(struct amap_cq_context_be, valid, ctxt, 1); 972 AMAP_SET_BITS(struct amap_cq_context_be, valid, ctxt, 1);
984 AMAP_SET_BITS(struct amap_cq_context_be, eventable, ctxt, 1); 973 AMAP_SET_BITS(struct amap_cq_context_be, eventable, ctxt, 1);
985 AMAP_SET_BITS(struct amap_cq_context_be, eqid, ctxt, eq->id); 974 AMAP_SET_BITS(struct amap_cq_context_be, eqid, ctxt, eq->id);
975 } else {
976 req->hdr.version = 2;
977 req->page_size = 1; /* 1 for 4K */
978 AMAP_SET_BITS(struct amap_cq_context_v2, nodelay, ctxt,
979 no_delay);
980 AMAP_SET_BITS(struct amap_cq_context_v2, count, ctxt,
981 __ilog2_u32(cq->len/256));
982 AMAP_SET_BITS(struct amap_cq_context_v2, valid, ctxt, 1);
983 AMAP_SET_BITS(struct amap_cq_context_v2, eventable,
984 ctxt, 1);
985 AMAP_SET_BITS(struct amap_cq_context_v2, eqid,
986 ctxt, eq->id);
986 } 987 }
987 988
988 be_dws_cpu_to_le(ctxt, sizeof(req->context)); 989 be_dws_cpu_to_le(ctxt, sizeof(req->context));
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.h b/drivers/net/ethernet/emulex/benet/be_cmds.h
index a855668e0cc5..025bdb0d1764 100644
--- a/drivers/net/ethernet/emulex/benet/be_cmds.h
+++ b/drivers/net/ethernet/emulex/benet/be_cmds.h
@@ -381,7 +381,7 @@ struct amap_cq_context_be {
381 u8 rsvd5[32]; /* dword 3*/ 381 u8 rsvd5[32]; /* dword 3*/
382} __packed; 382} __packed;
383 383
384struct amap_cq_context_lancer { 384struct amap_cq_context_v2 {
385 u8 rsvd0[12]; /* dword 0*/ 385 u8 rsvd0[12]; /* dword 0*/
386 u8 coalescwm[2]; /* dword 0*/ 386 u8 coalescwm[2]; /* dword 0*/
387 u8 nodelay; /* dword 0*/ 387 u8 nodelay; /* dword 0*/