From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6C02BA2EDB for ; Mon, 30 Sep 2019 15:50:43 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 050EA1BEBB; Mon, 30 Sep 2019 15:49:52 +0200 (CEST) Received: from huawei.com (szxga04-in.huawei.com [45.249.212.190]) by dpdk.org (Postfix) with ESMTP id 72B731BEBB for ; Mon, 30 Sep 2019 15:49:50 +0200 (CEST) Received: from DGGEMS413-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id 1B015D35D3B56AF4475E for ; Mon, 30 Sep 2019 21:49:49 +0800 (CST) Received: from tester.localdomain (10.175.119.39) by DGGEMS413-HUB.china.huawei.com (10.3.19.213) with Microsoft SMTP Server id 14.3.439.0; Mon, 30 Sep 2019 21:49:38 +0800 From: Xiaoyun wang To: CC: , , , , , , , Xiaoyun wang Date: Mon, 30 Sep 2019 22:00:53 +0800 Message-ID: <53c8ab182b21c48588d67f6fe6bcdcbb02fb9fb6.1569850827.git.cloud.wangxiaoyun@huawei.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.175.119.39] X-CFilter-Loop: Reflected Subject: [dpdk-dev] [PATCH v3 15/19] net/hinic: support LRO offload X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch supports LRO offload. Signed-off-by: Xiaoyun wang --- doc/guides/nics/features/hinic.ini | 1 + doc/guides/nics/hinic.rst | 1 + drivers/net/hinic/hinic_pmd_ethdev.c | 24 ++++++++++++++++++------ 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/doc/guides/nics/features/hinic.ini b/doc/guides/nics/features/hinic.ini index 2c9d845..65a335a 100644 --- a/doc/guides/nics/features/hinic.ini +++ b/doc/guides/nics/features/hinic.ini @@ -13,6 +13,7 @@ MTU update = Y Jumbo frame = Y Scattered Rx = Y TSO = Y +LRO = Y Promiscuous mode = Y Allmulticast mode = Y Unicast MAC filter = Y diff --git a/doc/guides/nics/hinic.rst b/doc/guides/nics/hinic.rst index ed607eb..9fb80d4 100644 --- a/doc/guides/nics/hinic.rst +++ b/doc/guides/nics/hinic.rst @@ -33,6 +33,7 @@ Features - Flow director - Set Link down or up - FW version +- LRO Prerequisites ------------- diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c index 48ec467..765e661 100644 --- a/drivers/net/hinic/hinic_pmd_ethdev.c +++ b/drivers/net/hinic/hinic_pmd_ethdev.c @@ -70,6 +70,9 @@ #define HINIC_PKTLEN_TO_MTU(pktlen) \ ((pktlen) - (ETH_HLEN + ETH_CRC_LEN)) +/* lro numer limit for one packet */ +#define HINIC_LRO_WQE_NUM_DEFAULT 8 + /* Driver-specific log messages type */ int hinic_logtype; @@ -731,7 +734,8 @@ static void hinic_get_speed_capa(struct rte_eth_dev *dev, uint32_t *speed_capa) DEV_RX_OFFLOAD_TCP_CKSUM | DEV_RX_OFFLOAD_VLAN_FILTER | DEV_RX_OFFLOAD_SCATTER | - DEV_RX_OFFLOAD_JUMBO_FRAME; + DEV_RX_OFFLOAD_JUMBO_FRAME | + DEV_RX_OFFLOAD_TCP_LRO; info->tx_queue_offload_capa = 0; info->tx_offload_capa = DEV_TX_OFFLOAD_VLAN_INSERT | @@ -792,6 +796,7 @@ static int hinic_rxtx_configure(struct rte_eth_dev *dev) { int err; struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); + bool lro_en; /* rx configure, if rss enable, need to init default configuration */ err = hinic_rx_configure(dev); @@ -808,6 +813,18 @@ static int hinic_rxtx_configure(struct rte_eth_dev *dev) goto set_rx_mode_fail; } + /* config lro */ + lro_en = dev->data->dev_conf.rxmode.offloads & DEV_RX_OFFLOAD_TCP_LRO ? + true : false; + + err = hinic_set_rx_lro(nic_dev->hwdev, lro_en, lro_en, + HINIC_LRO_WQE_NUM_DEFAULT); + if (err) { + PMD_DRV_LOG(ERR, "%s lro failed, err: %d", + lro_en ? "Enable" : "Disable", err); + goto set_rx_mode_fail; + } + return HINIC_OK; set_rx_mode_fail: @@ -2478,11 +2495,6 @@ static int hinic_set_default_hw_feature(struct hinic_nic_dev *nic_dev) if (err) return err; - /* disable LRO */ - err = hinic_set_rx_lro(nic_dev->hwdev, 0, 0, (u8)0); - if (err) - return err; - /* Set pause enable, and up will disable pfc. */ err = hinic_set_default_pause_feature(nic_dev); if (err) -- 1.8.3.1