[infiniband] Always call ib_link_state_changed() in ib_smc_update()

ib_smc_update() potentially updates the Infiniband port state, and so
should almost always be followed by a call to ib_link_state_changed().
The one exception is the call made to ib_smc_update() before the
device is registered.

Fix by removing explicit calls to ib_link_state_changed() from drivers
using ib_smc_update(), including a call to ib_link_state_changed()
within ib_smc_update(), and creating a separate ib_smc_init() for use
prior to device registration.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2010-09-16 03:23:45 +01:00
parent 5e697b64a5
commit 09555826e9
4 changed files with 46 additions and 16 deletions

View File

@@ -14,7 +14,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
typedef int ( * ib_local_mad_t ) ( struct ib_device *ibdev,
union ib_mad *mad );
extern int ib_smc_update ( struct ib_device *ibdev,
ib_local_mad_t local_mad );
extern int ib_smc_init ( struct ib_device *ibdev, ib_local_mad_t local_mad );
extern int ib_smc_update ( struct ib_device *ibdev, ib_local_mad_t local_mad );
#endif /* _IPXE_IB_SMC_H */