1 /* SPDX-License-Identifier: Apache-2.0
2 * Copyright (c) 2023 Cisco Systems, Inc.
8 #include <vppinfra/clib.h>
9 #include <vppinfra/error_bootstrap.h>
10 #include <vppinfra/format.h>
11 #include <vnet/vnet.h>
12 #include <vnet/dev/dev.h>
13 #include <dev_iavf/virtchnl.h>
15 #define IAVF_RX_MAX_DESC_IN_CHAIN 5
17 #define IAVF_TXD_CMD(x) (1 << (x + 4))
18 #define IAVF_TXD_CMD_EXT(x, val) ((u64) val << (x + 4))
19 #define IAVF_TXD_CMD_EOP IAVF_TXD_CMD (0)
20 #define IAVF_TXD_CMD_RS IAVF_TXD_CMD (1)
21 #define IAVF_TXD_CMD_RSV IAVF_TXD_CMD (2)
22 #define IAVF_TXD_CMD_IIPT_NONE IAVF_TXD_CMD_EXT (5, 0)
23 #define IAVF_TXD_CMD_IIPT_IPV6 IAVF_TXD_CMD_EXT (5, 1)
24 #define IAVF_TXD_CMD_IIPT_IPV4_NO_CSUM IAVF_TXD_CMD_EXT (5, 2)
25 #define IAVF_TXD_CMD_IIPT_IPV4 IAVF_TXD_CMD_EXT (5, 3)
26 #define IAVF_TXD_CMD_L4T_UNKNOWN IAVF_TXD_CMD_EXT (8, 0)
27 #define IAVF_TXD_CMD_L4T_TCP IAVF_TXD_CMD_EXT (8, 1)
28 #define IAVF_TXD_CMD_L4T_SCTP IAVF_TXD_CMD_EXT (8, 2)
29 #define IAVF_TXD_CMD_L4T_UDP IAVF_TXD_CMD_EXT (8, 3)
30 #define IAVF_TXD_OFFSET(x, factor, val) \
31 (((u64) val / (u64) factor) << (16 + x))
32 #define IAVF_TXD_OFFSET_MACLEN(val) IAVF_TXD_OFFSET (0, 2, val)
33 #define IAVF_TXD_OFFSET_IPLEN(val) IAVF_TXD_OFFSET (7, 4, val)
34 #define IAVF_TXD_OFFSET_L4LEN(val) IAVF_TXD_OFFSET (14, 4, val)
35 #define IAVF_TXD_DTYP_CTX 0x1ULL
36 #define IAVF_TXD_CTX_CMD_TSO IAVF_TXD_CMD (0)
37 #define IAVF_TXD_CTX_SEG(val, x) (((u64) val) << (30 + x))
38 #define IAVF_TXD_CTX_SEG_TLEN(val) IAVF_TXD_CTX_SEG (val, 0)
39 #define IAVF_TXD_CTX_SEG_MSS(val) IAVF_TXD_CTX_SEG (val, 20)
73 u64 _reserved_err0 : 3;
76 u64 _reserved_err5 : 1;
78 u64 _reserved_err7 : 1;
87 STATIC_ASSERT_SIZEOF (iavf_rx_desc_qw0_t, 8);
88 STATIC_ASSERT_SIZEOF (iavf_rx_desc_qw1_t, 8);
96 iavf_rx_desc_qw0_t qw0;
97 iavf_rx_desc_qw0_t qw1;
104 #ifdef CLIB_HAVE_VEC256
110 STATIC_ASSERT_SIZEOF (iavf_rx_desc_t, 32);
117 #ifdef CLIB_HAVE_VEC128
123 STATIC_ASSERT_SIZEOF (iavf_tx_desc_t, 16);
125 #endif /* _IIAVF_DESC_H_ */