diff options
author | Ajit Khaparde <ajit.khaparde@emulex.com> | 2013-05-01 05:37:17 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-05-02 16:43:13 -0400 |
commit | bbdc42f8147d19f71fe4bc3db8a83e03a21af7a4 (patch) | |
tree | a2ae46a3afd00387881da62cacf96feadf10107a /drivers/net/ethernet/emulex | |
parent | b29d3145183da4e07d4b570fa8acdd3ac4a5c572 (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/ethernet/emulex')
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_cmds.c | 27 | ||||
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_cmds.h | 2 |
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 | ||
384 | struct amap_cq_context_lancer { | 384 | struct 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*/ |