Commit 666d39c7 authored by Vasundhara Volam's avatar Vasundhara Volam Committed by David S. Miller

be2net: Use MCC_CREATE_EXT_V1 cmd for Skyhawk-R

Currently this cmd is used only for Lancer.
MCC_CREATE_EXT_V1 supports larger CQ-ids and additional event codes for the
async_event_bitmap field.
Signed-off-by: default avatarVasundhara Volam <vasundhara.volam@emulex.com>
Signed-off-by: default avatarSathya Perla <sathya.perla@emulex.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 286ab723
...@@ -1101,23 +1101,22 @@ static int be_cmd_mccq_ext_create(struct be_adapter *adapter, ...@@ -1101,23 +1101,22 @@ static int be_cmd_mccq_ext_create(struct be_adapter *adapter,
OPCODE_COMMON_MCC_CREATE_EXT, sizeof(*req), wrb, NULL); OPCODE_COMMON_MCC_CREATE_EXT, sizeof(*req), wrb, NULL);
req->num_pages = cpu_to_le16(PAGES_4K_SPANNED(q_mem->va, q_mem->size)); req->num_pages = cpu_to_le16(PAGES_4K_SPANNED(q_mem->va, q_mem->size));
if (lancer_chip(adapter)) { if (BEx_chip(adapter)) {
req->hdr.version = 1;
req->cq_id = cpu_to_le16(cq->id);
AMAP_SET_BITS(struct amap_mcc_context_lancer, ring_size, ctxt,
be_encoded_q_len(mccq->len));
AMAP_SET_BITS(struct amap_mcc_context_lancer, valid, ctxt, 1);
AMAP_SET_BITS(struct amap_mcc_context_lancer, async_cq_id,
ctxt, cq->id);
AMAP_SET_BITS(struct amap_mcc_context_lancer, async_cq_valid,
ctxt, 1);
} else {
AMAP_SET_BITS(struct amap_mcc_context_be, valid, ctxt, 1); AMAP_SET_BITS(struct amap_mcc_context_be, valid, ctxt, 1);
AMAP_SET_BITS(struct amap_mcc_context_be, ring_size, ctxt, AMAP_SET_BITS(struct amap_mcc_context_be, ring_size, ctxt,
be_encoded_q_len(mccq->len)); be_encoded_q_len(mccq->len));
AMAP_SET_BITS(struct amap_mcc_context_be, cq_id, ctxt, cq->id); AMAP_SET_BITS(struct amap_mcc_context_be, cq_id, ctxt, cq->id);
} else {
req->hdr.version = 1;
req->cq_id = cpu_to_le16(cq->id);
AMAP_SET_BITS(struct amap_mcc_context_v1, ring_size, ctxt,
be_encoded_q_len(mccq->len));
AMAP_SET_BITS(struct amap_mcc_context_v1, valid, ctxt, 1);
AMAP_SET_BITS(struct amap_mcc_context_v1, async_cq_id,
ctxt, cq->id);
AMAP_SET_BITS(struct amap_mcc_context_v1, async_cq_valid,
ctxt, 1);
} }
/* Subscribe to Link State and Group 5 Events(bits 1 and 5 set) */ /* Subscribe to Link State and Group 5 Events(bits 1 and 5 set) */
...@@ -1187,7 +1186,7 @@ int be_cmd_mccq_create(struct be_adapter *adapter, ...@@ -1187,7 +1186,7 @@ int be_cmd_mccq_create(struct be_adapter *adapter,
int status; int status;
status = be_cmd_mccq_ext_create(adapter, mccq, cq); status = be_cmd_mccq_ext_create(adapter, mccq, cq);
if (status && !lancer_chip(adapter)) { if (status && BEx_chip(adapter)) {
dev_warn(&adapter->pdev->dev, "Upgrade to F/W ver 2.102.235.0 " dev_warn(&adapter->pdev->dev, "Upgrade to F/W ver 2.102.235.0 "
"or newer to avoid conflicting priorities between NIC " "or newer to avoid conflicting priorities between NIC "
"and FCoE traffic"); "and FCoE traffic");
......
...@@ -452,7 +452,7 @@ struct amap_mcc_context_be { ...@@ -452,7 +452,7 @@ struct amap_mcc_context_be {
u8 rsvd2[32]; u8 rsvd2[32];
} __packed; } __packed;
struct amap_mcc_context_lancer { struct amap_mcc_context_v1 {
u8 async_cq_id[16]; u8 async_cq_id[16];
u8 ring_size[4]; u8 ring_size[4];
u8 rsvd0[12]; u8 rsvd0[12];
...@@ -476,7 +476,7 @@ struct be_cmd_req_mcc_ext_create { ...@@ -476,7 +476,7 @@ struct be_cmd_req_mcc_ext_create {
u16 num_pages; u16 num_pages;
u16 cq_id; u16 cq_id;
u32 async_event_bitmap[1]; u32 async_event_bitmap[1];
u8 context[sizeof(struct amap_mcc_context_be) / 8]; u8 context[sizeof(struct amap_mcc_context_v1) / 8];
struct phys_addr pages[8]; struct phys_addr pages[8];
} __packed; } __packed;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment