if_bce.c (213894) | if_bce.c (215297) |
---|---|
1/*- 2 * Copyright (c) 2006-2010 Broadcom Corporation 3 * David Christensen <davidch@broadcom.com>. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * --- 15 unchanged lines hidden (view full) --- 24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 28 * THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2006-2010 Broadcom Corporation 3 * David Christensen <davidch@broadcom.com>. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * --- 15 unchanged lines hidden (view full) --- 24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 28 * THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31#include <sys/cdefs.h> |
32__FBSDID("$FreeBSD: head/sys/dev/bce/if_bce.c 213894 2010-10-15 15:00:30Z marius $"); | 32__FBSDID("$FreeBSD: head/sys/dev/bce/if_bce.c 215297 2010-11-14 13:26:10Z marius $"); |
33 34/* 35 * The following controllers are supported by this driver: 36 * BCM5706C A2, A3 37 * BCM5706S A2, A3 38 * BCM5708C B1, B2 39 * BCM5708S B1, B2 40 * BCM5709C A1, C0 --- 1097 unchanged lines hidden (view full) --- 1138 ifp->if_baudrate = IF_Mbps(1000); 1139 1140 /* Handle any special PHY initialization for SerDes PHYs. */ 1141 bce_init_media(sc); 1142 1143 /* MII child bus by attaching the PHY. */ 1144 rc = mii_attach(dev, &sc->bce_miibus, ifp, bce_ifmedia_upd, 1145 bce_ifmedia_sts, BMSR_DEFCAPMASK, sc->bce_phy_addr, | 33 34/* 35 * The following controllers are supported by this driver: 36 * BCM5706C A2, A3 37 * BCM5706S A2, A3 38 * BCM5708C B1, B2 39 * BCM5708S B1, B2 40 * BCM5709C A1, C0 --- 1097 unchanged lines hidden (view full) --- 1138 ifp->if_baudrate = IF_Mbps(1000); 1139 1140 /* Handle any special PHY initialization for SerDes PHYs. */ 1141 bce_init_media(sc); 1142 1143 /* MII child bus by attaching the PHY. */ 1144 rc = mii_attach(dev, &sc->bce_miibus, ifp, bce_ifmedia_upd, 1145 bce_ifmedia_sts, BMSR_DEFCAPMASK, sc->bce_phy_addr, |
1146 MII_OFFSET_ANY, 0); | 1146 MII_OFFSET_ANY, MIIF_DOPAUSE); |
1147 if (rc != 0) { 1148 BCE_PRINTF("%s(%d): attaching PHYs failed\n", __FILE__, 1149 __LINE__); 1150 goto bce_attach_fail; 1151 } 1152 1153 /* Attach to the Ethernet interface list. */ 1154 ether_ifattach(ifp, sc->eaddr); --- 609 unchanged lines hidden (view full) --- 1764 "Setting Half-Duplex interface.\n"); 1765 val |= BCE_EMAC_MODE_HALF_DUPLEX; 1766 } else 1767 DBPRINT(sc, BCE_INFO_PHY, 1768 "Setting Full-Duplex interface.\n"); 1769 1770 REG_WR(sc, BCE_EMAC_MODE, val); 1771 | 1147 if (rc != 0) { 1148 BCE_PRINTF("%s(%d): attaching PHYs failed\n", __FILE__, 1149 __LINE__); 1150 goto bce_attach_fail; 1151 } 1152 1153 /* Attach to the Ethernet interface list. */ 1154 ether_ifattach(ifp, sc->eaddr); --- 609 unchanged lines hidden (view full) --- 1764 "Setting Half-Duplex interface.\n"); 1765 val |= BCE_EMAC_MODE_HALF_DUPLEX; 1766 } else 1767 DBPRINT(sc, BCE_INFO_PHY, 1768 "Setting Full-Duplex interface.\n"); 1769 1770 REG_WR(sc, BCE_EMAC_MODE, val); 1771 |
1772 /* FLAG0 is set if RX is enabled and FLAG1 if TX is enabled */ 1773 if (mii->mii_media_active & IFM_FLAG0) { | 1772 if ((mii->mii_media_active & IFM_ETH_RXPAUSE) != 0) { |
1774 DBPRINT(sc, BCE_INFO_PHY, 1775 "%s(): Enabling RX flow control.\n", __FUNCTION__); 1776 BCE_SETBIT(sc, BCE_EMAC_RX_MODE, BCE_EMAC_RX_MODE_FLOW_EN); 1777 } else { 1778 DBPRINT(sc, BCE_INFO_PHY, 1779 "%s(): Disabling RX flow control.\n", __FUNCTION__); 1780 BCE_CLRBIT(sc, BCE_EMAC_RX_MODE, BCE_EMAC_RX_MODE_FLOW_EN); 1781 } 1782 | 1773 DBPRINT(sc, BCE_INFO_PHY, 1774 "%s(): Enabling RX flow control.\n", __FUNCTION__); 1775 BCE_SETBIT(sc, BCE_EMAC_RX_MODE, BCE_EMAC_RX_MODE_FLOW_EN); 1776 } else { 1777 DBPRINT(sc, BCE_INFO_PHY, 1778 "%s(): Disabling RX flow control.\n", __FUNCTION__); 1779 BCE_CLRBIT(sc, BCE_EMAC_RX_MODE, BCE_EMAC_RX_MODE_FLOW_EN); 1780 } 1781 |
1783 if (mii->mii_media_active & IFM_FLAG1) { | 1782 if ((mii->mii_media_active & IFM_ETH_TXPAUSE) != 0) { |
1784 DBPRINT(sc, BCE_INFO_PHY, 1785 "%s(): Enabling TX flow control.\n", __FUNCTION__); 1786 BCE_SETBIT(sc, BCE_EMAC_TX_MODE, BCE_EMAC_TX_MODE_FLOW_EN); 1787 sc->bce_flags |= BCE_USING_TX_FLOW_CONTROL; 1788 } else { 1789 DBPRINT(sc, BCE_INFO_PHY, 1790 "%s(): Disabling TX flow control.\n", __FUNCTION__); 1791 BCE_CLRBIT(sc, BCE_EMAC_TX_MODE, BCE_EMAC_TX_MODE_FLOW_EN); --- 9119 unchanged lines hidden --- | 1783 DBPRINT(sc, BCE_INFO_PHY, 1784 "%s(): Enabling TX flow control.\n", __FUNCTION__); 1785 BCE_SETBIT(sc, BCE_EMAC_TX_MODE, BCE_EMAC_TX_MODE_FLOW_EN); 1786 sc->bce_flags |= BCE_USING_TX_FLOW_CONTROL; 1787 } else { 1788 DBPRINT(sc, BCE_INFO_PHY, 1789 "%s(): Disabling TX flow control.\n", __FUNCTION__); 1790 BCE_CLRBIT(sc, BCE_EMAC_TX_MODE, BCE_EMAC_TX_MODE_FLOW_EN); --- 9119 unchanged lines hidden --- |