1/* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2018 Marvell International Ltd. 3 * Copyright(c) 2018 Semihalf. 4 * All rights reserved. 5 */ 6 7#ifndef _MVNETA_ETHDEV_H_ 8#define _MVNETA_ETHDEV_H_ 9 10#include <rte_ethdev.h> 11#include <rte_malloc.h> 12#include <rte_log.h> 13 14/* 15 * container_of is defined by both DPDK and MUSDK, 16 * we'll declare only one version. 17 * 18 * Note that it is not used in this PMD anyway. 19 */ 20#ifdef container_of 21#undef container_of 22#endif 23 24#include <drivers/mv_neta.h> 25#include <drivers/mv_neta_ppio.h> 26 27/** Packet offset inside RX buffer. */ 28#define MRVL_NETA_PKT_OFFS 64 29 30/** Maximum number of rx/tx queues per port */ 31#define MRVL_NETA_RXQ_MAX 8 32#define MRVL_NETA_TXQ_MAX 8 33 34/** Minimum/maximum number of descriptors in tx queue */ 35#define MRVL_NETA_TXD_MIN 16 36#define MRVL_NETA_TXD_MAX 2048 37 38/** Tx queue descriptors alignment in B */ 39#define MRVL_NETA_TXD_ALIGN 32 40 41/** Minimum/maximum number of descriptors in rx queue */ 42#define MRVL_NETA_RXD_MIN 16 43#define MRVL_NETA_RXD_MAX 2048 44 45/** Rx queue descriptors alignment in B */ 46#define MRVL_NETA_RXD_ALIGN 32 47 48#define MRVL_NETA_VLAN_TAG_LEN 4 49#define MRVL_NETA_ETH_HDRS_LEN (RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN + \ 50 MRVL_NETA_VLAN_TAG_LEN) 51 52#define MRVL_NETA_HDRS_LEN (MV_MH_SIZE + MRVL_NETA_ETH_HDRS_LEN) 53#define MRVL_NETA_MTU_TO_MRU(mtu) ((mtu) + MRVL_NETA_HDRS_LEN) 54#define MRVL_NETA_MRU_TO_MTU(mru) ((mru) - MRVL_NETA_HDRS_LEN) 55 56/** Rx offloads capabilities */ 57#define MVNETA_RX_OFFLOADS (DEV_RX_OFFLOAD_JUMBO_FRAME | \ 58 DEV_RX_OFFLOAD_CHECKSUM) 59 60/** Tx offloads capabilities */ 61#define MVNETA_TX_OFFLOAD_CHECKSUM (DEV_TX_OFFLOAD_IPV4_CKSUM | \ 62 DEV_TX_OFFLOAD_UDP_CKSUM | \ 63 DEV_TX_OFFLOAD_TCP_CKSUM) 64#define MVNETA_TX_OFFLOADS (MVNETA_TX_OFFLOAD_CHECKSUM | \ 65 DEV_TX_OFFLOAD_MULTI_SEGS) 66 67#define MVNETA_TX_PKT_OFFLOADS (PKT_TX_IP_CKSUM | \ 68 PKT_TX_TCP_CKSUM | \ 69 PKT_TX_UDP_CKSUM) 70 71struct mvneta_priv { 72 /* Hot fields, used in fast path. */ 73 struct neta_ppio *ppio; /**< Port handler pointer */ 74 75 uint8_t pp_id; 76 uint8_t ppio_id; /* ppio port id */ 77 uint8_t uc_mc_flushed; 78 uint8_t multiseg; 79 80 struct neta_ppio_params ppio_params; 81 82 uint64_t rate_max; 83 struct rte_eth_stats prev_stats; 84}; 85 86/** Current log type. */ 87extern int mvneta_logtype; 88 89#define MVNETA_LOG(level, fmt, args...) \ 90 rte_log(RTE_LOG_ ## level, mvneta_logtype, "%s(): " fmt "\n", \ 91 __func__, ##args) 92 93#endif /* _MVNETA_ETHDEV_H_ */ 94