Synch the XL driver with FreeBSD-4.x.
[dragonfly.git] / sys / dev / netif / xl / if_xlreg.h
index bf6ca1a..e2f4255 100644 (file)
@@ -29,8 +29,8 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/pci/if_xlreg.h,v 1.25.2.7 2003/01/25 23:00:10 silby Exp $
- * $DragonFly: src/sys/dev/netif/xl/if_xlreg.h,v 1.2 2003/06/17 04:28:57 dillon Exp $
+ * $FreeBSD: src/sys/pci/if_xlreg.h,v 1.25.2.8 2003/08/10 21:55:57 silby Exp $
+ * $DragonFly: src/sys/dev/netif/xl/if_xlreg.h,v 1.3 2004/01/24 06:34:02 dillon Exp $
  */
 
 #define XL_EE_READ     0x0080  /* read, 5 bit address */
 #define XL_CAPS_PWRMGMT                0x2000
 
 #define XL_PACKET_SIZE 1540
-       
+#ifndef ETHER_VLAN_ENCAP_LEN
+#define ETHER_VLAN_ENCAP_LEN   4
+#endif
+#define XL_MAX_FRAMELEN        (ETHER_MAX_LEN + ETHER_VLAN_ENCAP_LEN)
+
 /*
  * Register layouts.
  */
 
 #define XL_LAST_FRAG           0x80000000
 
+#define XL_MAXFRAGS            63
+#define XL_RX_LIST_CNT         128
+#define XL_TX_LIST_CNT         256
+#define XL_RX_LIST_SZ          XL_RX_LIST_CNT * sizeof(struct xl_list_onefrag)
+#define XL_TX_LIST_SZ          XL_TX_LIST_CNT * sizeof(struct xl_list)
+#define XL_MIN_FRAMELEN                60
+#define ETHER_ALIGN            2
+#define XL_INC(x, y)           (x) = (x + 1) % y
+
 /*
  * Boomerang/Cyclone TX/RX list structure.
  * For the TX lists, bits 0 to 12 of the status word indicate
@@ -435,7 +448,7 @@ struct xl_frag {
 struct xl_list {
        u_int32_t               xl_next;        /* final entry has 0 nextptr */
        u_int32_t               xl_status;
-       struct xl_frag          xl_frag[63];
+       struct xl_frag          xl_frag[XL_MAXFRAGS];
 };
 
 struct xl_list_onefrag {
@@ -444,17 +457,15 @@ struct xl_list_onefrag {
        struct xl_frag          xl_frag;
 };
 
-#define XL_MAXFRAGS            63
-#define XL_RX_LIST_CNT         128
-#define XL_TX_LIST_CNT         256
-#define XL_MIN_FRAMELEN                60
-#define ETHER_ALIGN            2
-#define XL_INC(x, y)           (x) = (x + 1) % y
-
 struct xl_list_data {
-       struct xl_list_onefrag  xl_rx_list[XL_RX_LIST_CNT];
-       struct xl_list          xl_tx_list[XL_TX_LIST_CNT];
-       unsigned char           xl_pad[XL_MIN_FRAMELEN];
+       struct xl_list_onefrag  *xl_rx_list;
+       struct xl_list          *xl_tx_list;
+       u_int32_t               xl_rx_dmaaddr;
+       bus_dma_tag_t           xl_rx_tag;
+       bus_dmamap_t            xl_rx_dmamap;
+       u_int32_t               xl_tx_dmaaddr;
+       bus_dma_tag_t           xl_tx_tag;
+       bus_dmamap_t            xl_tx_dmamap;
 };
 
 struct xl_chain {
@@ -463,12 +474,14 @@ struct xl_chain {
        struct xl_chain         *xl_next;
        struct xl_chain         *xl_prev;
        u_int32_t               xl_phys;
+       bus_dmamap_t            xl_map;
 };
 
 struct xl_chain_onefrag {
        struct xl_list_onefrag  *xl_ptr;
        struct mbuf             *xl_mbuf;
        struct xl_chain_onefrag *xl_next;
+       bus_dmamap_t            xl_map;
 };
 
 struct xl_chain_data {
@@ -562,6 +575,7 @@ struct xl_mii_frame {
 #define XL_FLAG_INVERT_LED_PWR         0x0020
 #define XL_FLAG_INVERT_MII_PWR         0x0040
 #define XL_FLAG_NO_XCVR_PWR            0x0080
+#define XL_FLAG_USE_MMIO               0x0100
 
 #define XL_NO_XCVR_PWR_MAGICBITS       0x0900
 
@@ -575,6 +589,8 @@ struct xl_softc {
        struct resource         *xl_res;
        device_t                xl_miibus;
        struct xl_type          *xl_info;       /* 3Com adapter info */
+       bus_dma_tag_t           xl_mtag;
+       bus_dmamap_t            xl_tmpmap;      /* spare DMA map */
        u_int8_t                xl_unit;        /* interface number */
        u_int8_t                xl_type;
        u_int32_t               xl_xcvr;
@@ -583,7 +599,7 @@ struct xl_softc {
        u_int8_t                xl_stats_no_timeout;
        u_int16_t               xl_tx_thresh;
        int                     xl_if_flags;
-       struct xl_list_data     *xl_ldata;
+       struct xl_list_data     xl_ldata;
        struct xl_chain_data    xl_cdata;
        struct callout_handle   xl_stat_ch;
        int                     xl_flags;
@@ -711,12 +727,6 @@ struct xl_stats {
 #define XL_PME_EN              0x0010
 #define XL_PME_STATUS          0x8000
 
-#ifdef __alpha__
-#undef vtophys
-#define vtophys(va)            alpha_XXX_dmamap((vm_offset_t)va)
-                               
-#endif
-
 #ifndef IFM_10_FL
 #define IFM_10_FL      13              /* 10baseFL - Fiber */
 #endif