From patchwork Sun Jun 3 13:13:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Goshen X-Patchwork-Id: 40632 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 6079A5F29; Mon, 4 Jun 2018 22:52:46 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40099.outbound.protection.outlook.com [40.107.4.99]) by dpdk.org (Postfix) with ESMTP id 2402E2BAA for ; Sun, 3 Jun 2018 15:14:02 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cgstowernetworks.onmicrosoft.com; s=selector1-cgstowernetworks-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LlJihpufY7IYxF8mXyk959RqWP54WctdDz+O2iF47u4=; b=Ew+rdik7paUD36sg+kxyy9TRGXPK04N999yFphjFxbFvFepzVC0aHjjRQ0SruzqQlg1dyq2Bee3nxKn0Pyz5sJtcDiiGhx1IYn3Rz0AtlgT/dGocignE/qgAivdmwUwvik3ZuqL+8W/jaby8MZlBOfdwK3irz2PBgJiGPO6iF0o= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Ido@cgstowernetworks.com; Received: from localhost.localdomain (81.218.57.230) by VI1PR0901MB1438.eurprd09.prod.outlook.com (2603:10a6:800:8c::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.820.13; Sun, 3 Jun 2018 13:13:59 +0000 From: ido goshen To: Ferruh Yigit Cc: dev@dpdk.org, ido goshen Date: Sun, 3 Jun 2018 16:13:20 +0300 Message-Id: <1528031600-114933-1-git-send-email-ido@cgstowernetworks.com> X-Mailer: git-send-email 1.9.1 MIME-Version: 1.0 X-Originating-IP: [81.218.57.230] X-ClientProxiedBy: LO2P265CA0124.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:9f::16) To VI1PR0901MB1438.eurprd09.prod.outlook.com (2603:10a6:800:8c::22) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:VI1PR0901MB1438; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0901MB1438; 3:FgnIoBWaowRE4I4l7ZR8JNXo4aa+Zsb47QHSrGu+6PdN3LmNJBgakHEM8LBhoUy/EyEby5sTSCAPWfgrnfgTNhMeZOTCoXkoPHBSNJUEVqREz9O7EIimQbOMvnzg7DkNenxldA6iLsKy9Yk90CYet9VlfrRAmKz0Mne0Uva6iOi8UXQd1vY7FwQYAxLTWtEgHkSHWOvAVqIzJ4dMDhkyOq6eP8WVo7eH2Vt2da1oRnrYYnEDALPhCom/wZ7hO9gJ; 25:LMzG+pI3m8fGTrBrqQTHRn0HTAfsBQo794UAVBY0SrKv+v/HdGAAQUM2AQO/Lt8L+7cxzrvKfW47DOJFkNRU+HgEFgcEv/Nt1Gy6AqK31dF9qM5PVqbqP3CBKHrxBHgUpyY2uH1QMNO8Y1ZYOoPnZi+36ifZcoOlK/kA66Zv5y3aP6OyxEee7X/T55PBgzUTKV5SzotNFSzLgrvyj2rzBZKG733g2x3A6HdNbFf4gYLKF3KdeI+qWou2gCrkwm0BgcFOTlhVhKXBZiPWjvIsGj1TdREFLuZV+QCxOSFLp1C+DiAc1Y7RxyRrUnwPsVy0xHmxfEon3+tqAsLNVoJHgg==; 31:5UHe7Lyf8eOS+/oI5FCd7XGjYNHkUXcRxHcDA4DL+haoqt2VpCxNb+eldjAOlHH132LOY/LfzOBatVCZK9l7JMqH8BG1J/QfzqbrIj3oijhj3rQJqi49L6M0I/YEOFQ7qUHIyeOpq3c9Xvj0RTOaklaMQfCHtbWGQgfLBESKVTxU0g/fAvXu+4wUkspOYevIDGA75JIXPXmuGeCVUoLOXwf3mzP0j1+Ku587lZabcuA= X-MS-TrafficTypeDiagnostic: VI1PR0901MB1438: X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(10201501046)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123564045)(20161123558120)(6072148)(201708071742011)(7699016); SRVR:VI1PR0901MB1438; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0901MB1438; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0901MB1438; 4:91+gu+1jvBEDbIEuPB+5iU7ou1TBugjIP06L6kYsuAql04IoHMEWDPGU+RtPql6swPUsJcogik/MU/o5+pLo960fVBWI264KyZtbqmGS7IsDDSNqCnh6nMacp2gI/1eXF+zjGVzmi8PdL4SLm8RvYx1uaHLOvbA6sb3VYyrtpGUpTQ8ETXm2fl2SpZrgl/MMvyFYSb51gL/73hsHBaAbmnODjNT6tydtRUQ9LPyGU4xzSXuLQQ5hpcOgXd23fLqQfNplOctkzojmPRGqvGuqnQ== X-Forefront-PRVS: 069255B8B8 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(6069001)(396003)(366004)(39830400003)(376002)(346002)(39380400002)(199004)(189003)(476003)(86362001)(81166006)(6486002)(8676002)(8936002)(81156014)(50226002)(80792005)(68736007)(36756003)(7736002)(86152003)(5660300001)(6916009)(6666003)(305945005)(97736004)(25786009)(4326008)(6506007)(386003)(59450400001)(1857600001)(478600001)(48376002)(107886003)(316002)(50466002)(53936002)(106356001)(6512007)(105586002)(486006)(51416003)(72206003)(52116002)(2616005)(26005)(956004)(6116002)(66066001)(47776003)(186003)(16526019)(2906002)(3846002)(16586007); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0901MB1438; H:localhost.localdomain; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cgstowernetworks.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0901MB1438; 23:JeZUlF1nTSSTZTX85I+Y5RYnQBiVXBuIDW+8bvI?= OFZXkJMK5fm1PitDEWcxjVZ4td20YOiskNJsWBeBlNPAPN/pvV331GEB4lm81HawGfysmOJT0Ws4H0KOlQg5oa+gTHulJbOnvL6jpYF6Gb11q6XytsCgAyam+XFukHyvadCf8bqH5R7/uJsCvUEyZBa9bTRzC1Q1oWuTnFTVxfWfvtd18vQlWU+aly0fY+6Es6qeEvfnLyne6jZleuhJTD1Pun1fCV5GmbwHIGn5CUYO9EdQ9dKY82Iv/sIw63UpSi0Z/jCpJzhANBroQMnz1iwH1J5Ha0HjG/TnyKAR20JIDI7/oP4Dv3XHA3T+mFi10fnvOy5EC/51+uuApbmI3Y56QtpckyUDRNnhBhxL08UcimmqrSknu0UvmT8wcqASr8g7A8SeIt97GVJsTN/fXhCe7tIofbhGo7UMivRJAOMHbtd3G9QuRSB9s6YwymLzYO6Xwt86kt3e3nOQVvC48A94UNXNivF4Oz0Rzo5zEPAPW+/Vy1FbbOnIgGgVAYOeDKv9NeI7SBA63uXojg5j7C+1p3GwIYlFT42iSX/Z7/foD9zhQw4NjhpV4vf2qdhdqiOjmquf099WMBxsWyl3IVZfceSZi6omrjjyAg9h/P9AjxG/Finw1UQg6bt6qrU/asn8pCjPzBhwS80kuG2SophgvitBcan/Y6aA+hfuxqS/msRv7EgZGzf+e6f/vj+AuN9v5OrzYO3OMzmNjPTtQ9BegB0vxEZH/Whefny+CHy3xxXiwlC3Z4Z/P0PfPIW30vDLhnDIHnoZXfnlrrA4H9cYHjKxKiO+S/29mnp+PRuVW1oS5z/pQHIRdjD0Cu1Zkx1tsC8Zh1BR8BmfFYn3fXeGC3A7lAqmK6D1kEbzLEztStoNPqJnO1ARkwD7RHMGVE/9G+NU3SUB9RW8aLTOIqP0iEMZZoq4T90lT1K9Vdb95JqSHkWn9XXg+4PdBBZhu+ozZTfdN9Dc5YQWIG0BKqCeiMO+0BPiE5SfsWhL/VYsl7w2/SJk+fLCnykOFCfGb1Qtqz61wTyr6z9keTs76k+P7bKcRMxOQWlXKFXLghaR59s0IKOx/lXXV2ND2Chdt1PwDq03DyuuDJ6YtwSDKz0jmVc4x8jBjHZL6A0VgnW2mtRFRPyT0kXkO3Z47jN+8L5ujKgo2AJ2yppIrK4P0Sxb5nxARCUBCGoC/A/+ax9vf7fsE3fBadDCkP79pQd4OOSf7SjLW1GkluB7QfpyDSqqO X-Microsoft-Antispam-Message-Info: IAWiOp7vqU3q+cPaXzSYuqvrOm2bw1TFj8VuveZG4JVlv5uqcu0g3gRWk0VtZH2ZEWKx5p4Guzqdo34xpecdCYzmwMD088NwJgLS38oocsak/Ha8BPab/HeRpVEBcXMVgWKtb3EyUbxsZLnOhk9GNILDBV0wjLwsouQgBB1NQnZItSG59U/Fyr9JVHLMwhem X-Microsoft-Exchange-Diagnostics: 1; VI1PR0901MB1438; 6:2/wfTcyfDwxraHXIVNuwqzLf/Q9ecJw3vnblsOGXTQKfCbLVHE2ON/oQHMJInpWLG3mWA22Yhcbx+64vv4XCO/UplcEfSvpHWGrcy6t6v3xRWrGxNNvMxPXrzBuPg2kvPNnDm19FSRuND8gYosPNeD/Dq0bRAP+76SC5WZUrkd413/W51Lfy+mwE7qJN0lL84/bQX9A/2XcwreUGTaF982rCG8LcyacHu98luYWG9ish09jbTJS+sjBUAWhnM587KkitlgQXLs1PgqIqMHNG8/3U1DWVEm570fdPRq20r0tFnD5jWBDoFSes43jXwQcsyK8Z3KZUSrcSzKruPSfFAgOaxJbyYfXibUvbd4qD8nHLBCVhs4sAybReJgFlZC6c7Fx+bzYWea3i9EIPj9FPQWPBVLAHxzuzUbjEbEEMgfZzINi7Nf6I7+UYYhb0OVv8cs+qg4LlGMv+bxeMY5oMUw==; 5:CGDdxTBpO5iD3+n1NakOsuNYI6zREdMuHvXa3W3BuzjU9dDKT81KbpPRudTYOifGRXaLq/p4rE82JcCBJt/rke//X263T7BwNY1sfNhr9yeVgPMjtUM2v8D012KJ0PJmwNXpjRQJiyXFXHePbLuGSbCV1dBWta90K89XAFU3e7o=; 24:ChOvRixurBQlIiIGkf4qkEUEv19PSpw/Dw56mj8geQIMJR5+9x0rgRX6cZox0oA8gTsOXZ4h0MwI8zJ+2HqmQdqHrRa6u7xrt9z0fwGbriM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0901MB1438; 7:JMwm74qFAtGxpueewCeAKSZnqbV+iiJHvqM+tBJsVulajb1nQ6I3WjCruH4ROfBOvw7EesimqwibisMtf31er2XJGD+DM6BGji8cPhvEs67A0yBr1zbyjMsReY9hu/jxX1BbwYfjDFX//ygNu6XblxrCpUcZVM1/Ii3kLG142IYWgNurhSHc9Y/9ULvbIMs5H+bWnYt9U9Ri9w9+VrCYUeGWCtTp7RFBuQIn6WqfOjz9sirqk1fN7NznukisBCnB X-MS-Office365-Filtering-Correlation-Id: acbc1537-d868-41a9-57d0-08d5c953df1b X-OriginatorOrg: cgstowernetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jun 2018 13:13:59.8966 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: acbc1537-d868-41a9-57d0-08d5c953df1b X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fc9e9498-07e8-4b82-b4cf-365bba23cbbf X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0901MB1438 X-Mailman-Approved-At: Mon, 04 Jun 2018 22:52:44 +0200 Subject: [dpdk-dev] [PATCH] net/pcap: rx_iface_in stream type 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 rx of in direction packets only Useful for apps that also tx to eth_pcap ports in order not to see them echoed back in as rx when out direction is also captured Signed-off-by: ido goshen --- drivers/net/pcap/rte_eth_pcap.c | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c index 6bd4a7d..88bd550 100644 --- a/drivers/net/pcap/rte_eth_pcap.c +++ b/drivers/net/pcap/rte_eth_pcap.c @@ -26,6 +26,7 @@ #define ETH_PCAP_RX_PCAP_ARG "rx_pcap" #define ETH_PCAP_TX_PCAP_ARG "tx_pcap" #define ETH_PCAP_RX_IFACE_ARG "rx_iface" +#define ETH_PCAP_RX_IFACE_IN_ARG "rx_iface_in" #define ETH_PCAP_TX_IFACE_ARG "tx_iface" #define ETH_PCAP_IFACE_ARG "iface" @@ -83,6 +84,7 @@ struct pmd_devargs { ETH_PCAP_RX_PCAP_ARG, ETH_PCAP_TX_PCAP_ARG, ETH_PCAP_RX_IFACE_ARG, + ETH_PCAP_RX_IFACE_IN_ARG, ETH_PCAP_TX_IFACE_ARG, ETH_PCAP_IFACE_ARG, NULL @@ -726,6 +728,22 @@ struct pmd_devargs { return 0; } +static inline int +set_iface_direction(const char *iface , const char *key, pcap_t *pcap) +{ + if (strcmp(key, ETH_PCAP_RX_IFACE_IN_ARG) == 0) { + if (pcap_setdirection(pcap, PCAP_D_IN) < 0) { + PMD_LOG(ERR, + "Setting %s pcap direction IN failed - %s\n", + iface, + pcap_geterr(pcap)); + return -1; + } + PMD_LOG(INFO, "Setting %s pcap direction IN\n", iface); + } + return 0; +} + /* * Opens a NIC for reading packets from it */ @@ -740,11 +758,12 @@ struct pmd_devargs { for (i = 0; i < rx->num_of_queue; i++) { if (open_single_iface(iface, &pcap) < 0) return -1; + if (set_iface_direction(iface, key, pcap) < 0) + return -1; rx->queue[i].pcap = pcap; rx->queue[i].name = iface; rx->queue[i].type = key; } - return 0; } @@ -963,7 +982,9 @@ struct pmd_devargs { is_rx_pcap = 1; else pcaps.num_of_queue = rte_kvargs_count(kvlist, - ETH_PCAP_RX_IFACE_ARG); + ETH_PCAP_RX_IFACE_ARG) + + rte_kvargs_count(kvlist, + ETH_PCAP_RX_IFACE_IN_ARG); if (pcaps.num_of_queue > RTE_PMD_PCAP_MAX_QUEUES) pcaps.num_of_queue = RTE_PMD_PCAP_MAX_QUEUES; @@ -971,9 +992,15 @@ struct pmd_devargs { if (is_rx_pcap) ret = rte_kvargs_process(kvlist, ETH_PCAP_RX_PCAP_ARG, &open_rx_pcap, &pcaps); - else + else { ret = rte_kvargs_process(kvlist, ETH_PCAP_RX_IFACE_ARG, &open_rx_iface, &pcaps); + if (ret == 0) + ret = rte_kvargs_process(kvlist, + ETH_PCAP_RX_IFACE_IN_ARG, + &open_rx_iface, + &pcaps); + } if (ret < 0) goto free_kvlist; @@ -1046,6 +1073,7 @@ struct pmd_devargs { ETH_PCAP_RX_PCAP_ARG "= " ETH_PCAP_TX_PCAP_ARG "= " ETH_PCAP_RX_IFACE_ARG "= " + ETH_PCAP_RX_IFACE_IN_ARG "= " ETH_PCAP_TX_IFACE_ARG "= " ETH_PCAP_IFACE_ARG "=");