bnx2x: Force link UP when the interface is in LOOPBACK mode
authorMahesh Bandewar <maheshb@google.com>
Wed, 30 Jan 2013 07:00:12 +0000 (07:00 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 3 Feb 2013 03:59:25 +0000 (22:59 -0500)
When the interface does not have carrier but when it's put into
loopback mode (for tests), it does not make sense to not have
the carrier. So force it!

Signed-off-by: Mahesh Bandewar <maheshb@google.com>
Acked-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c

index 859df751345e6f9707ca1a402d95cf9685a37419..c6da77fa9d071a38e6a009505b4ddb9a7b9ba1cd 100644 (file)
@@ -4748,6 +4748,12 @@ void bnx2x_link_status_update(struct link_params *params,
        vars->link_status = REG_RD(bp, params->shmem_base +
                                   offsetof(struct shmem_region,
                                            port_mb[port].link_status));
+
+       /* Force link UP in non LOOPBACK_EXT loopback mode(s) */
+       if (bp->link_params.loopback_mode != LOOPBACK_NONE &&
+           bp->link_params.loopback_mode != LOOPBACK_EXT)
+               vars->link_status |= LINK_STATUS_LINK_UP;
+
        if (bnx2x_eee_has_cap(params))
                vars->eee_status = REG_RD(bp, params->shmem2_base +
                                          offsetof(struct shmem2_region,