dpdk/drivers/net/mvneta/mvneta_ethdev.h
<<
>>
Prefs
   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