diff options
author | Majd Dibbiny <majd@mellanox.com> | 2017-05-30 09:58:06 +0300 |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2017-07-17 21:21:25 -0400 |
commit | 8fe8bacb92f249c91a1407b48aa1cb98067fe19d (patch) | |
tree | 095c7eea7f03591ca4c5a6615e7257c31c80be41 /drivers/infiniband/ulp/ipoib/ipoib_main.c | |
parent | 12cc1a027341338f54d8d3fcf5d188ae2b39c30d (diff) | |
download | op-kernel-dev-8fe8bacb92f249c91a1407b48aa1cb98067fe19d.zip op-kernel-dev-8fe8bacb92f249c91a1407b48aa1cb98067fe19d.tar.gz |
IB/core: Add ordered workqueue for RoCE GID management
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>
Diffstat (limited to 'drivers/infiniband/ulp/ipoib/ipoib_main.c')
0 files changed, 0 insertions, 0 deletions