]> git.proxmox.com Git - ceph.git/blame - ceph/src/spdk/dpdk/drivers/net/szedata2/rte_eth_szedata2.h
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / spdk / dpdk / drivers / net / szedata2 / rte_eth_szedata2.h
CommitLineData
11fdf7f2
TL
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2015 - 2016 CESNET
3 */
4
5#ifndef RTE_PMD_SZEDATA2_H_
6#define RTE_PMD_SZEDATA2_H_
7
8#include <stdint.h>
9
10#include <libsze2.h>
11
12#include <rte_common.h>
13
14/* PCI Vendor ID */
15#define PCI_VENDOR_ID_NETCOPE 0x1b26
f67539c2 16#define PCI_VENDOR_ID_SILICOM 0x1c2c
11fdf7f2
TL
17
18/* PCI Device IDs */
19#define PCI_DEVICE_ID_NETCOPE_COMBO80G 0xcb80
20#define PCI_DEVICE_ID_NETCOPE_COMBO100G 0xc1c1
21#define PCI_DEVICE_ID_NETCOPE_COMBO100G2 0xc2c1
22#define PCI_DEVICE_ID_NETCOPE_NFB200G2QL 0xc250
f67539c2
TL
23#define PCI_DEVICE_ID_FB2CGG3 0x00d0
24#define PCI_DEVICE_ID_FB2CGG3D 0xc240
11fdf7f2
TL
25
26/* szedata2_packet header length == 4 bytes == 2B segment size + 2B hw size */
27#define RTE_SZE2_PACKET_HEADER_SIZE 4
28
29#define RTE_SZE2_MMIO_MAX 10
30
31/*!
32 * Round 'what' to the nearest larger (or equal) multiple of '8'
33 * (szedata2 packet is aligned to 8 bytes)
34 */
35#define RTE_SZE2_ALIGN8(what) RTE_ALIGN(what, 8)
36
37/*! main handle structure */
38struct szedata {
39 int fd;
40 struct sze2_instance_info *info;
41 uint32_t *write_size;
42 void *space[RTE_SZE2_MMIO_MAX];
43 struct szedata_lock lock[2][2];
44
45 __u32 *rx_asize, *tx_asize;
46
47 /* szedata_read_next variables - to keep context (ct) */
48
49 /*
50 * rx
51 */
52 /** initial sze lock ptr */
53 const struct szedata_lock *ct_rx_lck_orig;
54 /** current sze lock ptr (initial or next) */
55 const struct szedata_lock *ct_rx_lck;
56 /** remaining bytes (not read) within current lock */
57 unsigned int ct_rx_rem_bytes;
58 /** current pointer to locked memory */
59 unsigned char *ct_rx_cur_ptr;
60 /**
61 * allocated buffer to store RX packet if it was split
62 * into 2 buffers
63 */
64 unsigned char *ct_rx_buffer;
65 /** registered function to provide filtering based on hwdata */
66 int (*ct_rx_filter)(u_int16_t hwdata_len, u_char *hwdata);
67
68 /*
69 * tx
70 */
71 /**
72 * buffer for tx - packet is prepared here
73 * (in future for burst write)
74 */
75 unsigned char *ct_tx_buffer;
76 /** initial sze TX lock ptrs - number according to TX interfaces */
77 const struct szedata_lock **ct_tx_lck_orig;
78 /** current sze TX lock ptrs - number according to TX interfaces */
79 const struct szedata_lock **ct_tx_lck;
80 /** already written bytes in both locks */
81 unsigned int *ct_tx_written_bytes;
82 /** remaining bytes (not written) within current lock */
83 unsigned int *ct_tx_rem_bytes;
84 /** current pointers to locked memory */
85 unsigned char **ct_tx_cur_ptr;
86 /** NUMA node closest to PCIe device, or -1 */
87 int numa_node;
88};
89
90#endif /* RTE_PMD_SZEDATA2_H_ */