1# SPDX-License-Identifier: BSD-3-Clause 2# Copyright(c) 2017-2020 Intel Corporation 3 4headers = files( 5 'rte_ip.h', 6 'rte_tcp.h', 7 'rte_udp.h', 8 'rte_esp.h', 9 'rte_sctp.h', 10 'rte_icmp.h', 11 'rte_arp.h', 12 'rte_ether.h', 13 'rte_macsec.h', 14 'rte_vxlan.h', 15 'rte_gre.h', 16 'rte_gtp.h', 17 'rte_net.h', 18 'rte_net_crc.h', 19 'rte_mpls.h', 20 'rte_higig.h', 21 'rte_ecpri.h', 22 'rte_geneve.h', 23 'rte_l2tpv2.h', 24 'rte_ppp.h', 25) 26 27sources = files( 28 'rte_arp.c', 29 'rte_ether.c', 30 'rte_net.c', 31 'rte_net_crc.c', 32) 33deps += ['mbuf'] 34 35if dpdk_conf.has('RTE_ARCH_X86_64') 36 net_crc_sse42_cpu_support = (cc.get_define('__PCLMUL__', args: machine_args) != '') 37 net_crc_avx512_cpu_support = ( 38 cc.get_define('__AVX512F__', args: machine_args) != '' and 39 cc.get_define('__AVX512BW__', args: machine_args) != '' and 40 cc.get_define('__AVX512DQ__', args: machine_args) != '' and 41 cc.get_define('__AVX512VL__', args: machine_args) != '' and 42 cc.get_define('__VPCLMULQDQ__', args: machine_args) != '' 43 ) 44 45 net_crc_sse42_cc_support = (cc.has_argument('-mpclmul') and cc.has_argument('-maes')) 46 net_crc_avx512_cc_support = ( 47 not machine_args.contains('-mno-avx512f') and 48 cc.has_argument('-mavx512f') and 49 cc.has_argument('-mavx512bw') and 50 cc.has_argument('-mavx512dq') and 51 cc.has_argument('-mavx512vl') and 52 cc.has_argument('-mvpclmulqdq') and 53 cc.has_argument('-mavx2') and 54 cc.has_argument('-mavx') 55 ) 56 57 build_static_net_crc_sse42_lib = 0 58 build_static_net_crc_avx512_lib = 0 59 60 if net_crc_sse42_cpu_support == true 61 sources += files('net_crc_sse.c') 62 cflags += ['-DCC_X86_64_SSE42_PCLMULQDQ_SUPPORT'] 63 if net_crc_avx512_cpu_support == true 64 sources += files('net_crc_avx512.c') 65 cflags += ['-DCC_X86_64_AVX512_VPCLMULQDQ_SUPPORT'] 66 elif net_crc_avx512_cc_support == true 67 build_static_net_crc_avx512_lib = 1 68 net_crc_avx512_lib_cflags = [ 69 '-mavx512f', 70 '-mavx512bw', 71 '-mavx512dq', 72 '-mavx512vl', 73 '-mvpclmulqdq', 74 '-mavx2', 75 '-mavx', 76 ] 77 cflags += ['-DCC_X86_64_AVX512_VPCLMULQDQ_SUPPORT'] 78 endif 79 elif net_crc_sse42_cc_support == true 80 build_static_net_crc_sse42_lib = 1 81 net_crc_sse42_lib_cflags = ['-mpclmul', '-maes'] 82 cflags += ['-DCC_X86_64_SSE42_PCLMULQDQ_SUPPORT'] 83 if net_crc_avx512_cc_support == true 84 build_static_net_crc_avx512_lib = 1 85 net_crc_avx512_lib_cflags = [ 86 '-mpclmul', 87 '-maes', 88 '-mavx512f', 89 '-mavx512bw', 90 '-mavx512dq', 91 '-mavx512vl', 92 '-mvpclmulqdq', 93 '-mavx2', 94 '-mavx', 95 ] 96 cflags += ['-DCC_X86_64_AVX512_VPCLMULQDQ_SUPPORT'] 97 endif 98 endif 99 100 if build_static_net_crc_sse42_lib == 1 101 net_crc_sse42_lib = static_library( 102 'net_crc_sse42_lib', 103 'net_crc_sse.c', 104 dependencies: static_rte_eal, 105 c_args: [cflags, 106 net_crc_sse42_lib_cflags]) 107 objs += net_crc_sse42_lib.extract_objects('net_crc_sse.c') 108 endif 109 110 if build_static_net_crc_avx512_lib == 1 111 net_crc_avx512_lib = static_library( 112 'net_crc_avx512_lib', 113 'net_crc_avx512.c', 114 dependencies: static_rte_eal, 115 c_args: [cflags, 116 net_crc_avx512_lib_cflags]) 117 objs += net_crc_avx512_lib.extract_objects('net_crc_avx512.c') 118 endif 119 120elif (dpdk_conf.has('RTE_ARCH_ARM64') and 121 cc.get_define('__ARM_FEATURE_CRYPTO', args: machine_args) != '') 122 sources += files('net_crc_neon.c') 123 cflags += ['-DCC_ARM64_NEON_PMULL_SUPPORT'] 124endif 125