diff options
author | Vasundhara Volam <vasundhara.volam@emulex.com> | 2014-01-15 02:53:31 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-01-15 18:52:02 -0500 |
commit | 666d39c7482b370f60df4232038cac39c0e30c36 (patch) | |
tree | 86e3065fb14ad95ddad9901d40c21b793ae19e52 | |
parent | 286ab723d4b83d37deb4017008ef1444a95cfb0d (diff) |
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: Vasundhara Volam <vasundhara.volam@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_cmds.c | 27 | ||||
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_cmds.h | 4 |
2 files changed, 15 insertions, 16 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c index 94c35c8d799d..95eeb2423f39 100644 --- a/drivers/net/ethernet/emulex/benet/be_cmds.c +++ b/drivers/net/ethernet/emulex/benet/be_cmds.c | |||
@@ -1101,23 +1101,22 @@ static int be_cmd_mccq_ext_create(struct be_adapter *adapter, | |||
1101 | OPCODE_COMMON_MCC_CREATE_EXT, sizeof(*req), wrb, NULL); | 1101 | OPCODE_COMMON_MCC_CREATE_EXT, sizeof(*req), wrb, NULL); |
1102 | 1102 | ||
1103 | req->num_pages = cpu_to_le16(PAGES_4K_SPANNED(q_mem->va, q_mem->size)); | 1103 | req->num_pages = cpu_to_le16(PAGES_4K_SPANNED(q_mem->va, q_mem->size)); |
1104 | if (lancer_chip(adapter)) { | 1104 | if (BEx_chip(adapter)) { |
1105 | req->hdr.version = 1; | ||
1106 | req->cq_id = cpu_to_le16(cq->id); | ||
1107 | |||
1108 | AMAP_SET_BITS(struct amap_mcc_context_lancer, ring_size, ctxt, | ||
1109 | be_encoded_q_len(mccq->len)); | ||
1110 | AMAP_SET_BITS(struct amap_mcc_context_lancer, valid, ctxt, 1); | ||
1111 | AMAP_SET_BITS(struct amap_mcc_context_lancer, async_cq_id, | ||
1112 | ctxt, cq->id); | ||
1113 | AMAP_SET_BITS(struct amap_mcc_context_lancer, async_cq_valid, | ||
1114 | ctxt, 1); | ||
1115 | |||
1116 | } else { | ||
1117 | AMAP_SET_BITS(struct amap_mcc_context_be, valid, ctxt, 1); | 1105 | AMAP_SET_BITS(struct amap_mcc_context_be, valid, ctxt, 1); |
1118 | AMAP_SET_BITS(struct amap_mcc_context_be, ring_size, ctxt, | 1106 | AMAP_SET_BITS(struct amap_mcc_context_be, ring_size, ctxt, |
1119 | be_encoded_q_len(mccq->len)); | 1107 | be_encoded_q_len(mccq->len)); |
1120 | AMAP_SET_BITS(struct amap_mcc_context_be, cq_id, ctxt, cq->id); | 1108 | AMAP_SET_BITS(struct amap_mcc_context_be, cq_id, ctxt, cq->id); |
1109 | } else { | ||
1110 | req->hdr.version = 1; | ||
1111 | req->cq_id = cpu_to_le16(cq->id); | ||
1112 | |||
1113 | AMAP_SET_BITS(struct amap_mcc_context_v1, ring_size, ctxt, | ||
1114 | be_encoded_q_len(mccq->len)); | ||
1115 | AMAP_SET_BITS(struct amap_mcc_context_v1, valid, ctxt, 1); | ||
1116 | AMAP_SET_BITS(struct amap_mcc_context_v1, async_cq_id, | ||
1117 | ctxt, cq->id); | ||
1118 | AMAP_SET_BITS(struct amap_mcc_context_v1, async_cq_valid, | ||
1119 | ctxt, 1); | ||
1121 | } | 1120 | } |
1122 | 1121 | ||
1123 | /* Subscribe to Link State and Group 5 Events(bits 1 and 5 set) */ | 1122 | /* 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 | int status; | 1186 | int status; |
1188 | 1187 | ||
1189 | status = be_cmd_mccq_ext_create(adapter, mccq, cq); | 1188 | status = be_cmd_mccq_ext_create(adapter, mccq, cq); |
1190 | if (status && !lancer_chip(adapter)) { | 1189 | if (status && BEx_chip(adapter)) { |
1191 | dev_warn(&adapter->pdev->dev, "Upgrade to F/W ver 2.102.235.0 " | 1190 | dev_warn(&adapter->pdev->dev, "Upgrade to F/W ver 2.102.235.0 " |
1192 | "or newer to avoid conflicting priorities between NIC " | 1191 | "or newer to avoid conflicting priorities between NIC " |
1193 | "and FCoE traffic"); | 1192 | "and FCoE traffic"); |
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.h b/drivers/net/ethernet/emulex/benet/be_cmds.h index 0075686276aa..ed1daedd896d 100644 --- a/drivers/net/ethernet/emulex/benet/be_cmds.h +++ b/drivers/net/ethernet/emulex/benet/be_cmds.h | |||
@@ -452,7 +452,7 @@ struct amap_mcc_context_be { | |||
452 | u8 rsvd2[32]; | 452 | u8 rsvd2[32]; |
453 | } __packed; | 453 | } __packed; |
454 | 454 | ||
455 | struct amap_mcc_context_lancer { | 455 | struct amap_mcc_context_v1 { |
456 | u8 async_cq_id[16]; | 456 | u8 async_cq_id[16]; |
457 | u8 ring_size[4]; | 457 | u8 ring_size[4]; |
458 | u8 rsvd0[12]; | 458 | u8 rsvd0[12]; |
@@ -476,7 +476,7 @@ struct be_cmd_req_mcc_ext_create { | |||
476 | u16 num_pages; | 476 | u16 num_pages; |
477 | u16 cq_id; | 477 | u16 cq_id; |
478 | u32 async_event_bitmap[1]; | 478 | u32 async_event_bitmap[1]; |
479 | u8 context[sizeof(struct amap_mcc_context_be) / 8]; | 479 | u8 context[sizeof(struct amap_mcc_context_v1) / 8]; |
480 | struct phys_addr pages[8]; | 480 | struct phys_addr pages[8]; |
481 | } __packed; | 481 | } __packed; |
482 | 482 | ||