From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id CC310A0569; Thu, 12 Mar 2020 06:55:26 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 306A01BFC9; Thu, 12 Mar 2020 06:55:26 +0100 (CET) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80074.outbound.protection.outlook.com [40.107.8.74]) by dpdk.org (Postfix) with ESMTP id 8E8592BE6 for ; Thu, 12 Mar 2020 06:55:25 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=S2X6l/cmQecFRnprsIdf/waV55byTIVouumpzdXEsZDfig5oROs4ort3WttSn862vegO6iKrJU2RkwTP0zMwqdUHbCl1YXg0MJVCjQaCOT6rVbj0zJBpvHbfB5sIR7U14ipsB9V3H3NEQ7Kei1K3OMpFt9tebGOxS2THuL5QwyeNs397aZ/P27hHaco6o0tQ0lqdj+eXIEfWT8YRPYH9DcDPM65vbvehQbo4Jh5SjH1luSU5T9t/tTFy64e7FBZBEhiZP3dDgd6idH1TX19lyr5G/M4nXc9vk7p2xmBvQ3JLO4XO7oK5U9VcKfplxXEnuwamJ5lSH9/J2aFcPf7a5g== 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-SenderADCheck; bh=nJEyCfq/HPA25uxxEHTb++tYA2Oj2CbM4Ux7K+RC+ak=; b=Xn+4Nw3XqqIePkdoYQAopE+DuaXsz7XlSSiGxwNu42pz/iEuviGq8leqZg6i/JBqISXAL6YOhXc/DYzs0YH3ygxpabRscIg8dVf7LDbpatwurOBwBebB4MUPBvWUt9T37vxu8rcCW672JUjlylXSz/dNwLJBq4kpsMPL/hV+nh51NwI4t1H3ovoqo+uDDjBmi2iP4lxzzgIWKpm40IduL+B0toK3gl1gNZabduCbEUbyl7Xzu6qUJ39XAxY/8C51FliX2PRTEZWaKXBH39uVzQRt1scTTU1BINLBJ5Zkpvra8tZUjzOBscc927JnMQdcygFw4qaKg3uXqeJjS3RtVg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nJEyCfq/HPA25uxxEHTb++tYA2Oj2CbM4Ux7K+RC+ak=; b=dlNjXVldnmJ2Pf2lgmaDGgX6c83qyNfgW6s3OI+cRBFDqakf78nqLLcCYdjFRwczTuhMmis1izPWbDC18zTol3oEIxw3ITSqBN73vH4+bKDCQlRM5IQaP6ng420FZxjGC7QkOvaugQzI0BZqhT+/qoz4U8SzUBjQ8kzxiKUl6Ow= Received: from VE1PR04MB6639.eurprd04.prod.outlook.com (10.255.118.11) by VE1PR04MB6624.eurprd04.prod.outlook.com (20.179.234.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2793.17; Thu, 12 Mar 2020 05:55:24 +0000 Received: from VE1PR04MB6639.eurprd04.prod.outlook.com ([fe80::7d99:ec14:5e42:dc18]) by VE1PR04MB6639.eurprd04.prod.outlook.com ([fe80::7d99:ec14:5e42:dc18%3]) with mapi id 15.20.2814.007; Thu, 12 Mar 2020 05:55:24 +0000 From: Akhil Goyal To: Anoob Joseph CC: Jerin Jacob Kollanukkaran , Narayana Prasad Raju Athreya , Ankur Dwivedi , Archana Muniganti , Tejasree Kondoj , Vamsi Krishna Attunuru , "dev@dpdk.org" , "Ananyev, Konstantin" , Lukas Bartosik , "Nicolau, Radu" , Thomas Monjalon Thread-Topic: [PATCH v5 00/15] add eventmode to ipsec-secgw Thread-Index: AQHV7YmZRr96nxpcH0Kc8ByDqKef8ag3MBwAgA1T/wCAAAXQ0A== Date: Thu, 12 Mar 2020 05:55:23 +0000 Message-ID: References: <1582185727-6749-1-git-send-email-lbartosik@marvell.com> <1582820317-7333-1-git-send-email-lbartosik@marvell.com> In-Reply-To: Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=akhil.goyal@nxp.com; x-originating-ip: [92.120.1.66] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 3c40c650-41f2-49a0-0806-08d7c649f4e9 x-ms-traffictypediagnostic: VE1PR04MB6624: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3513; x-forefront-prvs: 0340850FCD x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(346002)(366004)(136003)(39860400002)(376002)(396003)(199004)(81156014)(9686003)(4326008)(6506007)(53546011)(66946007)(86362001)(8676002)(478600001)(2906002)(66446008)(66556008)(81166006)(33656002)(64756008)(76116006)(66476007)(8936002)(7416002)(55016002)(7696005)(26005)(316002)(54906003)(71200400001)(5660300002)(186003)(52536014)(44832011)(30864003)(6916009); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6624; H:VE1PR04MB6639.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: g1sUsly9mdnwJ3kRRlkrzshd9kUlxdVJX9X5xK5Lc5IH4q6LlpYXuArHgnu0qLmNiG/vaJmdRgE50zkelnD71FDF6jYPj35L2ukKPRc89GowddCgGy3SItjYInHUv87oSiUL8Ay6fMQT7yxqBPOyZxuUEmshRTSXkcssjju0FKLsYX8nPiIQzmk5ziIjDsXHRig/vu8Tc+tAuu19nhRZuv3Vr9aZ4YlvFVnMmTFgk82EHnZEQUZnOvDMHPP57eRCmrF7ZP7Z60y1zNhvrjpWL6dznGFCpdDpZVM3laFYQPgju3SggmaCJ64r2uabPDFEop1Ael5Hu2Cvc/NHMEM5ZsL3hGyHg5l2v//iJZHoub4CXwdXWvuCv/2mh3rtcY4iD2kLIPby8E1+Drh5jJKj/bcis2Mw+oCdYFWNU1JVwiAs8KqjaEwVauIP//fhaumR x-ms-exchange-antispam-messagedata: U4KzHi/eCHj2s3AGXQTrTQWUmULNoMAglRKNAup02UdYoFi8oaBuLFREvtFA+SBMSBY//fHKMGoD0d0K9mGGc40AUhhRGCtnEiqUt5DyeF+RIHEfmvIt1Sw6z8kzevzkNWwyTVqxqcr3qiqzH2Y+ZQ== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3c40c650-41f2-49a0-0806-08d7c649f4e9 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Mar 2020 05:55:23.9169 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: VUuoTrXLOmlyIWzDey7lVpnV485RZaJd+Xs+bHuuR1QRzVsXVLWVLsCuSXVZrthwDR3WIBwwk96J/t6vDWVURA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR04MB6624 Subject: Re: [dpdk-dev] [PATCH v5 00/15] add eventmode to ipsec-secgw 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" Hi Anoob, Please send a release note update as a reply to this mail. I will update it= while merging the patchset. Regards, Akhil >=20 > Hi Akhil, >=20 > Reminder. >=20 > Do you have any further review comments? >=20 > Thanks, > Anoob >=20 > > -----Original Message----- > > From: Ananyev, Konstantin > > Sent: Tuesday, March 3, 2020 11:30 PM > > To: Lukas Bartosik ; Akhil Goyal > > ; Nicolau, Radu ; Thomas > > Monjalon > > Cc: Jerin Jacob Kollanukkaran ; Narayana Prasad Raj= u > > Athreya ; Ankur Dwivedi ; > > Anoob Joseph ; Archana Muniganti > > ; Tejasree Kondoj ; Vamsi > > Krishna Attunuru ; dev@dpdk.org > > Subject: [EXT] RE: [PATCH v5 00/15] add eventmode to ipsec-secgw > > > > External Email > > > > ---------------------------------------------------------------------- > > > > > > > > This series introduces event-mode additions to ipsec-secgw. > > > > > > With this series, ipsec-secgw would be able to run in eventmode. The > > > worker thread (executing loop) would be receiving events and would be > > > submitting it back to the eventdev after the processing. This way, > > > multicore scaling and h/w assisted scheduling is achieved by making > > > use of the eventdev capabilities. > > > > > > Since the underlying event device would be having varying > > > capabilities, the worker thread could be drafted differently to maxim= ize > > performance. > > > This series introduces usage of multiple worker threads, among which > > > the one to be used will be determined by the operating conditions and > > > the underlying device capabilities. > > > > > > For example, if an event device - eth device pair has Tx internal > > > port, then application can do tx_adapter_enqueue() instead of regular > > > event_enqueue(). So a thread making an assumption that the device pai= r > > > has internal port will not be the right solution for another pair. Th= e > > > infrastructure added with these patches aims to help application to > > > have multiple worker threads, there by extracting maximum performance > > > from every device without affecting existing paths/use cases. > > > > > > The eventmode configuration is predefined. All packets reaching one > > > eth port will hit one event queue. All event queues will be mapped to > > > all event ports. So all cores will be able to receive traffic from al= l ports. > > > When schedule_type is set as RTE_SCHED_TYPE_ORDERED/ATOMIC, event > > > device will ensure the ordering. Ordering would be lost when tried in > > PARALLEL. > > > > > > Following command line options are introduced, > > > > > > --transfer-mode: to choose between poll mode & event mode > > > --event-schedule-type: to specify the scheduling type > > > (RTE_SCHED_TYPE_ORDERED/ > > > RTE_SCHED_TYPE_ATOMIC/ > > > RTE_SCHED_TYPE_PARALLEL) > > > > > > Additionally the event mode introduces two modes of processing packet= s: > > > > > > Driver-mode: This mode will have bare minimum changes in the applicat= ion > > > to support ipsec. There woudn't be any lookup etc done i= n > > > the application. And for inline-protocol use case, the > > > thread would resemble l2fwd as the ipsec processing woul= d be > > > done entirely in the h/w. This mode can be used to bench= mark > > > the raw performance of the h/w. All the application side > > > steps (like lookup) can be redone based on the requireme= nt > > > of the end user. Hence the need for a mode which would > > > report the raw performance. > > > > > > App-mode: This mode will have all the features currently implemented = with > > > ipsec-secgw (non librte_ipsec mode). All the lookups etc > > > would follow the existing methods and would report numbers > > > that can be compared against regular ipsec-secgw benchmark > > > numbers. > > > > > > The driver mode is selected with existing --single-sa option (used > > > also by poll mode). When --single-sa option is used in conjution with > > > event mode then index passed to --single-sa is ignored. > > > > > > Example commands to execute ipsec-secgw in various modes on OCTEON > TX2 > > > platform, > > > > > > #Inbound and outbound app mode > > > ipsec-secgw -w 0002:02:00.0,ipsec_in_max_spi=3D128 -w > > > 0002:03:00.0,ipsec_in_max_spi=3D128 -w 0002:0e:00.0 -w 0002:10:00.1 > > > --log-level=3D8 -c 0x1 -- -P -p 0x3 -u 0x1 -f aes-gcm.cfg > > > --transfer-mode event --event-schedule-type parallel > > > > > > #Inbound and outbound driver mode > > > ipsec-secgw -w 0002:02:00.0,ipsec_in_max_spi=3D128 -w > > > 0002:03:00.0,ipsec_in_max_spi=3D128 -w 0002:0e:00.0 -w 0002:10:00.1 > > > --log-level=3D8 -c 0x1 -- -P -p 0x3 -u 0x1 -f aes-gcm.cfg > > > --transfer-mode event --event-schedule-type parallel --single-sa 0 > > > > > > This series adds non burst tx internal port workers only. It provides > > > infrastructure for non internal port workers, however does not define > > > any. Also, only inline ipsec protocol mode is supported by the worker= threads > > added. > > > > > > Following are planned features, > > > 1. Add burst mode workers. > > > 2. Add non internal port workers. > > > 3. Verify support for Rx core (the support is added but lack of h/w t= o verify). > > > 4. Add lookaside protocol support. > > > > > > Following are features that Marvell won't be attempting. > > > 1. Inline crypto support. > > > 2. Lookaside crypto support. > > > > > > For the features that Marvell won't be attempting, new workers can be > > > introduced by the respective stake holders. > > > > > > This series is tested on Marvell OCTEON TX2. > > > This series is targeted for 20.05 release. > > > > > > Changes in v5: > > > * Rename function check_params() to check_poll_mode_params() and > > > check_eh_conf() to check_event_mode_params() in order to make it cl= ear > > > what is their purpose. > > > * Forbid usage of --config option in event mode. > > > * Replace magic numbers on return with enum values in > > process_ipsec_ev_inbound() > > > and process_ipsec_ev_outbound() functions. > > > * Add session_priv_pool for both inbound and outbound configuration i= n > > > ipsec_wrkr_non_burst_int_port_app_mode worker. > > > * Add check of event type in ipsec_wrkr_non_burst_int_port_app_mode > > worker. > > > * Update description of --config option in both ipsec-secgw help and > > documentation. > > > > > > Changes in v4: > > > * Update ipsec-secgw documentation to describe the new options as wel= l as > > > event mode support. > > > * In event mode reserve number of crypto queues equal to number of et= h > > ports > > > in order to meet inline protocol offload requirements. > > > * Add calculate_nb_mbufs() function to calculate number of mbufs in a= pool > > > and include fragments table size into the calculation. > > > * Move structures ipsec_xf and ipsec_sad to ipsec.h and remove static > > keyword > > > from sa_out, nb_sa_out, sa_in and nb_sa_in in sa.c. > > > * Update process_ipsec_ev_inbound(), process_ipsec_ev_outbound(), > > check_sp() > > > and prepare_out_sessions_tbl() functions as a result of changes int= roduced > > > by SAD feature. > > > * Remove setting sa->cdev_id_qp to 0 in create_inline_session as sa_c= tx > > > is created with rte_zmalloc. > > > * Minor cleanup enhancements: > > > - In eh_set_default_conf_eventdev() function in event_helper.c put > definition > > > of int local vars in one line, remove invalid comment, put > > > "eventdev_config->ev_queue_mode =3D > RTE_EVENT_QUEUE_CFG_ALL_TYPES" > > in one line > > > instead of two. > > > - Remove extern "C" from event_helper.h. > > > - Put local vars in reverse xmas tree order in eh_dev_has_rx_internal= _port() > > and > > > eh_dev_has_tx_internal_port() functions in event_helper.c. > > > - Put #include in alphabetical order in ipsec-secgw.c. > > > - Move "extern volatile bool force_quit" and "#include " t= o ipsec- > > secgw.h, > > > remove #include . > > > - Remove not needed includes in ipsec_worker.c. > > > - Remove expired todo from ipsec_worker.h. > > > > > > Changes in v3: > > > * Move eh_conf_init() and eh_conf_uninit() functions to event_helper.= c > > > including minor rework. > > > * Rename --schedule-type option to --event-schedule-type. > > > * Replace macro UNPROTECTED_PORT with static inline function > > > is_unprotected_port(). > > > * Move definitions of global variables used by multiple modules > > > to .c files and add externs in .h headers. > > > * Add eh_check_conf() which validates ipsec-secgw configuration > > > for event mode. > > > * Add dynamic calculation of number of buffers in a pool based > > > on number of cores, ports and crypto queues. > > > * Fix segmentation fault in event mode driver worker which happens > > > when there are no inline outbound sessions configured. > > > * Remove change related to updating number of crypto queues > > > in cryptodevs_init(). The update of crypto queues will be handled > > > in a separate patch. > > > * Fix compilation error on 32-bit platforms by using userdata instead > > > of udata64 from rte_mbuf. > > > > > > Changes in v2: > > > * Remove --process-dir option. Instead use existing unprotected port = mask > > > option (-u) to decide wheter port handles inbound or outbound traff= ic. > > > * Remove --process-mode option. Instead use existing --single-sa opti= on > > > to select between app and driver modes. > > > * Add handling of PKT_RX_SEC_OFFLOAD_FAIL result in app worker thread= . > > > * Fix passing of req_rx_offload flags to create_default_ipsec_flow(). > > > * Move destruction of flows to a location where eth ports are stopped > > > and closed. > > > * Print error and exit when event mode --schedule-type option is used > > > in poll mode. > > > * Reduce number of goto statements replacing them with loop construct= s. > > > * Remove sec_session_fixed table and replace it with locally build > > > table in driver worker thread. Table is indexed by port identifier > > > and holds first inline session pointer found for a given port. > > > * Print error and exit when sessions other than inline are configured > > > in event mode. > > > * When number of event queues is less than number of eth ports then > > > map all eth ports to one event queue. > > > * Cleanup and minor improvements in code as suggested by Konstantin > > > > > > Ankur Dwivedi (1): > > > examples/ipsec-secgw: add default rte flow for inline Rx > > > > > > Anoob Joseph (5): > > > examples/ipsec-secgw: add framework for eventmode helper > > > examples/ipsec-secgw: add eventdev port-lcore link > > > examples/ipsec-secgw: add Rx adapter support > > > examples/ipsec-secgw: add Tx adapter support > > > examples/ipsec-secgw: add routines to display config > > > > > > Lukasz Bartosik (9): > > > examples/ipsec-secgw: add routines to launch workers > > > examples/ipsec-secgw: add support for internal ports > > > examples/ipsec-secgw: add event helper config init/uninit > > > examples/ipsec-secgw: add eventmode to ipsec-secgw > > > examples/ipsec-secgw: add driver mode worker > > > examples/ipsec-secgw: add app mode worker > > > examples/ipsec-secgw: make number of buffers dynamic > > > doc: add event mode support to ipsec-secgw > > > examples/ipsec-secgw: reserve crypto queues in event mode > > > > > > doc/guides/sample_app_ug/ipsec_secgw.rst | 135 ++- > > > examples/ipsec-secgw/Makefile | 2 + > > > examples/ipsec-secgw/event_helper.c | 1812 > > ++++++++++++++++++++++++++++++ > > > examples/ipsec-secgw/event_helper.h | 327 ++++++ > > > examples/ipsec-secgw/ipsec-secgw.c | 506 +++++++-- > > > examples/ipsec-secgw/ipsec-secgw.h | 88 ++ > > > examples/ipsec-secgw/ipsec.c | 5 +- > > > examples/ipsec-secgw/ipsec.h | 53 +- > > > examples/ipsec-secgw/ipsec_worker.c | 649 +++++++++++ > > > examples/ipsec-secgw/ipsec_worker.h | 41 + > > > examples/ipsec-secgw/meson.build | 6 +- > > > examples/ipsec-secgw/sa.c | 21 +- > > > examples/ipsec-secgw/sad.h | 5 - > > > 13 files changed, 3516 insertions(+), 134 deletions(-) create mode > > > 100644 examples/ipsec-secgw/event_helper.c > > > create mode 100644 examples/ipsec-secgw/event_helper.h > > > create mode 100644 examples/ipsec-secgw/ipsec-secgw.h > > > create mode 100644 examples/ipsec-secgw/ipsec_worker.c > > > create mode 100644 examples/ipsec-secgw/ipsec_worker.h > > > > > > -- > > > > Have to say I didn't look extensively on event mode. > > My primary concern was poll-mode and common code changes. > > From that perspective - LGTM. > > > > Series Acked-by: Konstantin Ananyev > > > > > 2.7.4