diff options
author | wpaul <wpaul@FreeBSD.org> | 2001-05-15 21:42:43 +0000 |
---|---|---|
committer | wpaul <wpaul@FreeBSD.org> | 2001-05-15 21:42:43 +0000 |
commit | 0fd266d18241165004f752dec22b1f7c76ff6375 (patch) | |
tree | 4a03ca1e17c7be383fa76425dbaab8b983b1b789 /sys/dev | |
parent | 313e97ba34050ffbae5fd671ad6567d93047e284 (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/dev/nge/if_ngereg.h | 16 |
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 |