summaryrefslogtreecommitdiffstats
path: root/sys/dev/nge
diff options
context:
space:
mode:
authorwpaul <wpaul@FreeBSD.org>2001-05-15 21:42:43 +0000
committerwpaul <wpaul@FreeBSD.org>2001-05-15 21:42:43 +0000
commit0fd266d18241165004f752dec22b1f7c76ff6375 (patch)
tree4a03ca1e17c7be383fa76425dbaab8b983b1b789 /sys/dev/nge
parent313e97ba34050ffbae5fd671ad6567d93047e284 (diff)
downloadFreeBSD-src-0fd266d18241165004f752dec22b1f7c76ff6375.zip
FreeBSD-src-0fd266d18241165004f752dec22b1f7c76ff6375.tar.gz
Adjust the descriptor structures a little by making the software parts
be unions with enough padding to make sure they always end up being a multiple of 8 bytes in size, since the 83820/83821 chips require descriptors to be aligned on 64-bit boundaries. I happened to get it right for the 32-bit descriptor/x86 case, but botched everything else. Things should work properle on 32-bit/64-bit platforms now. Note that the 64-bit descriptor format isn't being used currently.
Diffstat (limited to 'sys/dev/nge')
-rw-r--r--sys/dev/nge/if_ngereg.h16
1 files changed, 12 insertions, 4 deletions
diff --git a/sys/dev/nge/if_ngereg.h b/sys/dev/nge/if_ngereg.h
index e53bcdb..c7157b9 100644
--- a/sys/dev/nge/if_ngereg.h
+++ b/sys/dev/nge/if_ngereg.h
@@ -484,8 +484,11 @@ struct nge_desc_64 {
#define nge_ctl nge_cmdsts
u_int32_t nge_extsts;
/* Driver software section */
- struct mbuf *nge_mbuf;
- struct nge_desc_64 *nge_nextdesc;
+ union {
+ struct mbuf *nge_mbuf;
+ struct nge_desc_64 *nge_nextdesc;
+ u_int64_t nge_dummy[2];
+ } nge_u;
};
struct nge_desc_32 {
@@ -498,11 +501,16 @@ struct nge_desc_32 {
#define nge_ctl nge_cmdsts
u_int32_t nge_extsts;
/* Driver software section */
- struct mbuf *nge_mbuf;
- struct nge_desc_32 *nge_nextdesc;
+ union {
+ struct mbuf *nge_mbuf;
+ struct nge_desc_32 *nge_nextdesc;
+ u_int64_t nge_dummy[2];
+ } nge_u;
};
#define nge_desc nge_desc_32
+#define nge_mbuf nge_u.nge_mbuf
+#define nge_nextdesc nge_u.nge_nextdesc
#define NGE_CMDSTS_BUFLEN 0x0000FFFF
#define NGE_CMDSTS_PKT_OK 0x08000000
OpenPOWER on IntegriCloud