Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cf9830195a3f35b1248425b69a01ee43f5b68221
Commit:     cf9830195a3f35b1248425b69a01ee43f5b68221
Parent:     d3bb52b0948cf118131c951c5a34a2d4d0246171
Author:     Al Viro <[EMAIL PROTECTED]>
AuthorDate: Wed Aug 22 21:18:56 2007 -0400
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Wed Oct 10 16:51:57 2007 -0700

    fix vlan in 8139cp on big-endian
    
    Layout of opts2 is
    : MSB(vlan_tag) : LSB(vlan_tag) : flags : 0 :
    regardless of the host endianness.  On little-endian
    the current code ends up with the right values, but
    on big-endian it blows.  In r8169.c the same bug
    had been fixed in commit d35da12a40426184b1d0844104b1d464753eba19
    (r8169: endianness fixes).
    
    Signed-off-by: Al Viro <[EMAIL PROTECTED]>
    Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>
---
 drivers/net/8139cp.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/net/8139cp.c b/drivers/net/8139cp.c
index abb2a34..a453eda 100644
--- a/drivers/net/8139cp.c
+++ b/drivers/net/8139cp.c
@@ -78,7 +78,7 @@
 #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE)
 #define CP_VLAN_TAG_USED 1
 #define CP_VLAN_TX_TAG(tx_desc,vlan_tag_value) \
-       do { (tx_desc)->opts2 = (vlan_tag_value); } while (0)
+       do { (tx_desc)->opts2 = cpu_to_le32(vlan_tag_value); } while (0)
 #else
 #define CP_VLAN_TAG_USED 0
 #define CP_VLAN_TX_TAG(tx_desc,vlan_tag_value) \
@@ -304,7 +304,7 @@ static const unsigned int cp_rx_config =
 
 struct cp_desc {
        __le32          opts1;
-       u32             opts2;
+       __le32          opts2;
        __le64          addr;
 };
 
@@ -462,9 +462,9 @@ static inline void cp_rx_skb (struct cp_private *cp, struct 
sk_buff *skb,
        cp->dev->last_rx = jiffies;
 
 #if CP_VLAN_TAG_USED
-       if (cp->vlgrp && (desc->opts2 & RxVlanTagged)) {
+       if (cp->vlgrp && (desc->opts2 & cpu_to_le32(RxVlanTagged))) {
                vlan_hwaccel_receive_skb(skb, cp->vlgrp,
-                                        be16_to_cpu(desc->opts2 & 0xffff));
+                                        swab16(le32_to_cpu(desc->opts2) & 
0xffff));
        } else
 #endif
                netif_receive_skb(skb);
@@ -765,7 +765,7 @@ static int cp_start_xmit (struct sk_buff *skb, struct 
net_device *dev)
 
 #if CP_VLAN_TAG_USED
        if (cp->vlgrp && vlan_tx_tag_present(skb))
-               vlan_tag = TxVlanTag | cpu_to_be16(vlan_tx_tag_get(skb));
+               vlan_tag = TxVlanTag | swab16(vlan_tx_tag_get(skb));
 #endif
 
        entry = cp->tx_head;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to