[ovs-dev] FW: MPLS and VLAN QinQ patch

ravi kerur rkerur at gmail.com
Fri Jun 1 01:04:13 UTC 2012


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 <jesse at nicira.com> wrote:
> On Thu, May 31, 2012 at 3:44 PM, ravi kerur <rkerur at 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.



More information about the dev mailing list