]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.31/patches.drivers/bnx2x-Endianness-issues.patch
Move xen patchset to new version's subdir.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.drivers / bnx2x-Endianness-issues.patch
diff --git a/src/patches/suse-2.6.27.31/patches.drivers/bnx2x-Endianness-issues.patch b/src/patches/suse-2.6.27.31/patches.drivers/bnx2x-Endianness-issues.patch
new file mode 100644 (file)
index 0000000..9e4ed40
--- /dev/null
@@ -0,0 +1,59 @@
+From 68d5948436c2f782ebb5ddf25a6588ee452e8c30 Mon Sep 17 00:00:00 2001
+From: Eilon Greenstein <eilong@broadcom.com>
+Date: Wed, 14 Jan 2009 21:27:36 -0800
+Subject: bnx2x: Endianness issues
+Acked-by: Karsten Keil <kkeil@novell.com>
+Reference: bnc#472500
+
+Adding missing le_to_cpu and disabling wrong HW endianity flag (the
+two complete each other)
+
+Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ drivers/net/bnx2x_main.c |   11 ++++++-----
+ 1 files changed, 6 insertions(+), 5 deletions(-)
+
+Index: linux-2.6.27-bnx2x_2/drivers/net/bnx2x_main.c
+===================================================================
+--- linux-2.6.27-bnx2x_2.orig/drivers/net/bnx2x_main.c
++++ linux-2.6.27-bnx2x_2/drivers/net/bnx2x_main.c
+@@ -1439,7 +1439,7 @@ static int bnx2x_rx_int(struct bnx2x_fas
+               DP(NETIF_MSG_RX_STATUS, "CQE type %x  err %x  status %x"
+                  "  queue %x  vlan %x  len %u\n", CQE_TYPE(cqe_fp_flags),
+                  cqe_fp_flags, cqe->fast_path_cqe.status_flags,
+-                 cqe->fast_path_cqe.rss_hash_result,
++                 le32_to_cpu(cqe->fast_path_cqe.rss_hash_result),
+                  le16_to_cpu(cqe->fast_path_cqe.vlan_tag),
+                  le16_to_cpu(cqe->fast_path_cqe.pkt_len));
+@@ -2824,8 +2824,10 @@ static void bnx2x_attn_int_deasserted(st
+ static void bnx2x_attn_int(struct bnx2x *bp)
+ {
+       /* read local copy of bits */
+-      u32 attn_bits = bp->def_status_blk->atten_status_block.attn_bits;
+-      u32 attn_ack = bp->def_status_blk->atten_status_block.attn_bits_ack;
++      u32 attn_bits = le32_to_cpu(bp->def_status_blk->atten_status_block.
++                                                              attn_bits);
++      u32 attn_ack = le32_to_cpu(bp->def_status_blk->atten_status_block.
++                                                              attn_bits_ack);
+       u32 attn_state = bp->attn_state;
+       /* look for changed bits */
+@@ -2873,7 +2875,7 @@ static void bnx2x_sp_task(struct work_st
+       if (status & 0x2)
+               bp->stats_pending = 0;
+-      bnx2x_ack_sb(bp, DEF_SB_ID, ATTENTION_ID, bp->def_att_idx,
++      bnx2x_ack_sb(bp, DEF_SB_ID, ATTENTION_ID, le16_to_cpu(bp->def_att_idx),
+                    IGU_INT_NOP, 1);
+       bnx2x_ack_sb(bp, DEF_SB_ID, USTORM_ID, le16_to_cpu(bp->def_u_idx),
+                    IGU_INT_NOP, 1);
+@@ -5164,7 +5166,6 @@ static int bnx2x_init_common(struct bnx2
+       REG_WR(bp, PXP2_REG_RQ_SRC_ENDIAN_M, 1);
+       REG_WR(bp, PXP2_REG_RQ_CDU_ENDIAN_M, 1);
+       REG_WR(bp, PXP2_REG_RQ_DBG_ENDIAN_M, 1);
+-      REG_WR(bp, PXP2_REG_RQ_HC_ENDIAN_M, 1);
+ /*    REG_WR(bp, PXP2_REG_RD_PBF_SWAP_MODE, 1); */
+       REG_WR(bp, PXP2_REG_RD_QM_SWAP_MODE, 1);