[ovs-dev] [PATCH v8] netdev-dpdk: Enable Rx checksum offloading feature on DPDK physical ports.

Chandran, Sugesh sugesh.chandran at intel.com
Fri Dec 30 09:58:08 UTC 2016



Regards
_Sugesh


> -----Original Message-----
> From: Pravin Shelar [mailto:pshelar at ovn.org]
> Sent: Saturday, December 24, 2016 1:13 PM
> To: Chandran, Sugesh <sugesh.chandran at intel.com>
> Cc: ovs dev <dev at openvswitch.org>; Jesse Gross <jesse at kernel.org>; Ben
> Pfaff <blp at ovn.org>
> Subject: Re: [PATCH v8] netdev-dpdk: Enable Rx checksum offloading
> feature on DPDK physical ports.
> 
> On Fri, Dec 23, 2016 at 8:16 PM, Sugesh Chandran
> <sugesh.chandran at intel.com> wrote:
> > Add Rx checksum offloading feature support on DPDK physical ports. By
> > default, the Rx checksum offloading is enabled if NIC supports.
> > However, the checksum offloading can be turned OFF either while adding
> > a new DPDK physical port to OVS or at runtime.
> >
> > The rx checksum offloading can be turned off by setting the parameter
> > to 'false'. For eg: To disable the rx checksum offloading when adding
> > a port,
> >
> >      'ovs-vsctl add-port br0 dpdk0 -- \
> >       set Interface dpdk0 type=dpdk options:rx-checksum-offload=false'
> >
> > OR (to disable at run time after port is being added to OVS)
> >
> >     'ovs-vsctl set Interface dpdk0 options:rx-checksum-offload=false'
> >
> > Similarly to turn ON rx checksum offloading at run time,
> >     'ovs-vsctl set Interface dpdk0 options:rx-checksum-offload=true'
> >
> > The Tx checksum offloading support is not implemented due to the
> > following reasons.
> >
> > 1) Checksum offloading and vectorization are mutually exclusive in
> > DPDK poll mode driver. Vector packet processing is turned OFF when
> > checksum offloading is enabled which causes significant performance drop
> at Tx side.
> >
> > 2) Normally, OVS generates checksum for tunnel packets in software at
> > the 'tunnel push' operation, where the tunnel headers are created.
> > However enabling Tx checksum offloading involves,
> >
> > *) Mark every packets for tx checksum offloading at 'tunnel_push' and
> > recirculate.
> > *) At the time of xmit, validate the same flag and instruct the NIC to
> > do the checksum calculation.  In case NIC doesnt support Tx checksum
> > offloading, the checksum calculation has to be done in software before
> > sending out the packets.
> >
> > No significant performance improvement noticed with Tx checksum
> > offloading due to the e overhead of additional validations + non vector
> packet processing.
> > In some test scenarios, it introduces performance drop too.
> >
> > Rx checksum offloading still offers 8-9% of improvement on VxLAN
> > tunneling decapsulation even though the SSE vector Rx function is
> > disabled in DPDK poll mode driver.
> >
> > Signed-off-by: Sugesh Chandran <sugesh.chandran at intel.com>
> > Acked-by: Jesse Gross <jesse at kernel.org>
> >
> > ---
> > v8
> > - Update error log to clearly mention when the checksum offload is
> unsupported.
> > - Rebase to OVS latest master.
> 
> As commented in earlier review, can you update get-config to reflect the
> status of offload for the device?
[Sugesh] The checksum offload is displayed as part of 'ovs-vsctl show' when configured.
Do you think it still needs another get-config?

~/repo/ovs-apr16$ sudo ./utilities/ovs-vsctl show
d26b6bac-a397-4dc3-a514-c4e86e07ad69
    Bridge "br0"
        Port "br0"
            Interface "br0"
                type: internal
        Port "dpdk1"
            Interface "dpdk1"
                type: dpdk
        Port "dpdk0"
            Interface "dpdk0"
                type: dpdk
                options: {rx-checksum-offload="false"}
~/repo/ovs-apr16$
> 
> Thanks,
> Pravin.


More information about the dev mailing list