[dpdk-dev] Questions about keeping CRC

Lance Richardson lance.richardson at broadcom.com
Fri Mar 19 18:02:47 CET 2021


On Fri, Mar 19, 2021 at 12:07 PM Stephen Hemminger
<stephen at networkplumber.org> wrote:
>
> On Fri, 19 Mar 2021 20:13:20 +0800
> "Min Hu (Connor)" <humin29 at huawei.com> wrote:
>
> > Hi, all,
> >       DPDK has introduced one offload: DEV_RX_OFFLOAD_KEEP_CRC. It means that
> > the device has the ablility of keeping CRC(four bytes at the end of
> > packet)of packet in RX.
> >       In common scenarios, When one packet enter into NIC device, NIC
> > will check the CRC and then strip the CRC,at last send the packet into
> > the buffer.
> >       So my question is:
> >        why the DEV_RX_OFFLOAD_KEEP_CRC is introduced into DPDK?  I think that
> > when the packet enter into the NIC, the CRC will has no significance to
> > APP. Or is there any scenarios that CRC is useful for APP?
> >       Thanks for your reply.
>
> Your right it doesn't make sense for almost all applications. Maybe an application
> testing for bad NIC hardware might use it.
>
> It is one of those features introduced in DPDK because "our hardware can do it,
> therefore it ought to be exposed in DPDK API"...

The only use case I have seen was in L2 forwarding applications which would
receive packets with CRC preserved and then transmit them with an indication
to the NIC that the CRC should not be regenerated. The idea was that if the
packet was corrupted anywhere in the system (e.g. by a memory error), it
could be detected at the receiver. Of course DPDK doesn't have the notion
of transmitting a packet without regenerating the CRC, so that use case
doesn't seem to apply here.

I think that DEV_RX_OFFLOAD_KEEP_CRC is not likely to be useful, but
I would be interested in hearing otherwise. I happen to know of at least one
PMD that advertises this ability but doesn't actually behave any differently
when it is enabled.


More information about the dev mailing list