From patchwork Mon Sep 11 07:55:31 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zoltan Balogh X-Patchwork-Id: 812245 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ericsson.onmicrosoft.com header.i=@ericsson.onmicrosoft.com header.b="BRi7gest"; dkim-atps=neutral Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xrKwr5XT8z9sBZ for ; Mon, 11 Sep 2017 17:55:40 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 74CD5B16; Mon, 11 Sep 2017 07:55:38 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 032809FA for ; Mon, 11 Sep 2017 07:55:37 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from sessmg22.ericsson.net (sessmg22.ericsson.net [193.180.251.58]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id AEBFE159 for ; Mon, 11 Sep 2017 07:55:35 +0000 (UTC) X-AuditID: c1b4fb3a-5ffff700000051a3-a4-59b64175a5fc Received: from ESESSHC021.ericsson.se (Unknown_Domain [153.88.183.81]) by sessmg22.ericsson.net (Symantec Mail Security) with SMTP id 2E.0E.20899.57146B95; Mon, 11 Sep 2017 09:55:33 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.81) with Microsoft SMTP Server (TLS) id 14.3.352.0; Mon, 11 Sep 2017 09:55:33 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ericsson.onmicrosoft.com; s=selector1-ericsson-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=t2sGYG2BMDcGzbqi8iLNCo3Ug/5yZ3KmMleORv6BKK8=; b=BRi7gestfssTskeZXHZ6DXFcxxMWB36l0bfoK/ZVqH/r9h04sPiYjDaQnrq23aqxT4QDEBOK8+Zoap0YWCegk+X2RpyOBEJW++8W70RJrHmtW4hP/rS4x3HYFvctLB98PSLh3Cn0qZYacTxT1P3EUHo+ks0Zv5abxsS6SL1Istw= Received: from AM2PR07MB1042.eurprd07.prod.outlook.com (10.162.37.27) by AM2PR07MB0707.eurprd07.prod.outlook.com (10.160.56.154) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.56.4; Mon, 11 Sep 2017 07:55:32 +0000 Received: from AM2PR07MB1042.eurprd07.prod.outlook.com ([fe80::34c6:8f5f:fc61:5cc5]) by AM2PR07MB1042.eurprd07.prod.outlook.com ([fe80::34c6:8f5f:fc61:5cc5%14]) with mapi id 15.20.0056.010; Mon, 11 Sep 2017 07:55:32 +0000 From: =?iso-8859-1?q?Zolt=E1n_Balogh?= To: "'dev@openvswitch.org'" Thread-Topic: [PATCH v5] netdev-dpdk: reset packet_type for reused dp_packets Thread-Index: AdMq0zh25gNzzqZgR0aF0y3aRvp9bg== Date: Mon, 11 Sep 2017 07:55:31 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [91.82.100.59] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM2PR07MB0707; 6:lU4/48l6njc92ouzJ8CWnHNp+5a6TsSYrNXgAZ2n2OdC2yJ5Q5ewwFfETpEnotFVtXZ2vv5ELxZyego/OJZ781ORCMn3c7h4U+XHhro9sPr53pUjgbATamj6edu5xfF+dyntbTSAr2rjgvxteVz923J71Qx4hDdefB/00BR4U0YyMb5KveRdxquPbYKrkOAcxz9ISGDm97yopsfVaGRA/qSdYdjxQz3WYooOSfrtUEsbLzwHMEAqG33DDqNF2HqEhbIH4IZ+efRiwR1T5wKwomXAUi1xDOULIyxMFetuj12pWBQCfCFwQV7WwhWJPSJbZIStvVNYo8R8jK2H+a1heQ==; 5:bQ7pnfOBm3Ft1dZoTdK25bkXP4MMHqSLB7qwMRjPa3JoD6NNvlcF22TPoQepq2VJuCfItH1TdtGYIC8etsS5fYr4I047BDtJpqtSlmVntDVmAEukCGc+z31pNkjIp5wI4/HKRfbvhPbcuLLi9FwyuA==; 24:w5lEmrtJ6XS5nvxNFHGVqroq88m/CGm19GQvN4M6rIRca5lymI/mI4URjyIi84TMrQ7/39sQKy3qYeYHUdeY4qn9E93pnbTsBTwugd2ZjZI=; 7:VEW36Sc2IKKloW7siNtpHCRsPHfWOMyq91D8tFNIfopnpVS1+PkFXG/CWoUMbcl6FmUidmm0a1s5bONOfNoCV4O1P4kRJtZlbOwytLFXROeD4YoYL47+uKkJ+3CqVSc6c5C10m/8oI8yB+5SR3KvLIQgyt+pGwbvcWVZtsBfoRYq0kVA0KcudOU8U8yELvB+yBie4eKVtCFGjNSzQNT0XlVBJBZEMuNMtpvCDSQ1fec= x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-correlation-id: 6bde808c-fcbf-4d84-4e96-08d4f8ea7a14 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:AM2PR07MB0707; x-ms-traffictypediagnostic: AM2PR07MB0707: authentication-results: spf=none (sender IP is ) smtp.mailfrom=zoltan.balogh@ericsson.com; x-exchange-antispam-report-test: UriScan:(37575265505322)(228905959029699); x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(100000703101)(100105400095)(3002001)(10201501046)(6041248)(20161123560025)(20161123555025)(20161123558100)(20161123562025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:AM2PR07MB0707; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:AM2PR07MB0707; x-forefront-prvs: 04270EF89C x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(979002)(6009001)(199003)(189002)(97736004)(8936002)(3660700001)(50986999)(53936002)(9686003)(99286003)(25786009)(66066001)(55016002)(54356999)(7696004)(14454004)(2900100001)(5660300001)(6916009)(86362001)(7736002)(5250100002)(74316002)(305945005)(105586002)(8676002)(189998001)(478600001)(106356001)(6436002)(81156014)(110136004)(6506006)(81166006)(68736007)(2906002)(33656002)(3280700002)(101416001)(6116002)(3846002)(102836003)(491001)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM2PR07MB0707; H:AM2PR07MB1042.eurprd07.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; received-spf: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Sep 2017 07:55:31.8863 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM2PR07MB0707 X-OriginatorOrg: ericsson.com X-Brightmail-Tracker: H4sIAAAAAAAAA02SbUhTYRTHeXbv7q6j0bOleVoGOeiL1sw3yApRihBEKPqimdVqF13OTe6d ln4ooZyoaE0moSIaloosQbEtX8ocGZqCQ7I0lF50Nl/SJFFqpbndG/Tt95z//xz+5/DQhOIP qaR1BhPDGjR6FSUla1Id547kJdrTjtZtxB0bHOkjElDS/NQ2OosuSE9qGb0un2Ej4q9IsyYc J3Kr9918vu2UFKGewDIUQAOOgY7230QZktIK/ApB1cRHkn8MIViaaPIrJK4gwLPSLNisIlh+ bRNsswis94ZJ3zAKn4L3vQuUjwNxJIxXDYt9vAcnwWz5GuLrKeD0lAishqa+HpGPSXwIutbd hI9l+CLUm+/4PQjvhc03Nr+HwMHwYa5BxAfH8KhvjOA5CBZmt8Q8H4TOxlUJzwdgvKEc+YIC Nkvg091GoUENTy3fEM8p0NLjlfCmLyIY/G4VhDAYbW+i+BQZ8KC4nOLryVBdWS94ssFRukzx zSNi2BhbEYQQ6FhrE6bWiqFkdNovKDADLU+KEX8XJcy8LUX3UVjtf+vxrIbJaivFczg0P1wi av2nkcNwzRzZiMg2FMQxHJeTGRWlZljdNY4zGtQGxtSJdj7FQJf3+DM08DXRiTCNVLtkjmh7 mkKsyecKcpwIaEIVKEuO2ynJtJqCQoY1Xmbz9AznRPtpUhUsS3jhSlXgTI2JyWaYXIb9p4ro AGURsrVveq4fzrE8drtvFHqmE4bc+mxWOTX9rj92ccXt+tkt1erSM7fs5ppQs8Z4y2Su87Ye 2gq/1HpaG/Q5cTUZ7HKYajvzy1WE+uUhu6N10h/FM6Ed3TjGtVy5ebu0ImLuakavPp1Znyzx nrfUzbcsxtrivMbK9aqX8fIAi4rksjSRYQTLaf4CYeYdOxADAAA= X-Spam-Status: No, score=-2.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, RCVD_IN_DNSWL_MED autolearn=disabled version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Subject: [ovs-dev] [PATCH v5] netdev-dpdk: reset packet_type for reused dp_packets X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org DPDK uses dp-packet pool for storing received packets. The pool is reused by rxq_recv funcions of the DPDK netdevs. The datapath is capable to modify the packet_type property of packets. For instance when encapsulated L3 packets are received on a ptap gre port. In this case the packet_type property of struct dp_packet can be modified and later the same dp_packet with the modified packet_type can be reused in the rxq_rec function, so it can contain corrupted data. The dp_packet_batch_init_cutlen() in the rxq_recv functions iterates over dp_packets and sets their cutlen. So I modified this function to set packet_type to Ethernet for the dp_packets as well. I also renamed this function because of the added functionality. The dp_packet_batch_init_cutlen() iterates over batch->count dp_packet. Therefore setting of batch->count = nb_rx needs to be done before the former function is invoked. This is an additional fix. Signed-off-by: Zoltan Balogh Signed-off-by: Laszlo Suru Co-authored-by: Laszlo Suru CC: Jan Scheurich CC: Sugesh Chandran CC: Darrell Ball --- lib/dp-packet.c | 1 - lib/dp-packet.h | 3 ++- lib/netdev-dpdk.c | 7 ++++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/dp-packet.c b/lib/dp-packet.c index e5d16a6..443c225 100644 --- a/lib/dp-packet.c +++ b/lib/dp-packet.c @@ -103,7 +103,6 @@ dp_packet_init_dpdk(struct dp_packet *b, size_t allocated) { dp_packet_set_allocated(b, allocated); b->source = DPBUF_DPDK; - b->packet_type = htonl(PT_ETH); } /* Initializes 'b' as an empty dp_packet with an initial capacity of 'size' diff --git a/lib/dp-packet.h b/lib/dp-packet.h index 046f3ab..b4b721c 100644 --- a/lib/dp-packet.h +++ b/lib/dp-packet.h @@ -805,12 +805,13 @@ dp_packet_delete_batch(struct dp_packet_batch *batch, bool may_steal) } static inline void -dp_packet_batch_init_cutlen(struct dp_packet_batch *batch) +dp_packet_batch_init_packet_fields(struct dp_packet_batch *batch) { struct dp_packet *packet; DP_PACKET_BATCH_FOR_EACH (packet, batch) { dp_packet_reset_cutlen(packet); + packet->packet_type = htonl(PT_ETH); } } diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index f58e9be..ccccb9a 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -1644,8 +1644,9 @@ netdev_dpdk_vhost_rxq_recv(struct netdev_rxq *rxq, nb_rx, dropped); rte_spinlock_unlock(&dev->stats_lock); - dp_packet_batch_init_cutlen(batch); - batch->count = (int) nb_rx; + batch->count = nb_rx; + dp_packet_batch_init_packet_fields(batch); + return 0; } @@ -1684,8 +1685,8 @@ netdev_dpdk_rxq_recv(struct netdev_rxq *rxq, struct dp_packet_batch *batch) rte_spinlock_unlock(&dev->stats_lock); } - dp_packet_batch_init_cutlen(batch); batch->count = nb_rx; + dp_packet_batch_init_packet_fields(batch); return 0; }