be2net: Fix to use version 2 of cq_create for SkyHawk-R devices
authorAjit Khaparde <ajit.khaparde@emulex.com>
Wed, 1 May 2013 09:37:17 +0000 (09:37 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 2 May 2013 20:43:13 +0000 (16:43 -0400)
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>
drivers/net/ethernet/emulex/benet/be_cmds.c
drivers/net/ethernet/emulex/benet/be_cmds.h

index 25d3290b8cac3bfc7409529509614ba1560561dd..6d848b60742788b64ee203d4d910734d6f58f45d 100644 (file)
@@ -961,19 +961,8 @@ int be_cmd_cq_create(struct be_adapter *adapter, struct be_queue_info *cq,
                OPCODE_COMMON_CQ_CREATE, sizeof(*req), wrb, NULL);
 
        req->num_pages =  cpu_to_le16(PAGES_4K_SPANNED(q_mem->va, q_mem->size));
-       if (lancer_chip(adapter)) {
-               req->hdr.version = 2;
-               req->page_size = 1; /* 1 for 4K */
-               AMAP_SET_BITS(struct amap_cq_context_lancer, nodelay, ctxt,
-                                                               no_delay);
-               AMAP_SET_BITS(struct amap_cq_context_lancer, count, ctxt,
-                                               __ilog2_u32(cq->len/256));
-               AMAP_SET_BITS(struct amap_cq_context_lancer, valid, ctxt, 1);
-               AMAP_SET_BITS(struct amap_cq_context_lancer, eventable,
-                                                               ctxt, 1);
-               AMAP_SET_BITS(struct amap_cq_context_lancer, eqid,
-                                                               ctxt, eq->id);
-       } else {
+
+       if (BEx_chip(adapter)) {
                AMAP_SET_BITS(struct amap_cq_context_be, coalescwm, ctxt,
                                                                coalesce_wm);
                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,
                AMAP_SET_BITS(struct amap_cq_context_be, valid, ctxt, 1);
                AMAP_SET_BITS(struct amap_cq_context_be, eventable, ctxt, 1);
                AMAP_SET_BITS(struct amap_cq_context_be, eqid, ctxt, eq->id);
+       } else {
+               req->hdr.version = 2;
+               req->page_size = 1; /* 1 for 4K */
+               AMAP_SET_BITS(struct amap_cq_context_v2, nodelay, ctxt,
+                                                               no_delay);
+               AMAP_SET_BITS(struct amap_cq_context_v2, count, ctxt,
+                                               __ilog2_u32(cq->len/256));
+               AMAP_SET_BITS(struct amap_cq_context_v2, valid, ctxt, 1);
+               AMAP_SET_BITS(struct amap_cq_context_v2, eventable,
+                                                               ctxt, 1);
+               AMAP_SET_BITS(struct amap_cq_context_v2, eqid,
+                                                               ctxt, eq->id);
        }
 
        be_dws_cpu_to_le(ctxt, sizeof(req->context));
index a855668e0cc5dc2d9468c2c83907877e5795a5b6..025bdb0d1764e29ed92948a920a4273cf1172a35 100644 (file)
@@ -381,7 +381,7 @@ struct amap_cq_context_be {
        u8 rsvd5[32];           /* dword 3*/
 } __packed;
 
-struct amap_cq_context_lancer {
+struct amap_cq_context_v2 {
        u8 rsvd0[12];           /* dword 0*/
        u8 coalescwm[2];        /* dword 0*/
        u8 nodelay;             /* dword 0*/