summaryrefslogtreecommitdiffstats
path: root/sys/dev/if_ndis/if_ndisvar.h
diff options
context:
space:
mode:
authorwpaul <wpaul@FreeBSD.org>2005-05-15 04:27:59 +0000
committerwpaul <wpaul@FreeBSD.org>2005-05-15 04:27:59 +0000
commit09647ee931869435d500b0f24b91d25af5145f6f (patch)
tree52249e86ab10b745ca626f1239199f119e89a939 /sys/dev/if_ndis/if_ndisvar.h
parent2e784092b665281139996ed328c8655147601212 (diff)
downloadFreeBSD-src-09647ee931869435d500b0f24b91d25af5145f6f.zip
FreeBSD-src-09647ee931869435d500b0f24b91d25af5145f6f.tar.gz
Add support for NdisMEthIndicateReceive() and MiniportTransferData().
The Ralink RT2500 driver uses this API instead of NdisMIndicateReceivePacket(). Drivers use NdisMEthIndicateReceive() when they know they support 802.3 media and expect to hand their packets only protocols that want to deal with that particular media type. With this API, the driver does not manage its own NDIS_PACKET/NDIS_BUFFER structures. Instead, it lets bound protocols have a peek at the data, and then they supply an NDIS_PACKET/NDIS_BUFFER combo to the miniport driver, into which it copies the packet data. Drivers use NdisMIndicateReceivePacket() to allow their packets to be read by any protocol, not just those bound to 802.3 media devices. To make this work, we need an internal pool of NDIS_PACKETS for receives. Currently, we check to see if the driver exports a MiniportTransferData() method in its characteristics structure, and only allocate the pool for drivers that have this method. This should allow the RT2500 driver to work correctly, though I still have to fix ndiscvt(8) to parse its .inf file properly. Also, change kern_ndis.c:ndis_halt_nic() to reap timers before acquiring NDIS_LOCK(), since the reaping process might entail sleeping briefly (and we can't sleep with a lock held).
Diffstat (limited to 'sys/dev/if_ndis/if_ndisvar.h')
-rw-r--r--sys/dev/if_ndis/if_ndisvar.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/dev/if_ndis/if_ndisvar.h b/sys/dev/if_ndis/if_ndisvar.h
index 06f394e..bcab175 100644
--- a/sys/dev/if_ndis/if_ndisvar.h
+++ b/sys/dev/if_ndis/if_ndisvar.h
@@ -127,6 +127,7 @@ struct ndis_softc {
ndis_work_item ndis_tickitem;
ndis_work_item ndis_startitem;
ndis_work_item ndis_resetitem;
+ kdpc ndis_rxdpc;
bus_dma_tag_t ndis_parent_tag;
struct ndis_shmem *ndis_shlist;
bus_dma_tag_t ndis_mtag;
OpenPOWER on IntegriCloud