android_kernel_xiaomi_sm8350/drivers/infiniband/hw/mthca
Moni Shoua 270b8b8513 IB/mthca: Fix dispatch of IB_EVENT_LID_CHANGE event
When snooping a PortInfo MAD, its client_reregister bit is checked.
If the bit is ON then a CLIENT_REREGISTER event is dispatched,
otherwise a LID_CHANGE event is dispatched.  This way of decision
ignores the cases where the MAD changes the LID along with an
instruction to reregister (so a necessary LID_CHANGE event won't be
dispatched) or the MAD is neither of these (and an unnecessary
LID_CHANGE event will be dispatched).

This causes problems at least with IPoIB, which will do a "light"
flush on reregister, rather than the "heavy" flush required due to a
LID change.

Fix this by dispatching a CLIENT_REREGISTER event if the
client_reregister bit is set, but also compare the LID in the MAD to
the current LID.  If and only if they are not identical then a
LID_CHANGE event is dispatched.

Signed-off-by: Moni Shoua <monis@voltaire.com>
Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Yossi Etigin <yosefe@voltaire.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
2009-01-28 15:15:56 -08:00
..
Kconfig IB: Use menuconfig for InfiniBand menu 2007-07-09 20:12:26 -07:00
Makefile IB/mthca: Always build debugging code unless CONFIG_EMBEDDED=y 2006-04-02 14:39:20 -07:00
mthca_allocator.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_av.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_catas.c IB/mthca: Use pci_request_regions() 2008-09-29 21:37:33 -07:00
mthca_cmd.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_cmd.h RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_config_reg.h RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_cq.c RDMA/core: Add memory management extensions support 2008-07-14 23:48:45 -07:00
mthca_dev.h IB/mthca: Keep free count for MTT buddy allocator 2008-07-22 14:20:05 -07:00
mthca_doorbell.h RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_eq.c IB/mthca: Use pci_request_regions() 2008-09-29 21:37:33 -07:00
mthca_mad.c IB/mthca: Fix dispatch of IB_EVENT_LID_CHANGE event 2009-01-28 15:15:56 -08:00
mthca_main.c IB/mthca: Use pci_request_regions() 2008-09-29 21:37:33 -07:00
mthca_mcg.c net: replace %p6 with %pI6 2008-10-29 12:52:50 -07:00
mthca_memfree.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_memfree.h RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_mr.c IB/mthca: Keep free count for MTT buddy allocator 2008-07-22 14:20:05 -07:00
mthca_pd.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_profile.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_profile.h RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_provider.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_provider.h RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_qp.c IB/mthca: Fix check of max_send_sge for special QPs 2008-07-14 23:48:52 -07:00
mthca_reset.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_srq.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_uar.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_user.h RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
mthca_wqe.h RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00