From mboxrd@z Thu Jan 1 00:00:00 1970 From: Igor Russkikh Subject: [PATCH v6 18/22] net/atlantic: implement MTU configuration Date: Fri, 12 Oct 2018 11:09:45 +0000 Message-ID: <3b960a834e8a1d9d61eeaec52c0bb36e2cbbec05.1539338074.git.igor.russkikh@aquantia.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Cc: Pavel Belous , Igor Russkikh , "ferruh.yigit@intel.com" , Pavel Belous To: "dev@dpdk.org" Return-path: Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0087.outbound.protection.outlook.com [104.47.38.87]) by dpdk.org (Postfix) with ESMTP id 589C01B5FF for ; Fri, 12 Oct 2018 13:09:47 +0200 (CEST) In-Reply-To: Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Pavel Belous Add support for updating MTU value. Signed-off-by: Igor Russkikh Signed-off-by: Pavel Belous --- doc/guides/nics/features/atlantic.ini | 1 + drivers/net/atlantic/atl_ethdev.c | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/doc/guides/nics/features/atlantic.ini b/doc/guides/nics/featur= es/atlantic.ini index 1dd3ff87e512..dd44ed75aef4 100644 --- a/doc/guides/nics/features/atlantic.ini +++ b/doc/guides/nics/features/atlantic.ini @@ -8,6 +8,7 @@ Speed capabilities =3D Y Link status =3D Y Link status event =3D Y Queue start/stop =3D Y +MTU update =3D Y Jumbo frame =3D Y Promiscuous mode =3D Y Allmulticast mode =3D Y diff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_e= thdev.c index 6cee14b2dcba..db2d798f28aa 100644 --- a/drivers/net/atlantic/atl_ethdev.c +++ b/drivers/net/atlantic/atl_ethdev.c @@ -48,6 +48,8 @@ static void atl_dev_info_get(struct rte_eth_dev *dev, =20 static const uint32_t *atl_dev_supported_ptypes_get(struct rte_eth_dev *de= v); =20 +static int atl_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu); + /* Flow control */ static int atl_flow_ctrl_get(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf); @@ -219,6 +221,8 @@ static const struct eth_dev_ops atl_eth_dev_ops =3D { .dev_infos_get =3D atl_dev_info_get, .dev_supported_ptypes_get =3D atl_dev_supported_ptypes_get, =20 + .mtu_set =3D atl_dev_mtu_set, + /* Queue Control */ .rx_queue_start =3D atl_rx_queue_start, .rx_queue_stop =3D atl_rx_queue_stop, @@ -1151,6 +1155,23 @@ atl_set_default_mac_addr(struct rte_eth_dev *dev, st= ruct ether_addr *addr) } =20 static int +atl_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) +{ + struct rte_eth_dev_info dev_info; + uint32_t frame_size =3D mtu + ETHER_HDR_LEN + ETHER_CRC_LEN; + + atl_dev_info_get(dev, &dev_info); + + if ((mtu < ETHER_MIN_MTU) || (frame_size > dev_info.max_rx_pktlen)) + return -EINVAL; + + /* update max frame size */ + dev->data->dev_conf.rxmode.max_rx_pkt_len =3D frame_size; + + return 0; +} + +static int atl_dev_set_mc_addr_list(struct rte_eth_dev *dev, struct ether_addr *mc_addr_set, uint32_t nb_mc_addr) --=20 2.7.4