]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/pasemi_mac.h
[SCSI] iscsi class: regression - fix races with state manipulation and blocking/unblo...
[linux-2.6-omap-h63xx.git] / drivers / net / pasemi_mac.h
index 64b2047d19f0ff41ca3e7ea4b53e504bcdc409b6..99e7b9329a6fb5366936d62f399b513a676b5897 100644 (file)
@@ -26,6 +26,8 @@
 #include <linux/spinlock.h>
 #include <linux/phy.h>
 
+#define MAX_LRO_DESCRIPTORS 8
+
 struct pasemi_mac_txring {
        struct pasemi_dmachan chan; /* Must be first */
        spinlock_t       lock;
@@ -34,6 +36,7 @@ struct pasemi_mac_txring {
        unsigned int     next_to_clean;
        struct pasemi_mac_buffer *ring_info;
        struct pasemi_mac *mac; /* Needed in intr handler */
+       struct timer_list clean_timer;
 };
 
 struct pasemi_mac_rxring {
@@ -56,6 +59,7 @@ struct pasemi_mac {
        struct phy_device *phydev;
        struct napi_struct napi;
 
+       int             bufsz; /* RX ring buffer size */
        u8              type;
 #define MAC_TYPE_GMAC  1
 #define MAC_TYPE_XAUI  2
@@ -63,7 +67,10 @@ struct pasemi_mac {
 
        u8              mac_addr[6];
 
+       struct net_lro_mgr      lro_mgr;
+       struct net_lro_desc     lro_desc[MAX_LRO_DESCRIPTORS];
        struct timer_list       rxtimer;
+       unsigned int            lro_max_aggr;
 
        struct pasemi_mac_txring *tx;
        struct pasemi_mac_rxring *rx;
@@ -90,6 +97,9 @@ struct pasemi_mac_buffer {
 /* MAC CFG register offsets */
 enum {
        PAS_MAC_CFG_PCFG = 0x80,
+       PAS_MAC_CFG_MACCFG = 0x84,
+       PAS_MAC_CFG_ADR0 = 0x8c,
+       PAS_MAC_CFG_ADR1 = 0x90,
        PAS_MAC_CFG_TXP = 0x98,
        PAS_MAC_IPC_CHNL = 0x208,
 };
@@ -124,6 +134,18 @@ enum {
 #define PAS_MAC_CFG_PCFG_SPD_100M      0x00000001
 #define PAS_MAC_CFG_PCFG_SPD_1G                0x00000002
 #define PAS_MAC_CFG_PCFG_SPD_10G       0x00000003
+
+#define PAS_MAC_CFG_MACCFG_TXT_M       0x70000000
+#define PAS_MAC_CFG_MACCFG_TXT_S       28
+#define PAS_MAC_CFG_MACCFG_PRES_M      0x0f000000
+#define PAS_MAC_CFG_MACCFG_PRES_S      24
+#define PAS_MAC_CFG_MACCFG_MAXF_M      0x00ffff00
+#define PAS_MAC_CFG_MACCFG_MAXF_S      8
+#define PAS_MAC_CFG_MACCFG_MAXF(x)     (((x) << PAS_MAC_CFG_MACCFG_MAXF_S) & \
+                                        PAS_MAC_CFG_MACCFG_MAXF_M)
+#define PAS_MAC_CFG_MACCFG_MINF_M      0x000000ff
+#define PAS_MAC_CFG_MACCFG_MINF_S      0
+
 #define PAS_MAC_CFG_TXP_FCF            0x01000000
 #define PAS_MAC_CFG_TXP_FCE            0x00800000
 #define PAS_MAC_CFG_TXP_FC             0x00400000