diff options
Diffstat (limited to 'drivers/net/avf')
-rw-r--r-- | drivers/net/avf/Makefile | 2 | ||||
-rw-r--r-- | drivers/net/avf/avf_ethdev.c | 22 | ||||
-rw-r--r-- | drivers/net/avf/avf_rxtx.c | 29 | ||||
-rw-r--r-- | drivers/net/avf/avf_rxtx.h | 12 | ||||
-rw-r--r-- | drivers/net/avf/avf_rxtx_vec_sse.c | 2 | ||||
-rw-r--r-- | drivers/net/avf/avf_vchnl.c | 2 | ||||
-rw-r--r-- | drivers/net/avf/base/avf_osdep.h | 4 | ||||
-rw-r--r-- | drivers/net/avf/base/meson.build | 23 | ||||
-rw-r--r-- | drivers/net/avf/meson.build | 20 |
9 files changed, 66 insertions, 50 deletions
diff --git a/drivers/net/avf/Makefile b/drivers/net/avf/Makefile index 3f815bbc..aec6e4cb 100644 --- a/drivers/net/avf/Makefile +++ b/drivers/net/avf/Makefile @@ -8,7 +8,7 @@ include $(RTE_SDK)/mk/rte.vars.mk # LIB = librte_pmd_avf.a -CFLAGS += -O3 +CFLAGS += -O3 $(WERROR_FLAGS) -Wno-strict-aliasing -DALLOW_EXPERIMENTAL_API LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs -lrte_hash LDLIBS += -lrte_bus_pci diff --git a/drivers/net/avf/avf_ethdev.c b/drivers/net/avf/avf_ethdev.c index 3a2baaf2..13eec1b4 100644 --- a/drivers/net/avf/avf_ethdev.c +++ b/drivers/net/avf/avf_ethdev.c @@ -154,7 +154,6 @@ static int avf_init_rss(struct avf_adapter *adapter) { struct avf_info *vf = AVF_DEV_PRIVATE_TO_VF(adapter); - struct avf_hw *hw = AVF_DEV_PRIVATE_TO_HW(adapter); struct rte_eth_rss_conf *rss_conf; uint8_t i, j, nb_q; int ret; @@ -259,11 +258,8 @@ avf_init_rxq(struct rte_eth_dev *dev, struct avf_rx_queue *rxq) static int avf_init_queues(struct rte_eth_dev *dev) { - struct avf_info *vf = AVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); struct avf_rx_queue **rxq = (struct avf_rx_queue **)dev->data->rx_queues; - struct avf_tx_queue **txq = - (struct avf_tx_queue **)dev->data->tx_queues; int i, ret = AVF_SUCCESS; for (i = 0; i < dev->data->nb_rx_queues; i++) { @@ -415,7 +411,6 @@ avf_dev_start(struct rte_eth_dev *dev) AVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); struct avf_info *vf = AVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); struct avf_hw *hw = AVF_DEV_PRIVATE_TO_HW(dev->data->dev_private); - struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); struct rte_intr_handle *intr_handle = dev->intr_handle; PMD_INIT_FUNC_TRACE(); @@ -476,9 +471,7 @@ avf_dev_stop(struct rte_eth_dev *dev) struct avf_adapter *adapter = AVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); struct avf_hw *hw = AVF_DEV_PRIVATE_TO_HW(dev->data->dev_private); - struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); struct rte_intr_handle *intr_handle = dev->intr_handle; - int ret, i; PMD_INIT_FUNC_TRACE(); @@ -503,8 +496,6 @@ avf_dev_stop(struct rte_eth_dev *dev) static void avf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) { - struct avf_adapter *adapter = - AVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); struct avf_info *vf = AVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); memset(dev_info, 0, sizeof(*dev_info)); @@ -523,8 +514,6 @@ avf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) DEV_RX_OFFLOAD_UDP_CKSUM | DEV_RX_OFFLOAD_TCP_CKSUM | DEV_RX_OFFLOAD_OUTER_IPV4_CKSUM | - DEV_RX_OFFLOAD_CRC_STRIP | - DEV_RX_OFFLOAD_KEEP_CRC | DEV_RX_OFFLOAD_SCATTER | DEV_RX_OFFLOAD_JUMBO_FRAME | DEV_RX_OFFLOAD_VLAN_FILTER; @@ -569,7 +558,7 @@ avf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) } static const uint32_t * -avf_dev_supported_ptypes_get(struct rte_eth_dev *dev) +avf_dev_supported_ptypes_get(struct rte_eth_dev *dev __rte_unused) { static const uint32_t ptypes[] = { RTE_PTYPE_L2_ETHER, @@ -915,7 +904,6 @@ avf_dev_rss_hash_conf_get(struct rte_eth_dev *dev, static int avf_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) { - struct avf_info *vf = AVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); uint32_t frame_size = mtu + AVF_ETH_OVERHEAD; int ret = 0; @@ -1045,8 +1033,6 @@ avf_dev_rx_queue_intr_enable(struct rte_eth_dev *dev, uint16_t queue_id) static int avf_dev_rx_queue_intr_disable(struct rte_eth_dev *dev, uint16_t queue_id) { - struct avf_adapter *adapter = - AVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); struct avf_hw *hw = AVF_DEV_PRIVATE_TO_HW(dev->data->dev_private); uint16_t msix_intr; @@ -1089,7 +1075,7 @@ avf_check_vf_reset_done(struct avf_hw *hw) static int avf_init_vf(struct rte_eth_dev *dev) { - int i, err, bufsz; + int err, bufsz; struct avf_adapter *adapter = AVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); struct avf_hw *hw = AVF_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -1198,7 +1184,6 @@ avf_dev_interrupt_handler(void *param) avf_handle_virtchnl_msg(dev); -done: avf_enable_irq0(hw); } @@ -1318,9 +1303,6 @@ avf_dev_uninit(struct rte_eth_dev *dev) rte_free(vf->aq_resp); vf->aq_resp = NULL; - rte_free(dev->data->mac_addrs); - dev->data->mac_addrs = NULL; - if (vf->rss_lut) { rte_free(vf->rss_lut); vf->rss_lut = NULL; diff --git a/drivers/net/avf/avf_rxtx.c b/drivers/net/avf/avf_rxtx.c index e03a136f..8c7a9672 100644 --- a/drivers/net/avf/avf_rxtx.c +++ b/drivers/net/avf/avf_rxtx.c @@ -247,7 +247,6 @@ alloc_rxq_mbufs(struct avf_rx_queue *rxq) static inline void release_rxq_mbufs(struct avf_rx_queue *rxq) { - struct rte_mbuf *mbuf; uint16_t i; if (!rxq->sw_ring) @@ -310,9 +309,8 @@ avf_dev_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx, struct avf_rx_queue *rxq; const struct rte_memzone *mz; uint32_t ring_size; - uint16_t len, i; + uint16_t len; uint16_t rx_free_thresh; - uint16_t base, bsf, tc_mapping; PMD_INIT_FUNC_TRACE(); @@ -428,13 +426,10 @@ avf_dev_tx_queue_setup(struct rte_eth_dev *dev, const struct rte_eth_txconf *tx_conf) { struct avf_hw *hw = AVF_DEV_PRIVATE_TO_HW(dev->data->dev_private); - struct avf_adapter *ad = - AVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); struct avf_tx_queue *txq; const struct rte_memzone *mz; uint32_t ring_size; uint16_t tx_rs_thresh, tx_free_thresh; - uint16_t i, base, bsf, tc_mapping; uint64_t offloads; PMD_INIT_FUNC_TRACE(); @@ -515,8 +510,11 @@ avf_dev_tx_queue_setup(struct rte_eth_dev *dev, txq->ops = &def_txq_ops; #ifdef RTE_LIBRTE_AVF_INC_VECTOR - if (check_tx_vec_allow(txq) == FALSE) + if (check_tx_vec_allow(txq) == FALSE) { + struct avf_adapter *ad = + AVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); ad->tx_vec_allowed = false; + } #endif return 0; @@ -1268,7 +1266,6 @@ static inline uint16_t rx_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) { struct avf_rx_queue *rxq = (struct avf_rx_queue *)rx_queue; - struct rte_eth_dev *dev; uint16_t nb_rx = 0; if (!nb_pkts) @@ -1584,10 +1581,6 @@ avf_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) if (nb_ctx) { /* Setup TX context descriptor if required */ - volatile struct avf_tx_context_desc *ctx_txd = - (volatile struct avf_tx_context_desc *) - &txr[tx_id]; - uint16_t cd_l2tag2 = 0; uint64_t cd_type_cmd_tso_mss = AVF_TX_DESC_DTYPE_CONTEXT; @@ -1603,7 +1596,7 @@ avf_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) cd_type_cmd_tso_mss |= avf_set_tso_ctx(tx_pkt, tx_offload); - AVF_DUMP_TX_DESC(txq, ctx_txd, tx_id); + AVF_DUMP_TX_DESC(txq, &txr[tx_id], tx_id); txe->last_id = tx_last; tx_id = txe->next_id; txe = txn; @@ -1925,7 +1918,7 @@ avf_dev_tx_desc_status(void *tx_queue, uint16_t offset) return RTE_ETH_TX_DESC_FULL; } -uint16_t __attribute__((weak)) +__rte_weak uint16_t avf_recv_pkts_vec(__rte_unused void *rx_queue, __rte_unused struct rte_mbuf **rx_pkts, __rte_unused uint16_t nb_pkts) @@ -1933,7 +1926,7 @@ avf_recv_pkts_vec(__rte_unused void *rx_queue, return 0; } -uint16_t __attribute__((weak)) +__rte_weak uint16_t avf_recv_scattered_pkts_vec(__rte_unused void *rx_queue, __rte_unused struct rte_mbuf **rx_pkts, __rte_unused uint16_t nb_pkts) @@ -1941,7 +1934,7 @@ avf_recv_scattered_pkts_vec(__rte_unused void *rx_queue, return 0; } -uint16_t __attribute__((weak)) +__rte_weak uint16_t avf_xmit_fixed_burst_vec(__rte_unused void *tx_queue, __rte_unused struct rte_mbuf **tx_pkts, __rte_unused uint16_t nb_pkts) @@ -1949,13 +1942,13 @@ avf_xmit_fixed_burst_vec(__rte_unused void *tx_queue, return 0; } -int __attribute__((weak)) +__rte_weak int avf_rxq_vec_setup(__rte_unused struct avf_rx_queue *rxq) { return -1; } -int __attribute__((weak)) +__rte_weak int avf_txq_vec_setup(__rte_unused struct avf_tx_queue *txq) { return -1; diff --git a/drivers/net/avf/avf_rxtx.h b/drivers/net/avf/avf_rxtx.h index 297d0776..898d2f38 100644 --- a/drivers/net/avf/avf_rxtx.h +++ b/drivers/net/avf/avf_rxtx.h @@ -201,17 +201,17 @@ int avf_txq_vec_setup(struct avf_tx_queue *txq); static inline void avf_dump_rx_descriptor(struct avf_rx_queue *rxq, - const void *desc, + const volatile void *desc, uint16_t rx_id) { #ifdef RTE_LIBRTE_AVF_16BYTE_RX_DESC - const union avf_16byte_rx_desc *rx_desc = desc; + const volatile union avf_16byte_rx_desc *rx_desc = desc; printf("Queue %d Rx_desc %d: QW0: 0x%016"PRIx64" QW1: 0x%016"PRIx64"\n", rxq->queue_id, rx_id, rx_desc->read.pkt_addr, rx_desc->read.hdr_addr); #else - const union avf_32byte_rx_desc *rx_desc = desc; + const volatile union avf_32byte_rx_desc *rx_desc = desc; printf("Queue %d Rx_desc %d: QW0: 0x%016"PRIx64" QW1: 0x%016"PRIx64 " QW2: 0x%016"PRIx64" QW3: 0x%016"PRIx64"\n", rxq->queue_id, @@ -225,10 +225,10 @@ void avf_dump_rx_descriptor(struct avf_rx_queue *rxq, */ static inline void avf_dump_tx_descriptor(const struct avf_tx_queue *txq, - const void *desc, uint16_t tx_id) + const volatile void *desc, uint16_t tx_id) { - char *name; - const struct avf_tx_desc *tx_desc = desc; + const char *name; + const volatile struct avf_tx_desc *tx_desc = desc; enum avf_tx_desc_dtype_value type; type = (enum avf_tx_desc_dtype_value)rte_le_to_cpu_64( diff --git a/drivers/net/avf/avf_rxtx_vec_sse.c b/drivers/net/avf/avf_rxtx_vec_sse.c index 8275100f..343a6aac 100644 --- a/drivers/net/avf/avf_rxtx_vec_sse.c +++ b/drivers/net/avf/avf_rxtx_vec_sse.c @@ -621,7 +621,7 @@ avf_xmit_fixed_burst_vec(void *tx_queue, struct rte_mbuf **tx_pkts, return nb_pkts; } -void __attribute__((cold)) +static void __attribute__((cold)) avf_rx_queue_release_mbufs_sse(struct avf_rx_queue *rxq) { _avf_rx_queue_release_mbufs_vec(rxq); diff --git a/drivers/net/avf/avf_vchnl.c b/drivers/net/avf/avf_vchnl.c index fa71014e..fd90cc2c 100644 --- a/drivers/net/avf/avf_vchnl.c +++ b/drivers/net/avf/avf_vchnl.c @@ -69,7 +69,6 @@ avf_execute_vf_cmd(struct avf_adapter *adapter, struct avf_cmd_info *args) { struct avf_hw *hw = AVF_DEV_PRIVATE_TO_HW(adapter); struct avf_info *vf = AVF_DEV_PRIVATE_TO_VF(adapter); - struct avf_arq_event_info event_info; enum avf_status_code ret; int err = 0; int i = 0; @@ -600,7 +599,6 @@ avf_config_irq_map(struct avf_adapter *adapter) struct virtchnl_irq_map_info *map_info; struct virtchnl_vector_map *vecmap; struct avf_cmd_info args; - uint32_t vector_id; int len, i, err; len = sizeof(struct virtchnl_irq_map_info) + diff --git a/drivers/net/avf/base/avf_osdep.h b/drivers/net/avf/base/avf_osdep.h index 9ef45968..442a5acd 100644 --- a/drivers/net/avf/base/avf_osdep.h +++ b/drivers/net/avf/base/avf_osdep.h @@ -93,8 +93,8 @@ typedef uint64_t u64; #define avf_memset(a, b, c, d) memset((a), (b), (c)) #define avf_memcpy(a, b, c, d) rte_memcpy((a), (b), (c)) -#define avf_usec_delay(x) rte_delay_us(x) -#define avf_msec_delay(x) rte_delay_us(1000*(x)) +#define avf_usec_delay(x) rte_delay_us_sleep(x) +#define avf_msec_delay(x) avf_usec_delay(1000 * (x)) #define AVF_PCI_REG(reg) rte_read32(reg) #define AVF_PCI_REG_ADDR(a, reg) \ diff --git a/drivers/net/avf/base/meson.build b/drivers/net/avf/base/meson.build new file mode 100644 index 00000000..6f3d7192 --- /dev/null +++ b/drivers/net/avf/base/meson.build @@ -0,0 +1,23 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2018 Luca Boccassi <bluca@debian.org> + +sources = [ + 'avf_adminq.c', + 'avf_common.c', +] + +error_cflags = ['-Wno-pointer-to-int-cast'] +c_args = cflags +if allow_experimental_apis + c_args += '-DALLOW_EXPERIMENTAL_API' +endif +foreach flag: error_cflags + if cc.has_argument(flag) + c_args += flag + endif +endforeach + +base_lib = static_library('avf_base', sources, + dependencies: static_rte_eal, + c_args: c_args) +base_objs = base_lib.extract_all_objects() diff --git a/drivers/net/avf/meson.build b/drivers/net/avf/meson.build new file mode 100644 index 00000000..2dfda9d4 --- /dev/null +++ b/drivers/net/avf/meson.build @@ -0,0 +1,20 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2018 Luca Boccassi <bluca@debian.org> + +cflags += ['-Wno-strict-aliasing'] + +allow_experimental_apis = true + +subdir('base') +objs = [base_objs] + +sources = files( + 'avf_ethdev.c', + 'avf_rxtx.c', + 'avf_vchnl.c', +) + +if arch_subdir == 'x86' + dpdk_conf.set('RTE_LIBRTE_AVF_INC_VECTOR', 1) + sources += files('avf_rxtx_vec_sse.c') +endif |