From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sunil Kumar Kori Subject: [PATCH 1/2] net/dpaa: Changes to support ethdev offload APIs Date: Mon, 9 Apr 2018 18:49:51 +0530 Message-ID: <20180409131952.20948-1-sunil.kori@nxp.com> References: <20180409102602.24294-2-sunil.kori@nxp.com> Mime-Version: 1.0 Content-Type: text/plain Cc: , To: Return-path: Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0065.outbound.protection.outlook.com [104.47.42.65]) by dpdk.org (Postfix) with ESMTP id 5CF511B82E for ; Mon, 9 Apr 2018 16:30:03 +0200 (CEST) In-Reply-To: <20180409102602.24294-2-sunil.kori@nxp.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Signed-off-by: Sunil Kumar Kori --- drivers/net/dpaa/dpaa_ethdev.c | 46 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index db49364..efef62c 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -95,6 +95,9 @@ static const struct rte_dpaa_xstats_name_off dpaa_xstats_strings[] = { static struct rte_dpaa_driver rte_dpaa_pmd; +static void +dpaa_eth_dev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info); + static inline void dpaa_poll_queue_default_config(struct qm_mcc_initfq *opts) { @@ -134,13 +137,42 @@ dpaa_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) } static int -dpaa_eth_dev_configure(struct rte_eth_dev *dev __rte_unused) +dpaa_eth_dev_configure(struct rte_eth_dev *dev) { struct dpaa_if *dpaa_intf = dev->data->dev_private; + struct rte_eth_conf *eth_conf = &dev->data->dev_conf; + struct rte_eth_dev_info dev_info; + uint64_t rx_offloads = eth_conf->rxmode.offloads; + uint64_t tx_offloads = eth_conf->txmode.offloads; PMD_INIT_FUNC_TRACE(); - if (dev->data->dev_conf.rxmode.jumbo_frame == 1) { + dpaa_eth_dev_info(dev, &dev_info); + if (dev_info.rx_offload_capa != rx_offloads) { + DPAA_PMD_ERR("Some Rx offloads are not supported " + "requested 0x%" PRIx64 " supported 0x%" PRIx64, + rx_offloads, dev_info.rx_offload_capa); + return -ENOTSUP; + } + + if (dev_info.tx_offload_capa != tx_offloads) { + DPAA_PMD_ERR("Some Tx offloads are not supported " + "requested 0x%" PRIx64 " supported 0x%" PRIx64, + tx_offloads, dev_info.tx_offload_capa); + return -ENOTSUP; + } + + if (((rx_offloads & DEV_RX_OFFLOAD_IPV4_CKSUM) == 0) || + ((rx_offloads & DEV_RX_OFFLOAD_UDP_CKSUM) == 0) || + ((rx_offloads & DEV_RX_OFFLOAD_TCP_CKSUM) == 0) || + ((tx_offloads & DEV_TX_OFFLOAD_IPV4_CKSUM) == 0) || + ((tx_offloads & DEV_TX_OFFLOAD_UDP_CKSUM) == 0) || + ((tx_offloads & DEV_TX_OFFLOAD_TCP_CKSUM) == 0)) { + DPAA_PMD_ERR(" Cksum offloading is enabled by default " + " Cannot be disabled. So ignoring this configuration "); + } + + if (rx_offloads & DEV_RX_OFFLOAD_JUMBO_FRAME) { if (dev->data->dev_conf.rxmode.max_rx_pkt_len <= DPAA_MAX_RX_PKT_LEN) { fman_if_set_maxfrm(dpaa_intf->fif, @@ -259,11 +291,17 @@ static void dpaa_eth_dev_info(struct rte_eth_dev *dev, dev_info->rx_offload_capa = (DEV_RX_OFFLOAD_IPV4_CKSUM | DEV_RX_OFFLOAD_UDP_CKSUM | - DEV_RX_OFFLOAD_TCP_CKSUM); + DEV_RX_OFFLOAD_TCP_CKSUM) | + DEV_RX_OFFLOAD_JUMBO_FRAME | + DEV_RX_OFFLOAD_SCATTER; dev_info->tx_offload_capa = (DEV_TX_OFFLOAD_IPV4_CKSUM | DEV_TX_OFFLOAD_UDP_CKSUM | - DEV_TX_OFFLOAD_TCP_CKSUM); + DEV_TX_OFFLOAD_TCP_CKSUM) | + DEV_TX_OFFLOAD_MBUF_FAST_FREE | + DEV_TX_OFFLOAD_MULTI_SEGS; + + dev_info->default_rxconf.rx_drop_en = true; } static int dpaa_eth_link_update(struct rte_eth_dev *dev, -- 2.9.3