• Moni Shoua's avatar
    IPoIB: Don't turn on carrier for a non-active port · 5ee95120
    Moni Shoua authored
    Multicast joins can succeed even if the IB port is down.  This happens
    when the SM runs on the same port with the requesting port.  However,
    IPoIB calls netif_carrier_on() when the join of the broadcast group
    succeeds, without caring about the state of the IB port.  The result
    is an IPoIB interface in RUNNING state but without an active IB port
    to support it.
    
    If a bonding interface uses this IPoIB interface as a slave it might
    not detect that this slave is almost useless and failover
    functionality will be damaged.  The fix checks the state of the IB
    port in the carrier_task before calling netif_carrier_on().
    
    Adresses: https://bugs.openfabrics.org/show_bug.cgi?id=1726
    
    Signed-off-by: default avatarMoni Shoua <monis@voltaire.com>
    Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
    5ee95120