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