1# SPDX-License-Identifier: BSD-3-Clause 2# Copyright(C) 2021 Marvell. 3# 4 5if not dpdk_conf.get('RTE_ARCH_64') 6 build = false 7 reason = 'only supported on 64-bit' 8 subdir_done() 9endif 10 11if meson.is_cross_build() 12 soc_type = meson.get_external_property('platform', '') 13else 14 soc_type = platform 15endif 16 17if soc_type != 'cn9k' and soc_type != 'cn10k' and soc_type != 'cn20k' 18 soc_type = 'all' 19endif 20 21sources = files( 22 'cnxk_ethdev.c', 23 'cnxk_ethdev_cman.c', 24 'cnxk_ethdev_devargs.c', 25 'cnxk_ethdev_mcs.c', 26 'cnxk_ethdev_mtr.c', 27 'cnxk_ethdev_ops.c', 28 'cnxk_ethdev_sec.c', 29 'cnxk_ethdev_telemetry.c', 30 'cnxk_ethdev_sec_telemetry.c', 31 'cnxk_eswitch.c', 32 'cnxk_eswitch_devargs.c', 33 'cnxk_eswitch_flow.c', 34 'cnxk_eswitch_rxtx.c', 35 'cnxk_link.c', 36 'cnxk_lookup.c', 37 'cnxk_ptp.c', 38 'cnxk_flow.c', 39 'cnxk_rep.c', 40 'cnxk_rep_msg.c', 41 'cnxk_rep_ops.c', 42 'cnxk_rep_flow.c', 43 'cnxk_stats.c', 44 'cnxk_tm.c', 45) 46 47disable_template = false 48if meson.version().version_compare('>=1.1.0') 49 if '-DCNXK_DIS_TMPLT_FUNC' in meson.build_options() 50 disable_template = true 51 endif 52endif 53 54if soc_type == 'cn9k' or soc_type == 'all' 55# CN9K 56sources += files( 57 'cn9k_ethdev.c', 58 'cn9k_ethdev_sec.c', 59 'cn9k_flow.c', 60 'cn9k_rx_select.c', 61 'cn9k_tx_select.c', 62) 63 64if host_machine.cpu_family().startswith('aarch') and not disable_template 65sources += files( 66 'rx/cn9k/rx_0_15.c', 67 'rx/cn9k/rx_16_31.c', 68 'rx/cn9k/rx_32_47.c', 69 'rx/cn9k/rx_48_63.c', 70 'rx/cn9k/rx_64_79.c', 71 'rx/cn9k/rx_80_95.c', 72 'rx/cn9k/rx_96_111.c', 73 'rx/cn9k/rx_112_127.c', 74 'rx/cn9k/rx_0_15_mseg.c', 75 'rx/cn9k/rx_16_31_mseg.c', 76 'rx/cn9k/rx_32_47_mseg.c', 77 'rx/cn9k/rx_48_63_mseg.c', 78 'rx/cn9k/rx_64_79_mseg.c', 79 'rx/cn9k/rx_80_95_mseg.c', 80 'rx/cn9k/rx_96_111_mseg.c', 81 'rx/cn9k/rx_112_127_mseg.c', 82 'rx/cn9k/rx_0_15_vec.c', 83 'rx/cn9k/rx_16_31_vec.c', 84 'rx/cn9k/rx_32_47_vec.c', 85 'rx/cn9k/rx_48_63_vec.c', 86 'rx/cn9k/rx_64_79_vec.c', 87 'rx/cn9k/rx_80_95_vec.c', 88 'rx/cn9k/rx_96_111_vec.c', 89 'rx/cn9k/rx_112_127_vec.c', 90 'rx/cn9k/rx_0_15_vec_mseg.c', 91 'rx/cn9k/rx_16_31_vec_mseg.c', 92 'rx/cn9k/rx_32_47_vec_mseg.c', 93 'rx/cn9k/rx_48_63_vec_mseg.c', 94 'rx/cn9k/rx_64_79_vec_mseg.c', 95 'rx/cn9k/rx_80_95_vec_mseg.c', 96 'rx/cn9k/rx_96_111_vec_mseg.c', 97 'rx/cn9k/rx_112_127_vec_mseg.c', 98 'rx/cn9k/rx_all_offload.c', 99) 100 101sources += files( 102 'tx/cn9k/tx_0_15.c', 103 'tx/cn9k/tx_16_31.c', 104 'tx/cn9k/tx_32_47.c', 105 'tx/cn9k/tx_48_63.c', 106 'tx/cn9k/tx_64_79.c', 107 'tx/cn9k/tx_80_95.c', 108 'tx/cn9k/tx_96_111.c', 109 'tx/cn9k/tx_112_127.c', 110 'tx/cn9k/tx_0_15_mseg.c', 111 'tx/cn9k/tx_16_31_mseg.c', 112 'tx/cn9k/tx_32_47_mseg.c', 113 'tx/cn9k/tx_48_63_mseg.c', 114 'tx/cn9k/tx_64_79_mseg.c', 115 'tx/cn9k/tx_80_95_mseg.c', 116 'tx/cn9k/tx_96_111_mseg.c', 117 'tx/cn9k/tx_112_127_mseg.c', 118 'tx/cn9k/tx_0_15_vec.c', 119 'tx/cn9k/tx_16_31_vec.c', 120 'tx/cn9k/tx_32_47_vec.c', 121 'tx/cn9k/tx_48_63_vec.c', 122 'tx/cn9k/tx_64_79_vec.c', 123 'tx/cn9k/tx_80_95_vec.c', 124 'tx/cn9k/tx_96_111_vec.c', 125 'tx/cn9k/tx_112_127_vec.c', 126 'tx/cn9k/tx_0_15_vec_mseg.c', 127 'tx/cn9k/tx_16_31_vec_mseg.c', 128 'tx/cn9k/tx_32_47_vec_mseg.c', 129 'tx/cn9k/tx_48_63_vec_mseg.c', 130 'tx/cn9k/tx_64_79_vec_mseg.c', 131 'tx/cn9k/tx_80_95_vec_mseg.c', 132 'tx/cn9k/tx_96_111_vec_mseg.c', 133 'tx/cn9k/tx_112_127_vec_mseg.c', 134 'tx/cn9k/tx_all_offload.c', 135) 136else 137sources += files( 138 'rx/cn9k/rx_all_offload.c', 139 'tx/cn9k/tx_all_offload.c', 140) 141endif 142endif 143 144if soc_type == 'cn10k' or soc_type == 'all' 145# CN10K 146sources += files( 147 'cn10k_ethdev.c', 148 'cn10k_ethdev_sec.c', 149 'cn10k_flow.c', 150 'cn10k_rx_select.c', 151 'cn10k_tx_select.c', 152) 153 154if host_machine.cpu_family().startswith('aarch') and not disable_template 155sources += files( 156 'rx/cn10k/rx_0_15.c', 157 'rx/cn10k/rx_16_31.c', 158 'rx/cn10k/rx_32_47.c', 159 'rx/cn10k/rx_48_63.c', 160 'rx/cn10k/rx_64_79.c', 161 'rx/cn10k/rx_80_95.c', 162 'rx/cn10k/rx_96_111.c', 163 'rx/cn10k/rx_112_127.c', 164 'rx/cn10k/rx_0_15_mseg.c', 165 'rx/cn10k/rx_16_31_mseg.c', 166 'rx/cn10k/rx_32_47_mseg.c', 167 'rx/cn10k/rx_48_63_mseg.c', 168 'rx/cn10k/rx_64_79_mseg.c', 169 'rx/cn10k/rx_80_95_mseg.c', 170 'rx/cn10k/rx_96_111_mseg.c', 171 'rx/cn10k/rx_112_127_mseg.c', 172 'rx/cn10k/rx_0_15_vec.c', 173 'rx/cn10k/rx_16_31_vec.c', 174 'rx/cn10k/rx_32_47_vec.c', 175 'rx/cn10k/rx_48_63_vec.c', 176 'rx/cn10k/rx_64_79_vec.c', 177 'rx/cn10k/rx_80_95_vec.c', 178 'rx/cn10k/rx_96_111_vec.c', 179 'rx/cn10k/rx_112_127_vec.c', 180 'rx/cn10k/rx_0_15_vec_mseg.c', 181 'rx/cn10k/rx_16_31_vec_mseg.c', 182 'rx/cn10k/rx_32_47_vec_mseg.c', 183 'rx/cn10k/rx_48_63_vec_mseg.c', 184 'rx/cn10k/rx_64_79_vec_mseg.c', 185 'rx/cn10k/rx_80_95_vec_mseg.c', 186 'rx/cn10k/rx_96_111_vec_mseg.c', 187 'rx/cn10k/rx_112_127_vec_mseg.c', 188 'rx/cn10k/rx_all_offload.c', 189) 190 191sources += files( 192 'tx/cn10k/tx_0_15.c', 193 'tx/cn10k/tx_16_31.c', 194 'tx/cn10k/tx_32_47.c', 195 'tx/cn10k/tx_48_63.c', 196 'tx/cn10k/tx_64_79.c', 197 'tx/cn10k/tx_80_95.c', 198 'tx/cn10k/tx_96_111.c', 199 'tx/cn10k/tx_112_127.c', 200 'tx/cn10k/tx_0_15_mseg.c', 201 'tx/cn10k/tx_16_31_mseg.c', 202 'tx/cn10k/tx_32_47_mseg.c', 203 'tx/cn10k/tx_48_63_mseg.c', 204 'tx/cn10k/tx_64_79_mseg.c', 205 'tx/cn10k/tx_80_95_mseg.c', 206 'tx/cn10k/tx_96_111_mseg.c', 207 'tx/cn10k/tx_112_127_mseg.c', 208 'tx/cn10k/tx_0_15_vec.c', 209 'tx/cn10k/tx_16_31_vec.c', 210 'tx/cn10k/tx_32_47_vec.c', 211 'tx/cn10k/tx_48_63_vec.c', 212 'tx/cn10k/tx_64_79_vec.c', 213 'tx/cn10k/tx_80_95_vec.c', 214 'tx/cn10k/tx_96_111_vec.c', 215 'tx/cn10k/tx_112_127_vec.c', 216 'tx/cn10k/tx_0_15_vec_mseg.c', 217 'tx/cn10k/tx_16_31_vec_mseg.c', 218 'tx/cn10k/tx_32_47_vec_mseg.c', 219 'tx/cn10k/tx_48_63_vec_mseg.c', 220 'tx/cn10k/tx_64_79_vec_mseg.c', 221 'tx/cn10k/tx_80_95_vec_mseg.c', 222 'tx/cn10k/tx_96_111_vec_mseg.c', 223 'tx/cn10k/tx_112_127_vec_mseg.c', 224 'tx/cn10k/tx_all_offload.c', 225) 226else 227sources += files( 228 'rx/cn10k/rx_all_offload.c', 229 'tx/cn10k/tx_all_offload.c', 230) 231endif 232endif 233 234 235if soc_type == 'cn20k' or soc_type == 'all' 236# CN20K 237sources += files( 238 'cn20k_ethdev.c', 239 'cn20k_rx_select.c', 240 'cn20k_tx_select.c', 241) 242 243if host_machine.cpu_family().startswith('aarch') and not disable_template 244sources += files( 245 'rx/cn20k/rx_0_15.c', 246 'rx/cn20k/rx_16_31.c', 247 'rx/cn20k/rx_32_47.c', 248 'rx/cn20k/rx_48_63.c', 249 'rx/cn20k/rx_64_79.c', 250 'rx/cn20k/rx_80_95.c', 251 'rx/cn20k/rx_96_111.c', 252 'rx/cn20k/rx_112_127.c', 253 'rx/cn20k/rx_0_15_mseg.c', 254 'rx/cn20k/rx_16_31_mseg.c', 255 'rx/cn20k/rx_32_47_mseg.c', 256 'rx/cn20k/rx_48_63_mseg.c', 257 'rx/cn20k/rx_64_79_mseg.c', 258 'rx/cn20k/rx_80_95_mseg.c', 259 'rx/cn20k/rx_96_111_mseg.c', 260 'rx/cn20k/rx_112_127_mseg.c', 261 'rx/cn20k/rx_0_15_vec.c', 262 'rx/cn20k/rx_16_31_vec.c', 263 'rx/cn20k/rx_32_47_vec.c', 264 'rx/cn20k/rx_48_63_vec.c', 265 'rx/cn20k/rx_64_79_vec.c', 266 'rx/cn20k/rx_80_95_vec.c', 267 'rx/cn20k/rx_96_111_vec.c', 268 'rx/cn20k/rx_112_127_vec.c', 269 'rx/cn20k/rx_0_15_vec_mseg.c', 270 'rx/cn20k/rx_16_31_vec_mseg.c', 271 'rx/cn20k/rx_32_47_vec_mseg.c', 272 'rx/cn20k/rx_48_63_vec_mseg.c', 273 'rx/cn20k/rx_64_79_vec_mseg.c', 274 'rx/cn20k/rx_80_95_vec_mseg.c', 275 'rx/cn20k/rx_96_111_vec_mseg.c', 276 'rx/cn20k/rx_112_127_vec_mseg.c', 277 'rx/cn20k/rx_all_offload.c', 278) 279 280sources += files( 281 'tx/cn20k/tx_0_15.c', 282 'tx/cn20k/tx_16_31.c', 283 'tx/cn20k/tx_32_47.c', 284 'tx/cn20k/tx_48_63.c', 285 'tx/cn20k/tx_64_79.c', 286 'tx/cn20k/tx_80_95.c', 287 'tx/cn20k/tx_96_111.c', 288 'tx/cn20k/tx_112_127.c', 289 'tx/cn20k/tx_0_15_mseg.c', 290 'tx/cn20k/tx_16_31_mseg.c', 291 'tx/cn20k/tx_32_47_mseg.c', 292 'tx/cn20k/tx_48_63_mseg.c', 293 'tx/cn20k/tx_64_79_mseg.c', 294 'tx/cn20k/tx_80_95_mseg.c', 295 'tx/cn20k/tx_96_111_mseg.c', 296 'tx/cn20k/tx_112_127_mseg.c', 297 'tx/cn20k/tx_0_15_vec.c', 298 'tx/cn20k/tx_16_31_vec.c', 299 'tx/cn20k/tx_32_47_vec.c', 300 'tx/cn20k/tx_48_63_vec.c', 301 'tx/cn20k/tx_64_79_vec.c', 302 'tx/cn20k/tx_80_95_vec.c', 303 'tx/cn20k/tx_96_111_vec.c', 304 'tx/cn20k/tx_112_127_vec.c', 305 'tx/cn20k/tx_0_15_vec_mseg.c', 306 'tx/cn20k/tx_16_31_vec_mseg.c', 307 'tx/cn20k/tx_32_47_vec_mseg.c', 308 'tx/cn20k/tx_48_63_vec_mseg.c', 309 'tx/cn20k/tx_64_79_vec_mseg.c', 310 'tx/cn20k/tx_80_95_vec_mseg.c', 311 'tx/cn20k/tx_96_111_vec_mseg.c', 312 'tx/cn20k/tx_112_127_vec_mseg.c', 313 'tx/cn20k/tx_all_offload.c', 314) 315else 316sources += files( 317 'rx/cn20k/rx_all_offload.c', 318 'tx/cn20k/tx_all_offload.c', 319) 320endif 321endif 322 323 324deps += ['bus_pci', 'cryptodev', 'eventdev', 'security'] 325deps += ['common_cnxk', 'mempool_cnxk'] 326 327# Allow implicit vector conversions and strict aliasing warning 328extra_flags = ['-flax-vector-conversions', '-Wno-strict-aliasing'] 329if cc.get_id() == 'clang' 330 extra_flags += ['-Wno-asm-operand-widths'] 331endif 332foreach flag: extra_flags 333 if cc.has_argument(flag) 334 cflags += flag 335 endif 336endforeach 337 338headers = files('rte_pmd_cnxk.h') 339 340require_iova_in_mbuf = false 341 342annotate_locks = false 343