nes_port_ibevent() should not be called when nes IB device is not registered with IB core. Add missing checks of of_device_registered flag.
Signed-off-by: Maciej Sosnowski <[email protected]> --- .../fixes/nes_0056_port_ibevent_fix.patch | 64 +++++++++++++++++++++++ 1 files changed, 64 insertions(+), 0 deletions(-) diff --git a/kernel_patches/fixes/nes_0056_port_ibevent_fix.patch b/kernel_patches/fixes/nes_0056_port_ibevent_fix.patch new file mode 100644 index 0000000..a66bb8c --- /dev/null +++ b/kernel_patches/fixes/nes_0056_port_ibevent_fix.patch @@ -0,0 +1,64 @@ +diff --git a/drivers/infiniband/hw/nes/nes_hw.c b/drivers/infiniband/hw/nes/nes_hw.c +index 098d282..77fecbe 100644 +--- a/drivers/infiniband/hw/nes/nes_hw.c ++++ b/drivers/infiniband/hw/nes/nes_hw.c +@@ -2609,9 +2609,11 @@ static void nes_process_mac_intr(struct + netif_carrier_on(nesvnic->netdev); + + spin_lock(&nesvnic->port_ibevent_lock); +- if (nesdev->iw_status == 0) { +- nesdev->iw_status = 1; +- nes_port_ibevent(nesvnic); ++ if (nesvnic->of_device_registered) { ++ if (nesdev->iw_status == 0) { ++ nesdev->iw_status = 1; ++ nes_port_ibevent(nesvnic); ++ } + } + spin_unlock(&nesvnic->port_ibevent_lock); + } +@@ -2641,9 +2643,11 @@ static void nes_process_mac_intr(struct + netif_carrier_off(nesvnic->netdev); + + spin_lock(&nesvnic->port_ibevent_lock); +- if (nesdev->iw_status == 1) { +- nesdev->iw_status = 0; +- nes_port_ibevent(nesvnic); ++ if (nesvnic->of_device_registered) { ++ if (nesdev->iw_status == 1) { ++ nesdev->iw_status = 0; ++ nes_port_ibevent(nesvnic); ++ } + } + spin_unlock(&nesvnic->port_ibevent_lock); + } +@@ -2702,9 +2706,11 @@ void nes_recheck_link_status(struct work + netif_carrier_on(nesvnic->netdev); + + spin_lock(&nesvnic->port_ibevent_lock); +- if (nesdev->iw_status == 0) { +- nesdev->iw_status = 1; +- nes_port_ibevent(nesvnic); ++ if (nesvnic->of_device_registered) { ++ if (nesdev->iw_status == 0) { ++ nesdev->iw_status = 1; ++ nes_port_ibevent(nesvnic); ++ } + } + spin_unlock(&nesvnic->port_ibevent_lock); + } +@@ -2722,9 +2728,11 @@ void nes_recheck_link_status(struct work + netif_carrier_off(nesvnic->netdev); + + spin_lock(&nesvnic->port_ibevent_lock); +- if (nesdev->iw_status == 1) { +- nesdev->iw_status = 0; +- nes_port_ibevent(nesvnic); ++ if (nesvnic->of_device_registered) { ++ if (nesdev->iw_status == 1) { ++ nesdev->iw_status = 0; ++ nes_port_ibevent(nesvnic); ++ } + } + spin_unlock(&nesvnic->port_ibevent_lock); + } _______________________________________________ ewg mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg
