aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVasundhara Volam <vasundhara.volam@emulex.com>2014-01-15 02:53:31 -0500
committerDavid S. Miller <davem@davemloft.net>2014-01-15 18:52:02 -0500
commit666d39c7482b370f60df4232038cac39c0e30c36 (patch)
tree86e3065fb14ad95ddad9901d40c21b793ae19e52
parent286ab723d4b83d37deb4017008ef1444a95cfb0d (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.c27
-rw-r--r--drivers/net/ethernet/emulex/benet/be_cmds.h4
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
455struct amap_mcc_context_lancer { 455struct 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