net/tap: implement RSS using eBPF
[dpdk.git] / drivers / net / tap / Makefile
1 # SPDX-License-Identifier: BSD-3-Clause
2 # Copyright(c) 2016 Intel Corporation
3
4 include $(RTE_SDK)/mk/rte.vars.mk
5
6 #
7 # library name
8 #
9 LIB = librte_pmd_tap.a
10
11 EXPORT_MAP := rte_pmd_tap_version.map
12
13 LIBABIVER := 1
14
15 #
16 # TAP_MAX_QUEUES must be a power of 2
17 #
18 ifeq ($(TAP_MAX_QUEUES),)
19         TAP_MAX_QUEUES = 16
20 endif
21 CFLAGS += -O3
22 CFLAGS += -I$(SRCDIR)
23 CFLAGS += -I.
24 CFLAGS += $(WERROR_FLAGS)
25 LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
26 LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs -lrte_hash
27 LDLIBS += -lrte_bus_vdev
28
29 CFLAGS += -DTAP_MAX_QUEUES=$(TAP_MAX_QUEUES)
30
31 #
32 # all source are stored in SRCS-y
33 #
34 SRCS-$(CONFIG_RTE_LIBRTE_PMD_TAP) += rte_eth_tap.c
35 SRCS-$(CONFIG_RTE_LIBRTE_PMD_TAP) += tap_flow.c
36 SRCS-$(CONFIG_RTE_LIBRTE_PMD_TAP) += tap_netlink.c
37 SRCS-$(CONFIG_RTE_LIBRTE_PMD_TAP) += tap_tcmsgs.c
38 SRCS-$(CONFIG_RTE_LIBRTE_PMD_TAP) += tap_bpf_api.c
39
40 include $(RTE_SDK)/mk/rte.lib.mk
41
42 # Generate and clean-up tap_autoconf.h.
43
44 export CC CFLAGS CPPFLAGS EXTRA_CFLAGS EXTRA_CPPFLAGS
45 export AUTO_CONFIG_CFLAGS = -Wno-error
46
47 ifndef V
48 AUTOCONF_OUTPUT := >/dev/null
49 endif
50
51 tap_autoconf.h.new: FORCE
52
53 tap_autoconf.h.new: $(RTE_SDK)/buildtools/auto-config-h.sh
54         $Q $(RM) -f -- '$@'
55         $Q sh -- '$<' '$@' \
56                 HAVE_TC_FLOWER \
57                 linux/pkt_cls.h \
58                 enum TCA_FLOWER_UNSPEC \
59                 $(AUTOCONF_OUTPUT)
60         $Q sh -- '$<' '$@' \
61                 HAVE_TC_VLAN_ID \
62                 linux/pkt_cls.h \
63                 enum TCA_FLOWER_KEY_VLAN_PRIO \
64                 $(AUTOCONF_OUTPUT)
65         $Q sh -- '$<' '$@' \
66                 HAVE_TC_BPF \
67                 linux/pkt_cls.h \
68                 enum TCA_BPF_UNSPEC \
69                 $(AUTOCONF_OUTPUT)
70         $Q sh -- '$<' '$@' \
71                 HAVE_TC_BPF_FD \
72                 linux/pkt_cls.h \
73                 enum TCA_BPF_FD \
74                 $(AUTOCONF_OUTPUT)
75         $Q sh -- '$<' '$@' \
76                 HAVE_TC_ACT_BPF \
77                 linux/tc_act/tc_bpf.h \
78                 enum TCA_ACT_BPF_UNSPEC \
79                 $(AUTOCONF_OUTPUT)
80         $Q sh -- '$<' '$@' \
81                 HAVE_TC_ACT_BPF_FD \
82                 linux/tc_act/tc_bpf.h \
83                 enum TCA_ACT_BPF_FD \
84                 $(AUTOCONF_OUTPUT)
85         $Q sh -- '$<' '$@' \
86                 HAVE_BPF_PROG_LOAD \
87                 linux/bpf.h \
88                 enum BPF_PROG_LOAD \
89                 $(AUTOCONF_OUTPUT)
90
91 # Create tap_autoconf.h or update it in case it differs from the new one.
92
93 tap_autoconf.h: tap_autoconf.h.new
94         $Q [ -f '$@' ] && \
95                 cmp '$<' '$@' $(AUTOCONF_OUTPUT) || \
96                 mv '$<' '$@'
97
98 $(SRCS-$(CONFIG_RTE_LIBRTE_PMD_TAP):.c=.o): tap_autoconf.h
99
100 clean_tap: FORCE
101         $Q rm -f -- tap_autoconf.h tap_autoconf.h.new
102
103 clean: clean_tap