[PATCH v4] net/hns3: fix Rx packet without CRC data

huangdengdui huangdengdui at huawei.com
Sat Nov 30 03:26:22 CET 2024


On 2024/11/30 1:12, Stephen Hemminger wrote:
> On Fri, 29 Nov 2024 09:36:43 +0800
> Jie Hai <haijie1 at huawei.com> wrote:
> 
>>> +
>>> +static inline void
>>> +hns3_recalculate_crc(struct rte_mbuf *m)
>>> +{
>>> +	char *append_data;
>>> +	uint32_t crc;
>>> +
>>> +	crc = rte_net_crc_calc(rte_pktmbuf_mtod(m, void *),
>>> +			       m->data_len, RTE_NET_CRC32_ETH);
>>> +
>>> +	/*
>>> +	 * After CRC is stripped by hardware, pkt_len and data_len do not
>>> +	 * contain the CRC length. Therefore, after CRC data is appended
>>> +	 * by PMD again.
>>> +	 */
>>> +	append_data = rte_pktmbuf_append(m, RTE_ETHER_CRC_LEN);
>>> +
>>> +	/* CRC data is binary data and does not care about the byte order. */
>>> +	memcpy(append_data, &crc, RTE_ETHER_CRC_LEN);
>>> +}
> 
> As mentioned previously.
> Including CRC in the packet length (pkt_len and data_len) is not the
> current behavior of most drivers. Therefore hns3 should follow the precedent
> of other drivers and put it past the data.

Yes. This patch does not change the original behavior.
In subsequent processing, crc_len is deducted from pkt_len and data_len.

> 
> In the future the KEEP_CRC flag needs more work to be useable. It needs
> documentation and flag in mbuf (similar to hash and checksum) so that application
> can no that it is present and valid.
> 
> Please resend the patch as a bugfix that puts crc after the data.


More information about the dev mailing list