From f239aed5e674965691846e8ce3f187dd47523689 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Wed, 16 Aug 2017 18:42:05 +0100 Subject: New upstream version 17.08 Change-Id: I288b50990f52646089d6b1f3aaa6ba2f091a51d7 Signed-off-by: Luca Boccassi --- drivers/net/liquidio/base/lio_hw_defs.h | 6 ++++++ drivers/net/liquidio/lio_ethdev.c | 21 ++++++++++++++++++- drivers/net/liquidio/lio_rxtx.c | 37 ++++----------------------------- drivers/net/liquidio/lio_struct.h | 2 +- 4 files changed, 31 insertions(+), 35 deletions(-) (limited to 'drivers/net/liquidio') diff --git a/drivers/net/liquidio/base/lio_hw_defs.h b/drivers/net/liquidio/base/lio_hw_defs.h index 67eaa452..de58c7cc 100644 --- a/drivers/net/liquidio/base/lio_hw_defs.h +++ b/drivers/net/liquidio/base/lio_hw_defs.h @@ -42,6 +42,12 @@ #define LIO_CN23XX_VF_VID 0x9712 +/* CN23xx subsystem device ids */ +#define PCI_SUBSYS_DEV_ID_CN2350_210 0x0004 +#define PCI_SUBSYS_DEV_ID_CN2360_210 0x0005 +#define PCI_SUBSYS_DEV_ID_CN2360_225 0x0006 +#define PCI_SUBSYS_DEV_ID_CN2350_225 0x0007 + /* --------------------------CONFIG VALUES------------------------ */ /* CN23xx IQ configuration macros */ diff --git a/drivers/net/liquidio/lio_ethdev.c b/drivers/net/liquidio/lio_ethdev.c index c7f1fb64..479936a5 100644 --- a/drivers/net/liquidio/lio_ethdev.c +++ b/drivers/net/liquidio/lio_ethdev.c @@ -395,6 +395,25 @@ lio_dev_info_get(struct rte_eth_dev *eth_dev, struct rte_eth_dev_info *devinfo) { struct lio_device *lio_dev = LIO_DEV(eth_dev); + struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev); + + devinfo->pci_dev = pci_dev; + + switch (pci_dev->id.subsystem_device_id) { + /* CN23xx 10G cards */ + case PCI_SUBSYS_DEV_ID_CN2350_210: + case PCI_SUBSYS_DEV_ID_CN2360_210: + devinfo->speed_capa = ETH_LINK_SPEED_10G; + break; + /* CN23xx 25G cards */ + case PCI_SUBSYS_DEV_ID_CN2350_225: + case PCI_SUBSYS_DEV_ID_CN2360_225: + devinfo->speed_capa = ETH_LINK_SPEED_25G; + break; + default: + lio_dev_err(lio_dev, + "Unknown CN23XX subsystem device id. Not setting speed capability.\n"); + } devinfo->max_rx_queues = lio_dev->max_rx_queues; devinfo->max_tx_queues = lio_dev->max_tx_queues; @@ -1977,7 +1996,7 @@ lio_eth_dev_uninit(struct rte_eth_dev *eth_dev) static int lio_eth_dev_init(struct rte_eth_dev *eth_dev) { - struct rte_pci_device *pdev = RTE_DEV_TO_PCI(eth_dev->device); + struct rte_pci_device *pdev = RTE_ETH_DEV_TO_PCI(eth_dev); struct lio_device *lio_dev = LIO_DEV(eth_dev); PMD_INIT_FUNC_TRACE(); diff --git a/drivers/net/liquidio/lio_rxtx.c b/drivers/net/liquidio/lio_rxtx.c index 9533015c..2bbb893c 100644 --- a/drivers/net/liquidio/lio_rxtx.c +++ b/drivers/net/liquidio/lio_rxtx.c @@ -81,28 +81,6 @@ lio_droq_destroy_ring_buffers(struct lio_droq *droq) lio_droq_reset_indices(droq); } -static void * -lio_recv_buffer_alloc(struct lio_device *lio_dev, int q_no) -{ - struct lio_droq *droq = lio_dev->droq[q_no]; - struct rte_mempool *mpool = droq->mpool; - struct rte_mbuf *m; - - m = rte_pktmbuf_alloc(mpool); - if (m == NULL) { - lio_dev_err(lio_dev, "Cannot allocate\n"); - return NULL; - } - - rte_mbuf_refcnt_set(m, 1); - m->next = NULL; - m->data_off = RTE_PKTMBUF_HEADROOM; - m->nb_segs = 1; - m->pool = mpool; - - return m; -} - static int lio_droq_setup_ring_buffers(struct lio_device *lio_dev, struct lio_droq *droq) @@ -112,7 +90,7 @@ lio_droq_setup_ring_buffers(struct lio_device *lio_dev, void *buf; for (i = 0; i < droq->max_count; i++) { - buf = lio_recv_buffer_alloc(lio_dev, droq->q_no); + buf = rte_pktmbuf_alloc(droq->mpool); if (buf == NULL) { lio_dev_err(lio_dev, "buffer alloc failed\n"); droq->stats.rx_alloc_failure++; @@ -378,7 +356,6 @@ lio_droq_refill_pullup_descs(struct lio_droq *droq, /* lio_droq_refill * - * @param lio_dev - pointer to the lio device structure * @param droq - droq in which descriptors require new buffers. * * Description: @@ -394,7 +371,7 @@ lio_droq_refill_pullup_descs(struct lio_droq *droq, * This routine is called with droq->lock held. */ static uint32_t -lio_droq_refill(struct lio_device *lio_dev, struct lio_droq *droq) +lio_droq_refill(struct lio_droq *droq) { struct lio_droq_desc *desc_ring; uint32_t desc_refilled = 0; @@ -407,7 +384,7 @@ lio_droq_refill(struct lio_device *lio_dev, struct lio_droq *droq) * reuse the buffer, else allocate. */ if (droq->recv_buf_list[droq->refill_idx].buffer == NULL) { - buf = lio_recv_buffer_alloc(lio_dev, droq->q_no); + buf = rte_pktmbuf_alloc(droq->mpool); /* If a buffer could not be allocated, no point in * continuing */ @@ -489,9 +466,6 @@ lio_droq_fast_process_packet(struct lio_device *lio_dev, droq->refill_count++; if (likely(nicbuf != NULL)) { - nicbuf->data_off = RTE_PKTMBUF_HEADROOM; - nicbuf->nb_segs = 1; - nicbuf->next = NULL; /* We don't have a way to pass flags yet */ nicbuf->ol_flags = 0; if (rh->r_dh.has_hash) { @@ -545,9 +519,6 @@ lio_droq_fast_process_packet(struct lio_device *lio_dev, if (!pkt_len) first_buf = nicbuf; - nicbuf->data_off = RTE_PKTMBUF_HEADROOM; - nicbuf->nb_segs = 1; - nicbuf->next = NULL; nicbuf->port = lio_dev->port_id; /* We don't have a way to pass * flags yet @@ -617,7 +588,7 @@ lio_droq_fast_process_packet(struct lio_device *lio_dev, } if (droq->refill_count >= droq->refill_threshold) { - int desc_refilled = lio_droq_refill(lio_dev, droq); + int desc_refilled = lio_droq_refill(droq); /* Flush the droq descriptor data to memory to be sure * that when we update the credits the data in memory is diff --git a/drivers/net/liquidio/lio_struct.h b/drivers/net/liquidio/lio_struct.h index 26f803f9..d9cbf000 100644 --- a/drivers/net/liquidio/lio_struct.h +++ b/drivers/net/liquidio/lio_struct.h @@ -94,7 +94,7 @@ struct lio_droq_stats { /** Num of vxlan packets received; */ uint64_t rx_vxlan; - /** Num of failures of lio_recv_buffer_alloc() */ + /** Num of failures of rte_pktmbuf_alloc() */ uint64_t rx_alloc_failure; }; -- cgit 1.2.3-korg