[PATCH v1 2/4] net/nbl: add support for Tx and Rx VLAN offload

Stephen Hemminger stephen at networkplumber.org
Fri Nov 7 17:10:26 CET 2025


On Thu,  6 Nov 2025 23:34:57 -0800
Dimon Zhao <dimon.zhao at nebula-matrix.com> wrote:

> +static inline void nbl_res_txrx_vlan_insert_out_mbuf(struct rte_mbuf *tx_pkt,
> +						     union nbl_tx_extend_head *u,
> +						     u16 vlan_proto, u16 vlan_tci)
> +{
> +	struct rte_vlan_hdr *vlan_hdr;
> +	struct rte_ether_hdr *ether_hdr;
> +
> +	ether_hdr = (struct rte_ether_hdr *)((u8 *)u + sizeof(struct nbl_tx_ehdr_leonis));
> +	rte_memcpy(ether_hdr, rte_pktmbuf_mtod(tx_pkt, u8 *), sizeof(struct rte_ether_hdr));
> +
> +	vlan_hdr = (struct rte_vlan_hdr *)(ether_hdr + 1);
> +	vlan_hdr->vlan_tci = rte_cpu_to_be_16(vlan_tci);
> +	vlan_hdr->eth_proto = ether_hdr->ether_type;
> +
> +	ether_hdr->ether_type = rte_cpu_to_be_16(vlan_proto);
> +}
> +

Please do not use rte_memcpy for small fixed size structures.
Prefer:
	rte_ether_addr_copy
	struct assignment
	memcpy

There already is a standard function for vlan insert, could this be used here?


More information about the dev mailing list