Thanks Jesse, I don't think I was clear. For mpls and qinq, offloading goes through ovs emulation code in vport-netdev.c. In addiition to TSO, there is checksum-offload and I believe this will be handled in the NIC and the driver sets the flags in DMA descriptor before sending to the NIC. This, I don't think will be handled in ovs offload code. Anyways, I will wait until you return and we can work on this.
Thanks, Ravi On Thu, May 31, 2012 at 5:03 PM, Jesse Gross <je...@nicira.com> wrote: > On Thu, May 31, 2012 at 3:44 PM, ravi kerur <rke...@gmail.com> wrote: >> Hi Jesse, Ben, >> >> I think I might have figured out performance issue with mpls/qinq and >> tcp offload mentioned earlier. The driver(intel e1000e driver) checks >> skb->protocol to be either ETH_P_IP/ETH_P_IPV6 and sets the flag in >> DMA descriptors based on layer-4. This logic is basically used in >> checksum offloading. In mpls and qinq, I used to update skb->protocol >> to respective eth_types which then confused the driver and didn't see >> flags correctly. I modified the mpls/qinq not to update >> skb->protocol(just one line change) and things look pretty good. The >> performance numbers I am getting right now are > > skb->protocol must reflect the protocol contained in the packet. By > changing it, you're implicitly assuming that the NIC can handle a > protocol that the driver says it cannot and hoping it works. At this > point in time, MPLS packets requiring offloading should never make it > to a driver because none of them expose that capability. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev