Message ID | 1517328846-47-1-git-send-email-rosenp@gmail.com |
---|---|
State | Accepted |
Headers | show |
Series | [LEDE-DEV] ag71xx: Reorder ring structs for lower cache trashing. | expand |
On 30.01.2018 18:14, Rosen Penev wrote: > Based on Qualcomm's upstream code. Reordered a bit different. > > iperf3 speed goes from ~279mbps to ~320mbps. > > Signed-off-by: Rosen Penev <rosenp@gmail.com> > --- > .../files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h | 13 ++++++++----- > 1 file changed, 8 insertions(+), 5 deletions(-) > > diff --git a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h > index a712812..d181240 100644 > --- a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h > +++ b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h > @@ -106,13 +106,16 @@ struct ag71xx_buf { > }; > > struct ag71xx_ring { > - struct ag71xx_buf *buf; > - u8 *descs_cpu; > - dma_addr_t descs_dma; > - u16 desc_split; > - u16 order; > + /* "Hot" fields in the data path. */ > unsigned int curr; > unsigned int dirty; > + > + /* "Cold" fields - not used in the data path. */ > + struct ag71xx_buf *buf; > + u16 order; > + u16 desc_split; > + dma_addr_t descs_dma; > + u8 *descs_cpu; > }; > > struct ag71xx_mdio { I can confirm that this one gives a nice performance boost ! Regards
On Thu, Feb 1, 2018 at 9:23 AM, Lucian Cristian <luci@createc.ro> wrote: > On 30.01.2018 18:14, Rosen Penev wrote: >> >> Based on Qualcomm's upstream code. Reordered a bit different. >> >> iperf3 speed goes from ~279mbps to ~320mbps. >> >> Signed-off-by: Rosen Penev <rosenp@gmail.com> >> --- >> .../files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h | 13 >> ++++++++----- >> 1 file changed, 8 insertions(+), 5 deletions(-) >> >> diff --git >> a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h >> b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h >> index a712812..d181240 100644 >> --- >> a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h >> +++ >> b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h >> @@ -106,13 +106,16 @@ struct ag71xx_buf { >> }; >> struct ag71xx_ring { >> - struct ag71xx_buf *buf; >> - u8 *descs_cpu; >> - dma_addr_t descs_dma; >> - u16 desc_split; >> - u16 order; >> + /* "Hot" fields in the data path. */ >> unsigned int curr; >> unsigned int dirty; >> + >> + /* "Cold" fields - not used in the data path. */ >> + struct ag71xx_buf *buf; >> + u16 order; >> + u16 desc_split; >> + dma_addr_t descs_dma; >> + u8 *descs_cpu; >> }; >> struct ag71xx_mdio { > Seems this patch got dropped from patchwork for some reason. > > I can confirm that this one gives a nice performance boost ! > > > Regards > > > _______________________________________________ > Lede-dev mailing list > Lede-dev@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/lede-dev
On 10.02.2018 06:11, Rosen Penev wrote: > On Thu, Feb 1, 2018 at 9:23 AM, Lucian Cristian <luci@createc.ro> wrote: >> On 30.01.2018 18:14, Rosen Penev wrote: >>> Based on Qualcomm's upstream code. Reordered a bit different. >>> >>> iperf3 speed goes from ~279mbps to ~320mbps. >>> >>> Signed-off-by: Rosen Penev <rosenp@gmail.com> >>> --- >>> .../files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h | 13 >>> ++++++++----- >>> 1 file changed, 8 insertions(+), 5 deletions(-) >>> >>> diff --git >>> a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h >>> b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h >>> index a712812..d181240 100644 >>> --- >>> a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h >>> +++ >>> b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h >>> @@ -106,13 +106,16 @@ struct ag71xx_buf { >>> }; >>> struct ag71xx_ring { >>> - struct ag71xx_buf *buf; >>> - u8 *descs_cpu; >>> - dma_addr_t descs_dma; >>> - u16 desc_split; >>> - u16 order; >>> + /* "Hot" fields in the data path. */ >>> unsigned int curr; >>> unsigned int dirty; >>> + >>> + /* "Cold" fields - not used in the data path. */ >>> + struct ag71xx_buf *buf; >>> + u16 order; >>> + u16 desc_split; >>> + dma_addr_t descs_dma; >>> + u8 *descs_cpu; >>> }; >>> struct ag71xx_mdio { > Seems this patch got dropped from patchwork for some reason. >> I can confirm that this one gives a nice performance boost ! >> >> >> Regards >> >> >> _______________________________________________ >> Lede-dev mailing list >> Lede-dev@lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/lede-dev I have uptime 13:01:41 up 6 days, 22:39, load average: 0.27, 0.10, 0.02 and can't spot any problems in normal functionality of the router Regards
diff --git a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h index a712812..d181240 100644 --- a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h +++ b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h @@ -106,13 +106,16 @@ struct ag71xx_buf { }; struct ag71xx_ring { - struct ag71xx_buf *buf; - u8 *descs_cpu; - dma_addr_t descs_dma; - u16 desc_split; - u16 order; + /* "Hot" fields in the data path. */ unsigned int curr; unsigned int dirty; + + /* "Cold" fields - not used in the data path. */ + struct ag71xx_buf *buf; + u16 order; + u16 desc_split; + dma_addr_t descs_dma; + u8 *descs_cpu; }; struct ag71xx_mdio {
Based on Qualcomm's upstream code. Reordered a bit different. iperf3 speed goes from ~279mbps to ~320mbps. Signed-off-by: Rosen Penev <rosenp@gmail.com> --- .../files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)