summaryrefslogtreecommitdiffstats
path: root/sys/pccard
diff options
context:
space:
mode:
authorhosokawa <hosokawa@FreeBSD.org>2000-01-21 03:08:46 +0000
committerhosokawa <hosokawa@FreeBSD.org>2000-01-21 03:08:46 +0000
commit7ce7351da146d0eddcacf9714003c07a4369b00c (patch)
treee41abc40a42cdb05a522a6aeb9a55bf82c6c9101 /sys/pccard
parentc6da76a1a6b1b60435d8df410d11a7a497db504a (diff)
downloadFreeBSD-src-7ce7351da146d0eddcacf9714003c07a4369b00c.zip
FreeBSD-src-7ce7351da146d0eddcacf9714003c07a4369b00c.tar.gz
Propagate MAC address in CIS tupple to dev/ed/ driver.
Many ed-based Ethernet PC-cards can't get correct MAC address without this patch. Submitted by: Takanori Watanabe <takawata@shidahara1.planet.sci.kobe-u.ac.jp> Reviewed by: Warner Losh <imp@village.org>
Diffstat (limited to 'sys/pccard')
-rw-r--r--sys/pccard/pccard_nbk.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/sys/pccard/pccard_nbk.c b/sys/pccard/pccard_nbk.c
index ec374de..28da49f 100644
--- a/sys/pccard/pccard_nbk.c
+++ b/sys/pccard/pccard_nbk.c
@@ -70,6 +70,9 @@
#include <pccard/slot.h>
#include <pccard/pccard_nbk.h>
+#include <dev/pccard/pccardvar.h>
+#include <net/ethernet.h>
+
devclass_t pccard_devclass;
#define PCCARD_NPORT 2
@@ -252,6 +255,19 @@ pccard_release_resource(device_t bus, device_t child, int type, int rid,
return resource_list_release(rl, bus, child, type, rid, r);
}
+static int
+pccard_read_ivar(device_t bus, device_t child, int which, u_char *result)
+{
+ struct pccard_devinfo *devi = PCCARD_DEVINFO(child);
+
+ switch (which) {
+ case PCCARD_IVAR_ETHADDR:
+ bcopy(devi->misc, result, ETHER_ADDR_LEN);
+ return 0;
+ }
+ return ENOENT;
+}
+
static device_method_t pccard_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, pccard_probe),
@@ -272,6 +288,7 @@ static device_method_t pccard_methods[] = {
DEVMETHOD(bus_set_resource, pccard_set_resource),
DEVMETHOD(bus_get_resource, pccard_get_resource),
DEVMETHOD(bus_delete_resource, pccard_delete_resource),
+ DEVMETHOD(bus_read_ivar, pccard_read_ivar),
{ 0, 0 }
};
OpenPOWER on IntegriCloud