2 // Copyright (c) 2010-2020 Intel Corporation
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://www.apache.org/licenses/LICENSE-2.0
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
20 #include <rte_ether.h>
21 #include "prox_compat.h"
26 void set_global_defaults(struct prox_cfg* prox_cfg);
27 void set_task_defaults(struct prox_cfg* prox_cfg, struct lcore_cfg* lcore_cfg_init);
28 void set_port_defaults(void);
30 #define MAX_PKT_SIZE 10000
31 #define MAX_PKT_BURST 64
32 #define MAX_RING_BURST 64
33 #define DUMP_PKT_LEN MAX_PKT_SIZE
34 #define MAX_IMIX_PKTS 128
36 #if MAX_RING_BURST < MAX_PKT_BURST
37 #error MAX_RING_BURST < MAX_PKT_BURST
40 #define NUM_VCPES 65536
41 #define GRE_BUCKET_ENTRIES 4
42 #define MAX_GRE (NUM_VCPES * GRE_BUCKET_ENTRIES)
43 #define MAX_RSS_QUEUE_BITS 9
45 #define PROX_VLAN_TAG_SIZE 4
47 /* MBUF_SIZE can be configured based on the following:
48 - If only one segment is used ETH_TXQ_FLAGS_NOMULTSEGS can be used resulting
49 in vector mode used for transmission hence higher performance
50 - Only one segment is used by the rx function if the mbuf size is big enough
51 - Bigger mbufs result in more memory used, hence slighly lower performance (DTLB misses)
52 - Selecting the smaller mbuf is not obvious as pmds might behave slighly differently:
53 - on ixgbe a 1526 + 256 mbuf size will cause any packets bigger than 1024 bytes to be segmented
54 - on i40e a 1526 + 256 mbuf size will cause any packets bigger than 1408 bytes to be segmented
55 - other pmds might have additional requirements
56 As the performance decrease due to the usage of bigger mbuf is not very important, we prefer
57 here to use the same, bigger, mbuf size for all pmds, making the code easier to support.
58 An mbuf size of 2048 + 128 + 128 + 8 can hold a 2048 packet, and only one segment will be used
59 except if jumbo frames are enabled. +8 (VLAN) is needed for i40e (and maybe other pmds).
60 TX_MBUF_SIZE is used for when transmitting only: in this case the mbuf size can be smaller.
62 #define MBUF_SIZE (2048 + (unsigned)sizeof(struct rte_mbuf) + RTE_PKTMBUF_HEADROOM + 2 * PROX_VLAN_TAG_SIZE)
63 #define TX_MBUF_SIZE (PROX_RTE_ETHER_MAX_LEN + (unsigned)sizeof(struct rte_mbuf) + RTE_PKTMBUF_HEADROOM + 2 * PROX_VLAN_TAG_SIZE)
65 #define PROX_MTU PROX_RTE_ETHER_MAX_LEN - PROX_RTE_ETHER_HDR_LEN - PROX_RTE_ETHER_CRC_LEN
66 #define NO_VDEV_PORT 0xFF
68 #endif /* _DEFAULTS_H_ */