Mercurial > illumos > illumos-gate
changeset 13038:82fbe9c3ad15
6959198 bge driver does not report link status correctly
author | yong tan - Sun Microsystems - Beijing China <Yong.Tan@Sun.COM> |
---|---|
date | Fri, 06 Aug 2010 11:14:04 +0800 |
parents | e0bc0b6c7c2f |
children | 41d7b7a02c5d |
files | usr/src/uts/common/io/bge/bge_mii.c |
diffstat | 1 files changed, 7 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/uts/common/io/bge/bge_mii.c Thu Aug 05 16:45:55 2010 -0600 +++ b/usr/src/uts/common/io/bge/bge_mii.c Fri Aug 06 11:14:04 2010 +0800 @@ -20,8 +20,7 @@ */ /* - * Copyright 2010 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. */ #include "bge_impl.h" @@ -1276,6 +1275,7 @@ bge_check_serdes(bge_t *bgep, boolean_t recheck) { uint32_t emac_status; + uint32_t tx_status; uint32_t lpadv; boolean_t linkup; boolean_t linkup_old = bgep->param_link_up; @@ -1289,8 +1289,11 @@ * BCM5714, and BCM5715 devices. */ if (DEVICE_5714_SERIES_CHIPSETS(bgep)) { - emac_status = bge_reg_get32(bgep, MI_STATUS_REG); - linkup = BIS(emac_status, MI_STATUS_LINK); + tx_status = bge_reg_get32(bgep, + TRANSMIT_MAC_STATUS_REG); + linkup = BIS(tx_status, TRANSMIT_STATUS_LINK_UP); + emac_status = bge_reg_get32(bgep, + ETHERNET_MAC_STATUS_REG); bgep->serdes_status = emac_status; if ((linkup && linkup_old) || (!linkup && !linkup_old)) {