Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b1e247ad8e4ff29b5c7fa2b9a081b4a0f483b0d3
Commit:     b1e247ad8e4ff29b5c7fa2b9a081b4a0f483b0d3
Parent:     cf96237837ec6d4fc48bc2f735c71027cc0fc5fa
Author:     Al Viro <[EMAIL PROTECTED]>
AuthorDate: Sat Dec 22 18:56:13 2007 +0000
Committer:  Jeff Garzik <[EMAIL PROTECTED]>
CommitDate: Sat Dec 22 22:53:07 2007 -0500

    3c574 and 3c589 endianness fixes (.24?)
    
    Both store MAC address in CIS; there's no decoder for that
    type (0x88) so the drivers work with raw data.  It is
    byteswapped, so ntohs() works for little-endian, but for
    big-endian it's wrong.  ntohs(le16_to_cpu()) does the
    right thing on both (and always expands to swab16()).
    
    Signed-off-by: Al Viro <[EMAIL PROTECTED]>
    Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>
---
 drivers/net/pcmcia/3c574_cs.c |   10 +++++-----
 drivers/net/pcmcia/3c589_cs.c |    9 +++++----
 2 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/drivers/net/pcmcia/3c574_cs.c b/drivers/net/pcmcia/3c574_cs.c
index ad134a6..2881777 100644
--- a/drivers/net/pcmcia/3c574_cs.c
+++ b/drivers/net/pcmcia/3c574_cs.c
@@ -337,15 +337,15 @@ static int tc574_config(struct pcmcia_device *link)
        struct net_device *dev = link->priv;
        struct el3_private *lp = netdev_priv(dev);
        tuple_t tuple;
-       unsigned short buf[32];
+       __le16 buf[32];
        int last_fn, last_ret, i, j;
        kio_addr_t ioaddr;
-       u16 *phys_addr;
+       __be16 *phys_addr;
        char *cardname;
        union wn3_config config;
        DECLARE_MAC_BUF(mac);
 
-       phys_addr = (u16 *)dev->dev_addr;
+       phys_addr = (__be16 *)dev->dev_addr;
 
        DEBUG(0, "3c574_config(0x%p)\n", link);
 
@@ -378,12 +378,12 @@ static int tc574_config(struct pcmcia_device *link)
        if (pcmcia_get_first_tuple(link, &tuple) == CS_SUCCESS) {
                pcmcia_get_tuple_data(link, &tuple);
                for (i = 0; i < 3; i++)
-                       phys_addr[i] = htons(buf[i]);
+                       phys_addr[i] = htons(le16_to_cpu(buf[i]));
        } else {
                EL3WINDOW(0);
                for (i = 0; i < 3; i++)
                        phys_addr[i] = htons(read_eeprom(ioaddr, i + 10));
-               if (phys_addr[0] == 0x6060) {
+               if (phys_addr[0] == htons(0x6060)) {
                        printk(KERN_NOTICE "3c574_cs: IO port conflict at 
0x%03lx"
                                   "-0x%03lx\n", dev->base_addr, 
dev->base_addr+15);
                        goto failed;
diff --git a/drivers/net/pcmcia/3c589_cs.c b/drivers/net/pcmcia/3c589_cs.c
index a98fe07..e862d14 100644
--- a/drivers/net/pcmcia/3c589_cs.c
+++ b/drivers/net/pcmcia/3c589_cs.c
@@ -251,7 +251,8 @@ static int tc589_config(struct pcmcia_device *link)
     struct net_device *dev = link->priv;
     struct el3_private *lp = netdev_priv(dev);
     tuple_t tuple;
-    u16 buf[32], *phys_addr;
+    __le16 buf[32];
+    __be16 *phys_addr;
     int last_fn, last_ret, i, j, multi = 0, fifo;
     kio_addr_t ioaddr;
     char *ram_split[] = {"5:3", "3:1", "1:1", "3:5"};
@@ -259,7 +260,7 @@ static int tc589_config(struct pcmcia_device *link)
     
     DEBUG(0, "3c589_config(0x%p)\n", link);
 
-    phys_addr = (u16 *)dev->dev_addr;
+    phys_addr = (__be16 *)dev->dev_addr;
     tuple.Attributes = 0;
     tuple.TupleData = (cisdata_t *)buf;
     tuple.TupleDataMax = sizeof(buf);
@@ -298,11 +299,11 @@ static int tc589_config(struct pcmcia_device *link)
     if (pcmcia_get_first_tuple(link, &tuple) == CS_SUCCESS) {
        pcmcia_get_tuple_data(link, &tuple);
        for (i = 0; i < 3; i++)
-           phys_addr[i] = htons(buf[i]);
+           phys_addr[i] = htons(le16_to_cpu(buf[i]));
     } else {
        for (i = 0; i < 3; i++)
            phys_addr[i] = htons(read_eeprom(ioaddr, i));
-       if (phys_addr[0] == 0x6060) {
+       if (phys_addr[0] == htons(0x6060)) {
            printk(KERN_ERR "3c589_cs: IO port conflict at 0x%03lx"
                   "-0x%03lx\n", dev->base_addr, dev->base_addr+15);
            goto failed;
-
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