1aaf4363eSJerin Jacob /* SPDX-License-Identifier: BSD-3-Clause 2aaf4363eSJerin Jacob * Copyright(c) 2017 Cavium, Inc 3f7be70e5SJerin Jacob */ 4aaf4363eSJerin Jacob 5f7be70e5SJerin Jacob #ifndef __OCTEONTX_ETHDEV_H__ 6f7be70e5SJerin Jacob #define __OCTEONTX_ETHDEV_H__ 7f7be70e5SJerin Jacob 8f7be70e5SJerin Jacob #include <stdbool.h> 9f7be70e5SJerin Jacob 10f7be70e5SJerin Jacob #include <rte_common.h> 11ffc905f3SFerruh Yigit #include <rte_ethdev_driver.h> 12f7be70e5SJerin Jacob #include <rte_eventdev.h> 13f7be70e5SJerin Jacob #include <rte_mempool.h> 14f7be70e5SJerin Jacob #include <rte_memory.h> 15f7be70e5SJerin Jacob 16f7be70e5SJerin Jacob #include <octeontx_fpavf.h> 17f7be70e5SJerin Jacob 18f7be70e5SJerin Jacob #include "base/octeontx_bgx.h" 19f7be70e5SJerin Jacob #include "base/octeontx_pki_var.h" 20f7be70e5SJerin Jacob #include "base/octeontx_pkivf.h" 21f7be70e5SJerin Jacob #include "base/octeontx_pkovf.h" 22f7be70e5SJerin Jacob #include "base/octeontx_io.h" 23f7be70e5SJerin Jacob 24*b4ec00a2SStephen Hemminger #define OCTEONTX_PMD net_octeontx 25f7be70e5SJerin Jacob #define OCTEONTX_VDEV_DEFAULT_MAX_NR_PORT 12 26f7be70e5SJerin Jacob #define OCTEONTX_VDEV_NR_PORT_ARG ("nr_port") 27f7be70e5SJerin Jacob #define OCTEONTX_MAX_NAME_LEN 32 28f7be70e5SJerin Jacob 29989d4926SPavan Nikhilesh #define OCTEONTX_MAX_BGX_PORTS 4 30989d4926SPavan Nikhilesh #define OCTEONTX_MAX_LMAC_PER_BGX 4 31989d4926SPavan Nikhilesh 32323e7b66SFerruh Yigit #define OCTEONTX_RX_OFFLOADS DEV_RX_OFFLOAD_CHECKSUM 33a9287089SPavan Nikhilesh #define OCTEONTX_TX_OFFLOADS DEV_TX_OFFLOAD_MT_LOCKFREE 34a9287089SPavan Nikhilesh 35f7be70e5SJerin Jacob static inline struct octeontx_nic * 36f7be70e5SJerin Jacob octeontx_pmd_priv(struct rte_eth_dev *dev) 37f7be70e5SJerin Jacob { 38f7be70e5SJerin Jacob return dev->data->dev_private; 39f7be70e5SJerin Jacob } 40f7be70e5SJerin Jacob 41989d4926SPavan Nikhilesh extern uint16_t 42989d4926SPavan Nikhilesh rte_octeontx_pchan_map[OCTEONTX_MAX_BGX_PORTS][OCTEONTX_MAX_LMAC_PER_BGX]; 43989d4926SPavan Nikhilesh 44f7be70e5SJerin Jacob /* Octeontx ethdev nic */ 45f7be70e5SJerin Jacob struct octeontx_nic { 46f7be70e5SJerin Jacob struct rte_eth_dev *dev; 47f7be70e5SJerin Jacob int node; 48f7be70e5SJerin Jacob int port_id; 49f7be70e5SJerin Jacob int port_ena; 50f7be70e5SJerin Jacob int base_ichan; 51f7be70e5SJerin Jacob int num_ichans; 52f7be70e5SJerin Jacob int base_ochan; 53f7be70e5SJerin Jacob int num_ochans; 54f7be70e5SJerin Jacob uint8_t evdev; 55f7be70e5SJerin Jacob uint8_t bpen; 56f7be70e5SJerin Jacob uint8_t fcs_strip; 57f7be70e5SJerin Jacob uint8_t bcast_mode; 58f7be70e5SJerin Jacob uint8_t mcast_mode; 59f7be70e5SJerin Jacob uint16_t num_tx_queues; 60f7be70e5SJerin Jacob uint64_t hwcap; 61f7be70e5SJerin Jacob uint8_t link_up; 62f7be70e5SJerin Jacob uint8_t duplex; 63f7be70e5SJerin Jacob uint8_t speed; 64f7be70e5SJerin Jacob uint16_t mtu; 65f7be70e5SJerin Jacob uint8_t mac_addr[ETHER_ADDR_LEN]; 66f7be70e5SJerin Jacob /* Rx port parameters */ 67f7be70e5SJerin Jacob struct { 68f7be70e5SJerin Jacob bool classifier_enable; 69f7be70e5SJerin Jacob bool hash_enable; 70f7be70e5SJerin Jacob bool initialized; 71f7be70e5SJerin Jacob } pki; 72f7be70e5SJerin Jacob 73f7be70e5SJerin Jacob uint16_t ev_queues; 74f7be70e5SJerin Jacob uint16_t ev_ports; 75f7be70e5SJerin Jacob } __rte_cache_aligned; 76f7be70e5SJerin Jacob 777fe7c98fSJerin Jacob struct octeontx_txq { 787fe7c98fSJerin Jacob uint16_t queue_id; 797fe7c98fSJerin Jacob octeontx_dq_t dq; 807fe7c98fSJerin Jacob struct rte_eth_dev *eth_dev; 817fe7c98fSJerin Jacob } __rte_cache_aligned; 827fe7c98fSJerin Jacob 83197438eeSJerin Jacob struct octeontx_rxq { 84197438eeSJerin Jacob uint16_t queue_id; 85197438eeSJerin Jacob uint16_t port_id; 86197438eeSJerin Jacob uint8_t evdev; 87197438eeSJerin Jacob struct rte_eth_dev *eth_dev; 88197438eeSJerin Jacob uint16_t ev_queues; 89197438eeSJerin Jacob uint16_t ev_ports; 90197438eeSJerin Jacob } __rte_cache_aligned; 91197438eeSJerin Jacob 92f7be70e5SJerin Jacob #endif /* __OCTEONTX_ETHDEV_H__ */ 93