From patchwork Mon Jun 20 08:39:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Goshen X-Patchwork-Id: 113094 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7652AA0545; Mon, 20 Jun 2022 10:40:42 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1980F40F19; Mon, 20 Jun 2022 10:40:42 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70137.outbound.protection.outlook.com [40.107.7.137]) by mails.dpdk.org (Postfix) with ESMTP id 2383340150 for ; Mon, 20 Jun 2022 10:40:41 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gO6NB5IT0Y0Avv9NP/iEOWISo3tpmibmpK4r+EWhA2BRsaGwAERFLtP0Wcmhyh3Io19ulvrc4aKyfPDWHqT/WOlPIM0zQZOSWLjMfR2l/nUryEq6E6OG+Nwm15v+eZPJHnJSH+aUzxajNXVnuTs6hTwH4Abwc3pdAQcRDDE+zNEJH/qrTHgJOCYUmHOe8CD9ToV05LEaAszrAN77TTz0AFI8Bh9yxjWK1dnGbLGXMJ/s7YtrOK2LHJYWFboNWPvPVj72opzDPRc2tV0QXpUa6gz7IPgxy/nbhna/xm3rnohcfLQFsVaC1MSVzuZskLjSWeehz20nhzVULCz0C3MbKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=87TqE+LOF//CNMEG5+1wWKCDgtTgUEOY2oq+Wn/3akU=; b=Y8jhrsxRZruVkQwfVdElBsi6Ti7YNKqAHU1RkC6SvOBw0YME64YrrsE+RZtO8ns4xRwMAARjVcvQrqphZc/sRh+dS+feOn7fx3kO0yevOfHpVpSqq3KkOK7fUueD4Xmt2ZT/BnSU1pI39Biin0MW7oZGhMdUf9NRKZH2gxZuqsqcIz6cqcLsKjXz+sFlMcXaVbVmuvcr2kQ73PDCClxJSRZEpt81rFC6Qv2T3fJnXz6qcHwupfkKF0gkmzwZ4DnDOzF4MrfRbpgq7VQf/JFn+HyuR0GYxUX8a70B4jenP/nfd47a7yf8r9e6UwZQ2Jjhh8HjsYLOy6YS8aLeXnrcSA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cgstowernetworks.com; dmarc=pass action=none header.from=cgstowernetworks.com; dkim=pass header.d=cgstowernetworks.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cgstowernetworks.onmicrosoft.com; s=selector2-cgstowernetworks-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=87TqE+LOF//CNMEG5+1wWKCDgtTgUEOY2oq+Wn/3akU=; b=OSyxYUV6vVuCCB3QhxKVA9vR8N71i5OJ+X9qislWkcG8FpqW7WEx5W6JzJK2bGXJmLax//a9XgDZ7kxiEmblxHvVUc1ZlAeNZCXzEC4OJ3QExtcmyXaL7j60DLx5gs9pEihVmzq/mW7I0CIfAXXG49X1kFo5eFhSpKbVMnZtym8= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cgstowernetworks.com; Received: from AM0PR09MB3972.eurprd09.prod.outlook.com (2603:10a6:208:195::21) by AM6PR09MB2824.eurprd09.prod.outlook.com (2603:10a6:20b:a5::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.13; Mon, 20 Jun 2022 08:40:40 +0000 Received: from AM0PR09MB3972.eurprd09.prod.outlook.com ([fe80::d0d6:ba99:48ac:5e72]) by AM0PR09MB3972.eurprd09.prod.outlook.com ([fe80::d0d6:ba99:48ac:5e72%8]) with mapi id 15.20.5353.022; Mon, 20 Jun 2022 08:40:39 +0000 From: Ido Goshen To: ferruh.yigit@xilinx.com, stephen@networkplumber.org Cc: dev@dpdk.org, Ido Goshen Subject: [PATCH v8 1/3] pcap: support MTU set for linux interfaces Date: Mon, 20 Jun 2022 11:39:42 +0300 Message-Id: <20220620083944.51517-2-ido@cgstowernetworks.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220620083944.51517-1-ido@cgstowernetworks.com> References: <20220317174347.110909-1-ido@cgstowernetworks.com> <20220620083944.51517-1-ido@cgstowernetworks.com> X-ClientProxiedBy: VI1PR04CA0122.eurprd04.prod.outlook.com (2603:10a6:803:f0::20) To AM0PR09MB3972.eurprd09.prod.outlook.com (2603:10a6:208:195::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 47a990ba-a429-4435-612b-08da52988dea X-MS-TrafficTypeDiagnostic: AM6PR09MB2824:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hraO+aFkIYYE7zGf+GZTxjqR0eHK9VuU3auawSQR2rQiy07wN4/aYHmC4iZpwJoYitD/EDdNM68nFGX4fRLzZMvMPwQj9oTOVvVChI4DJJwd/HE2bBEFUxRKJVj/6YnL8SScwiP1o/qsaQ4ZEcV6NYd/IdmiulhwM96W2JydgLh+1ZhyuAUDx6s6CFkbvt1sMTtGI5i2qi0rGlW+tgPBlTzcjOdrUFVunU9S8bqsHwiDdeJgOJ+apYIy3HW2xn98tB64lKWA/ZjeYQnaRSMQ3HqTaxLAqRZcZp5wnIxsxHQoPF501E5iWtjZtxUniF7w70J+iZjOXM/d8tMO8Abo3+Pss0/bCueei4Ak3uii5ZkArClC7UnZZJlDf0LI2M0vXx09VtgQ0LYPlxaKwZoCr0/0pHCJNa4KcBjlju3lOnI+AUX3WkC9TrbhZrMYcIwYgF2Nxm/4Wea2anrkQ8cRT3AUekKHqLvbNLK+rD4Lr+SPSxndl8wGtiZjPdw6glFj8aKhqv7C7sE6+c0zoNb7pzObjaKqly3RWbc01Y6h95UcnL+RB5yaIY6pTtorcpzJOeA2xU8Eh7KmqOnqdT2DjZRSbQJ8RZvUMOsdqOvJyEWn2E8IMiL7DOApcRnSfK81llvE73dkWvN+dUqMABmnJl99m4DKz+Rvty6F3UhKmYtTzD2msaaORB6AQz7RB6vjgBzM3REgAi4McQVMD5GQrg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR09MB3972.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(136003)(39830400003)(376002)(396003)(346002)(366004)(6512007)(478600001)(8936002)(41300700001)(8676002)(6506007)(52116002)(316002)(6486002)(36756003)(26005)(6666004)(2616005)(4326008)(186003)(83380400001)(66556008)(66946007)(107886003)(66476007)(1076003)(38350700002)(86362001)(5660300002)(2906002)(38100700002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UnoBeKtd6YP7SWlHNvv69VFpxpbjjDltt08ZZAMjTG0MZjEwmYYtBZ/osOtFq/mPwmprE4C6XS0mjyMQRi0NpdrkMhOuGhV/XvZOLtnjDhtw+s+mxOG6apd/cz6n8ZqOT5AG9e7NlHg2WYF7+iZIfllqK3QaI7E3yyDS44xW9PltBmPiy9DPVykGHhVyeCRLPvU1RZxsGhIjcUj0tWabIuFnFv8mgQfQEiepBFNQT8zX+WFi/wXZXIr2v1g9Ja95qYaqboTjOVmw639Qnta2Fk1kaNlueQMpwhoVHL6MUaAAkWgHFpgfo+HijGZudh425jkD+G+88SK0XNhQ3oRKwJD3agB7bHP2v4bcKw6W2z3Nrw6eoIVvHCTq9J9/chn7njzVf9FyF+ZlPb9VtUYrLnY7L+NBQAQCy25BDQlTKXi9YDMXQb05TO3i9gwRM7seffNxHHy3TGlrWxumpEMpDoJ+/9RpaZgXWFMJjTPNmM7D+Ww+9OKVTp1spzt5KCStpnGU78JgsvIJF8Lub5fEYwByAqkGqrmAooxGmuiGtwOUfOYwjBapRn1FJs7S0JekrJuiWMHa2hExIHiyEPxO/hPeZCDyQvAAwKQCCYMegJ3xCPJtQGdkpNow3vbMAPL18ltNVYxzwXmXKI9iD3keDLXvCdCwZv7u4Wpf6AVINGtn1uuLkELuBYnwlYoq8ZWhLgkQ/UifQGi2CehIlIO5KMvRCe+vke4AnNb2GxRatg4973zkipYj3b4Kd5J1VAKr1jEcgOXoyCONaSILsZiejZln6sD2Pr6Djr34pCDcrAqZcbpgGttLwJ425dLIwCPgnPJ2vT/JMJqXGxp1NCuKH8Isufxex4LUgbG9l+1muku0YZL2q+vcYhlmAujzN5ZrRz6Yb+EdONuMAEgU+9+LPKau1DDc3Hrigz5yeN/AUwxoi7kn8BWmvxv4KCcVt+7NQoNVilI0+fBmLORIV++SkorIzEgStb+U+tOZcJehPpCirAi6ZbghmnqfbhY2DbXzQ08cr9EKKHtZ1zen6+oEOrLBukS/T58hpTyhhtCjVVvyavSkReuVCx1oALTNLzKWBb70bfOCzMS0yRIS+FDUjig4WKvodVmXQjdFTkJ1JXwsBibUUf/lHaFQSVuzHW9aQWWvoHKevDHo9MQ/M5OQGYpQLMfsxGnznf9+7epnMcM27+J6pgg9yWSSmYay6b6OnXTcgd+ibTuB0byA2hCcwhtkvxUbycWKz73Gt52B/ixLDqoN6+FZ8xtm20RXTTHiWBQujm7U6bDf+D4EuCmWXFYc/y6wuvhO+KMFoi3dlIlrEdUDYxx2xxXuG61iIjha8/mis0wRlLgIhaLKHx41uecvpsYQ9NKrE5PgFZwpmrmv+Myq469tE1DkxUUIx8Ez7vSKRgat24M2KNJT13nYBhGq3TT7sYvvqa+7Ty/pQ7lxwV6iQBvfYXSk2zDfnmaDcA07Ikmp5DSXgLzJkLmTgFkSGtOecKaKxoS6vCi6uGNarAejKMxlkiD4gDxRtVGDNfBphA4VOA8Kh4udtcfcylWxyaTB0yUJJydQHBx0fmqWhyyTG9vVJ5edNKSEAkWOtktvSqsZnm34mzjzNUWJogG243T71s8TfBv8yPlaLDVPoDZlBc2GQ39PLQQgLOfMiP9MJCjZQXf/zuOAB4XylZRKhQyrtNAOEyi2bp9ZrpWQSCVi1mBCGAlOPXvgYc93VZWIPkZREiIjkonCZNkOMnrV4UJridqK1yTXCPzvN0c= X-OriginatorOrg: cgstowernetworks.com X-MS-Exchange-CrossTenant-Network-Message-Id: 47a990ba-a429-4435-612b-08da52988dea X-MS-Exchange-CrossTenant-AuthSource: AM0PR09MB3972.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jun 2022 08:40:39.7675 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fc9e9498-07e8-4b82-b4cf-365bba23cbbf X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: dH6O4/X7S6eV4/ByCdTh0YA+MOb4fyhUM3nkKck4OYTmfiOgYDu+uCpypaOVCEOmExvsIH7SAVqrcYEFATfXjXMIj83IcIlaCoQhfyLG4IE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR09MB2824 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 Support rte_eth_dev_set_mtu for pcap ifaces vdevs by setting the underlying OS network interface's MTU. Support is for pcap ifaces only and not for pcap files. Support is for Linux only. Bugzilla ID: 961 Signed-off-by: Ido Goshen --- doc/guides/rel_notes/release_22_07.rst | 3 ++ drivers/net/pcap/pcap_ethdev.c | 42 ++++++++++++++++++++++++++ drivers/net/pcap/pcap_osdep.h | 1 + drivers/net/pcap/pcap_osdep_freebsd.c | 7 +++++ drivers/net/pcap/pcap_osdep_linux.c | 21 +++++++++++++ drivers/net/pcap/pcap_osdep_windows.c | 7 +++++ 6 files changed, 81 insertions(+) diff --git a/doc/guides/rel_notes/release_22_07.rst b/doc/guides/rel_notes/release_22_07.rst index dd371952c3..a966973302 100644 --- a/doc/guides/rel_notes/release_22_07.rst +++ b/doc/guides/rel_notes/release_22_07.rst @@ -220,6 +220,9 @@ New Features Merged l3fwd-acl code into l3fwd as l3fwd-acl contains duplicate and common functions to l3fwd. +* **Updated pcap driver.** + + * Added support for MTU on Linux network interfaces. Removed Items ------------- diff --git a/drivers/net/pcap/pcap_ethdev.c b/drivers/net/pcap/pcap_ethdev.c index ec29fd6bc5..2221c53051 100644 --- a/drivers/net/pcap/pcap_ethdev.c +++ b/drivers/net/pcap/pcap_ethdev.c @@ -807,6 +807,47 @@ eth_stats_reset(struct rte_eth_dev *dev) return 0; } +static int +eth_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) +{ + unsigned int i; + struct pmd_internals *internals = dev->data->dev_private; + int is_supported = 0; + int is_err = 0; + + for (i = 0; i < dev->data->nb_rx_queues; i++) { + struct pcap_rx_queue *queue = &internals->rx_queue[i]; + + if ((strcmp(queue->type, ETH_PCAP_IFACE_ARG) == 0) || + (strcmp(queue->type, ETH_PCAP_RX_IFACE_ARG) == 0) || + (strcmp(queue->type, ETH_PCAP_RX_IFACE_IN_ARG) == 0)) { + is_supported = 1; + if (osdep_iface_mtu_set(queue->name, mtu) < 0) + is_err = 1; + } + } + + for (i = 0; i < dev->data->nb_tx_queues; i++) { + struct pcap_tx_queue *queue = &internals->tx_queue[i]; + + if ((strcmp(queue->type, ETH_PCAP_IFACE_ARG) == 0) || + (strcmp(queue->type, ETH_PCAP_TX_IFACE_ARG) == 0)) { + is_supported = 1; + if (osdep_iface_mtu_set(queue->name, mtu) < 0) + is_err = 1; + } + } + + if (!is_supported) + return -ENOTSUP; + + if (is_err) + return -1; + + PMD_LOG(INFO, "MTU set %s %u\n", dev->device->name, mtu); + return 0; +} + static inline void infinite_rx_ring_free(struct rte_ring *pkts) { @@ -1004,6 +1045,7 @@ static const struct eth_dev_ops ops = { .link_update = eth_link_update, .stats_get = eth_stats_get, .stats_reset = eth_stats_reset, + .mtu_set = eth_mtu_set, }; static int diff --git a/drivers/net/pcap/pcap_osdep.h b/drivers/net/pcap/pcap_osdep.h index bf41cba982..043677ec77 100644 --- a/drivers/net/pcap/pcap_osdep.h +++ b/drivers/net/pcap/pcap_osdep.h @@ -14,5 +14,6 @@ extern int eth_pcap_logtype; int osdep_iface_index_get(const char *name); int osdep_iface_mac_get(const char *name, struct rte_ether_addr *mac); +int osdep_iface_mtu_set(const char *name, uint16_t mtu); #endif diff --git a/drivers/net/pcap/pcap_osdep_freebsd.c b/drivers/net/pcap/pcap_osdep_freebsd.c index 20556b3e92..a9961ba3e3 100644 --- a/drivers/net/pcap/pcap_osdep_freebsd.c +++ b/drivers/net/pcap/pcap_osdep_freebsd.c @@ -57,3 +57,10 @@ osdep_iface_mac_get(const char *if_name, struct rte_ether_addr *mac) rte_free(buf); return 0; } + +int +osdep_iface_mtu_set(__rte_unused const char *if_name, __rte_unused uint16_t mtu) +{ + PMD_LOG(ERR, "mtu set not supported on freebsd\n"); + return -ENOTSUP; +} diff --git a/drivers/net/pcap/pcap_osdep_linux.c b/drivers/net/pcap/pcap_osdep_linux.c index 97033f57c5..b0b4a716fe 100644 --- a/drivers/net/pcap/pcap_osdep_linux.c +++ b/drivers/net/pcap/pcap_osdep_linux.c @@ -40,3 +40,24 @@ osdep_iface_mac_get(const char *if_name, struct rte_ether_addr *mac) close(if_fd); return 0; } + +int +osdep_iface_mtu_set(const char *if_name, uint16_t mtu) +{ + struct ifreq ifr; + int if_fd = socket(AF_INET, SOCK_DGRAM, 0); + + if (if_fd == -1) + return -1; + + rte_strscpy(ifr.ifr_name, if_name, sizeof(ifr.ifr_name)); + ifr.ifr_mtu = mtu; + if (ioctl(if_fd, SIOCSIFMTU, &ifr)) { + PMD_LOG(ERR, "%s mtu set to %d failed\n", if_name, mtu); + close(if_fd); + return -1; + } + + close(if_fd); + return 0; +} diff --git a/drivers/net/pcap/pcap_osdep_windows.c b/drivers/net/pcap/pcap_osdep_windows.c index 1d398dc7ed..db34fc49e2 100644 --- a/drivers/net/pcap/pcap_osdep_windows.c +++ b/drivers/net/pcap/pcap_osdep_windows.c @@ -116,3 +116,10 @@ osdep_iface_mac_get(const char *device_name, struct rte_ether_addr *mac) free(info); return ret; } + +int +osdep_iface_mtu_set(__rte_unused const char *device_name, __rte_unused uint16_t mtu) +{ + PMD_LOG(ERR, "mtu set not supported on Windows\n"); + return -ENOTSUP; +} From patchwork Mon Jun 20 08:39:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Goshen X-Patchwork-Id: 113095 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0B693A0545; Mon, 20 Jun 2022 10:40:47 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 12C56427F1; Mon, 20 Jun 2022 10:40:44 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2122.outbound.protection.outlook.com [40.107.21.122]) by mails.dpdk.org (Postfix) with ESMTP id A37DD40150 for ; Mon, 20 Jun 2022 10:40:41 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MgWh/IYqZLlUmtuALXLLPxD+Km1I/zZuDryTmxAMeHgrR6tpG1HXAyF0qpYOSuPbVmfGQQKWYc2uhHJRkm7abGyjfFIRTnwG7zI34hN/uIHxMnRj6h17m8c+wHFtezKdAZHqRRIsB0i+fEbmnQJ3nKzZtFVmkNe0gMtDoNvqpcIy+r9bwGo7bn3T1kBcDkO8N4YJUXp7KCghBPOsJmbAGSdRQoNBhi823etRL6C/ruDPE+WU9I3FZC+Kt6AtSkUb1nIq6LhPSuv/pMH4s8OMRHXkVo+Wp5VBrNQbaTgX9Yy3ipDXKceeB8j1cdOe4642QHFD2eF4F3fjlhlHrV+vOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ps0NLCw9zeQzJbgTh4V2l3dxGg8CVj+TdVn8gJoXt2E=; b=fl0FCpZOWlSDR0Y2lOEXCAQDqfYrJdof6/1dt0xM+ERlg6S38Iuu9+i+ca1Hd6QVVi3kP0ZAiynGl6aI8PBMMKtfA1qceiVvpoWnvyzh1YXcgDEUQE84nPb0cOh+Yn0JIUIatC00zLf+/Qn6IAoGtiRaetHZnP2fndYpHnl/xM4YwOZ8t9DjvW8XVy48PF8H22cOwJcx2G8dnGItkOCOioYGz95bG3ftwo7wdIzD/5GXZOtWOhecNOCe3iIZ1J+i//O+JNY1dEK/ImYQxMELHEj267nQxqdw3XpHFhkr2IIUrE5aFqd68+PxSrInLF5VYYBSr7jRmpQZJO9H96TMyg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cgstowernetworks.com; dmarc=pass action=none header.from=cgstowernetworks.com; dkim=pass header.d=cgstowernetworks.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cgstowernetworks.onmicrosoft.com; s=selector2-cgstowernetworks-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ps0NLCw9zeQzJbgTh4V2l3dxGg8CVj+TdVn8gJoXt2E=; b=DzfBj3dP9h7k7cvbDNuyLPMfyDg1bBtYZy3UtOg9+BnHlxeaQykDmcZ+fDbjRH9WatcFCsX8e6+CuApvOIj4vu+HUmkeZKsKveadHPcRrkPM1Fk1RoaGzLKROX9hC2hJ+j/AWZ1Z6FlFnPguGgqq8lqZdKybD3Oyp3pj3gXviNE= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cgstowernetworks.com; Received: from AM0PR09MB3972.eurprd09.prod.outlook.com (2603:10a6:208:195::21) by AM6PR09MB2824.eurprd09.prod.outlook.com (2603:10a6:20b:a5::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.13; Mon, 20 Jun 2022 08:40:40 +0000 Received: from AM0PR09MB3972.eurprd09.prod.outlook.com ([fe80::d0d6:ba99:48ac:5e72]) by AM0PR09MB3972.eurprd09.prod.outlook.com ([fe80::d0d6:ba99:48ac:5e72%8]) with mapi id 15.20.5353.022; Mon, 20 Jun 2022 08:40:40 +0000 From: Ido Goshen To: ferruh.yigit@xilinx.com, stephen@networkplumber.org Cc: dev@dpdk.org, Ido Goshen Subject: [PATCH v8 2/3] pcap: support MTU set for linux interfaces TX enhancment Date: Mon, 20 Jun 2022 11:39:43 +0300 Message-Id: <20220620083944.51517-3-ido@cgstowernetworks.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220620083944.51517-1-ido@cgstowernetworks.com> References: <20220317174347.110909-1-ido@cgstowernetworks.com> <20220620083944.51517-1-ido@cgstowernetworks.com> X-ClientProxiedBy: VI1PR04CA0122.eurprd04.prod.outlook.com (2603:10a6:803:f0::20) To AM0PR09MB3972.eurprd09.prod.outlook.com (2603:10a6:208:195::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 24677231-11d3-4584-e8a9-08da52988e74 X-MS-TrafficTypeDiagnostic: AM6PR09MB2824:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IQZW8Qo+k6IsTJUY7p/jVnCkXxRYAlMXih4DepKxMJ4jx2yEdczC2kR8bRe4ygXvjR8uPqy6dekrG78EGTfD9nNMn8OqqCZpCGxp00SyaCfn1Xjig+vHTI5xhu5Mgcec/MwU7/JcVtKZeP4sCD3r10LrB/tRStz5CHQgS1C++lvRqWMwVmHZewvXAXX3i8ptoWnCbzdeOS5djh0Q/K5tu2t/Wsyssn5+GgJUIMrTH63qh2T6UBGd8R6PdHjwv1QYF824DkVmL/hshscvo8LyKmAIDb9SqabfEuRHEX+t3dk6piSWH1ZnN2WCP42m4mXc/lh6XuDw3em2AXNpl6k2ct0CfdwTZA3bevx/PDE/lbqBcwU6eM6TF/HdXFtn6xnJVyyB0EWKl+VZPgbQgNyNf7eNW+rMWvl8oU+H0xTnNbUq1GfB7AWBAuMkprncgP15EEr4+srnwx11jUONCCgw4vcUT3raBLgYKHX4D18CnaM18iZDgsMVkT1i6/TcRAI5kenDaR6GWxAaGn0DD8CP1wg1MuuQckx6MKTKbPigTKZF4SHWRZ2dqSzhaDqYIdMRQ7p9IpvYb3Q+DsPUBI46pjILIJnD5CoZjgH5q4nRcF6Ix/bHibPwj+a1zE26W70bCIjBZfKgN4HxNAn44kX0RzLALRx4uYpCsQYjZKvqFXtcuqOxE9mfuywdJM/OLfEDwKrrQcYECaE49c4RzzmGtQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR09MB3972.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(136003)(39830400003)(376002)(396003)(346002)(366004)(6512007)(478600001)(8936002)(41300700001)(8676002)(6506007)(52116002)(316002)(6486002)(36756003)(26005)(2616005)(4326008)(186003)(83380400001)(66556008)(66946007)(107886003)(66476007)(1076003)(38350700002)(86362001)(5660300002)(4744005)(2906002)(38100700002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: yPlU6WuTxK/ExnROi4mC1DYEXvr3McnjrXxqPb9aZL7iWYuYN8gCXie59D4+m7G1vT5aCvmGlnBPX8tTvx4YgLBmGBERc57dZPkkuyOQKgXrnGgVTfdTuFegQGrbES3Ru+9bQstyqH3Wfp6iaStp/h1+sHRXNlcZ9LcfDGz7kAUkAvRBkxvYbmr98NSl7WwhVPGeHheTeTo6fZ+ZoVvoNXXlk0ynzjhvb0DLU6a/9/5oK5m+iQP+/FmcCCDVg0MMz9qQL/E1fZAcWoE0LymTneE41+j28T8MMTnE9RtX+jxPcup9D6mXMVL5R1ND5BoYj5UxkHamJCSSH6WcrjZqhkXX/jNai76Xdlx6Zk8jcyqnaOcj0wXr7jP6/x8++YXPr1HHJVWWAQDTmYO5HER5ChCB5zI+fo9bPIG6ihvPrZ/vFet3smsLK4XddmLavzZgFzgT0YzbyEZ4Rze7y9avGNcy+n+zNeiNFDE+B7v5bfGz3pG88yZgHl/BPFXY82JOaDS8/VykFCOAVr1Kc4Jo16KnHqQD2PJTIvkOywPFtlowI5wxjWzetVjawkM1K4poS+kW1TXSzNsccgON7EvK/yJOfBhUgE2IjEJw04Lhfj9k7WmDYmdHHxe4HSSTMoNOo0J9alzOJextp5Zorj8aFx9LikLS6fapFyIBMyD8GCK6haxa6MsTwOhgfm2tsp/6sTOHzG21g/Ii5GubTCTe5YTtQg6lkBl/05X9PH7Iywqgg6osEhrWbf9bm4e2lHndJ/B/4iz5tmPNxsG13TbuauX6u3hZzfZEALaLUi2JKSAgzXKpiQC0sEAkFAs1htLLPwmLEAcpmUUginL7Jmpoy5dsknVS8hkj2qpN1PF+noH1WNx4CaWL39j8W/ojaWgK33SyvUShgnf1d8+f2aLsCL236vzH8cRNJpQiAXpA0FuCNk7FAJ/t+DHCeC6CcB5oHsl+wqM+d/mEvATiu5T43cWyVg8vv1Z/aGYbKhxJr751z9E0c4AUWqAj8zgMG3XsOoS9/hDYReWkwszhPJ72KpWnimCs2Jj0s4Oi+HM0dq6d0o2iBvcFxlMHPobbx6djlUVF7fBhjXnyp6e+8ee1c2dmExoRtZ42Z10vApegtST4NmYe4t746HEGEcgYJZVHSL0Qon54oavP2BxNKFIi82gIpwpIdl/SPpN0XVXZdjrRh2HYUFVZU9loVqSxjMG4hg2+tjn5W6uWMKxTSLsJaOPnk4ljW6SDPf7Y0wJFbTXXkXsK1LDfOYEM49E6iblpiY9nsg/uWMTkcSHCrckHN/u1BHM84CguTyDrb7t/dsxVbwZ+Z39wFuTC+M8mxUpAHOkxT2KA1ZGRmduLSUQpuYY78XW2RSpM+lkj4dmmrbx796w+gYhhlSQ9rLXBQ5V99ifkdAyICbllZ4ZNj4vLhodZznc0EqTAYg1AfLyIhXhjnqhSgjUuAYKSznjxP85zm/TOOb36dAGjjvbGxiP0QsNJbE/rzyIGIgrjlZdrJ36nBykxihi8M7ZkXxgMSmErdtJMYrNtIIyYdi2rxlaJ2wt5J+5PiCfo7/kdKr1EET6UhDWm41Rsh5LyoHRJ0JtLXbcLiHgmUEYIQTOQf1IoZb8YhfRw8umhjj301nSrvjGOuIpLgRhoS2GNYiYemV9og2WqD1yBzuD2gOudS1P1Ad9cBFDMwAwlvoKJUC8ZC+31knjFqrfCoXHI2Raj7paJNgmJqNJRymAV5CXg6iQM4JJTWxVQ4F09MojM5VqRfBo= X-OriginatorOrg: cgstowernetworks.com X-MS-Exchange-CrossTenant-Network-Message-Id: 24677231-11d3-4584-e8a9-08da52988e74 X-MS-Exchange-CrossTenant-AuthSource: AM0PR09MB3972.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jun 2022 08:40:40.7535 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fc9e9498-07e8-4b82-b4cf-365bba23cbbf X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: vVpFPlhcPFxtAnEzMn+gKYFIGpsRkSkFzjtu03KuH1TEU/+ER7BALVBInaBCjAFGxF30BfQVycXGnzcCicEs2Pf0Q3lZkthOxIQe0fZ7n78= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR09MB2824 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 Drop only the oversized packets and not its entire burst mbuf will be freed and will be counted as oerror Signed-off-by: Ido Goshen --- drivers/net/pcap/pcap_ethdev.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/net/pcap/pcap_ethdev.c b/drivers/net/pcap/pcap_ethdev.c index 2221c53051..ff98762058 100644 --- a/drivers/net/pcap/pcap_ethdev.c +++ b/drivers/net/pcap/pcap_ethdev.c @@ -494,8 +494,14 @@ eth_pcap_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) */ ret = pcap_sendpacket(pcap, rte_pktmbuf_read(mbuf, 0, len, temp_data), len); - if (unlikely(ret != 0)) - break; + if (unlikely(ret != 0)) { + if (errno == EMSGSIZE) { + rte_pktmbuf_free(mbuf); + continue; + } else { + break; + } + } num_tx++; tx_bytes += len; rte_pktmbuf_free(mbuf); From patchwork Mon Jun 20 08:39:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Goshen X-Patchwork-Id: 113097 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 28F46A0545; Mon, 20 Jun 2022 10:40:59 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6F2F94282A; Mon, 20 Jun 2022 10:40:46 +0200 (CEST) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60103.outbound.protection.outlook.com [40.107.6.103]) by mails.dpdk.org (Postfix) with ESMTP id 48479427EB for ; Mon, 20 Jun 2022 10:40:43 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B/SuAIg6BpE2NJCrIIoJ2o43NTet+c+m/ogu80+C+NH5gkXDaZ0iWoPS5ZBy8/ZSKSAPRemDRla9gq2YgiXlM651IFwrQ3Rwlrlm17pvATRJazC+xyiLll2Kk+DxXQYiO7wWihoPTYBbsrExClTIiLAsFdq0MpOu0KhyvgdSn8M3zAbmwSp7UIN1ENlLp9ydYVZggdgxubf7PzS8eQ5fqyls85UAvF90e0rMqQp2pU9R+PoXyDw/iVosi2tuqICT/FiLCIwCNjyKvwUGG90v2Y1TWosTmkHvGo70DZcgCTbIbxEVKb0k5bNd3My9ci/Jb/G4TVdsi3RfG66hokl40w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ZYRUI+xxnDrhJY3SCqww9Yhnk0HHyk+EUORPiORr1hM=; b=cOO+FT4fCh7QlFuViYPDrWXMwh3qV8eiIfsq3f7+pEa2AfMKms3Y2jG3yf75U5uccId3NbMUf+ORVsDtq0pvj5OIIDKPUkOku+KhmGr7u+g+SLgwV7bE3AZws51GM6ioRQ0B56A9X2zItNJNbotSGAZAd98D0kwAbtBeN+pricNCHqoOdTdpNq2f4vrf0pbKSEfIJYNWIjmdc/wIp5OLpZ+iTMWekNkHDzAmTLUW2B05k94B00asjTSrRvvqsJT+QUhG3u18VZ6hHUza6joFzKdtdUv2j1uEq1CthdmRbe25xImCMPGzFxVuUAMRAgltmFL2muGYGTaTstXJjS58pw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cgstowernetworks.com; dmarc=pass action=none header.from=cgstowernetworks.com; dkim=pass header.d=cgstowernetworks.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cgstowernetworks.onmicrosoft.com; s=selector2-cgstowernetworks-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZYRUI+xxnDrhJY3SCqww9Yhnk0HHyk+EUORPiORr1hM=; b=h3Y+XRwCSpMC3atO5HkiQEJJS0UgaGvTjoref4xU5DvJkKrL0zjgAiTwxR8jWQW/SkTT8B5by2rlDAokuY6QeasvnVLHv+FI9scI/RxqVX18+4RN6AMwmI+8K78TNVUT4slsCP6U+FQaLnKJTYW4fXl0on1345q1JzEl+wMG2KA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cgstowernetworks.com; Received: from AM0PR09MB3972.eurprd09.prod.outlook.com (2603:10a6:208:195::21) by AM0PR09MB3699.eurprd09.prod.outlook.com (2603:10a6:208:189::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.13; Mon, 20 Jun 2022 08:40:41 +0000 Received: from AM0PR09MB3972.eurprd09.prod.outlook.com ([fe80::d0d6:ba99:48ac:5e72]) by AM0PR09MB3972.eurprd09.prod.outlook.com ([fe80::d0d6:ba99:48ac:5e72%8]) with mapi id 15.20.5353.022; Mon, 20 Jun 2022 08:40:41 +0000 From: Ido Goshen To: ferruh.yigit@xilinx.com, stephen@networkplumber.org Cc: dev@dpdk.org, Ido Goshen Subject: [PATCH v8 3/3] pcap: support MTU set for linux interfaces count ierrors Date: Mon, 20 Jun 2022 11:39:44 +0300 Message-Id: <20220620083944.51517-4-ido@cgstowernetworks.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220620083944.51517-1-ido@cgstowernetworks.com> References: <20220317174347.110909-1-ido@cgstowernetworks.com> <20220620083944.51517-1-ido@cgstowernetworks.com> X-ClientProxiedBy: VI1PR04CA0122.eurprd04.prod.outlook.com (2603:10a6:803:f0::20) To AM0PR09MB3972.eurprd09.prod.outlook.com (2603:10a6:208:195::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e4fb77fe-c79a-4ae5-f0e1-08da52988f03 X-MS-TrafficTypeDiagnostic: AM0PR09MB3699:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: t9tOkEjdNxu0UC1C1dtcYqjPGiPdRmWcVThkoqWbnNczw06fZ5885fbEZ54uz3D3MgreqbRQw15S+0ZEVEuL/FtLfsXhp6qI39X8KcqL82+vYtZNPE2t7TcuVaNSb804wPTPS9D1lEveY61G2533vgMwL3awptcV5Tj8BwzIxEiK6pJ4ArD1Oh44zKP+9CnlHySArbVWUB9TiN0GJ0GKGqutMrGzT4R2DuL7iRMCKHY+Kk4GRekmYGfnvnvpBEZ73zApU3PNJawih42b5FedspDbul1uzHTpa+5ERpvBDYxxfkZT60a/Uk3DfG+ve6WyiDcLBHMiT4xsRbIaToMjpTSgU8tNoBNgxwVq/pZc8SrkSKABdChEpk7g6E7pm+jWzQjB1gLGcSBuOQ0aFy8Mdpht/BcL69LAcBHAXgOVfyWY1Yw/osElK4Dm+qZDKV/u2Aq4jpXHwpRNcwXvpqwYOaFroKpv9EUIWlLu6cvIjaJi1n5iPIfAU5g79QVGAiJOC3HQdOOgLWvstjt8m3ERmlDxD0EZT4DTMmffXgFoq8R5kXzUpV9reGn8zQjCxKLjuz8gOmWoJSvpM1NBkZdZMmbA05eP6E2bJ0rYxsI4ZlE1xsdBf0UkPxK7VLibszRK6u9ic8+5e2T2IwfZQiO8ilNtruEB4sJRtJmcIdD0RfP2HdfCw+EfDQGWRZTRPd4ub1zswbcLW5woBn/WT853CA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR09MB3972.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(396003)(39830400003)(136003)(366004)(346002)(376002)(107886003)(38350700002)(1076003)(52116002)(41300700001)(86362001)(26005)(38100700002)(2906002)(2616005)(66476007)(478600001)(6486002)(83380400001)(8936002)(316002)(66556008)(36756003)(186003)(6506007)(66946007)(8676002)(4326008)(5660300002)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: T5QxFTNHttO6sO87+neZdFTtlF6JGWzFCeW52j5E/8IHqtZwA8ZV+/HDp0Bm92jXiE0cXHhWXaBX7fkv4+0GlOVdrGjEexhTagQaE3q/g/Pem3fKJD1oRZPMHClbFsFLRUiaeriBbHVApN1jUC4S2EXdjOzP6K4f8DNf9wi9i7CouoKkLA8mZRAPIQa6IdyLHOMXl7Bz7VZ/glnG4is/crnvip8GZ1Y0Ouv/VNR/6YqaZa0O5C+qIscEaHsB6b6K8XeThqMs53iB4AUweTL678eCvOwtAw1P0T208x850QStulwuzv8rT3H5ht3hU/uaV9mhycc+1csEWC1RTprbJUAYvU7MzmVfRuPdQGhTD+OeLAHzvrXm8Turr+SmSqcQAcHCjtuilvVQV29PoCKE74Fx08WwpKnISfZluFki7IN5ClxwDw2HhU93PaJhSatTRyp3ocWN04ov3g0X9HCM0Ss+/c+t8+ZgtDefF0Zx1uJcqtOi6cnni1VJiwtw9isbqeJZAMpI/3J5DD0sNwGFaQii6ys6+hcnrwUw5NBgenicrzjN1IFZIRL7Q7Rl9Epyw1Ahwy6Ye4ER0ejf8kNb+7wnjdyxLUOVGiLdlMYdjb0/654UvBoeVmGcUM8I+Hrg+iLG7Y0eknirrcyjQcPUSQdNQqyQSXSpAGmmtAAeMgV7QRpmH+AXiHIq/QwKd6TwDLTqHPrJX2/QpYL1BSQe2AWfKTEst/jyRt36hj9Slw/jg0HK10zg0PSsO40cvXDRdcu1i8p+XGnMMRYQjv4G2gh6iqwQHddZ8vX9EkYnWatmN0tTEcZJjouXXlKb7cHoLI+ENYJ765mfxRyb+HkJqibjm+TiTJzMOi4ocwWg8+YGbR1aiWQUCoFUTEw3QwlnWXRMrK0c7/TFjtTGLmyOhx9BV37Ku8ANub4YX9F/bCeGDexiPz0YyiVHE+QXhDc7AHWz3MnWNb0h+O4MYhCG/ZBf+A9v2Lc52GXfH1MRPSLH+gdMhfVcpdlFvGaSxtWLJa4iidrrZ4HCKgaZGMLnq4sMnqyH9V1eKccxGl1pDHsVmWrXweoKus+F5qKgfxPGmtG0QlYToptbrox83v/ET/60FJ5iZyYfOb1BV7ZGkr6MkMoDgI61D4Qz61e70B1DZpPpjDyXyT/8D6reXq1R+oRdLKCuqbY8EKOCX8OkkIT3tKRDjnIJe5HDjOoMARhTJJkulPt8vWbUy0vRSfFjDQWoOSgrVZTYejRktms3LaaBUYOkhOi/XPlwgPBPWzrnjJmsQi44aFxb1F+oDv3eJFi+S/Qlj7B25K1cbm4rcaRSUqtHTeIeSr1G+IMORo30yWLZ0G/bmThLuTsQdpC4B1/JW74sT8eHKYB/lpsQWdBR3zm+7y/SErZu1NkEVoIAQRRHlwLKipAQrWSF3fs1p2v9Evc4b/y7H0A1/L5IRSnhblAHl8cTJP/2z7tWDH3uuPrv3VbgPoH+MLbNDRlrNzez6r8ctfIcl0za+nhY8Bql4N7bXJwjVSGRToAvJ+ywQY6+V+Rb2ntscrjrIa9qtDWEShypgyw539vnHAkkkLUa9dCIPZcbSmAWF1lehFoPA4XuOiC6KCX0cLXtdo2uHsbFzMXUwUppK9hG07yYy1tp2zRRUapINjsb4iTS5UfR8cgx22Y72Uv+l5CrXI/0vb45KGsDbIbpSRmX9iGFIISK9a5ETK1dFxOEwoza2uFYcw6U6c2MuF+NBMjXDlkn8RyiWSxBGCWFZ7XE8tLaW1g= X-OriginatorOrg: cgstowernetworks.com X-MS-Exchange-CrossTenant-Network-Message-Id: e4fb77fe-c79a-4ae5-f0e1-08da52988f03 X-MS-Exchange-CrossTenant-AuthSource: AM0PR09MB3972.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jun 2022 08:40:41.6752 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fc9e9498-07e8-4b82-b4cf-365bba23cbbf X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: IQPs6gYq8Oyy5J8rPpuIYVtY27FOU0VToCvQBllFiS/q6pylW2uguZnYO9Gy5/QRN5FQwtZo8FQ9QXAuYesxvcc2KjKIy5AOX3tYJDiYW/U= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR09MB3699 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 Count oversized packets that are dropped by the interface Signed-off-by: Ido Goshen --- drivers/net/pcap/pcap_ethdev.c | 74 +++++++++++++++++++++------------- 1 file changed, 45 insertions(+), 29 deletions(-) diff --git a/drivers/net/pcap/pcap_ethdev.c b/drivers/net/pcap/pcap_ethdev.c index ff98762058..46f18e9b10 100644 --- a/drivers/net/pcap/pcap_ethdev.c +++ b/drivers/net/pcap/pcap_ethdev.c @@ -54,7 +54,7 @@ struct queue_stat { volatile unsigned long rx_nombuf; }; -struct queue_missed_stat { +struct queue_pcap_stat { /* last value retrieved from pcap */ unsigned int pcap; /* stores values lost by pcap stop or rollover */ @@ -63,12 +63,19 @@ struct queue_missed_stat { unsigned long reset; }; +enum { + QUEUE_PCAP_STAT_FIRST = 0, + QUEUE_PCAP_STAT_MISSED = QUEUE_PCAP_STAT_FIRST, + QUEUE_PCAP_STAT_ERROR, + QUEUE_PCAP_STAT_NUM +}; + struct pcap_rx_queue { uint16_t port_id; uint16_t queue_id; struct rte_mempool *mb_pool; struct queue_stat rx_stat; - struct queue_missed_stat missed_stat; + struct queue_pcap_stat queue_pcap_stat[QUEUE_PCAP_STAT_NUM]; char name[PATH_MAX]; char type[ETH_PCAP_ARG_MAXLEN]; @@ -144,54 +151,62 @@ static struct rte_eth_link pmd_link = { RTE_LOG_REGISTER_DEFAULT(eth_pcap_logtype, NOTICE); -static struct queue_missed_stat* -queue_missed_stat_update(struct rte_eth_dev *dev, unsigned int qid) +static struct queue_pcap_stat* +queue_pcap_stat_update(struct rte_eth_dev *dev, unsigned int qid, int type) { struct pmd_internals *internals = dev->data->dev_private; - struct queue_missed_stat *missed_stat = - &internals->rx_queue[qid].missed_stat; + struct queue_pcap_stat *queue_pcap_stat = + &internals->rx_queue[qid].queue_pcap_stat[type]; const struct pmd_process_private *pp = dev->process_private; pcap_t *pcap = pp->rx_pcap[qid]; struct pcap_stat stat; + u_int value; if (!pcap || (pcap_stats(pcap, &stat) != 0)) - return missed_stat; + return queue_pcap_stat; + value = (type == QUEUE_PCAP_STAT_ERROR) ? stat.ps_ifdrop : stat.ps_drop; /* rollover check - best effort fixup assuming single rollover */ - if (stat.ps_drop < missed_stat->pcap) - missed_stat->mnemonic += UINT_MAX; - missed_stat->pcap = stat.ps_drop; + if (value < queue_pcap_stat->pcap) + queue_pcap_stat->mnemonic += UINT_MAX; + queue_pcap_stat->pcap = value; - return missed_stat; + return queue_pcap_stat; } static void -queue_missed_stat_on_stop_update(struct rte_eth_dev *dev, unsigned int qid) +queue_pcap_stat_on_stop_update(struct rte_eth_dev *dev, unsigned int qid) { - struct queue_missed_stat *missed_stat = - queue_missed_stat_update(dev, qid); + int type; + struct queue_pcap_stat *queue_pcap_stat; - missed_stat->mnemonic += missed_stat->pcap; - missed_stat->pcap = 0; + for (type = QUEUE_PCAP_STAT_FIRST; type < QUEUE_PCAP_STAT_NUM; type++) { + queue_pcap_stat = queue_pcap_stat_update(dev, qid, type); + queue_pcap_stat->mnemonic += queue_pcap_stat->pcap; + queue_pcap_stat->pcap = 0; + } } static void -queue_missed_stat_reset(struct rte_eth_dev *dev, unsigned int qid) +queue_pcap_stat_reset(struct rte_eth_dev *dev, unsigned int qid) { - struct queue_missed_stat *missed_stat = - queue_missed_stat_update(dev, qid); + int type; + struct queue_pcap_stat *queue_pcap_stat; - missed_stat->reset = missed_stat->pcap; - missed_stat->mnemonic = 0; + for (type = QUEUE_PCAP_STAT_FIRST; type < QUEUE_PCAP_STAT_NUM; type++) { + queue_pcap_stat = queue_pcap_stat_update(dev, qid, type); + queue_pcap_stat->reset = queue_pcap_stat->pcap; + queue_pcap_stat->mnemonic = 0; + } } static unsigned long -queue_missed_stat_get(struct rte_eth_dev *dev, unsigned int qid) +queue_pcap_stat_get(struct rte_eth_dev *dev, unsigned int qid, int type) { - const struct queue_missed_stat *missed_stat = - queue_missed_stat_update(dev, qid); + const struct queue_pcap_stat *queue_pcap_stat = + queue_pcap_stat_update(dev, qid, type); - return missed_stat->pcap + missed_stat->mnemonic - missed_stat->reset; + return queue_pcap_stat->pcap + queue_pcap_stat->mnemonic - queue_pcap_stat->reset; } static int @@ -684,7 +699,7 @@ eth_dev_stop(struct rte_eth_dev *dev) /* Special iface case. Single pcap is open and shared between tx/rx. */ if (internals->single_iface) { - queue_missed_stat_on_stop_update(dev, 0); + queue_pcap_stat_on_stop_update(dev, 0); if (pp->tx_pcap[0] != NULL) { pcap_close(pp->tx_pcap[0]); pp->tx_pcap[0] = NULL; @@ -707,7 +722,7 @@ eth_dev_stop(struct rte_eth_dev *dev) for (i = 0; i < dev->data->nb_rx_queues; i++) { if (pp->rx_pcap[i] != NULL) { - queue_missed_stat_on_stop_update(dev, i); + queue_pcap_stat_on_stop_update(dev, i); pcap_close(pp->rx_pcap[i]); pp->rx_pcap[i] = NULL; } @@ -766,7 +781,8 @@ eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) rx_err_total += internal->rx_queue[i].rx_stat.err_pkts; rx_packets_total += stats->q_ipackets[i]; rx_bytes_total += stats->q_ibytes[i]; - rx_missed_total += queue_missed_stat_get(dev, i); + rx_missed_total += queue_pcap_stat_get(dev, i, QUEUE_PCAP_STAT_MISSED); + rx_err_total += queue_pcap_stat_get(dev, i, QUEUE_PCAP_STAT_ERROR); } for (i = 0; i < RTE_ETHDEV_QUEUE_STAT_CNTRS && @@ -801,7 +817,7 @@ eth_stats_reset(struct rte_eth_dev *dev) internal->rx_queue[i].rx_stat.bytes = 0; internal->rx_queue[i].rx_stat.err_pkts = 0; internal->rx_queue[i].rx_stat.rx_nombuf = 0; - queue_missed_stat_reset(dev, i); + queue_pcap_stat_reset(dev, i); } for (i = 0; i < dev->data->nb_tx_queues; i++) {