if_ti.c (93818) | if_ti.c (95673) |
---|---|
1/* 2 * Copyright (c) 1997, 1998, 1999 3 * Bill Paul <wpaul@ctr.columbia.edu>. 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 * 1. Redistributions of source code must retain the above copyright --- 15 unchanged lines hidden (view full) --- 24 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 30 * THE POSSIBILITY OF SUCH DAMAGE. 31 * | 1/* 2 * Copyright (c) 1997, 1998, 1999 3 * Bill Paul <wpaul@ctr.columbia.edu>. 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 * 1. Redistributions of source code must retain the above copyright --- 15 unchanged lines hidden (view full) --- 24 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 30 * THE POSSIBILITY OF SUCH DAMAGE. 31 * |
32 * $FreeBSD: head/sys/dev/ti/if_ti.c 93818 2002-04-04 21:03:38Z jhb $ | 32 * $FreeBSD: head/sys/dev/ti/if_ti.c 95673 2002-04-28 20:34:20Z phk $ |
33 */ 34 35/* 36 * Alteon Networks Tigon PCI gigabit ethernet driver for FreeBSD. 37 * Manuals, sample driver and firmware source kits are available 38 * from http://www.alteon.com/support/openkits. 39 * 40 * Written by Bill Paul <wpaul@ctr.columbia.edu> --- 74 unchanged lines hidden (view full) --- 115#include <pci/if_tireg.h> 116#include <pci/ti_fw.h> 117#include <pci/ti_fw2.h> 118 119#define TI_CSUM_FEATURES (CSUM_IP | CSUM_TCP | CSUM_UDP | CSUM_IP_FRAGS) 120 121#if !defined(lint) 122static const char rcsid[] = | 33 */ 34 35/* 36 * Alteon Networks Tigon PCI gigabit ethernet driver for FreeBSD. 37 * Manuals, sample driver and firmware source kits are available 38 * from http://www.alteon.com/support/openkits. 39 * 40 * Written by Bill Paul <wpaul@ctr.columbia.edu> --- 74 unchanged lines hidden (view full) --- 115#include <pci/if_tireg.h> 116#include <pci/ti_fw.h> 117#include <pci/ti_fw2.h> 118 119#define TI_CSUM_FEATURES (CSUM_IP | CSUM_TCP | CSUM_UDP | CSUM_IP_FRAGS) 120 121#if !defined(lint) 122static const char rcsid[] = |
123 "$FreeBSD: head/sys/dev/ti/if_ti.c 93818 2002-04-04 21:03:38Z jhb $"; | 123 "$FreeBSD: head/sys/dev/ti/if_ti.c 95673 2002-04-28 20:34:20Z phk $"; |
124#endif 125 126/* 127 * Various supported device vendors/types and their names. 128 */ 129 130static struct ti_type ti_devs[] = { 131 { ALT_VENDORID, ALT_DEVICEID_ACENIC, --- 1506 unchanged lines hidden (view full) --- 1638 * via autonegotiation. 1639 */ 1640 ifmedia_add(&sc->ifmedia, IFM_ETHER|IFM_10_T, 0, NULL); 1641 ifmedia_add(&sc->ifmedia, 1642 IFM_ETHER|IFM_10_T|IFM_FDX, 0, NULL); 1643 ifmedia_add(&sc->ifmedia, IFM_ETHER|IFM_100_TX, 0, NULL); 1644 ifmedia_add(&sc->ifmedia, 1645 IFM_ETHER|IFM_100_TX|IFM_FDX, 0, NULL); | 124#endif 125 126/* 127 * Various supported device vendors/types and their names. 128 */ 129 130static struct ti_type ti_devs[] = { 131 { ALT_VENDORID, ALT_DEVICEID_ACENIC, --- 1506 unchanged lines hidden (view full) --- 1638 * via autonegotiation. 1639 */ 1640 ifmedia_add(&sc->ifmedia, IFM_ETHER|IFM_10_T, 0, NULL); 1641 ifmedia_add(&sc->ifmedia, 1642 IFM_ETHER|IFM_10_T|IFM_FDX, 0, NULL); 1643 ifmedia_add(&sc->ifmedia, IFM_ETHER|IFM_100_TX, 0, NULL); 1644 ifmedia_add(&sc->ifmedia, 1645 IFM_ETHER|IFM_100_TX|IFM_FDX, 0, NULL); |
1646 ifmedia_add(&sc->ifmedia, IFM_ETHER|IFM_1000_TX, 0, NULL); | 1646 ifmedia_add(&sc->ifmedia, IFM_ETHER|IFM_1000_T, 0, NULL); |
1647 ifmedia_add(&sc->ifmedia, | 1647 ifmedia_add(&sc->ifmedia, |
1648 IFM_ETHER|IFM_1000_TX|IFM_FDX, 0, NULL); | 1648 IFM_ETHER|IFM_1000_T|IFM_FDX, 0, NULL); |
1649 } else { 1650 /* Fiber cards don't support 10/100 modes. */ 1651 ifmedia_add(&sc->ifmedia, IFM_ETHER|IFM_1000_SX, 0, NULL); 1652 ifmedia_add(&sc->ifmedia, 1653 IFM_ETHER|IFM_1000_SX|IFM_FDX, 0, NULL); 1654 } 1655 ifmedia_add(&sc->ifmedia, IFM_ETHER|IFM_AUTO, 0, NULL); 1656 ifmedia_set(&sc->ifmedia, IFM_ETHER|IFM_AUTO); --- 568 unchanged lines hidden (view full) --- 2225 TI_GLNK_AUTONEGENB|TI_GLNK_ENB); 2226 CSR_WRITE_4(sc, TI_GCR_LINK, TI_LNK_100MB|TI_LNK_10MB| 2227 TI_LNK_FULL_DUPLEX|TI_LNK_HALF_DUPLEX| 2228 TI_LNK_AUTONEGENB|TI_LNK_ENB); 2229 TI_DO_CMD(TI_CMD_LINK_NEGOTIATION, 2230 TI_CMD_CODE_NEGOTIATE_BOTH, 0); 2231 break; 2232 case IFM_1000_SX: | 1649 } else { 1650 /* Fiber cards don't support 10/100 modes. */ 1651 ifmedia_add(&sc->ifmedia, IFM_ETHER|IFM_1000_SX, 0, NULL); 1652 ifmedia_add(&sc->ifmedia, 1653 IFM_ETHER|IFM_1000_SX|IFM_FDX, 0, NULL); 1654 } 1655 ifmedia_add(&sc->ifmedia, IFM_ETHER|IFM_AUTO, 0, NULL); 1656 ifmedia_set(&sc->ifmedia, IFM_ETHER|IFM_AUTO); --- 568 unchanged lines hidden (view full) --- 2225 TI_GLNK_AUTONEGENB|TI_GLNK_ENB); 2226 CSR_WRITE_4(sc, TI_GCR_LINK, TI_LNK_100MB|TI_LNK_10MB| 2227 TI_LNK_FULL_DUPLEX|TI_LNK_HALF_DUPLEX| 2228 TI_LNK_AUTONEGENB|TI_LNK_ENB); 2229 TI_DO_CMD(TI_CMD_LINK_NEGOTIATION, 2230 TI_CMD_CODE_NEGOTIATE_BOTH, 0); 2231 break; 2232 case IFM_1000_SX: |
2233 case IFM_1000_TX: | 2233 case IFM_1000_T: |
2234 CSR_WRITE_4(sc, TI_GCR_GLINK, TI_GLNK_PREF|TI_GLNK_1000MB| 2235 TI_GLNK_RX_FLOWCTL_Y|TI_GLNK_ENB); 2236 CSR_WRITE_4(sc, TI_GCR_LINK, 0); 2237 if ((ifm->ifm_media & IFM_GMASK) == IFM_FDX) { 2238 TI_SETBIT(sc, TI_GCR_GLINK, TI_GLNK_FULL_DUPLEX); 2239 } 2240 TI_DO_CMD(TI_CMD_LINK_NEGOTIATION, 2241 TI_CMD_CODE_NEGOTIATE_GIGABIT, 0); --- 41 unchanged lines hidden (view full) --- 2283 if (sc->ti_linkstat == TI_EV_CODE_LINK_DOWN) 2284 return; 2285 2286 ifmr->ifm_status |= IFM_ACTIVE; 2287 2288 if (sc->ti_linkstat == TI_EV_CODE_GIG_LINK_UP) { 2289 media = CSR_READ_4(sc, TI_GCR_GLINK_STAT); 2290 if (sc->ti_copper) | 2234 CSR_WRITE_4(sc, TI_GCR_GLINK, TI_GLNK_PREF|TI_GLNK_1000MB| 2235 TI_GLNK_RX_FLOWCTL_Y|TI_GLNK_ENB); 2236 CSR_WRITE_4(sc, TI_GCR_LINK, 0); 2237 if ((ifm->ifm_media & IFM_GMASK) == IFM_FDX) { 2238 TI_SETBIT(sc, TI_GCR_GLINK, TI_GLNK_FULL_DUPLEX); 2239 } 2240 TI_DO_CMD(TI_CMD_LINK_NEGOTIATION, 2241 TI_CMD_CODE_NEGOTIATE_GIGABIT, 0); --- 41 unchanged lines hidden (view full) --- 2283 if (sc->ti_linkstat == TI_EV_CODE_LINK_DOWN) 2284 return; 2285 2286 ifmr->ifm_status |= IFM_ACTIVE; 2287 2288 if (sc->ti_linkstat == TI_EV_CODE_GIG_LINK_UP) { 2289 media = CSR_READ_4(sc, TI_GCR_GLINK_STAT); 2290 if (sc->ti_copper) |
2291 ifmr->ifm_active |= IFM_1000_TX; | 2291 ifmr->ifm_active |= IFM_1000_T; |
2292 else 2293 ifmr->ifm_active |= IFM_1000_SX; 2294 if (media & TI_GLNK_FULL_DUPLEX) 2295 ifmr->ifm_active |= IFM_FDX; 2296 else 2297 ifmr->ifm_active |= IFM_HDX; 2298 } else if (sc->ti_linkstat == TI_EV_CODE_LINK_UP) { 2299 media = CSR_READ_4(sc, TI_GCR_LINK_STAT); --- 191 unchanged lines hidden --- | 2292 else 2293 ifmr->ifm_active |= IFM_1000_SX; 2294 if (media & TI_GLNK_FULL_DUPLEX) 2295 ifmr->ifm_active |= IFM_FDX; 2296 else 2297 ifmr->ifm_active |= IFM_HDX; 2298 } else if (sc->ti_linkstat == TI_EV_CODE_LINK_UP) { 2299 media = CSR_READ_4(sc, TI_GCR_LINK_STAT); --- 191 unchanged lines hidden --- |