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