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 BF331A00E6 for ; Tue, 9 Jul 2019 12:33:56 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8A41A1B9A6; Tue, 9 Jul 2019 12:33:48 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 584D41B993; Tue, 9 Jul 2019 12:33:46 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Jul 2019 03:33:45 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,470,1557212400"; d="scan'208";a="156135183" Received: from irsmsx109.ger.corp.intel.com ([163.33.3.23]) by orsmga007.jf.intel.com with ESMTP; 09 Jul 2019 03:33:44 -0700 Received: from irsmsx108.ger.corp.intel.com ([169.254.11.229]) by IRSMSX109.ger.corp.intel.com ([169.254.13.29]) with mapi id 14.03.0439.000; Tue, 9 Jul 2019 11:32:08 +0100 From: "Dumitrescu, Cristian" To: "Wang, Xiao W" , "Singh, Jasvinder" CC: "dev@dpdk.org" , "stable@dpdk.org" Thread-Topic: [PATCH] net/softnic: fix pipeline time calculation Thread-Index: AQHVCyi6w0xS/eE85EuuzvB+iue2J6aFV+2AgALh0wCAOjAR0A== Date: Tue, 9 Jul 2019 10:32:08 +0000 Message-ID: <3EB4FA525960D640B5BDFFD6A3D891268E8EBDB3@IRSMSX108.ger.corp.intel.com> References: <20190515135904.81415-1-xiao.w.wang@intel.com> <54CBAA185211B4429112C315DA58FF6D3FD15433@IRSMSX101.ger.corp.intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNzkyNjU0OTMtYmZiZS00NzJkLWFlZDQtMmI5MGUwNzFhNzkzIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoibUlwTXhuQnI3UEZXMVJiTndnUndidUlDcjBhK25WYmdsSHVuYmZ2d3NLcGV0ZElGTzlUc1NsTVNSZU93Y0RGKyJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [163.33.239.180] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH] net/softnic: fix pipeline time calculation 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" > -----Original Message----- > From: Wang, Xiao W > Sent: Sunday, June 2, 2019 11:46 AM > To: Singh, Jasvinder > Cc: dev@dpdk.org; Dumitrescu, Cristian ; > stable@dpdk.org > Subject: RE: [PATCH] net/softnic: fix pipeline time calculation >=20 >=20 >=20 > > -----Original Message----- > > From: Singh, Jasvinder > > Sent: Friday, May 31, 2019 10:46 PM > > To: Wang, Xiao W > > Cc: dev@dpdk.org; Dumitrescu, Cristian ; > > stable@dpdk.org > > Subject: RE: [PATCH] net/softnic: fix pipeline time calculation > > > > > > > > > -----Original Message----- > > > From: Wang, Xiao W > > > Sent: Wednesday, May 15, 2019 2:59 PM > > > To: Singh, Jasvinder > > > Cc: dev@dpdk.org; Dumitrescu, Cristian > ; > > > Wang, Xiao W ; stable@dpdk.org > > > Subject: [PATCH] net/softnic: fix pipeline time calculation > > > > > > When a new pipeline is added to a thread, the "time_next_min" value > may > > > need update, otherwise this pipeline won't get served timely. > > > > > > Fixes: 70709c78fda6 ("net/softnic: add command to enable/disable > pipeline") > > > Cc: stable@dpdk.org > > > > > > Signed-off-by: Xiao Wang > > > --- > > > drivers/net/softnic/rte_eth_softnic_thread.c | 6 ++++++ > > > 1 file changed, 6 insertions(+) > > > > > > diff --git a/drivers/net/softnic/rte_eth_softnic_thread.c > > > b/drivers/net/softnic/rte_eth_softnic_thread.c > > > index 855408e98..2b482117d 100644 > > > --- a/drivers/net/softnic/rte_eth_softnic_thread.c > > > +++ b/drivers/net/softnic/rte_eth_softnic_thread.c > > > @@ -337,6 +337,9 @@ softnic_thread_pipeline_enable(struct > > pmd_internals > > > *softnic, > > > tdp->timer_period =3D (rte_get_tsc_hz() * p- > >timer_period_ms) > > / > > > 1000; > > > tdp->time_next =3D rte_get_tsc_cycles() + tdp->timer_period; > > > > > > + if (tdp->time_next < td->time_next_min) > > > + td->time_next_min =3D tdp->time_next; > > > + > > > td->n_pipelines++; > > > > > > /* Pipeline */ > > > @@ -522,6 +525,9 @@ thread_msg_handle_pipeline_enable(struct > > > softnic_thread_data *t, > > > (rte_get_tsc_hz() * req->pipeline_enable.timer_period_ms) > / > > > 1000; > > > p->time_next =3D rte_get_tsc_cycles() + p->timer_period; > > > > > > + if (p->time_next < t->time_next_min) > > > + t->time_next_min =3D p->time_next; > > > + > > > t->n_pipelines++; > > > > > > /* Response */ > > > -- > > > 2.15.1 > > > > > > Hi Wang, > > > > Timer values for pipelines and thread level message handlers are alread= y > > adjusted in runtime function rte_pmd_softnic_run_internal(). In runtime > > function, the values of t->time_next_min is updated as well. IMO, above > > changes not needed. Could you help with the case where timer > adjustments in > > runtime not working? >=20 > Hi Jasvinder, >=20 > the values of t->time_next_min is updated only when the pipeline message > and thread message get handled, but not when the pipeline is added to tha= t > thread. E.g. when a thread t->time_next_min is ~100ms later, and a new > pipeline is added to that thread with timer_period_ms parameter set to > 10ms, then this pipeline's control message will not be served until 100ms > later. >=20 > BRs, > Xiao >=20 > > > > Thanks, > > Jasvinder > > NAK There are no bugs/issues fixed by this patch, but there are side effects in= troduced that maybe you did not anticipate. - Yes, the first message handler for a newly added pipeline might be slight= ly delayed, but this is harmless. - For a given thread, we periodically iterate through all pipelines the cur= rent thread is running and check if there are any pending messages for each= pipeline (function rte_pmd_softnic_run_internal). We also update the deadl= ine for the next message handling session for the thread (thread->time_next= _min), which should only be changed by the thread (existing code); if this = is changed by the pipeline message handler, then there is the risk that som= e pipelines will run their message handler again very soon after, as the de= adline had been brought earlier. Makes sense?