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-- 248 bytes
Makefile -rw-r--r-- 992 bytes
af_llc.c -rw-r--r-- 31.2 KB
llc_c_ac.c -rw-r--r-- 35.4 KB
llc_c_ev.c -rw-r--r-- 21.3 KB
llc_c_st.c -rw-r--r-- 151.9 KB
llc_conn.c -rw-r--r-- 27.3 KB
llc_core.c -rw-r--r-- 4.1 KB
llc_if.c -rw-r--r-- 4.4 KB
llc_input.c -rw-r--r-- 5.9 KB
llc_output.c -rw-r--r-- 2.3 KB
llc_pdu.c -rw-r--r-- 10.6 KB
llc_proc.c -rw-r--r-- 6.6 KB
llc_s_ac.c -rw-r--r-- 5.9 KB
llc_s_ev.c -rw-r--r-- 3.5 KB
llc_s_st.c -rw-r--r-- 5.7 KB
llc_sap.c -rw-r--r-- 11.4 KB
llc_station.c -rw-r--r-- 3.2 KB
sysctl_net_llc.c -rw-r--r-- 1.8 KB

back to top