aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaren Xie <kxie@chelsio.com>2010-06-16 20:10:37 -0400
committerJames Bottomley <James.Bottomley@suse.de>2010-07-27 13:02:04 -0400
commit593d5720745658a4a973952fb74f6d863c531e97 (patch)
tree0f031c21238e50ef2bc7dcd70467fd8424fdde56
parentcba3d38b6cf85bd91b7c6f65f43863d1fd19259c (diff)
[SCSI] cxgb3i: zero out reserved or un-used fields.
Zero out the reserved or un-used CPL message fields to prevent any garbage value. Signed-off-by: Karen Xie <kxie@chelsio.com> Reviewed-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
-rw-r--r--drivers/scsi/cxgb3i/cxgb3i_ddp.c2
-rw-r--r--drivers/scsi/cxgb3i/cxgb3i_offload.c5
2 files changed, 7 insertions, 0 deletions
diff --git a/drivers/scsi/cxgb3i/cxgb3i_ddp.c b/drivers/scsi/cxgb3i/cxgb3i_ddp.c
index b58d9134ac1..be0e23042c7 100644
--- a/drivers/scsi/cxgb3i/cxgb3i_ddp.c
+++ b/drivers/scsi/cxgb3i/cxgb3i_ddp.c
@@ -499,6 +499,7 @@ static int setup_conn_pgidx(struct t3cdev *tdev, unsigned int tid, int pg_idx,
499 /* set up ulp submode and page size */ 499 /* set up ulp submode and page size */
500 req = (struct cpl_set_tcb_field *)skb_put(skb, sizeof(*req)); 500 req = (struct cpl_set_tcb_field *)skb_put(skb, sizeof(*req));
501 req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD)); 501 req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD));
502 req->wr.wr_lo = 0;
502 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_SET_TCB_FIELD, tid)); 503 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_SET_TCB_FIELD, tid));
503 req->reply = V_NO_REPLY(reply ? 0 : 1); 504 req->reply = V_NO_REPLY(reply ? 0 : 1);
504 req->cpu_idx = 0; 505 req->cpu_idx = 0;
@@ -564,6 +565,7 @@ int cxgb3i_setup_conn_digest(struct t3cdev *tdev, unsigned int tid,
564 /* set up ulp submode and page size */ 565 /* set up ulp submode and page size */
565 req = (struct cpl_set_tcb_field *)skb_put(skb, sizeof(*req)); 566 req = (struct cpl_set_tcb_field *)skb_put(skb, sizeof(*req));
566 req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD)); 567 req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD));
568 req->wr.wr_lo = 0;
567 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_SET_TCB_FIELD, tid)); 569 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_SET_TCB_FIELD, tid));
568 req->reply = V_NO_REPLY(reply ? 0 : 1); 570 req->reply = V_NO_REPLY(reply ? 0 : 1);
569 req->cpu_idx = 0; 571 req->cpu_idx = 0;
diff --git a/drivers/scsi/cxgb3i/cxgb3i_offload.c b/drivers/scsi/cxgb3i/cxgb3i_offload.c
index a175be9c496..246a6c246ed 100644
--- a/drivers/scsi/cxgb3i/cxgb3i_offload.c
+++ b/drivers/scsi/cxgb3i/cxgb3i_offload.c
@@ -264,6 +264,7 @@ static void make_act_open_req(struct s3_conn *c3cn, struct sk_buff *skb,
264 skb->priority = CPL_PRIORITY_SETUP; 264 skb->priority = CPL_PRIORITY_SETUP;
265 req = (struct cpl_act_open_req *)__skb_put(skb, sizeof(*req)); 265 req = (struct cpl_act_open_req *)__skb_put(skb, sizeof(*req));
266 req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD)); 266 req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD));
267 req->wr.wr_lo = 0;
267 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_ACT_OPEN_REQ, atid)); 268 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_ACT_OPEN_REQ, atid));
268 req->local_port = c3cn->saddr.sin_port; 269 req->local_port = c3cn->saddr.sin_port;
269 req->peer_port = c3cn->daddr.sin_port; 270 req->peer_port = c3cn->daddr.sin_port;
@@ -273,6 +274,7 @@ static void make_act_open_req(struct s3_conn *c3cn, struct sk_buff *skb,
273 V_TX_CHANNEL(e->smt_idx)); 274 V_TX_CHANNEL(e->smt_idx));
274 req->opt0l = htonl(calc_opt0l(c3cn)); 275 req->opt0l = htonl(calc_opt0l(c3cn));
275 req->params = 0; 276 req->params = 0;
277 req->opt2 = 0;
276} 278}
277 279
278static void fail_act_open(struct s3_conn *c3cn, int errno) 280static void fail_act_open(struct s3_conn *c3cn, int errno)
@@ -379,6 +381,7 @@ static void send_abort_req(struct s3_conn *c3cn)
379 381
380 c3cn->cpl_abort_req = NULL; 382 c3cn->cpl_abort_req = NULL;
381 req = (struct cpl_abort_req *)skb->head; 383 req = (struct cpl_abort_req *)skb->head;
384 memset(req, 0, sizeof(*req));
382 385
383 skb->priority = CPL_PRIORITY_DATA; 386 skb->priority = CPL_PRIORITY_DATA;
384 set_arp_failure_handler(skb, abort_arp_failure); 387 set_arp_failure_handler(skb, abort_arp_failure);
@@ -406,6 +409,7 @@ static void send_abort_rpl(struct s3_conn *c3cn, int rst_status)
406 c3cn->cpl_abort_rpl = NULL; 409 c3cn->cpl_abort_rpl = NULL;
407 410
408 skb->priority = CPL_PRIORITY_DATA; 411 skb->priority = CPL_PRIORITY_DATA;
412 memset(rpl, 0, sizeof(*rpl));
409 rpl->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_OFLD_HOST_ABORT_CON_RPL)); 413 rpl->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_OFLD_HOST_ABORT_CON_RPL));
410 rpl->wr.wr_lo = htonl(V_WR_TID(c3cn->tid)); 414 rpl->wr.wr_lo = htonl(V_WR_TID(c3cn->tid));
411 OPCODE_TID(rpl) = htonl(MK_OPCODE_TID(CPL_ABORT_RPL, c3cn->tid)); 415 OPCODE_TID(rpl) = htonl(MK_OPCODE_TID(CPL_ABORT_RPL, c3cn->tid));
@@ -430,6 +434,7 @@ static u32 send_rx_credits(struct s3_conn *c3cn, u32 credits, u32 dack)
430 434
431 req = (struct cpl_rx_data_ack *)__skb_put(skb, sizeof(*req)); 435 req = (struct cpl_rx_data_ack *)__skb_put(skb, sizeof(*req));
432 req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD)); 436 req->wr.wr_hi = htonl(V_WR_OP(FW_WROPCODE_FORWARD));
437 req->wr.wr_lo = 0;
433 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_RX_DATA_ACK, c3cn->tid)); 438 OPCODE_TID(req) = htonl(MK_OPCODE_TID(CPL_RX_DATA_ACK, c3cn->tid));
434 req->credit_dack = htonl(dack | V_RX_CREDITS(credits)); 439 req->credit_dack = htonl(dack | V_RX_CREDITS(credits));
435 skb->priority = CPL_PRIORITY_ACK; 440 skb->priority = CPL_PRIORITY_ACK;