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