From 5306a8244a997b30ea2c2074615f9f4c19d4976e Mon Sep 17 00:00:00 2001 From: jkim Date: Tue, 6 Mar 2007 19:15:16 +0000 Subject: [PATCH] Pollute bge(4) with #if's and #ifdef's to make MFC easier. MFC after: 3 days --- sys/dev/bge/if_bge.c | 104 ++++++++++++++++++++++++++++++++----------- 1 file changed, 77 insertions(+), 27 deletions(-) diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c index 124366985715..9e7162aedb2b 100644 --- a/sys/dev/bge/if_bge.c +++ b/sys/dev/bge/if_bge.c @@ -1668,20 +1668,25 @@ bge_probe(device_t dev) char model[64], buf[96]; const struct bge_revision *br; const struct bge_vendor *v; - const char *pname; uint32_t id; id = pci_read_config(dev, BGE_PCI_MISC_CTL, 4) & BGE_PCIMISCCTL_ASICREV; br = bge_lookup_rev(id); v = bge_lookup_vendor(vid); - if (pci_get_vpd_ident(dev, &pname)) - snprintf(model, 64, "%s %s", - v->v_name, - br != NULL ? br->br_name : - "NetXtreme Ethernet Controller"); - else - snprintf(model, 64, "%s", pname); + { +#if __FreeBSD_version > 700024 + const char *pname; + + if (pci_get_vpd_ident(dev, &pname) == 0) + snprintf(model, 64, "%s", pname); + else +#endif + snprintf(model, 64, "%s %s", + v->v_name, + br != NULL ? br->br_name : + "NetXtreme Ethernet Controller"); + } snprintf(buf, 96, "%s, %sASIC rev. %#04x", model, br != NULL ? "" : "unknown ", id >> 16); device_set_desc_copy(dev, buf); @@ -2104,6 +2109,7 @@ bge_dma_alloc(device_t dev) return (0); } +#if __FreeBSD_version > 700025 /* * Return true if this device has more than one port. */ @@ -2151,6 +2157,7 @@ bge_can_use_msi(struct bge_softc *sc) } return (can_use_msi); } +#endif static int bge_attach(device_t dev) @@ -2160,7 +2167,7 @@ bge_attach(device_t dev) uint32_t hwcfg = 0; uint32_t mac_tmp = 0; u_char eaddr[6]; - int error = 0, msicount, rid, trys, reg; + int error = 0, rid, trys, reg; sc = device_get_softc(dev); sc->bge_dev = dev; @@ -2265,22 +2272,30 @@ bge_attach(device_t dev) } #endif - /* - * Allocate the interrupt, using MSI if possible. These devices - * support 8 MSI messages, but only the first one is used in - * normal operation. - */ - if (bge_can_use_msi(sc)) { - msicount = pci_msi_count(dev); - if (msicount > 1) - msicount = 1; - } else - msicount = 0; - if (msicount == 1 && pci_alloc_msi(dev, &msicount) == 0) { - rid = 1; - sc->bge_flags |= BGE_FLAG_MSI; - } else - rid = 0; +#if __FreeBSD_version > 700025 + { + int msicount; + + /* + * Allocate the interrupt, using MSI if possible. These devices + * support 8 MSI messages, but only the first one is used in + * normal operation. + */ + if (bge_can_use_msi(sc)) { + msicount = pci_msi_count(dev); + if (msicount > 1) + msicount = 1; + } else + msicount = 0; + if (msicount == 1 && pci_alloc_msi(dev, &msicount) == 0) { + rid = 1; + sc->bge_flags |= BGE_FLAG_MSI; + } else + rid = 0; + } +#else + rid = 0; +#endif sc->bge_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, RF_SHAREABLE | RF_ACTIVE); @@ -2395,7 +2410,10 @@ bge_attach(device_t dev) IFQ_SET_READY(&ifp->if_snd); ifp->if_hwassist = BGE_CSUM_FEATURES; ifp->if_capabilities = IFCAP_HWCSUM | IFCAP_VLAN_HWTAGGING | - IFCAP_VLAN_MTU | IFCAP_VLAN_HWCSUM; + IFCAP_VLAN_MTU; +#ifdef IFCAP_VLAN_HWCSUM + ifp->if_capabilities |= IFCAP_VLAN_HWCSUM; +#endif ifp->if_capenable = ifp->if_capabilities; #ifdef DEVICE_POLLING ifp->if_capabilities |= IFCAP_POLLING; @@ -2466,7 +2484,8 @@ again: bge_ifmedia_upd, bge_ifmedia_sts)) { if (trys++ < 4) { device_printf(sc->bge_dev, "Try again\n"); - bge_miibus_writereg(sc->bge_dev, 1, MII_BMCR, BMCR_RESET); + bge_miibus_writereg(sc->bge_dev, 1, MII_BMCR, + BMCR_RESET); goto again; } @@ -2504,8 +2523,13 @@ again: /* * Hookup IRQ last. */ +#if __FreeBSD_version > 700030 error = bus_setup_intr(dev, sc->bge_irq, INTR_TYPE_NET | INTR_MPSAFE, NULL, bge_intr, sc, &sc->bge_intrhand); +#else + error = bus_setup_intr(dev, sc->bge_irq, INTR_TYPE_NET | INTR_MPSAFE, + bge_intr, sc, &sc->bge_intrhand); +#endif if (error) { bge_detach(dev); @@ -2567,8 +2591,10 @@ bge_release_resources(struct bge_softc *sc) bus_release_resource(dev, SYS_RES_IRQ, sc->bge_flags & BGE_FLAG_MSI ? 1 : 0, sc->bge_irq); +#if __FreeBSD_version > 700025 if (sc->bge_flags & BGE_FLAG_MSI) pci_release_msi(dev); +#endif if (sc->bge_res != NULL) bus_release_resource(dev, SYS_RES_MEMORY, @@ -2904,8 +2930,14 @@ bge_rxeof(struct bge_softc *sc) * attach that information to the packet. */ if (have_tag) { +#if __FreeBSD_version > 700022 m->m_pkthdr.ether_vtag = vlan_tag; m->m_flags |= M_VLANTAG; +#else + VLAN_INPUT_TAG_NEW(ifp, m, vlan_tag); + if (m == NULL) + continue; +#endif } BGE_UNLOCK(sc); @@ -3333,11 +3365,23 @@ bge_encap(struct bge_softc *sc, struct mbuf **m_head, uint32_t *txidx) /* ... and put VLAN tag into first segment. */ d = &sc->bge_ldata.bge_tx_ring[*txidx]; +#if __FreeBSD_version > 700022 if (m->m_flags & M_VLANTAG) { d->bge_flags |= BGE_TXBDFLAG_VLAN_TAG; d->bge_vlan_tag = m->m_pkthdr.ether_vtag; } else d->bge_vlan_tag = 0; +#else + { + struct m_tag *mtag; + + if ((mtag = VLAN_OUTPUT_TAG(sc->bge_ifp, m)) != NULL) { + d->bge_flags |= BGE_TXBDFLAG_VLAN_TAG; + d->bge_vlan_tag = VLAN_TAG_VALUE(mtag); + } else + d->bge_vlan_tag = 0; + } +#endif /* * Insure that the map for this transmission @@ -3420,7 +3464,11 @@ bge_start_locked(struct ifnet *ifp) * If there's a BPF listener, bounce a copy of this frame * to him. */ +#ifdef ETHER_BPF_MTAP ETHER_BPF_MTAP(ifp, m_head); +#else + BPF_MTAP(ifp, m_head); +#endif } if (count == 0) @@ -3805,7 +3853,9 @@ bge_ioctl(struct ifnet *ifp, u_long command, caddr_t data) ifp->if_hwassist = BGE_CSUM_FEATURES; else ifp->if_hwassist = 0; +#ifdef VLAN_CAPABILITIES VLAN_CAPABILITIES(ifp); +#endif } break; default: