Module Name: src Committed By: jdc Date: Fri Jan 22 14:34:34 UTC 2010
Modified Files: src/sys/dev/pci: if_cas.c Log Message: Remove port-specific code for determining MAC address, and use device properties instead (c.f. gem(4) and hme(4)). To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/dev/pci/if_cas.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/pci/if_cas.c diff -u src/sys/dev/pci/if_cas.c:1.4 src/sys/dev/pci/if_cas.c:1.5 --- src/sys/dev/pci/if_cas.c:1.4 Tue Jan 19 22:07:00 2010 +++ src/sys/dev/pci/if_cas.c Fri Jan 22 14:34:34 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: if_cas.c,v 1.4 2010/01/19 22:07:00 pooka Exp $ */ +/* $NetBSD: if_cas.c,v 1.5 2010/01/22 14:34:34 jdc Exp $ */ /* $OpenBSD: if_cas.c,v 1.29 2009/11/29 16:19:38 kettenis Exp $ */ /* @@ -44,7 +44,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_cas.c,v 1.4 2010/01/19 22:07:00 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_cas.c,v 1.5 2010/01/22 14:34:34 jdc Exp $"); #include "opt_inet.h" @@ -90,26 +90,11 @@ #include <dev/pci/pcivar.h> #include <dev/pci/pcireg.h> #include <dev/pci/pcidevs.h> +#include <prop/proplib.h> #include <dev/pci/if_casreg.h> #include <dev/pci/if_casvar.h> -/* XXX Should use Properties when that's fleshed out. */ -#ifdef macppc -#include <dev/ofw/openfirm.h> -#endif /* macppc */ -#ifdef __sparc__ -#include <machine/promlib.h> -#endif - -#ifndef CAS_USE_LOCAL_MAC_ADDRESS -#if defined (macppc) || defined (__sparc__) -#define CAS_USE_LOCAL_MAC_ADDRESS 0 /* use system-wide address */ -#else -#define CAS_USE_LOCAL_MAC_ADDRESS 1 -#endif -#endif - #define TRIES 10000 static bool cas_estintr(struct cas_softc *sc, int); @@ -127,9 +112,7 @@ cas_match, cas_attach, cas_detach, NULL, NULL, NULL, DVF_DETACH_SHUTDOWN); -#if CAS_USE_LOCAL_MAC_ADDRESS int cas_pci_enaddr(struct cas_softc *, struct pci_attach_args *, uint8_t *); -#endif void cas_config(struct cas_softc *, const uint8_t *); void cas_start(struct ifnet *); @@ -194,7 +177,6 @@ return 0; } -#if CAS_USE_LOCAL_MAC_ADDRESS #define PROMHDR_PTR_DATA 0x18 #define PROMDATA_PTR_VPD 0x08 #define PROMDATA_DATA2 0x0a @@ -307,7 +289,7 @@ continue; desc += strlen("local-mac-address") + 1; - memcpy(enaddr, enp, ETHER_ADDR_LEN); + memcpy(enaddr, desc, ETHER_ADDR_LEN); rv = 0; } break; @@ -326,7 +308,6 @@ return (rv); } -#endif /* CAS_USE_LOCAL_MAC_ADDRESS */ void cas_attach(device_t parent, device_t self, void *aux) @@ -334,6 +315,7 @@ struct pci_attach_args *pa = aux; struct cas_softc *sc = device_private(self); char devinfo[256]; + prop_data_t data; uint8_t enaddr[ETHER_ADDR_LEN]; sc->sc_dev = self; @@ -350,27 +332,11 @@ return; } -#if CAS_USE_LOCAL_MAC_ADDRESS - if (cas_pci_enaddr(sc, pa, enaddr) != 0) + if ((data = prop_dictionary_get(device_properties(sc->sc_dev), + "mac-address")) != NULL) + memcpy(enaddr, prop_data_data_nocopy(data), ETHER_ADDR_LEN); + else if (cas_pci_enaddr(sc, pa, enaddr) != 0) aprint_error_dev(sc->sc_dev, "no Ethernet address found\n"); -#endif -#ifdef __sparc64__ - prom_getether(PCITAG_NODE(pa->pa_tag), enaddr); -#else -#ifdef macppc - { - int node; - - node = pcidev_to_ofdev(pa->pa_pc, pa->pa_tag); - if (node == 0) { - aprint_error_dev(sc->sc_dev, "unable to locate OpenFirmware node\n"); - return; - } - - OF_getprop(node, "local-mac-address", enaddr, sizeof(enaddr)); - } -#endif /* macppc */ -#endif /* __sparc__ */ sc->sc_burst = 16; /* XXX */