RE: [PATCH (net-next.git) 13/18] stmmac: perf, remove modulo in stmmac_rx()
From: Giuseppe Cavallaro > Sent: 09 December 2015 08:38 > The indexes into the ring buffer are always incremented, and > the entry is accessed via doing a modulo to find the "real" index. > Modulo is an expensive operation. > > This patch replaces the modulo with a simple if clamp. > It helps improve stmmac RX path as it's being called inside RX loop. Is dma_rx_size always a power of 2 ? If so you can replace the % by & and remove the conditionals. If you have changed the read and write values to indexes then you need to be certain that the 'ring full' and 'ring empty' cases are correctly distinguished. David -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH (net-next.git) 13/18] stmmac: perf, remove modulo in stmmac_rx()
On 12/10/2015 6:11 AM, Giuseppe CAVALLARO wrote: On 12/9/2015 6:21 PM, David Laight wrote: From: Giuseppe Cavallaro Sent: 09 December 2015 08:38 The indexes into the ring buffer are always incremented, and the entry is accessed via doing a modulo to find the "real" index. Modulo is an expensive operation. This patch replaces the modulo with a simple if clamp. It helps improve stmmac RX path as it's being called inside RX loop. Is dma_rx_size always a power of 2 ? no If so you can replace the % by & and remove the conditionals. If you have changed the read and write values to indexes then you need to be certain that the 'ring full' and 'ring empty' cases are correctly distinguished. this is implicitly managed by dirty and curr index. ... also the dma will fail with unavailable buffer. peppe thx peppe David -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH (net-next.git) 13/18] stmmac: perf, remove modulo in stmmac_rx()
On 12/9/2015 6:21 PM, David Laight wrote: From: Giuseppe Cavallaro Sent: 09 December 2015 08:38 The indexes into the ring buffer are always incremented, and the entry is accessed via doing a modulo to find the "real" index. Modulo is an expensive operation. This patch replaces the modulo with a simple if clamp. It helps improve stmmac RX path as it's being called inside RX loop. Is dma_rx_size always a power of 2 ? no If so you can replace the % by & and remove the conditionals. If you have changed the read and write values to indexes then you need to be certain that the 'ring full' and 'ring empty' cases are correctly distinguished. this is implicitly managed by dirty and curr index. thx peppe David -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html