[PATCH] pcnet_cs cleanup
authorAl Viro <viro@www.linux.org.uk>
Sun, 3 Apr 2005 08:15:52 +0000 (09:15 +0100)
committerJeff Garzik <jgarzik@pobox.com>
Mon, 16 May 2005 02:21:07 +0000 (22:21 -0400)
killed abuse of ->rmem_end

Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk>
drivers/net/pcmcia/pcnet_cs.c

index b012630..181b6ed 100644 (file)
@@ -1537,20 +1537,20 @@ static void shmem_get_8390_hdr(struct net_device *dev,
 static void shmem_block_input(struct net_device *dev, int count,
                              struct sk_buff *skb, int ring_offset)
 {
-    void __iomem *xfer_start = ei_status.mem + (TX_PAGES<<8)
-                               + ring_offset
+    void __iomem *base = ei_status.mem;
+    unsigned long offset = (TX_PAGES<<8) + ring_offset
                                - (ei_status.rx_start_page << 8);
     char *buf = skb->data;
     
-    if (xfer_start + count > (void __iomem *)ei_status.rmem_end) {
+    if (offset + count > ei_status.priv) {
        /* We must wrap the input move. */
-       int semi_count = (void __iomem *)ei_status.rmem_end - xfer_start;
-       copyin(buf, xfer_start, semi_count);
+       int semi_count = ei_status.priv - offset;
+       copyin(buf, base + offset, semi_count);
        buf += semi_count;
-       xfer_start = ei_status.mem + (TX_PAGES<<8);
+       offset = TX_PAGES<<8;
        count -= semi_count;
     }
-    copyin(buf, xfer_start, count);
+    copyin(buf, base + offset, count);
 }
 
 /*====================================================================*/
@@ -1611,8 +1611,9 @@ static int setup_shmem_window(dev_link_t *link, int start_pg,
     }
     
     ei_status.mem = info->base + offset;
+    ei_status.priv = req.Size;
     dev->mem_start = (u_long)ei_status.mem;
-    dev->mem_end = ei_status.rmem_end = (u_long)info->base + req.Size;
+    dev->mem_end = dev->mem_start + req.Size;
 
     ei_status.tx_start_page = start_pg;
     ei_status.rx_start_page = start_pg + TX_PAGES;