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-- 3.2 KB
Makefile -rw-r--r-- 636 bytes
associola.c -rw-r--r-- 48.8 KB
auth.c -rw-r--r-- 23.9 KB
bind_addr.c -rw-r--r-- 13.9 KB
chunk.c -rw-r--r-- 9.5 KB
debug.c -rw-r--r-- 4.3 KB
endpointola.c -rw-r--r-- 12.3 KB
input.c -rw-r--r-- 34.2 KB
inqueue.c -rw-r--r-- 7.0 KB
ipv6.c -rw-r--r-- 29.2 KB
objcnt.c -rw-r--r-- 3.9 KB
offload.c -rw-r--r-- 2.9 KB
output.c -rw-r--r-- 22.9 KB
outqueue.c -rw-r--r-- 55.1 KB
primitive.c -rw-r--r-- 7.4 KB
probe.c -rw-r--r-- 5.9 KB
proc.c -rw-r--r-- 13.9 KB
protocol.c -rw-r--r-- 42.9 KB
sctp_diag.c -rw-r--r-- 13.5 KB
sm_make_chunk.c -rw-r--r-- 114.3 KB
sm_sideeffect.c -rw-r--r-- 50.4 KB
sm_statefuns.c -rw-r--r-- 200.9 KB
sm_statetable.c -rw-r--r-- 33.6 KB
socket.c -rw-r--r-- 227.2 KB
stream.c -rw-r--r-- 22.6 KB
sysctl.c -rw-r--r-- 12.6 KB
transport.c -rw-r--r-- 21.0 KB
tsnmap.c -rw-r--r-- 9.5 KB
ulpevent.c -rw-r--r-- 31.6 KB
ulpqueue.c -rw-r--r-- 29.2 KB

back to top