/*
-// Copyright (c) 2010-2017 Intel Corporation
+// Copyright (c) 2010-2020 Intel Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
#ifndef _PROX_PORT_CFG_H
#define _PROX_PORT_CFG_H
+#include <rte_pci.h>
#include <rte_ether.h>
#include <rte_ethdev.h>
+#include <rte_version.h>
+#if RTE_VERSION >= RTE_VERSION_NUM(22,11,0,0)
+#include <bus_pci_driver.h> // Please configure DPDK with meson option -Denable_driver_sdk=true
+#else
+#if RTE_VERSION >= RTE_VERSION_NUM(17,11,0,0)
+#include <rte_bus_pci.h>
+#endif
+#endif
+#include <rte_pci.h>
+#include "prox_compat.h"
#include "prox_globals.h"
+#include "ip_subnet.h"
enum addr_type {PROX_PORT_MAC_HW, PROX_PORT_MAC_SET, PROX_PORT_MAC_RAND};
#define IPV4_CKSUM 1
#define UDP_CKSUM 2
+#define NB_MCAST_ADDR 16
+#define PROX_MAX_VLAN_TAGS 256
struct prox_port_cfg {
struct rte_mempool *pool[32]; /* Rx/Tx mempool */
uint32_t n_txd;
uint8_t link_up;
uint32_t link_speed;
+ uint32_t max_link_speed;
uint32_t mtu;
enum addr_type type;
- struct ether_addr eth_addr; /* port MAC address */
- char name[MAX_NAME_SIZE];
+ prox_rte_ether_addr eth_addr; /* port MAC address */
+ char names[PROX_MAX_VLAN_TAGS][MAX_NAME_BUFFER_SIZE];
+ char vdev[MAX_NAME_SIZE];
char short_name[MAX_NAME_SIZE];
char driver_name[MAX_NAME_SIZE];
char rx_ring[MAX_NAME_SIZE];
struct rte_eth_conf port_conf;
struct rte_eth_rxconf rx_conf;
struct rte_eth_txconf tx_conf;
+ uint64_t requested_rx_offload;
+ uint64_t requested_tx_offload;
+ uint64_t disabled_tx_offload;
+ struct rte_eth_dev_info dev_info;
struct {
int tx_offload_cksum;
} capabilities;
+ uint32_t max_rx_pkt_len;
+ uint32_t min_rx_bufsize;
+ uint16_t min_rx_desc;
+ uint16_t max_rx_desc;
+ uint16_t min_tx_desc;
+ uint16_t max_tx_desc;
+ uint32_t nb_mc_addr;
+ uint8_t available;
+ prox_rte_ether_addr mc_addr[NB_MCAST_ADDR];
+ int dpdk_mapping;
+ struct ip4_subnet ip_addr[PROX_MAX_VLAN_TAGS];
+ int fds[PROX_MAX_VLAN_TAGS];
+ uint32_t vlan_tags[PROX_MAX_VLAN_TAGS];
+ uint8_t is_vdev;
+ uint8_t virtual;
+ uint8_t all_rx_queues;
+ uint16_t n_vlans;
+ uint32_t v6_mask_length;
};
extern rte_atomic32_t lsc;