Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik...
[pandora-kernel.git] / drivers / net / spider_net.h
index f6dcf18..b3b4611 100644 (file)
 #ifndef _SPIDER_NET_H
 #define _SPIDER_NET_H
 
+#define VERSION "1.1 A"
+
 #include "sungem_phy.h"
 
 extern int spider_net_stop(struct net_device *netdev);
 extern int spider_net_open(struct net_device *netdev);
 
-extern struct ethtool_ops spider_net_ethtool_ops;
+extern const struct ethtool_ops spider_net_ethtool_ops;
 
 extern char spider_net_driver_name[];
 
@@ -47,7 +49,7 @@ extern char spider_net_driver_name[];
 #define SPIDER_NET_TX_DESCRIPTORS_MIN          16
 #define SPIDER_NET_TX_DESCRIPTORS_MAX          512
 
-#define SPIDER_NET_TX_TIMER                    20
+#define SPIDER_NET_TX_TIMER                    (HZ/5)
 
 #define SPIDER_NET_RX_CSUM_DEFAULT             1
 
@@ -189,7 +191,9 @@ extern char spider_net_driver_name[];
 #define SPIDER_NET_MACMODE_VALUE       0x00000001
 #define SPIDER_NET_BURSTLMT_VALUE      0x00000200 /* about 16 us */
 
-/* 1(0)                                        enable r/tx dma
+/* DMAC control register GDMACCNTR
+ *
+ * 1(0)                                enable r/tx dma
  *  0000000                            fixed to 0
  *
  *         000000                      fixed to 0
@@ -198,6 +202,7 @@ extern char spider_net_driver_name[];
  *
  *                 000000              fixed to 0
  *                       00            burst alignment: 128 bytes
+ *                       11            burst alignment: 1024 bytes
  *
  *                         00000       fixed to 0
  *                              0      descr writeback size 32 bytes
@@ -208,10 +213,13 @@ extern char spider_net_driver_name[];
 #define SPIDER_NET_DMA_RX_VALUE                0x80000000
 #define SPIDER_NET_DMA_RX_FEND_VALUE   0x00030003
 /* to set TX_DMA_EN */
-#define SPIDER_NET_TX_DMA_EN           0x80000000
-#define SPIDER_NET_GDTDCEIDIS          0x00000002
-#define SPIDER_NET_DMA_TX_VALUE                SPIDER_NET_TX_DMA_EN | \
-                                       SPIDER_NET_GDTDCEIDIS
+#define SPIDER_NET_TX_DMA_EN           0x80000000
+#define SPIDER_NET_GDTBSTA             0x00000300
+#define SPIDER_NET_GDTDCEIDIS          0x00000002
+#define SPIDER_NET_DMA_TX_VALUE        SPIDER_NET_TX_DMA_EN | \
+                                       SPIDER_NET_GDTBSTA | \
+                                       SPIDER_NET_GDTDCEIDIS
+
 #define SPIDER_NET_DMA_TX_FEND_VALUE   0x00030003
 
 /* SPIDER_NET_UA_DESCR_VALUE is OR'ed with the unicast address */
@@ -320,13 +328,10 @@ enum spider_net_int2_status {
        SPIDER_NET_GRISPDNGINT
 };
 
-#define SPIDER_NET_TXINT       ( (1 << SPIDER_NET_GTTEDINT) | \
-                                 (1 << SPIDER_NET_GDTDCEINT) | \
-                                 (1 << SPIDER_NET_GDTFDCINT) )
+#define SPIDER_NET_TXINT       ( (1 << SPIDER_NET_GDTFDCINT) )
 
-/* we rely on flagged descriptor interrupts*/
-#define SPIDER_NET_RXINT       ( (1 << SPIDER_NET_GDAFDCINT) | \
-                                 (1 << SPIDER_NET_GRMFLLINT) )
+/* We rely on flagged descriptor interrupts */
+#define SPIDER_NET_RXINT       ( (1 << SPIDER_NET_GDAFDCINT) )
 
 #define SPIDER_NET_ERRINT      ( 0xffffffff & \
                                  (~SPIDER_NET_TXINT) & \
@@ -349,6 +354,7 @@ enum spider_net_int2_status {
 #define SPIDER_NET_DESCR_FORCE_END             0x50000000 /* used in rx and tx */
 #define SPIDER_NET_DESCR_CARDOWNED             0xA0000000 /* used in rx and tx */
 #define SPIDER_NET_DESCR_NOT_IN_USE            0xF0000000
+#define SPIDER_NET_DESCR_TXDESFLG              0x00800000
 
 struct spider_net_descr {
        /* as defined by the hardware */
@@ -415,6 +421,15 @@ struct spider_net_options {
                                          NETIF_MSG_HW | \
                                          NETIF_MSG_WOL )
 
+struct spider_net_extra_stats {
+       unsigned long rx_desc_error;
+       unsigned long tx_timeouts;
+       unsigned long alloc_rx_skb_error;
+       unsigned long rx_iommu_map_error;
+       unsigned long tx_iommu_map_error;
+       unsigned long rx_desc_unk_state;
+};
+
 struct spider_net_card {
        struct net_device *netdev;
        struct pci_dev *pdev;
@@ -424,6 +439,7 @@ struct spider_net_card {
 
        struct spider_net_descr_chain tx_chain;
        struct spider_net_descr_chain rx_chain;
+       struct spider_net_descr *low_watermark;
 
        struct net_device_stats netdev_stats;
 
@@ -439,6 +455,9 @@ struct spider_net_card {
 
        /* for ethtool */
        int msg_enable;
+       int num_rx_desc;
+       int num_tx_desc;
+       struct spider_net_extra_stats spider_stats;
 
        struct spider_net_descr descr[0];
 };