From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ferruh Yigit Subject: Re: [PATCH v3 2/4] kni: fix kni fifo synchronization Date: Wed, 10 Oct 2018 15:42:10 +0100 Message-ID: <7bbec074-5c98-38a5-4dfd-674c0886ea47@intel.com> References: <1537364560-4124-1-git-send-email-phil.yang@arm.com> <1538989906-8349-1-git-send-email-phil.yang@arm.com> <1538989906-8349-2-git-send-email-phil.yang@arm.com> <20181008145308.0fbc64de@xeon-e3> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: "dev@dpdk.org" , "jerin.jacob@caviumnetworks.com" , Honnappa Nagarahalli , Ola Liljedahl To: "Gavin Hu (Arm Technology China)" , "Phil Yang (Arm Technology China)" , Stephen Hemminger Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id A45811B6CA for ; Wed, 10 Oct 2018 16:42:13 +0200 (CEST) In-Reply-To: Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 10/10/2018 11:06 AM, Gavin Hu (Arm Technology China) wrote: > > >> -----Original Message----- >> From: Phil Yang (Arm Technology China) >> Sent: Wednesday, October 10, 2018 5:59 PM >> To: Stephen Hemminger >> Cc: dev@dpdk.org; jerin.jacob@caviumnetworks.com; Gavin Hu (Arm >> Technology China) ; Honnappa Nagarahalli >> ; Ola Liljedahl ; >> ferruh.yigit@intel.com >> Subject: RE: [dpdk-dev] [PATCH v3 2/4] kni: fix kni fifo synchronization >> >> Hi Hemminger, >> >>> -----Original Message----- >>> From: Stephen Hemminger >>> Sent: Tuesday, October 9, 2018 5:53 AM >>> To: Phil Yang (Arm Technology China) >>> Cc: dev@dpdk.org; jerin.jacob@caviumnetworks.com; Gavin Hu (Arm >>> Technology China) ; Honnappa Nagarahalli >>> ; Ola Liljedahl ; >>> ferruh.yigit@intel.com >>> Subject: Re: [dpdk-dev] [PATCH v3 2/4] kni: fix kni fifo >>> synchronization >>> >>> On Mon, 8 Oct 2018 17:11:44 +0800 >>> Phil Yang wrote: >>> >>>> diff --git a/lib/librte_kni/rte_kni_fifo.h >>>> b/lib/librte_kni/rte_kni_fifo.h index ac26a8c..70ac14e 100644 >>>> --- a/lib/librte_kni/rte_kni_fifo.h >>>> +++ b/lib/librte_kni/rte_kni_fifo.h >>>> @@ -28,8 +28,9 @@ kni_fifo_put(struct rte_kni_fifo *fifo, void >>>> **data, unsigned num) { >>>> unsigned i = 0; >>>> unsigned fifo_write = fifo->write; >>>> -unsigned fifo_read = fifo->read; >>>> unsigned new_write = fifo_write; >>>> +rte_smp_rmb(); >>>> +unsigned fifo_read = fifo->read; >>>> >>> >>> The patch makes sense, but this function should be changed to match >>> kernel code style. >>> That means no declarations after initial block, and use 'unsigned int' >>> rather than 'unsigned' >>> >>> Also. why is i initialized? Best practice now is to not do gratitious >>> initialization since it defeats compiler checks for accidental use of >> uninitialized variables. >>> >>> What makes sense is something like: >>> >>> kni_fifo_put(struct rte_kni_fifo *fifo, void **data, unsigned num) { >>> unsigned int i, fifo_read, fifo_write, new_write; >>> >>> fifo_write = fifo->write; >>> new_write = fifo_write; >>> rte_smb_rmb(); >>> fifo_read = fifo->read; >>> >>> Sorry, blaming you for issues which are inherited from original KNI code. >>> Maybe someone should run kernel checkpatch (not DPDK checkpatch) on it >>> and fix those. >> >> Thanks for your comment. >> >> I think I can submit a new separate patch to fix this historical issue. >> >> Thanks, >> Phil Yang > > I advised a separate patch to make this patch to the point and clean. +1 to separate patch for clean up.