1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2018 Intel Corporation 3 */ 4 5 #ifndef _MACSWAP_COMMON_H_ 6 #define _MACSWAP_COMMON_H_ 7 8 static inline uint64_t 9 ol_flags_init(uint64_t tx_offload) 10 { 11 uint64_t ol_flags = 0; 12 13 ol_flags |= (tx_offload & DEV_TX_OFFLOAD_VLAN_INSERT) ? 14 PKT_TX_VLAN : 0; 15 ol_flags |= (tx_offload & DEV_TX_OFFLOAD_QINQ_INSERT) ? 16 PKT_TX_QINQ : 0; 17 ol_flags |= (tx_offload & DEV_TX_OFFLOAD_MACSEC_INSERT) ? 18 PKT_TX_MACSEC : 0; 19 20 return ol_flags; 21 } 22 23 static inline void 24 vlan_qinq_set(struct rte_mbuf *pkts[], uint16_t nb, 25 uint64_t ol_flags, uint16_t vlan, uint16_t outer_vlan) 26 { 27 int i; 28 29 if (ol_flags & PKT_TX_VLAN) 30 for (i = 0; i < nb; i++) 31 pkts[i]->vlan_tci = vlan; 32 if (ol_flags & PKT_TX_QINQ) 33 for (i = 0; i < nb; i++) 34 pkts[i]->vlan_tci_outer = outer_vlan; 35 } 36 37 static inline void 38 mbuf_field_set(struct rte_mbuf *mb, uint64_t ol_flags) 39 { 40 mb->ol_flags &= IND_ATTACHED_MBUF | EXT_ATTACHED_MBUF; 41 mb->ol_flags |= ol_flags; 42 mb->l2_len = sizeof(struct ether_hdr); 43 mb->l3_len = sizeof(struct ipv4_hdr); 44 } 45 46 #endif /* _MACSWAP_COMMON_H_ */ 47