numam-dpdk/drivers/net/thunderx/nicvf_struct.h
Ferruh Yigit ffc905f3b8 ethdev: separate driver APIs
Create a rte_ethdev_driver.h file and move PMD specific APIs here.
Drivers updated to include this new header file.

There is no update in header content and since ethdev.h included by
ethdev_driver.h, nothing changed from driver point of view, only
logically grouping of APIs. From applications point of view they can't
access to driver specific APIs anymore and they shouldn't.

More PMD specific data structures still remain in ethdev.h because of
inline functions in header use them. Those will be handled separately.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
2018-01-22 01:26:49 +01:00

112 lines
2.3 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(c) 2016 Cavium, Inc
*/
#ifndef _THUNDERX_NICVF_STRUCT_H
#define _THUNDERX_NICVF_STRUCT_H
#include <stdint.h>
#include <rte_spinlock.h>
#include <rte_mempool.h>
#include <rte_mbuf.h>
#include <rte_interrupts.h>
#include <rte_ethdev_driver.h>
#include <rte_memory.h>
struct nicvf_rbdr {
uintptr_t rbdr_status;
uintptr_t rbdr_door;
struct rbdr_entry_t *desc;
nicvf_iova_addr_t phys;
uint32_t buffsz;
uint32_t tail;
uint32_t next_tail;
uint32_t head;
uint32_t qlen_mask;
} __rte_cache_aligned;
struct nicvf_txq {
union sq_entry_t *desc;
nicvf_iova_addr_t phys;
struct rte_mbuf **txbuffs;
uintptr_t sq_head;
uintptr_t sq_door;
struct rte_mempool *pool;
struct nicvf *nic;
void (*pool_free)(struct nicvf_txq *sq);
uint32_t head;
uint32_t tail;
int32_t xmit_bufs;
uint32_t qlen_mask;
uint64_t offloads;
uint16_t queue_id;
uint16_t tx_free_thresh;
} __rte_cache_aligned;
union mbuf_initializer {
struct {
uint16_t data_off;
uint16_t refcnt;
uint16_t nb_segs;
uint16_t port;
} fields;
uint64_t value;
};
struct nicvf_rxq {
uint64_t mbuf_phys_off;
uintptr_t cq_status;
uintptr_t cq_door;
union mbuf_initializer mbuf_initializer;
nicvf_iova_addr_t phys;
union cq_entry_t *desc;
struct nicvf_rbdr *shared_rbdr;
struct nicvf *nic;
struct rte_mempool *pool;
uint32_t head;
uint32_t qlen_mask;
int32_t available_space;
int32_t recv_buffers;
uint16_t rx_free_thresh;
uint16_t queue_id;
uint16_t precharge_cnt;
uint8_t rx_drop_en;
uint16_t port_id;
uint8_t rbptr_offset;
} __rte_cache_aligned;
struct nicvf {
uint8_t vf_id;
uint8_t node;
uintptr_t reg_base;
bool tns_mode;
bool sqs_mode;
bool loopback_supported;
bool pf_acked:1;
bool pf_nacked:1;
uint64_t hwcap;
uint8_t link_up;
uint8_t duplex;
uint32_t speed;
uint32_t msg_enable;
uint16_t device_id;
uint16_t vendor_id;
uint16_t subsystem_device_id;
uint16_t subsystem_vendor_id;
struct nicvf_rbdr *rbdr;
struct nicvf_rss_reta_info rss_info;
struct rte_intr_handle intr_handle;
uint8_t cpi_alg;
uint16_t mtu;
bool vlan_filter_en;
uint8_t mac_addr[ETHER_ADDR_LEN];
/* secondary queue set support */
uint8_t sqs_id;
uint8_t sqs_count;
#define MAX_SQS_PER_VF 11
struct nicvf *snicvf[MAX_SQS_PER_VF];
} __rte_cache_aligned;
#endif /* _THUNDERX_NICVF_STRUCT_H */