* [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).