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 <step...@networkplumber.org> >> Cc: dev@dpdk.org; jerin.ja...@caviumnetworks.com; Gavin Hu (Arm >> Technology China) <gavin...@arm.com>; Honnappa Nagarahalli >> <honnappa.nagaraha...@arm.com>; Ola Liljedahl <ola.liljed...@arm.com>; >> ferruh.yi...@intel.com >> Subject: RE: [dpdk-dev] [PATCH v3 2/4] kni: fix kni fifo synchronization >> >> Hi Hemminger, >> >>> -----Original Message----- >>> From: Stephen Hemminger <step...@networkplumber.org> >>> Sent: Tuesday, October 9, 2018 5:53 AM >>> To: Phil Yang (Arm Technology China) <phil.y...@arm.com> >>> Cc: dev@dpdk.org; jerin.ja...@caviumnetworks.com; Gavin Hu (Arm >>> Technology China) <gavin...@arm.com>; Honnappa Nagarahalli >>> <honnappa.nagaraha...@arm.com>; Ola Liljedahl <ola.liljed...@arm.com>; >>> ferruh.yi...@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 <phil.y...@arm.com> 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.