1f7be70e5SJerin Jacob /* 2f7be70e5SJerin Jacob * BSD LICENSE 3f7be70e5SJerin Jacob * 4f7be70e5SJerin Jacob * Copyright (C) Cavium Inc. 2017. All rights reserved. 5f7be70e5SJerin Jacob * 6f7be70e5SJerin Jacob * Redistribution and use in source and binary forms, with or without 7f7be70e5SJerin Jacob * modification, are permitted provided that the following conditions 8f7be70e5SJerin Jacob * are met: 9f7be70e5SJerin Jacob * 10f7be70e5SJerin Jacob * * Redistributions of source code must retain the above copyright 11f7be70e5SJerin Jacob * notice, this list of conditions and the following disclaimer. 12f7be70e5SJerin Jacob * * Redistributions in binary form must reproduce the above copyright 13f7be70e5SJerin Jacob * notice, this list of conditions and the following disclaimer in 14f7be70e5SJerin Jacob * the documentation and/or other materials provided with the 15f7be70e5SJerin Jacob * distribution. 16f7be70e5SJerin Jacob * * Neither the name of Cavium networks nor the names of its 17f7be70e5SJerin Jacob * contributors may be used to endorse or promote products derived 18f7be70e5SJerin Jacob * from this software without specific prior written permission. 19f7be70e5SJerin Jacob * 20f7be70e5SJerin Jacob * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21f7be70e5SJerin Jacob * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22f7be70e5SJerin Jacob * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23f7be70e5SJerin Jacob * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24f7be70e5SJerin Jacob * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25f7be70e5SJerin Jacob * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26f7be70e5SJerin Jacob * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27f7be70e5SJerin Jacob * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28f7be70e5SJerin Jacob * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29f7be70e5SJerin Jacob * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30f7be70e5SJerin Jacob * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31f7be70e5SJerin Jacob */ 32f7be70e5SJerin Jacob #ifndef __OCTEONTX_ETHDEV_H__ 33f7be70e5SJerin Jacob #define __OCTEONTX_ETHDEV_H__ 34f7be70e5SJerin Jacob 35f7be70e5SJerin Jacob #include <stdbool.h> 36f7be70e5SJerin Jacob 37f7be70e5SJerin Jacob #include <rte_common.h> 38f7be70e5SJerin Jacob #include <rte_ethdev.h> 39f7be70e5SJerin Jacob #include <rte_eventdev.h> 40f7be70e5SJerin Jacob #include <rte_mempool.h> 41f7be70e5SJerin Jacob #include <rte_memory.h> 42f7be70e5SJerin Jacob 43f7be70e5SJerin Jacob #include <octeontx_fpavf.h> 44f7be70e5SJerin Jacob 45f7be70e5SJerin Jacob #include "base/octeontx_bgx.h" 46f7be70e5SJerin Jacob #include "base/octeontx_pki_var.h" 47f7be70e5SJerin Jacob #include "base/octeontx_pkivf.h" 48f7be70e5SJerin Jacob #include "base/octeontx_pkovf.h" 49f7be70e5SJerin Jacob #include "base/octeontx_io.h" 50f7be70e5SJerin Jacob 51f7be70e5SJerin Jacob #define OCTEONTX_VDEV_DEFAULT_MAX_NR_PORT 12 52f7be70e5SJerin Jacob #define OCTEONTX_VDEV_NR_PORT_ARG ("nr_port") 53f7be70e5SJerin Jacob #define OCTEONTX_MAX_NAME_LEN 32 54f7be70e5SJerin Jacob 55f7be70e5SJerin Jacob static inline struct octeontx_nic * 56f7be70e5SJerin Jacob octeontx_pmd_priv(struct rte_eth_dev *dev) 57f7be70e5SJerin Jacob { 58f7be70e5SJerin Jacob return dev->data->dev_private; 59f7be70e5SJerin Jacob } 60f7be70e5SJerin Jacob 61f7be70e5SJerin Jacob /* Octeontx ethdev nic */ 62f7be70e5SJerin Jacob struct octeontx_nic { 63f7be70e5SJerin Jacob struct rte_eth_dev *dev; 64f7be70e5SJerin Jacob int node; 65f7be70e5SJerin Jacob int port_id; 66f7be70e5SJerin Jacob int port_ena; 67f7be70e5SJerin Jacob int base_ichan; 68f7be70e5SJerin Jacob int num_ichans; 69f7be70e5SJerin Jacob int base_ochan; 70f7be70e5SJerin Jacob int num_ochans; 71f7be70e5SJerin Jacob uint8_t evdev; 72f7be70e5SJerin Jacob uint8_t bpen; 73f7be70e5SJerin Jacob uint8_t fcs_strip; 74f7be70e5SJerin Jacob uint8_t bcast_mode; 75f7be70e5SJerin Jacob uint8_t mcast_mode; 76f7be70e5SJerin Jacob uint16_t num_tx_queues; 77f7be70e5SJerin Jacob uint64_t hwcap; 78f7be70e5SJerin Jacob uint8_t link_up; 79f7be70e5SJerin Jacob uint8_t duplex; 80f7be70e5SJerin Jacob uint8_t speed; 81f7be70e5SJerin Jacob uint16_t mtu; 82f7be70e5SJerin Jacob uint8_t mac_addr[ETHER_ADDR_LEN]; 83f7be70e5SJerin Jacob /* Rx port parameters */ 84f7be70e5SJerin Jacob struct { 85f7be70e5SJerin Jacob bool classifier_enable; 86f7be70e5SJerin Jacob bool hash_enable; 87f7be70e5SJerin Jacob bool initialized; 88f7be70e5SJerin Jacob } pki; 89f7be70e5SJerin Jacob 90f7be70e5SJerin Jacob uint16_t ev_queues; 91f7be70e5SJerin Jacob uint16_t ev_ports; 92f7be70e5SJerin Jacob } __rte_cache_aligned; 93f7be70e5SJerin Jacob 94*7fe7c98fSJerin Jacob struct octeontx_txq { 95*7fe7c98fSJerin Jacob uint16_t queue_id; 96*7fe7c98fSJerin Jacob octeontx_dq_t dq; 97*7fe7c98fSJerin Jacob struct rte_eth_dev *eth_dev; 98*7fe7c98fSJerin Jacob } __rte_cache_aligned; 99*7fe7c98fSJerin Jacob 100197438eeSJerin Jacob struct octeontx_rxq { 101197438eeSJerin Jacob uint16_t queue_id; 102197438eeSJerin Jacob uint16_t port_id; 103197438eeSJerin Jacob uint8_t evdev; 104197438eeSJerin Jacob struct rte_eth_dev *eth_dev; 105197438eeSJerin Jacob uint16_t ev_queues; 106197438eeSJerin Jacob uint16_t ev_ports; 107197438eeSJerin Jacob } __rte_cache_aligned; 108197438eeSJerin Jacob 109f7be70e5SJerin Jacob #endif /* __OCTEONTX_ETHDEV_H__ */ 110