diff options
author | David Woodhouse <dwmw2@infradead.org> | 2007-04-27 14:16:19 -0400 |
---|---|---|
committer | David Woodhouse <dwmw2@infradead.org> | 2007-04-27 14:16:19 -0400 |
commit | d1da4e50e5d09f02c340927a4fcb7f54202fa033 (patch) | |
tree | 7f98317bdd45dbdb7644e9179891c5af6a3a8ef1 /drivers/net/tulip | |
parent | 78ab67da1002d954ea4c3e2b441e2483c41f94e8 (diff) | |
parent | a205752d1ad2d37d6597aaae5a56fc396a770868 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts:
drivers/mtd/Kconfig
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Diffstat (limited to 'drivers/net/tulip')
-rw-r--r-- | drivers/net/tulip/de2104x.c | 7 | ||||
-rw-r--r-- | drivers/net/tulip/de4x5.c | 12 | ||||
-rw-r--r-- | drivers/net/tulip/dmfe.c | 12 | ||||
-rw-r--r-- | drivers/net/tulip/interrupt.c | 2 | ||||
-rw-r--r-- | drivers/net/tulip/tulip_core.c | 30 | ||||
-rw-r--r-- | drivers/net/tulip/uli526x.c | 22 | ||||
-rw-r--r-- | drivers/net/tulip/winbond-840.c | 5 | ||||
-rw-r--r-- | drivers/net/tulip/xircom_cb.c | 7 | ||||
-rw-r--r-- | drivers/net/tulip/xircom_tulip_cb.c | 7 |
9 files changed, 47 insertions, 57 deletions
diff --git a/drivers/net/tulip/de2104x.c b/drivers/net/tulip/de2104x.c index c82befa209a2..861729806dc1 100644 --- a/drivers/net/tulip/de2104x.c +++ b/drivers/net/tulip/de2104x.c | |||
@@ -63,7 +63,7 @@ MODULE_PARM_DESC (debug, "de2104x bitmapped message enable number"); | |||
63 | 63 | ||
64 | /* Set the copy breakpoint for the copy-only-tiny-buffer Rx structure. */ | 64 | /* Set the copy breakpoint for the copy-only-tiny-buffer Rx structure. */ |
65 | #if defined(__alpha__) || defined(__arm__) || defined(__hppa__) \ | 65 | #if defined(__alpha__) || defined(__arm__) || defined(__hppa__) \ |
66 | || defined(__sparc__) || defined(__ia64__) \ | 66 | || defined(CONFIG_SPARC) || defined(__ia64__) \ |
67 | || defined(__sh__) || defined(__mips__) | 67 | || defined(__sh__) || defined(__mips__) |
68 | static int rx_copybreak = 1518; | 68 | static int rx_copybreak = 1518; |
69 | #else | 69 | #else |
@@ -435,7 +435,6 @@ static void de_rx (struct de_private *de) | |||
435 | rx_work = 100; | 435 | rx_work = 100; |
436 | goto rx_next; | 436 | goto rx_next; |
437 | } | 437 | } |
438 | copy_skb->dev = de->dev; | ||
439 | 438 | ||
440 | if (!copying_skb) { | 439 | if (!copying_skb) { |
441 | pci_unmap_single(de->pdev, mapping, | 440 | pci_unmap_single(de->pdev, mapping, |
@@ -450,8 +449,8 @@ static void de_rx (struct de_private *de) | |||
450 | } else { | 449 | } else { |
451 | pci_dma_sync_single_for_cpu(de->pdev, mapping, len, PCI_DMA_FROMDEVICE); | 450 | pci_dma_sync_single_for_cpu(de->pdev, mapping, len, PCI_DMA_FROMDEVICE); |
452 | skb_reserve(copy_skb, RX_OFFSET); | 451 | skb_reserve(copy_skb, RX_OFFSET); |
453 | memcpy(skb_put(copy_skb, len), skb->data, len); | 452 | skb_copy_from_linear_data(skb, skb_put(copy_skb, len), |
454 | 453 | len); | |
455 | pci_dma_sync_single_for_device(de->pdev, mapping, len, PCI_DMA_FROMDEVICE); | 454 | pci_dma_sync_single_for_device(de->pdev, mapping, len, PCI_DMA_FROMDEVICE); |
456 | 455 | ||
457 | /* We'll reuse the original ring buffer. */ | 456 | /* We'll reuse the original ring buffer. */ |
diff --git a/drivers/net/tulip/de4x5.c b/drivers/net/tulip/de4x5.c index 4b3cd3d8b62a..62143f92c231 100644 --- a/drivers/net/tulip/de4x5.c +++ b/drivers/net/tulip/de4x5.c | |||
@@ -1160,7 +1160,7 @@ de4x5_hw_init(struct net_device *dev, u_long iobase, struct device *gendev) | |||
1160 | sprintf(lp->adapter_name,"%s (%s)", name, gendev->bus_id); | 1160 | sprintf(lp->adapter_name,"%s (%s)", name, gendev->bus_id); |
1161 | 1161 | ||
1162 | lp->dma_size = (NUM_RX_DESC + NUM_TX_DESC) * sizeof(struct de4x5_desc); | 1162 | lp->dma_size = (NUM_RX_DESC + NUM_TX_DESC) * sizeof(struct de4x5_desc); |
1163 | #if defined(__alpha__) || defined(__powerpc__) || defined(__sparc_v9__) || defined(DE4X5_DO_MEMCPY) | 1163 | #if defined(__alpha__) || defined(__powerpc__) || defined(CONFIG_SPARC) || defined(DE4X5_DO_MEMCPY) |
1164 | lp->dma_size += RX_BUFF_SZ * NUM_RX_DESC + DE4X5_ALIGN; | 1164 | lp->dma_size += RX_BUFF_SZ * NUM_RX_DESC + DE4X5_ALIGN; |
1165 | #endif | 1165 | #endif |
1166 | lp->rx_ring = dma_alloc_coherent(gendev, lp->dma_size, | 1166 | lp->rx_ring = dma_alloc_coherent(gendev, lp->dma_size, |
@@ -1175,7 +1175,7 @@ de4x5_hw_init(struct net_device *dev, u_long iobase, struct device *gendev) | |||
1175 | ** Set up the RX descriptor ring (Intels) | 1175 | ** Set up the RX descriptor ring (Intels) |
1176 | ** Allocate contiguous receive buffers, long word aligned (Alphas) | 1176 | ** Allocate contiguous receive buffers, long word aligned (Alphas) |
1177 | */ | 1177 | */ |
1178 | #if !defined(__alpha__) && !defined(__powerpc__) && !defined(__sparc_v9__) && !defined(DE4X5_DO_MEMCPY) | 1178 | #if !defined(__alpha__) && !defined(__powerpc__) && !defined(CONFIG_SPARC) && !defined(DE4X5_DO_MEMCPY) |
1179 | for (i=0; i<NUM_RX_DESC; i++) { | 1179 | for (i=0; i<NUM_RX_DESC; i++) { |
1180 | lp->rx_ring[i].status = 0; | 1180 | lp->rx_ring[i].status = 0; |
1181 | lp->rx_ring[i].des1 = cpu_to_le32(RX_BUFF_SZ); | 1181 | lp->rx_ring[i].des1 = cpu_to_le32(RX_BUFF_SZ); |
@@ -1252,11 +1252,7 @@ de4x5_hw_init(struct net_device *dev, u_long iobase, struct device *gendev) | |||
1252 | mii_get_phy(dev); | 1252 | mii_get_phy(dev); |
1253 | } | 1253 | } |
1254 | 1254 | ||
1255 | #ifndef __sparc_v9__ | ||
1256 | printk(" and requires IRQ%d (provided by %s).\n", dev->irq, | 1255 | printk(" and requires IRQ%d (provided by %s).\n", dev->irq, |
1257 | #else | ||
1258 | printk(" and requires IRQ%x (provided by %s).\n", dev->irq, | ||
1259 | #endif | ||
1260 | ((lp->bus == PCI) ? "PCI BIOS" : "EISA CNFG")); | 1256 | ((lp->bus == PCI) ? "PCI BIOS" : "EISA CNFG")); |
1261 | } | 1257 | } |
1262 | 1258 | ||
@@ -3627,14 +3623,13 @@ de4x5_alloc_rx_buff(struct net_device *dev, int index, int len) | |||
3627 | struct de4x5_private *lp = netdev_priv(dev); | 3623 | struct de4x5_private *lp = netdev_priv(dev); |
3628 | struct sk_buff *p; | 3624 | struct sk_buff *p; |
3629 | 3625 | ||
3630 | #if !defined(__alpha__) && !defined(__powerpc__) && !defined(__sparc_v9__) && !defined(DE4X5_DO_MEMCPY) | 3626 | #if !defined(__alpha__) && !defined(__powerpc__) && !defined(CONFIG_SPARC) && !defined(DE4X5_DO_MEMCPY) |
3631 | struct sk_buff *ret; | 3627 | struct sk_buff *ret; |
3632 | u_long i=0, tmp; | 3628 | u_long i=0, tmp; |
3633 | 3629 | ||
3634 | p = dev_alloc_skb(IEEE802_3_SZ + DE4X5_ALIGN + 2); | 3630 | p = dev_alloc_skb(IEEE802_3_SZ + DE4X5_ALIGN + 2); |
3635 | if (!p) return NULL; | 3631 | if (!p) return NULL; |
3636 | 3632 | ||
3637 | p->dev = dev; | ||
3638 | tmp = virt_to_bus(p->data); | 3633 | tmp = virt_to_bus(p->data); |
3639 | i = ((tmp + DE4X5_ALIGN) & ~DE4X5_ALIGN) - tmp; | 3634 | i = ((tmp + DE4X5_ALIGN) & ~DE4X5_ALIGN) - tmp; |
3640 | skb_reserve(p, i); | 3635 | skb_reserve(p, i); |
@@ -3655,7 +3650,6 @@ de4x5_alloc_rx_buff(struct net_device *dev, int index, int len) | |||
3655 | p = dev_alloc_skb(len + 2); | 3650 | p = dev_alloc_skb(len + 2); |
3656 | if (!p) return NULL; | 3651 | if (!p) return NULL; |
3657 | 3652 | ||
3658 | p->dev = dev; | ||
3659 | skb_reserve(p, 2); /* Align */ | 3653 | skb_reserve(p, 2); /* Align */ |
3660 | if (index < lp->rx_old) { /* Wrapped buffer */ | 3654 | if (index < lp->rx_old) { /* Wrapped buffer */ |
3661 | short tlen = (lp->rxRingSize - lp->rx_old) * RX_BUFF_SZ; | 3655 | short tlen = (lp->rxRingSize - lp->rx_old) * RX_BUFF_SZ; |
diff --git a/drivers/net/tulip/dmfe.c b/drivers/net/tulip/dmfe.c index 9aeac76184f3..b3a64ca98634 100644 --- a/drivers/net/tulip/dmfe.c +++ b/drivers/net/tulip/dmfe.c | |||
@@ -682,7 +682,7 @@ static int dmfe_start_xmit(struct sk_buff *skb, struct DEVICE *dev) | |||
682 | 682 | ||
683 | /* transmit this packet */ | 683 | /* transmit this packet */ |
684 | txptr = db->tx_insert_ptr; | 684 | txptr = db->tx_insert_ptr; |
685 | memcpy(txptr->tx_buf_ptr, skb->data, skb->len); | 685 | skb_copy_from_linear_data(skb, txptr->tx_buf_ptr, skb->len); |
686 | txptr->tdes1 = cpu_to_le32(0xe1000000 | skb->len); | 686 | txptr->tdes1 = cpu_to_le32(0xe1000000 | skb->len); |
687 | 687 | ||
688 | /* Point to next transmit free descriptor */ | 688 | /* Point to next transmit free descriptor */ |
@@ -988,14 +988,14 @@ static void dmfe_rx_packet(struct DEVICE *dev, struct dmfe_board_info * db) | |||
988 | 988 | ||
989 | skb = newskb; | 989 | skb = newskb; |
990 | /* size less than COPY_SIZE, allocate a rxlen SKB */ | 990 | /* size less than COPY_SIZE, allocate a rxlen SKB */ |
991 | skb->dev = dev; | ||
992 | skb_reserve(skb, 2); /* 16byte align */ | 991 | skb_reserve(skb, 2); /* 16byte align */ |
993 | memcpy(skb_put(skb, rxlen), rxptr->rx_skb_ptr->data, rxlen); | 992 | skb_copy_from_linear_data(rxptr->rx_skb_ptr, |
993 | skb_put(skb, rxlen), | ||
994 | rxlen); | ||
994 | dmfe_reuse_skb(db, rxptr->rx_skb_ptr); | 995 | dmfe_reuse_skb(db, rxptr->rx_skb_ptr); |
995 | } else { | 996 | } else |
996 | skb->dev = dev; | ||
997 | skb_put(skb, rxlen); | 997 | skb_put(skb, rxlen); |
998 | } | 998 | |
999 | skb->protocol = eth_type_trans(skb, dev); | 999 | skb->protocol = eth_type_trans(skb, dev); |
1000 | netif_rx(skb); | 1000 | netif_rx(skb); |
1001 | dev->last_rx = jiffies; | 1001 | dev->last_rx = jiffies; |
diff --git a/drivers/net/tulip/interrupt.c b/drivers/net/tulip/interrupt.c index e3488d7b8ede..e86df07769a1 100644 --- a/drivers/net/tulip/interrupt.c +++ b/drivers/net/tulip/interrupt.c | |||
@@ -192,7 +192,6 @@ int tulip_poll(struct net_device *dev, int *budget) | |||
192 | to a minimally-sized skbuff. */ | 192 | to a minimally-sized skbuff. */ |
193 | if (pkt_len < tulip_rx_copybreak | 193 | if (pkt_len < tulip_rx_copybreak |
194 | && (skb = dev_alloc_skb(pkt_len + 2)) != NULL) { | 194 | && (skb = dev_alloc_skb(pkt_len + 2)) != NULL) { |
195 | skb->dev = dev; | ||
196 | skb_reserve(skb, 2); /* 16 byte align the IP header */ | 195 | skb_reserve(skb, 2); /* 16 byte align the IP header */ |
197 | pci_dma_sync_single_for_cpu(tp->pdev, | 196 | pci_dma_sync_single_for_cpu(tp->pdev, |
198 | tp->rx_buffers[entry].mapping, | 197 | tp->rx_buffers[entry].mapping, |
@@ -416,7 +415,6 @@ static int tulip_rx(struct net_device *dev) | |||
416 | to a minimally-sized skbuff. */ | 415 | to a minimally-sized skbuff. */ |
417 | if (pkt_len < tulip_rx_copybreak | 416 | if (pkt_len < tulip_rx_copybreak |
418 | && (skb = dev_alloc_skb(pkt_len + 2)) != NULL) { | 417 | && (skb = dev_alloc_skb(pkt_len + 2)) != NULL) { |
419 | skb->dev = dev; | ||
420 | skb_reserve(skb, 2); /* 16 byte align the IP header */ | 418 | skb_reserve(skb, 2); /* 16 byte align the IP header */ |
421 | pci_dma_sync_single_for_cpu(tp->pdev, | 419 | pci_dma_sync_single_for_cpu(tp->pdev, |
422 | tp->rx_buffers[entry].mapping, | 420 | tp->rx_buffers[entry].mapping, |
diff --git a/drivers/net/tulip/tulip_core.c b/drivers/net/tulip/tulip_core.c index e3774a522372..e9bf526ec534 100644 --- a/drivers/net/tulip/tulip_core.c +++ b/drivers/net/tulip/tulip_core.c | |||
@@ -36,8 +36,8 @@ | |||
36 | #include <asm/unaligned.h> | 36 | #include <asm/unaligned.h> |
37 | #include <asm/uaccess.h> | 37 | #include <asm/uaccess.h> |
38 | 38 | ||
39 | #ifdef __sparc__ | 39 | #ifdef CONFIG_SPARC |
40 | #include <asm/pbm.h> | 40 | #include <asm/prom.h> |
41 | #endif | 41 | #endif |
42 | 42 | ||
43 | static char version[] __devinitdata = | 43 | static char version[] __devinitdata = |
@@ -67,7 +67,7 @@ const char * const medianame[32] = { | |||
67 | 67 | ||
68 | /* Set the copy breakpoint for the copy-only-tiny-buffer Rx structure. */ | 68 | /* Set the copy breakpoint for the copy-only-tiny-buffer Rx structure. */ |
69 | #if defined(__alpha__) || defined(__arm__) || defined(__hppa__) \ | 69 | #if defined(__alpha__) || defined(__arm__) || defined(__hppa__) \ |
70 | || defined(__sparc__) || defined(__ia64__) \ | 70 | || defined(CONFIG_SPARC) || defined(__ia64__) \ |
71 | || defined(__sh__) || defined(__mips__) | 71 | || defined(__sh__) || defined(__mips__) |
72 | static int rx_copybreak = 1518; | 72 | static int rx_copybreak = 1518; |
73 | #else | 73 | #else |
@@ -91,7 +91,7 @@ static int rx_copybreak = 100; | |||
91 | static int csr0 = 0x01A00000 | 0xE000; | 91 | static int csr0 = 0x01A00000 | 0xE000; |
92 | #elif defined(__i386__) || defined(__powerpc__) || defined(__x86_64__) | 92 | #elif defined(__i386__) || defined(__powerpc__) || defined(__x86_64__) |
93 | static int csr0 = 0x01A00000 | 0x8000; | 93 | static int csr0 = 0x01A00000 | 0x8000; |
94 | #elif defined(__sparc__) || defined(__hppa__) | 94 | #elif defined(CONFIG_SPARC) || defined(__hppa__) |
95 | /* The UltraSparc PCI controllers will disconnect at every 64-byte | 95 | /* The UltraSparc PCI controllers will disconnect at every 64-byte |
96 | * crossing anyways so it makes no sense to tell Tulip to burst | 96 | * crossing anyways so it makes no sense to tell Tulip to burst |
97 | * any more than that. | 97 | * any more than that. |
@@ -1315,7 +1315,7 @@ static int __devinit tulip_init_one (struct pci_dev *pdev, | |||
1315 | /* DM9102A has troubles with MRM & clear reserved bits 24:22, 20, 16, 7:1 */ | 1315 | /* DM9102A has troubles with MRM & clear reserved bits 24:22, 20, 16, 7:1 */ |
1316 | if (tulip_uli_dm_quirk(pdev)) { | 1316 | if (tulip_uli_dm_quirk(pdev)) { |
1317 | csr0 &= ~0x01f100ff; | 1317 | csr0 &= ~0x01f100ff; |
1318 | #if defined(__sparc__) | 1318 | #if defined(CONFIG_SPARC) |
1319 | csr0 = (csr0 & ~0xff00) | 0xe000; | 1319 | csr0 = (csr0 & ~0xff00) | 0xe000; |
1320 | #endif | 1320 | #endif |
1321 | } | 1321 | } |
@@ -1535,23 +1535,19 @@ static int __devinit tulip_init_one (struct pci_dev *pdev, | |||
1535 | Many PCI BIOSes also incorrectly report the IRQ line, so we correct | 1535 | Many PCI BIOSes also incorrectly report the IRQ line, so we correct |
1536 | that here as well. */ | 1536 | that here as well. */ |
1537 | if (sum == 0 || sum == 6*0xff) { | 1537 | if (sum == 0 || sum == 6*0xff) { |
1538 | #if defined(__sparc__) | 1538 | #if defined(CONFIG_SPARC) |
1539 | struct pcidev_cookie *pcp = pdev->sysdata; | 1539 | struct device_node *dp = pci_device_to_OF_node(pdev); |
1540 | const unsigned char *addr; | ||
1541 | int len; | ||
1540 | #endif | 1542 | #endif |
1541 | eeprom_missing = 1; | 1543 | eeprom_missing = 1; |
1542 | for (i = 0; i < 5; i++) | 1544 | for (i = 0; i < 5; i++) |
1543 | dev->dev_addr[i] = last_phys_addr[i]; | 1545 | dev->dev_addr[i] = last_phys_addr[i]; |
1544 | dev->dev_addr[i] = last_phys_addr[i] + 1; | 1546 | dev->dev_addr[i] = last_phys_addr[i] + 1; |
1545 | #if defined(__sparc__) | 1547 | #if defined(CONFIG_SPARC) |
1546 | if (pcp) { | 1548 | addr = of_get_property(dp, "local-mac-address", &len); |
1547 | unsigned char *addr; | 1549 | if (addr && len == 6) |
1548 | int len; | 1550 | memcpy(dev->dev_addr, addr, 6); |
1549 | |||
1550 | addr = of_get_property(pcp->prom_node, | ||
1551 | "local-mac-address", &len); | ||
1552 | if (addr && len == 6) | ||
1553 | memcpy(dev->dev_addr, addr, 6); | ||
1554 | } | ||
1555 | #endif | 1551 | #endif |
1556 | #if defined(__i386__) || defined(__x86_64__) /* Patch up x86 BIOS bug. */ | 1552 | #if defined(__i386__) || defined(__x86_64__) /* Patch up x86 BIOS bug. */ |
1557 | if (last_irq) | 1553 | if (last_irq) |
diff --git a/drivers/net/tulip/uli526x.c b/drivers/net/tulip/uli526x.c index 229158e8e4be..ca2548eb7d63 100644 --- a/drivers/net/tulip/uli526x.c +++ b/drivers/net/tulip/uli526x.c | |||
@@ -583,7 +583,7 @@ static int uli526x_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
583 | 583 | ||
584 | /* transmit this packet */ | 584 | /* transmit this packet */ |
585 | txptr = db->tx_insert_ptr; | 585 | txptr = db->tx_insert_ptr; |
586 | memcpy(txptr->tx_buf_ptr, skb->data, skb->len); | 586 | skb_copy_from_linear_data(skb, txptr->tx_buf_ptr, skb->len); |
587 | txptr->tdes1 = cpu_to_le32(0xe1000000 | skb->len); | 587 | txptr->tdes1 = cpu_to_le32(0xe1000000 | skb->len); |
588 | 588 | ||
589 | /* Point to next transmit free descriptor */ | 589 | /* Point to next transmit free descriptor */ |
@@ -828,14 +828,14 @@ static void uli526x_rx_packet(struct net_device *dev, struct uli526x_board_info | |||
828 | ( (skb = dev_alloc_skb(rxlen + 2) ) | 828 | ( (skb = dev_alloc_skb(rxlen + 2) ) |
829 | != NULL) ) { | 829 | != NULL) ) { |
830 | /* size less than COPY_SIZE, allocate a rxlen SKB */ | 830 | /* size less than COPY_SIZE, allocate a rxlen SKB */ |
831 | skb->dev = dev; | ||
832 | skb_reserve(skb, 2); /* 16byte align */ | 831 | skb_reserve(skb, 2); /* 16byte align */ |
833 | memcpy(skb_put(skb, rxlen), rxptr->rx_skb_ptr->tail, rxlen); | 832 | memcpy(skb_put(skb, rxlen), |
833 | skb_tail_pointer(rxptr->rx_skb_ptr), | ||
834 | rxlen); | ||
834 | uli526x_reuse_skb(db, rxptr->rx_skb_ptr); | 835 | uli526x_reuse_skb(db, rxptr->rx_skb_ptr); |
835 | } else { | 836 | } else |
836 | skb->dev = dev; | ||
837 | skb_put(skb, rxlen); | 837 | skb_put(skb, rxlen); |
838 | } | 838 | |
839 | skb->protocol = eth_type_trans(skb, dev); | 839 | skb->protocol = eth_type_trans(skb, dev); |
840 | netif_rx(skb); | 840 | netif_rx(skb); |
841 | dev->last_rx = jiffies; | 841 | dev->last_rx = jiffies; |
@@ -1177,7 +1177,10 @@ static void uli526x_reuse_skb(struct uli526x_board_info *db, struct sk_buff * sk | |||
1177 | 1177 | ||
1178 | if (!(rxptr->rdes0 & cpu_to_le32(0x80000000))) { | 1178 | if (!(rxptr->rdes0 & cpu_to_le32(0x80000000))) { |
1179 | rxptr->rx_skb_ptr = skb; | 1179 | rxptr->rx_skb_ptr = skb; |
1180 | rxptr->rdes2 = cpu_to_le32( pci_map_single(db->pdev, skb->tail, RX_ALLOC_SIZE, PCI_DMA_FROMDEVICE) ); | 1180 | rxptr->rdes2 = cpu_to_le32(pci_map_single(db->pdev, |
1181 | skb_tail_pointer(skb), | ||
1182 | RX_ALLOC_SIZE, | ||
1183 | PCI_DMA_FROMDEVICE)); | ||
1181 | wmb(); | 1184 | wmb(); |
1182 | rxptr->rdes0 = cpu_to_le32(0x80000000); | 1185 | rxptr->rdes0 = cpu_to_le32(0x80000000); |
1183 | db->rx_avail_cnt++; | 1186 | db->rx_avail_cnt++; |
@@ -1341,7 +1344,10 @@ static void allocate_rx_buffer(struct uli526x_board_info *db) | |||
1341 | if ( ( skb = dev_alloc_skb(RX_ALLOC_SIZE) ) == NULL ) | 1344 | if ( ( skb = dev_alloc_skb(RX_ALLOC_SIZE) ) == NULL ) |
1342 | break; | 1345 | break; |
1343 | rxptr->rx_skb_ptr = skb; /* FIXME (?) */ | 1346 | rxptr->rx_skb_ptr = skb; /* FIXME (?) */ |
1344 | rxptr->rdes2 = cpu_to_le32( pci_map_single(db->pdev, skb->tail, RX_ALLOC_SIZE, PCI_DMA_FROMDEVICE) ); | 1347 | rxptr->rdes2 = cpu_to_le32(pci_map_single(db->pdev, |
1348 | skb_tail_pointer(skb), | ||
1349 | RX_ALLOC_SIZE, | ||
1350 | PCI_DMA_FROMDEVICE)); | ||
1345 | wmb(); | 1351 | wmb(); |
1346 | rxptr->rdes0 = cpu_to_le32(0x80000000); | 1352 | rxptr->rdes0 = cpu_to_le32(0x80000000); |
1347 | rxptr = rxptr->next_rx_desc; | 1353 | rxptr = rxptr->next_rx_desc; |
diff --git a/drivers/net/tulip/winbond-840.c b/drivers/net/tulip/winbond-840.c index 002a05e0722f..5b71ac78bca2 100644 --- a/drivers/net/tulip/winbond-840.c +++ b/drivers/net/tulip/winbond-840.c | |||
@@ -813,7 +813,6 @@ static void init_rxtx_rings(struct net_device *dev) | |||
813 | np->rx_skbuff[i] = skb; | 813 | np->rx_skbuff[i] = skb; |
814 | if (skb == NULL) | 814 | if (skb == NULL) |
815 | break; | 815 | break; |
816 | skb->dev = dev; /* Mark as being used by this device. */ | ||
817 | np->rx_addr[i] = pci_map_single(np->pci_dev,skb->data, | 816 | np->rx_addr[i] = pci_map_single(np->pci_dev,skb->data, |
818 | np->rx_buf_sz,PCI_DMA_FROMDEVICE); | 817 | np->rx_buf_sz,PCI_DMA_FROMDEVICE); |
819 | 818 | ||
@@ -903,7 +902,7 @@ static void init_registers(struct net_device *dev) | |||
903 | } | 902 | } |
904 | #elif defined(__powerpc__) || defined(__i386__) || defined(__alpha__) || defined(__ia64__) || defined(__x86_64__) | 903 | #elif defined(__powerpc__) || defined(__i386__) || defined(__alpha__) || defined(__ia64__) || defined(__x86_64__) |
905 | i |= 0xE000; | 904 | i |= 0xE000; |
906 | #elif defined(__sparc__) || defined (CONFIG_PARISC) | 905 | #elif defined(CONFIG_SPARC) || defined (CONFIG_PARISC) |
907 | i |= 0x4800; | 906 | i |= 0x4800; |
908 | #else | 907 | #else |
909 | #warning Processor architecture undefined | 908 | #warning Processor architecture undefined |
@@ -1229,7 +1228,6 @@ static int netdev_rx(struct net_device *dev) | |||
1229 | to a minimally-sized skbuff. */ | 1228 | to a minimally-sized skbuff. */ |
1230 | if (pkt_len < rx_copybreak | 1229 | if (pkt_len < rx_copybreak |
1231 | && (skb = dev_alloc_skb(pkt_len + 2)) != NULL) { | 1230 | && (skb = dev_alloc_skb(pkt_len + 2)) != NULL) { |
1232 | skb->dev = dev; | ||
1233 | skb_reserve(skb, 2); /* 16 byte align the IP header */ | 1231 | skb_reserve(skb, 2); /* 16 byte align the IP header */ |
1234 | pci_dma_sync_single_for_cpu(np->pci_dev,np->rx_addr[entry], | 1232 | pci_dma_sync_single_for_cpu(np->pci_dev,np->rx_addr[entry], |
1235 | np->rx_skbuff[entry]->len, | 1233 | np->rx_skbuff[entry]->len, |
@@ -1278,7 +1276,6 @@ static int netdev_rx(struct net_device *dev) | |||
1278 | np->rx_skbuff[entry] = skb; | 1276 | np->rx_skbuff[entry] = skb; |
1279 | if (skb == NULL) | 1277 | if (skb == NULL) |
1280 | break; /* Better luck next round. */ | 1278 | break; /* Better luck next round. */ |
1281 | skb->dev = dev; /* Mark as being used by this device. */ | ||
1282 | np->rx_addr[entry] = pci_map_single(np->pci_dev, | 1279 | np->rx_addr[entry] = pci_map_single(np->pci_dev, |
1283 | skb->data, | 1280 | skb->data, |
1284 | np->rx_buf_sz, PCI_DMA_FROMDEVICE); | 1281 | np->rx_buf_sz, PCI_DMA_FROMDEVICE); |
diff --git a/drivers/net/tulip/xircom_cb.c b/drivers/net/tulip/xircom_cb.c index 61d313049dd0..985a1810ca59 100644 --- a/drivers/net/tulip/xircom_cb.c +++ b/drivers/net/tulip/xircom_cb.c | |||
@@ -411,9 +411,9 @@ static int xircom_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
411 | sometimes sends more than you ask it to. */ | 411 | sometimes sends more than you ask it to. */ |
412 | 412 | ||
413 | memset(&card->tx_buffer[bufferoffsets[desc]/4],0,1536); | 413 | memset(&card->tx_buffer[bufferoffsets[desc]/4],0,1536); |
414 | memcpy(&(card->tx_buffer[bufferoffsets[desc]/4]),skb->data,skb->len); | 414 | skb_copy_from_linear_data(skb, |
415 | 415 | &(card->tx_buffer[bufferoffsets[desc] / 4]), | |
416 | 416 | skb->len); | |
417 | /* FIXME: The specification tells us that the length we send HAS to be a multiple of | 417 | /* FIXME: The specification tells us that the length we send HAS to be a multiple of |
418 | 4 bytes. */ | 418 | 4 bytes. */ |
419 | 419 | ||
@@ -1207,7 +1207,6 @@ static void investigate_read_descriptor(struct net_device *dev,struct xircom_pri | |||
1207 | card->stats.rx_dropped++; | 1207 | card->stats.rx_dropped++; |
1208 | goto out; | 1208 | goto out; |
1209 | } | 1209 | } |
1210 | skb->dev = dev; | ||
1211 | skb_reserve(skb, 2); | 1210 | skb_reserve(skb, 2); |
1212 | eth_copy_and_sum(skb, (unsigned char*)&card->rx_buffer[bufferoffset / 4], pkt_len, 0); | 1211 | eth_copy_and_sum(skb, (unsigned char*)&card->rx_buffer[bufferoffset / 4], pkt_len, 0); |
1213 | skb_put(skb, pkt_len); | 1212 | skb_put(skb, pkt_len); |
diff --git a/drivers/net/tulip/xircom_tulip_cb.c b/drivers/net/tulip/xircom_tulip_cb.c index a998c5d0ae9c..f64172927377 100644 --- a/drivers/net/tulip/xircom_tulip_cb.c +++ b/drivers/net/tulip/xircom_tulip_cb.c | |||
@@ -65,7 +65,7 @@ static int rx_copybreak = 100; | |||
65 | static int csr0 = 0x01A00000 | 0xE000; | 65 | static int csr0 = 0x01A00000 | 0xE000; |
66 | #elif defined(__powerpc__) | 66 | #elif defined(__powerpc__) |
67 | static int csr0 = 0x01B00000 | 0x8000; | 67 | static int csr0 = 0x01B00000 | 0x8000; |
68 | #elif defined(__sparc__) | 68 | #elif defined(CONFIG_SPARC) |
69 | static int csr0 = 0x01B00080 | 0x8000; | 69 | static int csr0 = 0x01B00080 | 0x8000; |
70 | #elif defined(__i386__) | 70 | #elif defined(__i386__) |
71 | static int csr0 = 0x01A00000 | 0x8000; | 71 | static int csr0 = 0x01A00000 | 0x8000; |
@@ -915,7 +915,9 @@ xircom_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
915 | 915 | ||
916 | tp->tx_skbuff[entry] = skb; | 916 | tp->tx_skbuff[entry] = skb; |
917 | if (tp->chip_id == X3201_3) { | 917 | if (tp->chip_id == X3201_3) { |
918 | memcpy(tp->tx_aligned_skbuff[entry]->data,skb->data,skb->len); | 918 | skb_copy_from_linear_data(skb, |
919 | tp->tx_aligned_skbuff[entry]->data, | ||
920 | skb->len); | ||
919 | tp->tx_ring[entry].buffer1 = virt_to_bus(tp->tx_aligned_skbuff[entry]->data); | 921 | tp->tx_ring[entry].buffer1 = virt_to_bus(tp->tx_aligned_skbuff[entry]->data); |
920 | } else | 922 | } else |
921 | tp->tx_ring[entry].buffer1 = virt_to_bus(skb->data); | 923 | tp->tx_ring[entry].buffer1 = virt_to_bus(skb->data); |
@@ -1238,7 +1240,6 @@ xircom_rx(struct net_device *dev) | |||
1238 | to a minimally-sized skbuff. */ | 1240 | to a minimally-sized skbuff. */ |
1239 | if (pkt_len < rx_copybreak | 1241 | if (pkt_len < rx_copybreak |
1240 | && (skb = dev_alloc_skb(pkt_len + 2)) != NULL) { | 1242 | && (skb = dev_alloc_skb(pkt_len + 2)) != NULL) { |
1241 | skb->dev = dev; | ||
1242 | skb_reserve(skb, 2); /* 16 byte align the IP header */ | 1243 | skb_reserve(skb, 2); /* 16 byte align the IP header */ |
1243 | #if ! defined(__alpha__) | 1244 | #if ! defined(__alpha__) |
1244 | eth_copy_and_sum(skb, bus_to_virt(tp->rx_ring[entry].buffer1), | 1245 | eth_copy_and_sum(skb, bus_to_virt(tp->rx_ring[entry].buffer1), |