Revision 8fe8bacb92f249c91a1407b48aa1cb98067fe19d authored by Majd Dibbiny on 30 May 2017, 06:58:06 UTC, committed by Doug Ledford on 18 July 2017, 01:21:25 UTC
Currently the RoCE GID management uses the ib_wq to do add and delete new GIDs
according to the netdev events.

The ib_wq isn't an ordered workqueue and thus two work elements can be executed
concurrently which will result in unexpected behavior and inconsistency of the
GIDs cache content.

Example:
ifconfig eth1 11.11.11.11/16 up

This command will invoke the following netdev events in the following order:
1. NETDEV_UP
2. NETDEV_DOWN
3. NETDEV_UP

If (2) and (3) will be executed concurrently or in reverse order, instead of
having a new GID with 11.11.11.11 IP, we will end up without any new GIDs.

Signed-off-by: Majd Dibbiny <majd@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
1 parent 12cc1a0
History
File Mode Size
Kconfig -rw-r--r-- 655 bytes
Makefile -rw-r--r-- 517 bytes
af_rds.c -rw-r--r-- 16.3 KB
bind.c -rw-r--r-- 5.1 KB
cong.c -rw-r--r-- 12.7 KB
connection.c -rw-r--r-- 19.7 KB
ib.c -rw-r--r-- 13.3 KB
ib.h -rw-r--r-- 12.9 KB
ib_cm.c -rw-r--r-- 29.0 KB
ib_fmr.c -rw-r--r-- 6.4 KB
ib_frmr.c -rw-r--r-- 9.9 KB
ib_mr.h -rw-r--r-- 4.8 KB
ib_rdma.c -rw-r--r-- 16.2 KB
ib_recv.c -rw-r--r-- 30.2 KB
ib_ring.c -rw-r--r-- 4.8 KB
ib_send.c -rw-r--r-- 29.5 KB
ib_stats.c -rw-r--r-- 3.1 KB
ib_sysctl.c -rw-r--r-- 4.0 KB
info.c -rw-r--r-- 6.4 KB
info.h -rw-r--r-- 934 bytes
loop.c -rw-r--r-- 5.8 KB
loop.h -rw-r--r-- 137 bytes
message.c -rw-r--r-- 9.5 KB
page.c -rw-r--r-- 4.5 KB
rdma.c -rw-r--r-- 23.1 KB
rdma_transport.c -rw-r--r-- 6.1 KB
rdma_transport.h -rw-r--r-- 439 bytes
rds.h -rw-r--r-- 27.9 KB
rds_single_path.h -rw-r--r-- 1.2 KB
recv.c -rw-r--r-- 20.5 KB
send.c -rw-r--r-- 34.3 KB
stats.c -rw-r--r-- 4.3 KB
sysctl.c -rw-r--r-- 3.4 KB
tcp.c -rw-r--r-- 19.0 KB
tcp.h -rw-r--r-- 3.1 KB
tcp_connect.c -rw-r--r-- 5.3 KB
tcp_listen.c -rw-r--r-- 8.6 KB
tcp_recv.c -rw-r--r-- 9.0 KB
tcp_send.c -rw-r--r-- 6.7 KB
tcp_stats.c -rw-r--r-- 2.3 KB
threads.c -rw-r--r-- 7.6 KB
transport.c -rw-r--r-- 4.0 KB

back to top