]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/gianfar.h
gianfar: Fix VLAN HW feature related frame/buffer size calculation.
[linux-2.6-omap-h63xx.git] / drivers / net / gianfar.h
index d59df98bd636ca6a9e2fcb67d0695e00e657bcd1..1bdb50c7936e7b6cc7e0df98a0e0df35b94f199c 100644 (file)
@@ -189,6 +189,12 @@ extern const char gfar_driver_version[];
 #define mk_ic_value(count, time) (IC_ICEN | \
                                mk_ic_icft(count) | \
                                mk_ic_ictt(time))
+#define get_icft_value(ic)     (((unsigned long)ic & IC_ICFT_MASK) >> \
+                                IC_ICFT_SHIFT)
+#define get_ictt_value(ic)     ((unsigned long)ic & IC_ICTT_MASK)
+
+#define DEFAULT_TXIC mk_ic_value(DEFAULT_TXCOUNT, DEFAULT_TXTIME)
+#define DEFAULT_RXIC mk_ic_value(DEFAULT_RXCOUNT, DEFAULT_RXTIME)
 
 #define RCTRL_PAL_MASK         0x001f0000
 #define RCTRL_VLEX             0x00002000
@@ -200,8 +206,10 @@ extern const char gfar_driver_version[];
 #define RCTRL_PRSDEP_INIT      0x000000c0
 #define RCTRL_PROM             0x00000008
 #define RCTRL_EMEN             0x00000002
-#define RCTRL_CHECKSUMMING     (RCTRL_IPCSEN \
-               | RCTRL_TUCSEN | RCTRL_PRSDEP_INIT)
+#define RCTRL_REQ_PARSER       (RCTRL_VLEX | RCTRL_IPCSEN | \
+                                RCTRL_TUCSEN)
+#define RCTRL_CHECKSUMMING     (RCTRL_IPCSEN | RCTRL_TUCSEN | \
+                               RCTRL_PRSDEP_INIT)
 #define RCTRL_EXTHASH          (RCTRL_GHTX)
 #define RCTRL_VLAN             (RCTRL_PRSDEP_INIT)
 #define RCTRL_PADDING(x)       ((x << 16) & RCTRL_PAL_MASK)
@@ -657,6 +665,19 @@ struct gfar {
 
 };
 
+/* Flags related to gianfar device features */
+#define FSL_GIANFAR_DEV_HAS_GIGABIT            0x00000001
+#define FSL_GIANFAR_DEV_HAS_COALESCE           0x00000002
+#define FSL_GIANFAR_DEV_HAS_RMON               0x00000004
+#define FSL_GIANFAR_DEV_HAS_MULTI_INTR         0x00000008
+#define FSL_GIANFAR_DEV_HAS_CSUM               0x00000010
+#define FSL_GIANFAR_DEV_HAS_VLAN               0x00000020
+#define FSL_GIANFAR_DEV_HAS_EXTENDED_HASH      0x00000040
+#define FSL_GIANFAR_DEV_HAS_PADDING            0x00000080
+#define FSL_GIANFAR_DEV_HAS_MAGIC_PACKET       0x00000100
+#define FSL_GIANFAR_DEV_HAS_BD_STASHING                0x00000200
+#define FSL_GIANFAR_DEV_HAS_BUF_STASHING       0x00000400
+
 /* Struct stolen almost completely (and shamelessly) from the FCC enet source
  * (Ok, that's not so true anymore, but there is a family resemblence)
  * The GFAR buffer descriptors track the ring buffers.  The rx_bd_base
@@ -681,8 +702,7 @@ struct gfar_private {
 
        /* Configuration info for the coalescing features */
        unsigned char txcoalescing;
-       unsigned short txcount;
-       unsigned short txtime;
+       unsigned long txic;
 
        /* Buffer descriptor pointers */
        struct txbd8 *tx_bd_base;       /* First tx buffer descriptor */
@@ -694,6 +714,7 @@ struct gfar_private {
        /* RX Locked fields */
        spinlock_t rxlock;
 
+       struct device_node *node;
        struct net_device *dev;
        struct napi_struct napi;
 
@@ -703,8 +724,7 @@ struct gfar_private {
 
        /* RX Coalescing values */
        unsigned char rxcoalescing;
-       unsigned short rxcount;
-       unsigned short rxtime;
+       unsigned long rxic;
 
        struct rxbd8 *rx_bd_base;       /* First Rx buffers */
        struct rxbd8 *cur_rx;           /* Next free rx ring entry */
@@ -733,8 +753,10 @@ struct gfar_private {
        /* Bitfield update lock */
        spinlock_t bflock;
 
-       unsigned char vlan_enable:1,
-               rx_csum_enable:1,
+       phy_interface_t interface;
+       char    phy_bus_id[BUS_ID_SIZE];
+       u32 device_flags;
+       unsigned char rx_csum_enable:1,
                extended_hash:1,
                bd_stash_en:1,
                wol_en:1; /* Wake-on-LAN enabled */
@@ -744,11 +766,9 @@ struct gfar_private {
        unsigned int interruptReceive;
        unsigned int interruptError;
 
-       /* info structure initialized by platform code */
-       struct gianfar_platform_data *einfo;
-
        /* PHY stuff */
        struct phy_device *phydev;
+       struct phy_device *tbiphy;
        struct mii_bus *mii_bus;
        int oldspeed;
        int oldduplex;
@@ -756,6 +776,7 @@ struct gfar_private {
 
        uint32_t msg_enable;
 
+       struct work_struct reset_task;
        /* Network Statistics */
        struct gfar_extra_stats extra_stats;
 };