[net-2.6] be2net: fix mccq create for big endian architectures

Submitted by Ajit Khaparde on March 11, 2010, 11:35 a.m.

Details

Message ID 20100311113548.GA12029@serverengines.com
State Accepted
Delegated to: David Miller
Headers show

Commit Message

Ajit Khaparde March 11, 2010, 11:35 a.m.
The request to create an mccq was being dispatched without
doing a byte swap of num_pages. This byte swap is necessary
for Big Endian systems like PPC. Not having this fix leads
mccq create to fail on BE ASICs running newer version of
firmware, thereby causing driver initialization failure.

Signed-off-by: Ajit Khaparde <ajitk@serverengines.com>
---
 drivers/net/benet/be_cmds.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Comments

David Miller March 15, 2010, 10:48 p.m.
From: Ajit Khaparde <ajitk@serverengines.com>
Date: Thu, 11 Mar 2010 17:05:59 +0530

> The request to create an mccq was being dispatched without
> doing a byte swap of num_pages. This byte swap is necessary
> for Big Endian systems like PPC. Not having this fix leads
> mccq create to fail on BE ASICs running newer version of
> firmware, thereby causing driver initialization failure.
> 
> Signed-off-by: Ajit Khaparde <ajitk@serverengines.com>

Applied.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch hide | download patch | download mbox

diff --git a/drivers/net/benet/be_cmds.c b/drivers/net/benet/be_cmds.c
index c592153..50e6259 100644
--- a/drivers/net/benet/be_cmds.c
+++ b/drivers/net/benet/be_cmds.c
@@ -673,7 +673,7 @@  int be_cmd_mccq_create(struct be_adapter *adapter,
 	be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
 			OPCODE_COMMON_MCC_CREATE, sizeof(*req));
 
-	req->num_pages = PAGES_4K_SPANNED(q_mem->va, q_mem->size);
+	req->num_pages = cpu_to_le16(PAGES_4K_SPANNED(q_mem->va, q_mem->size));
 
 	AMAP_SET_BITS(struct amap_mcc_context, valid, ctxt, 1);
 	AMAP_SET_BITS(struct amap_mcc_context, ring_size, ctxt,