summaryrefslogtreecommitdiffstats
path: root/sys/dev/en/midwayvar.h
diff options
context:
space:
mode:
authorharti <harti@FreeBSD.org>2003-08-05 12:02:25 +0000
committerharti <harti@FreeBSD.org>2003-08-05 12:02:25 +0000
commitd982a67297f3bd4927dc6faccd2056d54fe339eb (patch)
tree59516ac529732d935b6d4536ee41627cce03371f /sys/dev/en/midwayvar.h
parent93e075cf7ad1df05ef58d1fc49abc48e4340661c (diff)
downloadFreeBSD-src-d982a67297f3bd4927dc6faccd2056d54fe339eb.zip
FreeBSD-src-d982a67297f3bd4927dc6faccd2056d54fe339eb.tar.gz
Make the en(4) driver more like the other ATM drivers. This is the
preparation for supporting the OPENVCC and CLOSEVCC ioctls which are needed for ng_atm. This required some re-organisation of the code (mostly converting array indexes to pointers). This also gives us an array of open vccs that will help in using the generic GETVCCS handler.
Diffstat (limited to 'sys/dev/en/midwayvar.h')
-rw-r--r--sys/dev/en/midwayvar.h36
1 files changed, 23 insertions, 13 deletions
diff --git a/sys/dev/en/midwayvar.h b/sys/dev/en/midwayvar.h
index 7cbd3b2..f95414c 100644
--- a/sys/dev/en/midwayvar.h
+++ b/sys/dev/en/midwayvar.h
@@ -124,19 +124,31 @@ struct en_txslot {
* card.
*/
struct en_rxslot {
- void *rxhand; /* recv. handle for direct delivery */
uint32_t mode; /* saved copy of mode info */
uint32_t start; /* begin of my buffer area */
uint32_t stop; /* end of my buffer area */
uint32_t cur; /* where I am at in the buffer */
- uint16_t atm_vci; /* backpointer to VCI */
- uint8_t atm_flags; /* copy of atm_flags from atm_ph */
- uint8_t oth_flags; /* other flags */
- uint32_t raw_threshold; /* for raw mode */
+ struct en_vcc *vcc; /* backpointer to VCI */
struct ifqueue q; /* mbufs waiting for dma now */
struct ifqueue indma; /* mbufs being dma'd now */
};
+struct en_vcc {
+ struct atmio_vcc vcc; /* required by common code */
+ void *rxhand;
+ uint vflags;
+ uint32_t ipackets;
+ uint32_t opackets;
+ uint32_t ibytes;
+ uint32_t obytes;
+
+ uint8_t txspeed;
+ struct en_txslot *txslot; /* transmit slot */
+ struct en_rxslot *rxslot; /* receive slot */
+};
+#define VCC_DRAIN 0x0001 /* closed, but draining rx */
+#define VCC_SWSL 0x0002 /* on rx software service list */
+
/*
* softc
*/
@@ -176,16 +188,13 @@ struct en_softc {
/* xmit buf ctrl. (per channel) */
struct en_txslot txslot[MID_NTX_CH];
- /* xmit vc ctrl. (per vc) */
- uint8_t txspeed[MID_N_VC]; /* speed of tx on a VC */
- uint8_t txvc2slot[MID_N_VC]; /* map VC to slot */
-
- /* recv vc ctrl. (per vc). maps VC number to recv slot */
- uint16_t rxvc2slot[MID_N_VC];
- int en_nrx; /* # of active rx slots */
-
/* recv buf ctrl. (per recv slot) */
struct en_rxslot rxslot[EN_MAXNRX];
+ int en_nrx; /* # of active rx slots */
+
+ /* vccs */
+ struct en_vcc **vccs;
+ u_int vccs_open;
/* stats */
struct en_stats stats;
@@ -228,3 +237,4 @@ int en_attach(struct en_softc *);
void en_destroy(struct en_softc *);
void en_intr(void *);
void en_reset(struct en_softc *);
+int en_modevent(module_t, int, void *arg);
OpenPOWER on IntegriCloud