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