66eaf2062c7f79f3fb539fec229c2a8aa321affd
[dpdk.git] / drivers / net / hinic / hinic_pmd_ethdev.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2017 Huawei Technologies Co., Ltd
3  */
4
5 #ifndef _HINIC_PMD_ETHDEV_H_
6 #define _HINIC_PMD_ETHDEV_H_
7
8 #include <rte_ethdev.h>
9 #include <rte_ethdev_core.h>
10
11 #include "base/hinic_compat.h"
12 #include "base/hinic_pmd_cfg.h"
13
14 #define HINIC_DEV_NAME_LEN      32
15 #define HINIC_MAX_RX_QUEUES     64
16
17 /* mbuf pool for copy invalid mbuf segs */
18 #define HINIC_COPY_MEMPOOL_DEPTH        128
19 #define HINIC_COPY_MBUF_SIZE            4096
20
21 #define SIZE_8BYTES(size)       (ALIGN((u32)(size), 8) >> 3)
22
23 #define HINIC_PKTLEN_TO_MTU(pktlen)     \
24         ((pktlen) - (ETH_HLEN + ETH_CRC_LEN))
25
26 #define HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev) \
27         ((struct hinic_nic_dev *)(dev)->data->dev_private)
28
29 #define HINIC_MAX_QUEUE_DEPTH           4096
30 #define HINIC_MIN_QUEUE_DEPTH           128
31 #define HINIC_TXD_ALIGN                 1
32 #define HINIC_RXD_ALIGN                 1
33
34 #define HINIC_UINT32_BIT_SIZE      (CHAR_BIT * sizeof(uint32_t))
35 #define HINIC_VFTA_SIZE            (4096 / HINIC_UINT32_BIT_SIZE)
36
37 enum hinic_dev_status {
38         HINIC_DEV_INIT,
39         HINIC_DEV_CLOSE,
40         HINIC_DEV_START,
41         HINIC_DEV_INTR_EN,
42 };
43
44 /* hinic nic_device */
45 struct hinic_nic_dev {
46         /* hardware device */
47         struct hinic_hwdev *hwdev;
48         struct hinic_txq **txqs;
49         struct hinic_rxq **rxqs;
50         struct rte_mempool *cpy_mpool;
51         u16 num_qps;
52         u16 num_sq;
53         u16 num_rq;
54         u16 mtu_size;
55         u8 rss_tmpl_idx;
56         u8 rss_indir_flag;
57         u8 num_rss;
58         u8 rx_queue_list[HINIC_MAX_RX_QUEUES];
59
60         u32 vfta[HINIC_VFTA_SIZE];      /* VLAN bitmap */
61
62         /* info */
63         unsigned int flags;
64         struct nic_service_cap nic_cap;
65         u32 rx_mode_status;     /* promisc or allmulticast */
66         unsigned long dev_status;
67
68         /* dpdk only */
69         char proc_dev_name[HINIC_DEV_NAME_LEN];
70         /* PF0->COS4, PF1->COS5, PF2->COS6, PF3->COS7,
71          * vf: the same with associate pf
72          */
73         u32 default_cos;
74 };
75
76 #endif /* _HINIC_PMD_ETHDEV_H_ */