On 2/6/2024 1:10 AM, Jie Hai wrote: > From: Dengdui Huang <huangdeng...@huawei.com> > > When KEEP_CRC offload is enabled, some packets will be truncated and > the CRC is still be stripped in following cases: > 1. For HIP08 hardware, the packet type is TCP and the length > is less than or equal to 60B. > 2. For other hardwares, the packet type is IP and the length > is less than or equal to 60B. >
If a device doesn't support the offload by some packets, it can be option to disable offload for that device, instead of calculating it in software and append it. Unless you have a specific usecase, or requirement to support the offload. <...> > @@ -2492,10 +2544,16 @@ hns3_recv_pkts_simple(void *rx_queue, > goto pkt_err; > > rxm->packet_type = hns3_rx_calc_ptype(rxq, l234_info, ol_info); > - > if (rxm->packet_type == RTE_PTYPE_L2_ETHER_TIMESYNC) > rxm->ol_flags |= RTE_MBUF_F_RX_IEEE1588_PTP; > > + if (unlikely(rxq->crc_len > 0)) { > + if (hns3_need_recalculate_crc(rxq, rxm)) > + hns3_recalculate_crc(rxq, rxm); > + rxm->pkt_len -= rxq->crc_len; > + rxm->data_len -= rxq->crc_len; > Removing 'crc_len' from 'mbuf->pkt_len' & 'mbuf->data_len' is practically same as stripping CRC. We don't count CRC length in the statistics, but it should be accessible in the payload by the user.