From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liron Himi Subject: Re: [PATCH v2] net/kni: calc mbuf&mtu according to given mb_pool Date: Mon, 25 Feb 2019 11:29:30 +0000 Message-ID: References: <1550738855-11107-1-git-send-email-lironh@marvell.com> <1550952885-2395-1-git-send-email-lironh@marvell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Cc: "dev@dpdk.org" , Liron Himi , Liron Himi To: "ferruh.yigit@intel.com" Return-path: Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id 717D93256 for ; Mon, 25 Feb 2019 12:29:34 +0100 (CET) In-Reply-To: <1550952885-2395-1-git-send-email-lironh@marvell.com> 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" Hi, Kind reminder Regards, Liron -----Original Message----- From: lironh@marvell.com =20 Sent: Saturday, February 23, 2019 22:15 To: ferruh.yigit@intel.com Cc: dev@dpdk.org; Liron Himi Subject: [PATCH v2] net/kni: calc mbuf&mtu according to given mb_pool From: Liron Himi - mbuf_size and mtu are now being calculated according to the given mb-pool= . - max_mtu is now being set according to the given mtu the above two changes provide the ability to work with jumbo frames Signed-off-by: Liron Himi --- drivers/net/kni/rte_eth_kni.c | 10 +++++++--- kernel/linux/kni/compat.h | 4 ++++ kernel/linux/kni/kni_misc.c | 3 +++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/net/kni/rte_eth_kni.c b/drivers/net/kni/rte_eth_kni.c = index a1e9970..5e02224 100644 --- a/drivers/net/kni/rte_eth_kni.c +++ b/drivers/net/kni/rte_eth_kni.c @@ -16,9 +16,11 @@ /* Only single queue supported */ #define KNI_MAX_QUEUE_PER_PORT 1 =20 -#define MAX_PACKET_SZ 2048 #define MAX_KNI_PORTS 8 =20 +#define KNI_ETHER_MTU(mbuf_size) \ + ((mbuf_size) - ETHER_HDR_LEN) /**< Ethernet MTU. */ + #define ETH_KNI_NO_REQUEST_THREAD_ARG "no_request_thread" static const char * const valid_arguments[] =3D { ETH_KNI_NO_REQUEST_THREAD_ARG, @@ -123,11 +125,13 @@ eth_kni_start(struct rte_eth_dev *dev) struct rte_kni_conf conf; const char *name =3D dev->device->name + 4; /* remove net_ */ =20 + mb_pool =3D internals->rx_queues[0].mb_pool; snprintf(conf.name, RTE_KNI_NAMESIZE, "%s", name); conf.force_bind =3D 0; conf.group_id =3D port_id; - conf.mbuf_size =3D MAX_PACKET_SZ; - mb_pool =3D internals->rx_queues[0].mb_pool; + conf.mbuf_size =3D + rte_pktmbuf_data_room_size(mb_pool) - RTE_PKTMBUF_HEADROOM; + conf.mtu =3D KNI_ETHER_MTU(conf.mbuf_size); =20 internals->kni =3D rte_kni_alloc(mb_pool, &conf, NULL); if (internals->kni =3D=3D NULL) { diff --git a/kernel/linux/kni/compat.h b/kernel/linux/kni/compat.h index 3c= 575c7..b9f9a6f 100644 --- a/kernel/linux/kni/compat.h +++ b/kernel/linux/kni/compat.h @@ -117,3 +117,7 @@ #if LINUX_VERSION_CODE >=3D KERNEL_VERSION(4, 11, 0) #define HAVE_SIGNAL_= FUNCTIONS_OWN_HEADER #endif + +#if LINUX_VERSION_CODE >=3D KERNEL_VERSION(4, 10, 0) #define=20 +HAVE_MAX_MTU_PARAM #endif diff --git a/kernel/linux/kni/kni_misc.c b/kernel/linux/kni/kni_misc.c inde= x 522ae23..04c78eb 100644 --- a/kernel/linux/kni/kni_misc.c +++ b/kernel/linux/kni/kni_misc.c @@ -459,6 +459,9 @@ kni_ioctl_create(struct net *net, uint32_t ioctl_num, =20 if (dev_info.mtu) net_dev->mtu =3D dev_info.mtu; +#ifdef HAVE_MAX_MTU_PARAM + net_dev->max_mtu =3D net_dev->mtu; +#endif =20 ret =3D register_netdev(net_dev); if (ret) { -- 2.7.4