linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] atl1c: optimize rx loop
@ 2021-03-19  4:04 Sieng Piaw Liew
  2021-03-19  4:15 ` Willy Tarreau
  0 siblings, 1 reply; 3+ messages in thread
From: Sieng Piaw Liew @ 2021-03-19  4:04 UTC (permalink / raw)
  To: chris.snook; +Cc: davem, kuba, netdev, linux-kernel, Sieng Piaw Liew

Remove this trivial bit of inefficiency from the rx receive loop,
results in increase of a few Mbps in iperf3. Tested on Intel Core2
platform.

Signed-off-by: Sieng Piaw Liew <liew.s.piaw@gmail.com>
---
 drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
index 3f65f2b370c5..b995f9a0479c 100644
--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
@@ -1796,9 +1796,7 @@ static void atl1c_clean_rx_irq(struct atl1c_adapter *adapter,
 	struct atl1c_recv_ret_status *rrs;
 	struct atl1c_buffer *buffer_info;
 
-	while (1) {
-		if (*work_done >= work_to_do)
-			break;
+	while (*work_done < work_to_do) {
 		rrs = ATL1C_RRD_DESC(rrd_ring, rrd_ring->next_to_clean);
 		if (likely(RRS_RXD_IS_VALID(rrs->word3))) {
 			rfd_num = (rrs->word0 >> RRS_RX_RFD_CNT_SHIFT) &
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] atl1c: optimize rx loop
  2021-03-19  4:04 [PATCH] atl1c: optimize rx loop Sieng Piaw Liew
@ 2021-03-19  4:15 ` Willy Tarreau
  2021-03-22  0:54   ` Sieng Piaw Liew
  0 siblings, 1 reply; 3+ messages in thread
From: Willy Tarreau @ 2021-03-19  4:15 UTC (permalink / raw)
  To: Sieng Piaw Liew; +Cc: chris.snook, davem, kuba, netdev, linux-kernel

On Fri, Mar 19, 2021 at 12:04:47PM +0800, Sieng Piaw Liew wrote:
> Remove this trivial bit of inefficiency from the rx receive loop,
> results in increase of a few Mbps in iperf3. Tested on Intel Core2
> platform.
> 
> Signed-off-by: Sieng Piaw Liew <liew.s.piaw@gmail.com>
> ---
>  drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
> index 3f65f2b370c5..b995f9a0479c 100644
> --- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
> +++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
> @@ -1796,9 +1796,7 @@ static void atl1c_clean_rx_irq(struct atl1c_adapter *adapter,
>  	struct atl1c_recv_ret_status *rrs;
>  	struct atl1c_buffer *buffer_info;
>  
> -	while (1) {
> -		if (*work_done >= work_to_do)
> -			break;
> +	while (*work_done < work_to_do) {

It should not change anything, or only based on the compiler's optimization
and should not result in a measurable difference because what it does is
exactly the same. Have you really compared the compiled output code to
explain the difference ? I strongly suspect you'll find no difference at
all.

Thus for me it's certainly not an optimization, it could be qualified as
a cleanup to improve code readability however.

Willy

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] atl1c: optimize rx loop
  2021-03-19  4:15 ` Willy Tarreau
@ 2021-03-22  0:54   ` Sieng Piaw Liew
  0 siblings, 0 replies; 3+ messages in thread
From: Sieng Piaw Liew @ 2021-03-22  0:54 UTC (permalink / raw)
  To: Willy Tarreau; +Cc: chris.snook, davem, kuba, netdev, linux-kernel

On Fri, Mar 19, 2021 at 05:15:35AM +0100, Willy Tarreau wrote:
> On Fri, Mar 19, 2021 at 12:04:47PM +0800, Sieng Piaw Liew wrote:
> > Remove this trivial bit of inefficiency from the rx receive loop,
> > results in increase of a few Mbps in iperf3. Tested on Intel Core2
> > platform.
> > 
> > Signed-off-by: Sieng Piaw Liew <liew.s.piaw@gmail.com>
> > ---
> >  drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 4 +---
> >  1 file changed, 1 insertion(+), 3 deletions(-)
> > 
> > diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
> > index 3f65f2b370c5..b995f9a0479c 100644
> > --- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
> > +++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
> > @@ -1796,9 +1796,7 @@ static void atl1c_clean_rx_irq(struct atl1c_adapter *adapter,
> >  	struct atl1c_recv_ret_status *rrs;
> >  	struct atl1c_buffer *buffer_info;
> >  
> > -	while (1) {
> > -		if (*work_done >= work_to_do)
> > -			break;
> > +	while (*work_done < work_to_do) {
> 
> It should not change anything, or only based on the compiler's optimization
> and should not result in a measurable difference because what it does is
> exactly the same. Have you really compared the compiled output code to
> explain the difference ? I strongly suspect you'll find no difference at
> all.
> 
> Thus for me it's certainly not an optimization, it could be qualified as
> a cleanup to improve code readability however.
> 
> Willy

You're right. Objdump and diff showed no difference.

Regards,
Sieng Piaw

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-03-22  0:55 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-19  4:04 [PATCH] atl1c: optimize rx loop Sieng Piaw Liew
2021-03-19  4:15 ` Willy Tarreau
2021-03-22  0:54   ` Sieng Piaw Liew

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).