[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] RTL8139 support



Hi,

> Accesses to the skb->data on the receive path must be wrapped with
> map_domain_mem()/unmap_domain_mem(). 
> 
> eg. 
>  char *vdata = map_domain_mem(__pa(skb->data));
>  <use vdata as you would normally use skb->data>
>  unmap_domain_mem(vdata);
> 
> I've taken a brief look at the driver and you may get away with just
> replacing wth_copy_and_sum() in include/xeno/etherdevice.h with the
> following:
> 
> static inline void eth_copy_and_sum(struct sk_buff *dest, 
>        unsigned char *src, int len, int base)
> {
>     char *vdata = map_domain_mem(__pa(dest->data));
>     memcpy(vdata, src, len);
>     unmap_domain_mem(vdata);
> }
> 
> (You may need to #include <asm/domain_page.h>).

Success!  Your suggestions worked first time, and my RTL8139 NIC now
appears to be working fine.

I tested the performance between my regular Linux kernel on Fedora and
Xen 1.3.  An NFS (using default UDP) copy of a large file was almost 5%
slower on Xen than Linux, and a scp (TCP) took just over 13% longer. 
Presumably these are reasonable results given the driver's having to
make extra copies in Xen?

The only unusual result was that Xen's time to flood ping 1000 packets
over 100 Mbps Ethernet was 10306ms, less than Fedora's 19503ms for the
same test.  For comparison an nVidia nForce in another machine achieved
only 861ms, which makes both results for the RTL8139 look slow.

Many thanks for your time and help in fixing this so promptly.

Cheers,

Sean.

-- 
Sean Atkinson <sean@xxxxxxxxxxxxxx>
Netproject

Attachment: xeno-8139too.patch
Description: Text document


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.