From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A7D3E45B3C; Tue, 15 Oct 2024 05:11:52 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9E1FB40697; Tue, 15 Oct 2024 05:11:52 +0200 (CEST) Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) by mails.dpdk.org (Postfix) with ESMTP id 9F5D940689 for ; Tue, 15 Oct 2024 05:11:51 +0200 (CEST) X-SpamFilter-By: ArmorX SpamTrap 5.78 with qID 49F3Bny86820891, This message is accepted by code: ctloc85258 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=realsil.com.cn; s=dkim; t=1728961909; bh=9zet2KEjUQQf9weg06F8tx/gTnep+hnpt3OQS9KjyI8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Transfer-Encoding:Content-Type; b=uHKG0K2r/B6Hkgddc9EaxoEusv9b0u+0q9xa4l/dk4rAiwtrHbS/k5T9UJsk/fEy0 M/0KHLWko210veizWlxXDYiBRykbjYhpUyX4PpWT+ZDTHBOYGKzXYdIJ3qJDxgiRPl YAYHtuFYqJBxtiuJ0x77d1hCZts49acwtUap9vs/0jE0rv3PCywKQ41awHx5iHKcEz o9Exm+3sb7cb3J1fKfy+lyDdFfrFVTTbPeSGDmWRPYM8VR8fn5YHsT8cF2GBIebBeQ kUAmbmobZ+Z15PIhB7BAO0UgMbI2+s5PR/H+3xUGeuj047pdy2mioOGYb8zubIQGAn kD5mJDuVYjL2w== Received: from RSEXH36502.realsil.com.cn (rsn1.realsil.com.cn[172.29.17.3]) by rtits2.realtek.com.tw (8.15.2/3.06/5.92) with ESMTPS id 49F3Bny86820891 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Tue, 15 Oct 2024 11:11:49 +0800 Received: from RSEXDAG02.realsil.com.cn (172.29.17.196) by RSEXH36502.realsil.com.cn (172.29.17.3) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Tue, 15 Oct 2024 11:11:49 +0800 Received: from RSEXH36502.realsil.com.cn (172.29.17.3) by RSEXDAG02.realsil.com.cn (172.29.17.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Tue, 15 Oct 2024 11:11:49 +0800 Received: from 172.29.32.27 (172.29.32.27) by RSEXH36502.realsil.com.cn (172.29.17.3) with Microsoft SMTP Server id 15.1.2507.35 via Frontend Transport; Tue, 15 Oct 2024 11:11:49 +0800 From: Howard Wang To: CC: , Howard Wang Subject: [PATCH v1 15/18] net/r8169: impelment MTU configuration Date: Tue, 15 Oct 2024 11:09:25 +0800 Message-ID: <20241015030928.70642-16-howard_wang@realsil.com.cn> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241015030928.70642-1-howard_wang@realsil.com.cn> References: <20241015030928.70642-1-howard_wang@realsil.com.cn> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add support for updating MTU value. Signed-off-by: Howard Wang --- drivers/net/r8169/r8169_ethdev.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/drivers/net/r8169/r8169_ethdev.c b/drivers/net/r8169/r8169_ethdev.c index 3e6bc570d6..70c3661691 100644 --- a/drivers/net/r8169/r8169_ethdev.c +++ b/drivers/net/r8169/r8169_ethdev.c @@ -47,6 +47,7 @@ static int rtl_promiscuous_enable(struct rte_eth_dev *dev); static int rtl_promiscuous_disable(struct rte_eth_dev *dev); static int rtl_allmulticast_enable(struct rte_eth_dev *dev); static int rtl_allmulticast_disable(struct rte_eth_dev *dev); +static int rtl_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu); /* * The set of PCI devices this driver supports @@ -93,6 +94,8 @@ static const struct eth_dev_ops rtl_eth_dev_ops = { .stats_get = rtl_dev_stats_get, .stats_reset = rtl_dev_stats_reset, + .mtu_set = rtl_dev_mtu_set, + .rx_queue_setup = rtl_rx_queue_setup, .rx_queue_release = rtl_rx_queue_release, .rxq_info_get = rtl_rxq_info_get, @@ -388,6 +391,9 @@ rtl_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) break; } + dev_info->min_mtu = RTE_ETHER_MIN_MTU; + dev_info->max_mtu = dev_info->max_rx_pktlen - RTL_ETH_OVERHEAD; + dev_info->rx_offload_capa = (rtl_get_rx_port_offloads() | dev_info->rx_queue_offload_capa); dev_info->tx_offload_capa = rtl_get_tx_port_offloads(); @@ -610,6 +616,29 @@ rtl_dev_close(struct rte_eth_dev *dev) return ret_stp; } +static int +rtl_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) +{ + struct rte_eth_dev_info dev_info; + struct rtl_adapter *adapter = RTL_DEV_PRIVATE(dev); + struct rtl_hw *hw = &adapter->hw; + int ret; + uint32_t frame_size = mtu + RTL_ETH_OVERHEAD; + + ret = rtl_dev_infos_get(dev, &dev_info); + if (ret != 0) + return ret; + + if (mtu < RTE_ETHER_MIN_MTU || frame_size > dev_info.max_rx_pktlen) + return -EINVAL; + + hw->mtu = mtu; + + RTL_W16(hw, RxMaxSize, frame_size); + + return 0; +} + static int rtl_dev_init(struct rte_eth_dev *dev) { -- 2.34.1