From patchwork Tue Apr 17 10:58:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Kuusisaari, Juhamatti (Infinera - FI/Espoo)" X-Patchwork-Id: 38303 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BB06A7F18; Tue, 17 Apr 2018 12:58:52 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0053.outbound.protection.outlook.com [104.47.1.53]) by dpdk.org (Postfix) with ESMTP id B8F657EB4 for ; Tue, 17 Apr 2018 12:58:51 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=coriant.onmicrosoft.com; s=selector1-coriant-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=+HsIGF3Yxy14UnBlcFTw8OQzdxEciMd+r03O7eMPGGM=; b=mQPiPfBQVR+x4GPh5ENuf+ykX1aYMOQOfD7clxK42l28idMYEfnpJLYrpku15R0sKXylaxzoWWfjJZ5kmxX+3Ts9VfvmBVmTmHdxbD1BEplncLyRlvcTzK2zpXpd+Zr2rZ7SDbok8Ro2TixZblOWwVb1ZXjGjS27TV77USUKW60= Received: from AM3PR04CA0137.eurprd04.prod.outlook.com (2603:10a6:207::21) by DB7PR04MB4299.eurprd04.prod.outlook.com (2603:10a6:5:28::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.675.10; Tue, 17 Apr 2018 10:58:49 +0000 Received: from AM5EUR02FT053.eop-EUR02.prod.protection.outlook.com (2a01:111:f400:7e1e::200) by AM3PR04CA0137.outlook.office365.com (2603:10a6:207::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.631.10 via Frontend Transport; Tue, 17 Apr 2018 10:58:49 +0000 Authentication-Results: spf=pass (sender IP is 204.154.131.209) smtp.mailfrom=coriant.com; coriant.com; dkim=none (message not signed) header.d=none;coriant.com; dmarc=bestguesspass action=none header.from=coriant.com; Received-SPF: Pass (protection.outlook.com: domain of coriant.com designates 204.154.131.209 as permitted sender) receiver=protection.outlook.com; client-ip=204.154.131.209; helo=usnapvlsmtp01.coriant.com; Received: from usnapvlsmtp01.coriant.com (204.154.131.209) by AM5EUR02FT053.mail.protection.outlook.com (10.152.9.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.20.675.14 via Frontend Transport; Tue, 17 Apr 2018 10:58:49 +0000 Received: from fies1uas61.tellabs.fi (unknown [172.23.229.177]) by usnapvlsmtp01.coriant.com (Postfix) with ESMTP id CDE52401FE; Tue, 17 Apr 2018 05:58:47 -0500 (CDT) From: Juhamatti Kuusisaari To: CC: , Juhamatti Kuusisaari Date: Tue, 17 Apr 2018 13:58:14 +0300 Message-ID: <1523962694-73405-1-git-send-email-juhamatti.kuusisaari@coriant.com> X-Mailer: git-send-email 2.8.1 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:204.154.131.209; IPV:CAL; SCL:-1; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(39380400002)(39860400002)(346002)(376002)(396003)(2980300002)(438002)(189003)(199004)(68736007)(104016004)(53416004)(72206003)(6666003)(6916009)(106466001)(106002)(26826003)(50466002)(486006)(126002)(36756003)(48376002)(86362001)(476003)(97736004)(2616005)(575784001)(426003)(2906002)(356003)(5660300001)(81166006)(8676002)(2351001)(81156014)(47776003)(336012)(8936002)(59450400001)(50226002)(305945005)(53936002)(54906003)(6266002)(4326008)(69596002)(107886003)(16586007)(77096007)(478600001)(316002)(1857600001)(51416003)(26005); DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR04MB4299; H:usnapvlsmtp01.coriant.com; FPR:; SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; X-Microsoft-Exchange-Diagnostics: 1; AM5EUR02FT053; 1:uHkEwUVK3i+53fSH4MvHs8Ezvwl+yU39Jgx9EygnymDOWFx8gHrkQiDEcbEKw0PO+Pt3IIJqW6FNLuMqeb7GUGLOWPXgkjqwPYXPPObj9uFAPn1rT/RoWfwLvx7Y7hQX MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4608076)(2017052603328)(7153060); SRVR:DB7PR04MB4299; X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4299; 3:QSvUpzLK+LN+2Y5IJTaIxtPMfdEd4ouH9qVFfML7x/HC5MS8q3srHzevk+s5I8YZlj+XHUzpgn3fA7+kUPrwM9feN1sXfcbR9HZQ7XLkPkGOc6bwVnHYKPFGWoaREYzKKdkWEpOnI9uNZxQb3gBatyg/Q/apjYeUswPDZl0bpFSoltYAhPGJjzVEJ1tZ4U6pUnvrSRR46+rwUtcwvpYvKQtpXKoaf+4OFU31EoP9BfUXeqQWzIime36bVOqDe+eqYB8d1Cmk4t4juf1ETJGpMtkevK7z4p1QwwhatsnPBnGdXRMGCdOPscYssZPZTg7YMt84Gjbmedsga9zqUwvoahSOA9q8KNL/AAqLmazCHnw=; 25:ge8vFI+qmpUbljscmwyxCNcCHwf2JqyX2patnVHwO+U1TgvYadjLbXU/vJYzfdLTdPUfFcALk6b6MiuNyWTN67ekus5B/8a9dbJ+UU2SEl84oEXPq5Z2glUxzPqNKkI6dX+7px0zs8vc+gkJ7WS3FJK2iyoLnvtbpG9pCpShHHiv4lbuvVzH48k3Xgdr7Htu7/Jv+IfHEcqvLJxOTt1jqCAz3d+jZbVbEdjdJO6vQ86KFUkT+/dujN//RRX4qPt4Nh5Z4woh1DVZB25Bd378C56sMzyFEUbScx9pjtZe/SiTFkJp5+QCSGyjcsnbZOY2f5Au9XKCKq4IbRTLQFC4Mg== X-MS-TrafficTypeDiagnostic: DB7PR04MB4299: X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4299; 31:wVYeQhswue7C1xWip4ZMaRDahvZYqVhyrJGJwnsQzolkHiAqZaQ9hcmIKZ8/8hi/7+WcGJFe943FFeY1Dgt0IUNSEjtN8hT/guRgOZcVRvcqMxV2VYvspGKykTTvEJ1e59CaQZurUKHZPHJHldyMeagJy8BaYpUO0utT1du1iZEAKo8Qo4POgv1TSTfcAa2pr3dUfoi+apldWlYVaUilvbe+MoB46IsFRrPbGwmiQ7U=; 20:9taOEddQxDXCJqWCaPTvsL5o5WKy65o4Ih5BDr0sxVF5dMbEmjeIildP4uO8PnTKHHQSn7eAaq9blLaR71Aahztk44hN7LBUKOlVXE8sKkVzzHHGPfSNwbDkyHt5gtZXReCDrtH+FO2clZ8+WiTA9I5jTn/vTk9XLlOQPjOeHuDJZvsWTU9fJhhA07u7O1iJdOmjAed07hfNnQt3ikR70GPOMtJnvtaqN7fUPU4CkG7mqkCmMTW/AQSy3f3KuVO3xaqZ2fXexuy3+UvLI1uoyVJNNM5klFpZ2LXE0iY8AzNbOWGyI7OOqmdX/G2QX19rWP/RIKna/72nkrsNcDidbUS/tyrozBAgpeCFCbLJfCylPvVgSNgl3nWQv4KJY1MDsRPPOuUpgMEwY1NJi0DiZfiFnhFqXQ+Gkj7z7l7fMjEpCfV8sAdakJBk4qnlY5OJGrqU0VzYfutAxiZZGHMvzULWCwEZ3Yk7Z6NlM7KFESEQFvTsKPJQZTMT4CyPc6jO7WNfAHJG1BQDhgXnw1lmhA9znorwo8EBmwEhf4MjqxS61wYk0sRWYk/PJMgS5seRv5LCq+UCP9n5DR3mKzOiTGQ85yV8uODVo3BOwqkTrzM= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(51653755401839); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(5005006)(8121501046)(10201501046)(3002001)(93006095)(93004095)(3231232)(944501327)(52105095)(6055026)(6041310)(20161123558120)(20161123564045)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:DB7PR04MB4299; BCL:0; PCL:0; RULEID:; SRVR:DB7PR04MB4299; X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4299; 4:1NIQv5SeA1tei0GQhfQadyiucGMAiJO+qtellclxZywU+KJtmY7QsxGyBLjIpzKh51nnaV3eKvHKB5mutdA8enksg4KfUzwtgQGHaYH2nzuyq0MJytdsTZHaRkBbzqEcY5disNRM4q+H3nJbzhCbQWupNbnfMOXX5FEV9FsOYexkiEkhH93CoVHo+e5xG8JjEPnWBUL/bBCLtnh+/T+Zev3l9XjYtWxwiH9oS9NjQXqZILNFoCQm7bua6Z766ubwzZ81ANeNVzc8WV0JV5ULtZlPk1knyix0FCztMdHir538uxlg3igGMoopa2zXrXCP X-Forefront-PRVS: 0645BEB7AA X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB7PR04MB4299; 23:p8UFL5Uro1kxmID2Z7KBkzrk28SnKgFzQNeqmXz3j?= Wtq2Z1cdCthc9QsvRSBjLB7BWFFhLoVSiYjcK+ADS69fOK4Qje7fn0VlX1WxsDheAFQXzab4FYPmxgILJO1E2aTzDb8GLVNtaX3Proc0KmVJvNL97N7hmisL3S+8pDC8EY/7p8yQspnG8dwmfJQmgRG22MCREc5lr/LXAnygA7vlcCEQOzgQlmPXt/LZhKgFTB6s8fpWOuKcK1buuUrY9O1PGnhZB8iGxfYg64PkpwLldcY90glDa2sBMzasPkEQFqOS0uyCXQHmUk22HaaoXyBPe35FZwHV7nHuYzlsmHn7zDDBR1r3x1IzGozMiwa7r50n5cwWulZAG4y0gKyiNGO+9LO7FlZHvGmKrH+82JjuW8MCeAKma4f+dP1v3wsKp1OQJSfxS2Fe//aoFw0CC/nJmai36rhYfgUTMbhtC5qGszHkxhnxy3gGASg+7Xpc7b4cRrousD1LoiGqQd97qMT4beiHvCxD3wRhqa5BzBxDxog0/OFwuOBhfCBTWPL0JGC0rfiVWr4m6jV+WoOG5Gh7xbuBKEVqc5ptM8ZAgstDn5fNx4xApCaTwQR8/656XzwFPERPwt0AcCM8iX4FLWiaOlTQdpzH5aaNdl7v4da79qHx1uDMLP8HZUnjMzTnEtr2/8JUAsbB/zm1AQV7vJBN/PGXqnVFzsixKdnkLU1dRoJkX9bzGwywojXcOhsKtr6KyjZiSZFpm0BN7u+2cf62Qy0AqYZalbsYXjvQZ1nJkvX7BhisAPkR4x9SubYA5iBFxWNnImFCiRSZXEqSv4wN+m/fZBFL7G9JRlib8VC04g8PcqBZcYm06fzEaMUxPonwrXUVVaaaFmffSKJRx14lO300QWQihnIsqr8tCTzVwse+Ps6ffDkr13eK0MKw3HrHSCwLpaJcj3KeBYSNdTeXWKz+N08lZPymIFjMFitxhd1mqP9ARH5mmxzBVdaRr6AvnAYgW2QK/0BXe7jWLxJNnJPordORmhA3UIhRqTS203+uKSjy4D14vjDssdroqKeg2XwIIGPljpfgLPjIrQMJnfsYdxG9aw5phL2QcCaa5v/ZjuYFnrCX6Q2m05O/0jsgkmJI+EJnDU1DotNGqLcqzoWcSaWCTcCzvJq79gobr1ljvZgPE96Te9xONhINmCK23ShEPgl4peDV3ZGYNhtp+dCFznJkt4oJILs+GLAQn9STAtIZp5dfAP1FTmj0lw= X-Microsoft-Antispam-Message-Info: Ev2Prx5SHpMAVjqmkuvcTI79a+EF1lT69ohHnrt6NsLBhOcFt7qVD5efiu1sxFJwuJmi/DrX8PkCAme1H2yAsH4CtMfaWDqH6qs8mADCJ1ccrPAu/Melna3KzYq573WQ0grrAuRcw/Db+GW7FMLFOOsUrfdqGuuFRkwOr4msRYdQslfsj2PyLSaJ+srtKVt7irL4SRS8TCmMvjH1pxgXmk7WHVTM3B+MCZsW9hSaxkhkwpiRrw/dxXs0+s6rUZ9bieQhlDjRya2oNwvItzdb7l1HvTC+9Sz09opStxwJuj+Brf0wvp2PtWMPt/NtJlka46CxCBDycGrJIoHSvGQl1w5WroZu8T+q/54AkCjvpwNQ6oSGdJ/z2dZ1DJEx4OjMivcMAl7qhjlS9Pgr9ea45F6eWUkK9zfRZQmWhFYvRcM= X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4299; 6:JSDSTOn/0kYyODFlx/i2YG6HFrVrJdx5fIYs6Ucs5Z1lptDFCXYV/jwDJMl+z/MoBJrulg3LS4U5JfuY1iw2srxs2dU8Cae5ppEnkARCoovrFe9JxVQful0tioGwmFs2syK8DAD20eP0f0AH9+bD0R5xz9GVUmDKrLMH0NsgAYBKF7Gjn2V7lf6c2ep6a+D/04UNDAPjrHFG00h0iZc9ncJtYD1TXxnaOOwk6pCHJj2xSbsdt2ovSo0jXzI06vMtmeU2Ujns22tT9CKCXVo+p3jI+o4trUl2fRc0Dg1ms9Am0qqkmp49XzldqXTcalI5Gnz6q+c8H5RUpnAKJwb0eLsAMeQ7Lme5RCxLalRP1BP/WHjHsfo1bF6mdvYFTULqFQul55LPlzms4h+emN8pepKSUNM7UHBPx/+kBzUrRJy1E+V8O0zW6MVSghvvPtxasUjHEb74NhRl9XFfbmsrxwQCugH1WwenZvFKnTqM9iWkQDoG45n6vphTvbAyFdKQ; 5:HVGY6ZbxdhIhHa1VComTeYxOt2SWC5j4TitaT8nJbhBxiH6qE6COkeZBmTywubjh8yvwS8A+WYwIjCVQAwAw3YzqHLOGY6yUDQT5KKzsJVgRPXSX9b3SckfFVJE2yWctT4u0Q6WpET4lflXJG9ugfbAd/TXvThIdVupwCNcmTgg=; 24:j4GWAQ4JVOXJKzgRjD75jLznRxMgpDHnNar6/8sx7iX9i0f3DjT5/8f2mZhp23ekj/P9Kd8wiitYmomMieAHguRVQ791+kdiJcQ/TY4FmRo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB7PR04MB4299; 7:WOEeGYMj2xhbPSvAlAjr5rMpmszXO5J9O4X8aQ3/7yOaPh2meqGMXvU/QKAok2dFDca618hZ872z28Nu1rNw9Lmy3eotoUprUeZ2iHP7W3ttwH7RNJSZggIEM1IdCvQPLXSOSKYXwqnAgPximROcmQrcyHBultF0L1UsbymuURWAxrrMoipd0ijOj75ZYxV82tHYgVSJqzd/cStXtbyllOwlfcPitpGV0SJOAHFJ6xtqKgR8yQ60CVH4quWjW8kP X-MS-Office365-Filtering-Correlation-Id: 46d2471f-1c35-473a-1661-08d5a452333c X-OriginatorOrg: coriant.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Apr 2018 10:58:49.3986 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 46d2471f-1c35-473a-1661-08d5a452333c X-MS-Exchange-CrossTenant-Id: 76595477-907e-4695-988b-a6b39087332d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=76595477-907e-4695-988b-a6b39087332d; Ip=[204.154.131.209]; Helo=[usnapvlsmtp01.coriant.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB4299 Subject: [dpdk-dev] [PATCH] net/pcap: physical interface MAC support 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" Support for PCAP MAC address using physical interface MAC. Support for getting proper link status, speed and duplex. Signed-off-by: Juhamatti Kuusisaari --- config/common_base | 1 + drivers/net/pcap/rte_eth_pcap.c | 52 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/config/common_base b/config/common_base index c2b0d91..9804585 100644 --- a/config/common_base +++ b/config/common_base @@ -410,6 +410,7 @@ CONFIG_RTE_LIBRTE_PMD_NULL=y # Compile software PMD backed by PCAP files # CONFIG_RTE_LIBRTE_PMD_PCAP=n +CONFIG_RTE_LIBRTE_PMD_PCAP_IF_MAC_SUPPORT=n # # Compile example software rings based PMD diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c index c1571e1..d2aba1c 100644 --- a/drivers/net/pcap/rte_eth_pcap.c +++ b/drivers/net/pcap/rte_eth_pcap.c @@ -7,6 +7,13 @@ #include #include +#ifdef RTE_LIBRTE_PMD_PCAP_IF_MAC_SUPPORT +#include +#include +#include +#include +#include +#endif /* RTE_LIBRTE_PMD_PCAP_IF_MAC_SUPPORT */ #include @@ -67,6 +74,10 @@ struct pmd_internals { struct pcap_tx_queue tx_queue[RTE_PMD_PCAP_MAX_QUEUES]; int if_index; int single_iface; +#ifdef RTE_LIBRTE_PMD_PCAP_IF_MAC_SUPPORT + const char *if_name; + int if_fd; +#endif /* RTE_LIBRTE_PMD_PCAP_IF_MAC_SUPPORT */ }; struct pmd_devargs { @@ -602,6 +613,27 @@ static int eth_link_update(struct rte_eth_dev *dev __rte_unused, int wait_to_complete __rte_unused) { +#ifdef RTE_LIBRTE_PMD_PCAP_IF_MAC_SUPPORT + struct ifreq ifr; + struct ethtool_cmd cmd; + struct pmd_internals *internals = dev->data->dev_private; + + if (internals->if_name && (internals->if_fd != -1)) { + /* Get link status, speed and duplex from the underlying interface */ + strncpy(ifr.ifr_name, internals->if_name, sizeof(ifr.ifr_name)-1); + ifr.ifr_name[sizeof(ifr.ifr_name)-1] = 0; + if (!ioctl(internals->if_fd, SIOCGIFFLAGS, &ifr)) + dev->data->dev_link.link_status = (ifr.ifr_flags & IFF_UP) ? 1 : 0; + + cmd.cmd = ETHTOOL_GSET; + ifr.ifr_data = (void *)&cmd; + if (!ioctl(internals->if_fd, SIOCETHTOOL, &ifr)) { + dev->data->dev_link.link_speed = ethtool_cmd_speed(&cmd); + dev->data->dev_link.link_duplex = + cmd.duplex ? ETH_LINK_FULL_DUPLEX : ETH_LINK_HALF_DUPLEX; + } + } +#endif /* RTE_LIBRTE_PMD_PCAP_IF_MAC_SUPPORT */ return 0; } @@ -866,8 +898,26 @@ eth_from_pcaps_common(struct rte_vdev_device *vdev, if (pair == NULL) (*internals)->if_index = 0; - else + else { (*internals)->if_index = if_nametoindex(pair->value); +#ifdef RTE_LIBRTE_PMD_PCAP_IF_MAC_SUPPORT + /* Use real interface mac addr, save name and fd for eth_link_update() */ + (*internals)->if_name = strdup(pair->value); + (*internals)->if_fd = socket(AF_INET, SOCK_DGRAM, 0); + if ((*internals)->if_fd != -1) { + struct ifreq ifr; + strncpy(ifr.ifr_name, pair->value, sizeof(ifr.ifr_name)-1); + ifr.ifr_name[sizeof(ifr.ifr_name)-1] = 0; + if (!ioctl((*internals)->if_fd, SIOCGIFHWADDR, &ifr)) { + (*eth_dev)->data->mac_addrs = rte_zmalloc_socket(NULL, ETHER_ADDR_LEN, 0, vdev->device.numa_node); + rte_memcpy((*eth_dev)->data->mac_addrs, ifr.ifr_addr.sa_data, ETHER_ADDR_LEN); + } + } +#endif /* RTE_LIBRTE_PMD_PCAP_IF_MAC_SUPPORT */ + } +#ifdef RTE_LIBRTE_PMD_PCAP_IF_MAC_SUPPORT + eth_link_update((*eth_dev), 0); +#endif /* RTE_LIBRTE_PMD_PCAP_IF_MAC_SUPPORT */ return 0; }