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