linux/drivers/infiniband/hw/mlx4
Jack Morgenstein 3e0629cb6c IB/mlx4: Avoid accessing netdevice when building RoCE qp1 header
The source MAC is needed in RoCE when building the QP1 header.

Currently, this is obtained from the source net device. However, the net
device may not yet exist, or can be destroyed in parallel to this QP1 send
operation (e.g through the VPI port change flow) so accessing it may cause
a kernel crash.

To fix this, we maintain a source MAC cache per port for the net device in
struct mlx4_ib_roce.  This cached MAC is initialized to be the default MAC
address obtained during HCA initialization via QUERY_PORT. This cached MAC
is updated via the netdev event notifier handler.

Since the cached MAC is held in an atomic64 object, we do not need locking
when accessing it.

Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
2014-09-22 09:46:53 -07:00
..
ah.c IB/mlx4: fix unitialised variable is_mcast 2014-05-28 10:00:06 -07:00
alias_GUID.c mlx4: Use actual number of PCI functions (PF + VFs) for alias GUID logic 2014-03-25 20:48:05 -04:00
cm.c mlx4_ib: Fix SIDR support of for UD QPs under SRIOV/RoCE 2014-03-12 15:57:16 -04:00
cq.c IB/mlx4: Implement IB_QP_CREATE_USE_GFP_NOIO 2014-06-02 14:58:11 -07:00
doorbell.c IB: Refactor umem to use linear SG table 2014-03-04 10:34:28 -08:00
Kconfig IB/mlx4: Add dependency INET 2014-01-19 15:14:05 -08:00
mad.c IB/mad: add new ioctl to ABI to support new registration options 2014-08-10 20:36:00 -07:00
main.c IB/mlx4: Avoid accessing netdevice when building RoCE qp1 header 2014-09-22 09:46:53 -07:00
Makefile IB/mlx4: Add iov directory in sysfs under the ib device 2012-09-30 20:33:39 -07:00
mcg.c mlx4: Implement IP based gids support for RoCE/SRIOV 2014-03-12 15:57:16 -04:00
mlx4_ib.h IB/mlx4: Avoid accessing netdevice when building RoCE qp1 header 2014-09-22 09:46:53 -07:00
mr.c mlx4: Correct error flows in rereg_mr 2014-09-22 08:47:47 -07:00
qp.c IB/mlx4: Avoid accessing netdevice when building RoCE qp1 header 2014-09-22 09:46:53 -07:00
srq.c IB/mlx4: Implement IB_QP_CREATE_USE_GFP_NOIO 2014-06-02 14:58:11 -07:00
sysfs.c IB/mlx4: Add interface for selecting VFs to enable QP0 via MLX proxy QPs 2014-05-29 21:13:19 -07:00
user.h mlx4: 64-byte CQE/EQE support 2012-11-26 10:19:17 -08:00