--- xeno-unstable/xen/drivers/net/8139too.c.orig 2004-03-10 04:58:12.000000000 +0100 +++ xeno-unstable/xen/drivers/net/8139too.c 2004-03-11 09:49:00.000000000 +0100 @@ -130,6 +130,8 @@ /* enable PIO instead of MMIO, if CONFIG_8139TOO_PIO is selected */ #ifdef CONFIG_8139TOO_PIO #define USE_IO_OPS 1 +#elif defined XEN +#define USE_IO_OPS 1 #endif /* define to 1 to enable copious debugging info */ @@ -885,8 +887,8 @@ } /* if unknown chip, assume array element #0, original RTL-8139 in this case */ - printk (KERN_DEBUG PFX "%s: unknown chip version, assuming RTL-8139\n", - pdev->slot_name); + printk (KERN_DEBUG PFX "%s: unknown chip version 0x%x, assuming RTL-8139\n", + pdev->slot_name, tmp); printk (KERN_DEBUG PFX "%s: TxConfig = 0x%lx\n", pdev->slot_name, RTL_R32 (TxConfig)); tp->chipset = 0; @@ -2027,8 +2028,15 @@ if (skb) { skb->dev = dev; skb_reserve (skb, 2); /* 16 byte align the IP fields. */ - +#ifdef XEN + { + char *vdata = map_domain_mem(__pa(skb->data)); + memcpy(vdata, &rx_ring[ring_offset + 4], pkt_size); + unmap_domain_mem(vdata); + } +#else eth_copy_and_sum (skb, &rx_ring[ring_offset + 4], pkt_size, 0); +#endif skb_put (skb, pkt_size); skb->protocol = eth_type_trans (skb, dev); @@ -2250,6 +2258,7 @@ return 0; } +#ifndef XEN /* Get the ethtool Wake-on-LAN settings. Assumes that wol points to kernel memory, *wol has been initialized as {ETHTOOL_GWOL}, and @@ -2325,7 +2334,6 @@ return 0; } -#ifndef XEN static int netdev_ethtool_ioctl (struct net_device *dev, void *useraddr) { struct rtl8139_private *np = dev->priv;