mbox series

[net-next,v3,0/3] locklessly protect left members in struct rps_dev_flow

Message ID 20240418073603.99336-1-kerneljasonxing@gmail.com (mailing list archive)
Headers show
Series locklessly protect left members in struct rps_dev_flow | expand

Message

Jason Xing April 18, 2024, 7:36 a.m. UTC
From: Jason Xing <kernelxing@tencent.com>

Since Eric did a more complicated locklessly change to last_qtail
member[1] in struct rps_dev_flow, the left members are easier to change
as the same.

One thing important I would like to share by qooting Eric:
"rflow is located in rxqueue->rps_flow_table, it is thus private to current
thread. Only one cpu can service an RX queue at a time."
So we only pay attention to the reader in the rps_may_expire_flow() and
writer in the set_rps_cpu(). They are in the two different contexts.

[1]:
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=3b4cf29bdab

v3
Link: https://lore.kernel.org/all/20240417062721.45652-1-kerneljasonxing@gmail.com/
1. adjust the protection in a right way (Eric)

v2
1. fix passing wrong type qtail.

Jason Xing (3):
  net: rps: protect last_qtail with rps_input_queue_tail_save() helper
  net: rps: protect filter locklessly
  net: rps: locklessly access rflow->cpu

 net/core/dev.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

Comments

patchwork-bot+netdevbpf@kernel.org April 19, 2024, 10:40 a.m. UTC | #1
Hello:

This series was applied to netdev/net-next.git (main)
by David S. Miller <davem@davemloft.net>:

On Thu, 18 Apr 2024 15:36:00 +0800 you wrote:
> From: Jason Xing <kernelxing@tencent.com>
> 
> Since Eric did a more complicated locklessly change to last_qtail
> member[1] in struct rps_dev_flow, the left members are easier to change
> as the same.
> 
> One thing important I would like to share by qooting Eric:
> "rflow is located in rxqueue->rps_flow_table, it is thus private to current
> thread. Only one cpu can service an RX queue at a time."
> So we only pay attention to the reader in the rps_may_expire_flow() and
> writer in the set_rps_cpu(). They are in the two different contexts.
> 
> [...]

Here is the summary with links:
  - [net-next,v3,1/3] net: rps: protect last_qtail with rps_input_queue_tail_save() helper
    https://git.kernel.org/netdev/net-next/c/84b6823cd96b
  - [net-next,v3,2/3] net: rps: protect filter locklessly
    https://git.kernel.org/netdev/net-next/c/f00bf5dc8320
  - [net-next,v3,3/3] net: rps: locklessly access rflow->cpu
    https://git.kernel.org/netdev/net-next/c/f7b60cce8470

You are awesome, thank you!