From: Hal Rosenstock <[email-masked]>

Add implementation for ib_coalesce_recv_mad.  Also, clear allocated MAD data
buffer in ib_create_send_mad.

Signed-off-by: Sean Hefty <[email-masked]>
Signed-off-by: Hal Rosenstock <[email-masked]>
Cc: Roland Dreier <[email-masked]>
Signed-off-by: Andrew Morton <[email-masked]>
---

 drivers/infiniband/core/mad.c       |    9 +--------
 drivers/infiniband/include/ib_mad.h |    3 +--
 2 files changed, 2 insertions(+), 10 deletions(-)

diff -puN drivers/infiniband/core/mad.c~ib-add-ib_coalesce_recv_mad-to-mad drivers/infiniband/core/mad.c
--- 25/drivers/infiniband/core/mad.c~ib-add-ib_coalesce_recv_mad-to-mad	Mon Jul 11 17:06:29 2005
+++ 25-akpm/drivers/infiniband/core/mad.c	Mon Jul 11 17:06:29 2005
@@ -796,9 +796,9 @@ struct ib_mad_send_buf * ib_create_send_
 	buf = kmalloc(sizeof *send_buf + buf_size, gfp_mask);
 	if (!buf)
 		return ERR_PTR(-ENOMEM);
+	memset(buf, 0, sizeof *send_buf + buf_size);
 
 	send_buf = buf + buf_size;
-	memset(send_buf, 0, sizeof *send_buf);
 	send_buf->mad = buf;
 
 	send_buf->sge.addr = dma_map_single(mad_agent->device->dma_device,
@@ -1021,13 +1021,6 @@ void ib_free_recv_mad(struct ib_mad_recv
 }
 EXPORT_SYMBOL(ib_free_recv_mad);
 
-void ib_coalesce_recv_mad(struct ib_mad_recv_wc *mad_recv_wc,
-			  void *buf)
-{
-	printk(KERN_ERR PFX "ib_coalesce_recv_mad() not implemented yet\n");
-}
-EXPORT_SYMBOL(ib_coalesce_recv_mad);
-
 struct ib_mad_agent *ib_redirect_mad_qp(struct ib_qp *qp,
 					u8 rmpp_version,
 					ib_mad_send_handler send_handler,
diff -puN drivers/infiniband/include/ib_mad.h~ib-add-ib_coalesce_recv_mad-to-mad drivers/infiniband/include/ib_mad.h
--- 25/drivers/infiniband/include/ib_mad.h~ib-add-ib_coalesce_recv_mad-to-mad	Mon Jul 11 17:06:29 2005
+++ 25-akpm/drivers/infiniband/include/ib_mad.h	Mon Jul 11 17:06:29 2005
@@ -365,8 +365,7 @@ int ib_post_send_mad(struct ib_mad_agent
  * This call copies a chain of received RMPP MADs into a single data buffer,
  * removing duplicated headers.
  */
-void ib_coalesce_recv_mad(struct ib_mad_recv_wc *mad_recv_wc,
-			  void *buf);
+void ib_coalesce_recv_mad(struct ib_mad_recv_wc *mad_recv_wc, void *buf);
 
 /**
  * ib_free_recv_mad - Returns data buffers used to receive a MAD to the
_