On Thu,  6 Nov 2025 23:34:57 -0800
Dimon Zhao <[email protected]> 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?

Reply via email to