tg3: Fix AC131 loopback test errors for 5785
[safe/jmp/linux-2.6] / drivers / net / ipg.h
index 7bbb131..dfc2541 100644 (file)
@@ -7,7 +7,6 @@
 #ifndef __LINUX_IPG_H
 #define __LINUX_IPG_H
 
-#include <linux/version.h>
 #include <linux/module.h>
 
 #include <linux/kernel.h>
 #include <linux/etherdevice.h>
 #include <linux/init.h>
 #include <linux/skbuff.h>
-#include <linux/version.h>
 #include <asm/bitops.h>
-/*#include <asm/spinlock.h>*/
-
-#define DrvVer "2.09d"
-
-#define IPG_DEV_KFREE_SKB(skb) dev_kfree_skb_irq(skb)
 
 /*
  *     Constants
@@ -56,7 +49,7 @@
 /* I/O register offsets. */
 enum ipg_regs {
        DMA_CTRL                = 0x00,
-       RX_DMA_STATUS           = 0x08, // Unused + reserved
+       RX_DMA_STATUS           = 0x08, /* Unused + reserved */
        TFD_LIST_PTR_0          = 0x10,
        TFD_LIST_PTR_1          = 0x14,
        TX_DMA_BURST_THRESH     = 0x18,
@@ -69,22 +62,22 @@ enum ipg_regs {
        RX_DMA_POLL_PERIOD      = 0x26,
        DEBUG_CTRL              = 0x2c,
        ASIC_CTRL               = 0x30,
-       FIFO_CTRL               = 0x38, // Unused
+       FIFO_CTRL               = 0x38, /* Unused */
        FLOW_OFF_THRESH         = 0x3c,
        FLOW_ON_THRESH          = 0x3e,
        EEPROM_DATA             = 0x48,
        EEPROM_CTRL             = 0x4a,
-       EXPROM_ADDR             = 0x4c, // Unused
-       EXPROM_DATA             = 0x50, // Unused
-       WAKE_EVENT              = 0x51, // Unused
-       COUNTDOWN               = 0x54, // Unused
+       EXPROM_ADDR             = 0x4c, /* Unused */
+       EXPROM_DATA             = 0x50, /* Unused */
+       WAKE_EVENT              = 0x51, /* Unused */
+       COUNTDOWN               = 0x54, /* Unused */
        INT_STATUS_ACK          = 0x5a,
        INT_ENABLE              = 0x5c,
-       INT_STATUS              = 0x5e, // Unused
+       INT_STATUS              = 0x5e, /* Unused */
        TX_STATUS               = 0x60,
        MAC_CTRL                = 0x6c,
-       VLAN_TAG                = 0x70, // Unused
-       PHY_SET                 = 0x75, // JES20040127EEPROM
+       VLAN_TAG                = 0x70, /* Unused */
+       PHY_SET                 = 0x75,
        PHY_CTRL                = 0x76,
        STATION_ADDRESS_0       = 0x78,
        STATION_ADDRESS_1       = 0x7a,
@@ -95,11 +88,11 @@ enum ipg_regs {
        HASHTABLE_1             = 0x90,
        RMON_STATISTICS_MASK    = 0x98,
        STATISTICS_MASK         = 0x9c,
-       RX_JUMBO_FRAMES         = 0xbc, // Unused
-       TCP_CHECKSUM_ERRORS     = 0xc0, // Unused
-       IP_CHECKSUM_ERRORS      = 0xc2, // Unused
-       UDP_CHECKSUM_ERRORS     = 0xc4, // Unused
-       TX_JUMBO_FRAMES         = 0xf4  // Unused
+       RX_JUMBO_FRAMES         = 0xbc, /* Unused */
+       TCP_CHECKSUM_ERRORS     = 0xc0, /* Unused */
+       IP_CHECKSUM_ERRORS      = 0xc2, /* Unused */
+       UDP_CHECKSUM_ERRORS     = 0xc4, /* Unused */
+       TX_JUMBO_FRAMES         = 0xf4  /* Unused */
 };
 
 /* Ethernet MIB statistic register offsets. */
@@ -317,7 +310,7 @@ enum ipg_regs {
 #define IPG_RM_RECEIVEMULTICASTHASH     0x10
 #define IPG_RM_RECEIVEIPMULTICAST       0x20
 
-/* PhySet JES20040127EEPROM*/
+/* PhySet */
 #define IPG_PS_MEM_LENB9B               0x01
 #define IPG_PS_MEM_LEN9                 0x02
 #define IPG_PS_NON_COMPDET              0x04
@@ -374,8 +367,8 @@ enum ipg_regs {
 #define IPG_AC_RST_OUT                  0x01000000
 #define IPG_AC_INT_REQUEST              0x02000000
 #define IPG_AC_RESET_BUSY               0x04000000
-#define IPG_AC_LED_SPEED                0x08000000     //JES20040127EEPROM
-#define IPG_AC_LED_MODE_BIT_1           0x20000000     //JES20040127EEPROM
+#define IPG_AC_LED_SPEED                0x08000000
+#define IPG_AC_LED_MODE_BIT_1           0x20000000
 
 /* EepromCtrl */
 #define IPG_EC_RSVD_MASK                0x83FF
@@ -478,38 +471,34 @@ enum ipg_regs {
  *     Tune
  */
 
-/* Miscellaneous Constants. */
-#define   TRUE  1
-#define   FALSE 0
-
 /* Assign IPG_APPEND_FCS_ON_TX > 0 for auto FCS append on TX. */
-#define         IPG_APPEND_FCS_ON_TX         TRUE
+#define         IPG_APPEND_FCS_ON_TX         1
 
 /* Assign IPG_APPEND_FCS_ON_TX > 0 for auto FCS strip on RX. */
-#define         IPG_STRIP_FCS_ON_RX          TRUE
+#define         IPG_STRIP_FCS_ON_RX          1
 
 /* Assign IPG_DROP_ON_RX_ETH_ERRORS > 0 to drop RX frames with
  * Ethernet errors.
  */
-#define         IPG_DROP_ON_RX_ETH_ERRORS    TRUE
+#define         IPG_DROP_ON_RX_ETH_ERRORS    1
 
 /* Assign IPG_INSERT_MANUAL_VLAN_TAG > 0 to insert VLAN tags manually
  * (via TFC).
  */
-#define                IPG_INSERT_MANUAL_VLAN_TAG   FALSE
+#define                IPG_INSERT_MANUAL_VLAN_TAG   0
 
 /* Assign IPG_ADD_IPCHECKSUM_ON_TX > 0 for auto IP checksum on TX. */
-#define         IPG_ADD_IPCHECKSUM_ON_TX     FALSE
+#define         IPG_ADD_IPCHECKSUM_ON_TX     0
 
 /* Assign IPG_ADD_TCPCHECKSUM_ON_TX > 0 for auto TCP checksum on TX.
  * DO NOT USE FOR SILICON REVISIONS B3 AND EARLIER.
  */
-#define         IPG_ADD_TCPCHECKSUM_ON_TX    FALSE
+#define         IPG_ADD_TCPCHECKSUM_ON_TX    0
 
 /* Assign IPG_ADD_UDPCHECKSUM_ON_TX > 0 for auto UDP checksum on TX.
  * DO NOT USE FOR SILICON REVISIONS B3 AND EARLIER.
  */
-#define         IPG_ADD_UDPCHECKSUM_ON_TX    FALSE
+#define         IPG_ADD_UDPCHECKSUM_ON_TX    0
 
 /* If inserting VLAN tags manually, assign the IPG_MANUAL_VLAN_xx
  * constants as desired.
@@ -525,7 +514,7 @@ enum ipg_regs {
 #define                IPG_DMALIST_ALIGN_PAD   0x07
 #define                IPG_MULTICAST_HASHTABLE_SIZE    0x40
 
-/* Number of miliseconds to wait after issuing a software reset.
+/* Number of milliseconds to wait after issuing a software reset.
  * 0x05 <= IPG_AC_RESETWAIT to account for proper 10Mbps operation.
  */
 #define         IPG_AC_RESETWAIT             0x05
@@ -545,83 +534,6 @@ enum ipg_regs {
  */
 #define                IPG_FRAMESBETWEENTXDMACOMPLETES 0x1
 
-#ifdef JUMBO_FRAME
-
-# ifdef JUMBO_FRAME_SIZE_2K
-# define JUMBO_FRAME_SIZE 2048
-# define __IPG_RXFRAG_SIZE 2048
-# else
-#  ifdef JUMBO_FRAME_SIZE_3K
-#  define JUMBO_FRAME_SIZE 3072
-#  define __IPG_RXFRAG_SIZE 3072
-#  else
-#   ifdef JUMBO_FRAME_SIZE_4K
-#   define JUMBO_FRAME_SIZE 4096
-#   define __IPG_RXFRAG_SIZE 4088
-#   else
-#    ifdef JUMBO_FRAME_SIZE_5K
-#    define JUMBO_FRAME_SIZE 5120
-#    define __IPG_RXFRAG_SIZE 4088
-#    else
-#     ifdef JUMBO_FRAME_SIZE_6K
-#     define JUMBO_FRAME_SIZE 6144
-#     define __IPG_RXFRAG_SIZE 4088
-#     else
-#      ifdef JUMBO_FRAME_SIZE_7K
-#      define JUMBO_FRAME_SIZE 7168
-#      define __IPG_RXFRAG_SIZE 4088
-#      else
-#       ifdef JUMBO_FRAME_SIZE_8K
-#       define JUMBO_FRAME_SIZE 8192
-#       define __IPG_RXFRAG_SIZE 4088
-#       else
-#        ifdef JUMBO_FRAME_SIZE_9K
-#        define JUMBO_FRAME_SIZE 9216
-#        define __IPG_RXFRAG_SIZE 4088
-#        else
-#         ifdef JUMBO_FRAME_SIZE_10K
-#         define JUMBO_FRAME_SIZE 10240
-#         define __IPG_RXFRAG_SIZE 4088
-#         else
-#         define JUMBO_FRAME_SIZE 4096
-#         endif
-#        endif
-#       endif
-#      endif
-#     endif
-#    endif
-#   endif
-#  endif
-# endif
-#endif
-
-/* Size of allocated received buffers. Nominally 0x0600.
- * Define larger if expecting jumbo frames.
- */
-#ifdef JUMBO_FRAME
-//IPG_TXFRAG_SIZE must <= 0x2b00, or TX will crash
-#define                IPG_TXFRAG_SIZE         JUMBO_FRAME_SIZE
-#endif
-
-/* Size of allocated received buffers. Nominally 0x0600.
- * Define larger if expecting jumbo frames.
- */
-#ifdef JUMBO_FRAME
-//4088=4096-8
-#define                IPG_RXFRAG_SIZE         __IPG_RXFRAG_SIZE
-#define     IPG_RXSUPPORT_SIZE   IPG_MAX_RXFRAME_SIZE
-#else
-#define                IPG_RXFRAG_SIZE         0x0600
-#define     IPG_RXSUPPORT_SIZE   IPG_RXFRAG_SIZE
-#endif
-
-/* IPG_MAX_RXFRAME_SIZE <= IPG_RXFRAG_SIZE */
-#ifdef JUMBO_FRAME
-#define                IPG_MAX_RXFRAME_SIZE            JUMBO_FRAME_SIZE
-#else
-#define                IPG_MAX_RXFRAME_SIZE            0x0600
-#endif
-
 #define                IPG_RFDLIST_LENGTH              0x100
 
 /* Maximum number of RFDs to process per interrupt.
@@ -635,9 +547,9 @@ enum ipg_regs {
 #define                IPG_MINUSEDRFDSTOFREE   0x80
 
 /* specify the jumbo frame maximum size
- * per unit is 0x600 (the RxBuffer size that one RFD can carry)
+ * per unit is 0x600 (the rx_buffer size that one RFD can carry)
  */
-#define     MAX_JUMBOSIZE              0x8     // max is 12K
+#define     MAX_JUMBOSIZE              0x8     /* max is 12K */
 
 /* Key register values loaded at driver start up. */
 
@@ -741,8 +653,7 @@ enum ipg_regs {
  * Miscellaneous macros.
  */
 
-/* Marco for printing debug statements.
-#  define IPG_DDEBUG_MSG(args...) printk(KERN_DEBUG "IPG: " ## args) */
+/* Marco for printing debug statements. */
 #ifdef IPG_DEBUG
 #  define IPG_DEBUG_MSG(args...)
 #  define IPG_DDEBUG_MSG(args...) printk(KERN_DEBUG "IPG: " args)
@@ -777,11 +688,12 @@ struct ipg_rx {
        __le64 frag_info;
 };
 
-struct SJumbo {
-       int FoundStart;
-       int CurrentSize;
+struct ipg_jumbo {
+       int found_start;
+       int current_size;
        struct sk_buff *skb;
 };
+
 /* Structure of IPG NIC specific data. */
 struct ipg_nic_private {
        void __iomem *ioaddr;
@@ -789,16 +701,17 @@ struct ipg_nic_private {
        struct ipg_rx *rxd;
        dma_addr_t txd_map;
        dma_addr_t rxd_map;
-       struct sk_buff *TxBuff[IPG_TFDLIST_LENGTH];
-       struct sk_buff *RxBuff[IPG_RFDLIST_LENGTH];
+       struct sk_buff *tx_buff[IPG_TFDLIST_LENGTH];
+       struct sk_buff *rx_buff[IPG_RFDLIST_LENGTH];
        unsigned int tx_current;
        unsigned int tx_dirty;
        unsigned int rx_current;
        unsigned int rx_dirty;
-// Add by Grace 2005/05/19
-#ifdef JUMBO_FRAME
-       struct SJumbo Jumbo;
-#endif
+       bool is_jumbo;
+       struct ipg_jumbo jumbo;
+       unsigned long rxfrag_size;
+       unsigned long rxsupport_size;
+       unsigned long max_rxframe_size;
        unsigned int rx_buf_sz;
        struct pci_dev *pdev;
        struct net_device *dev;
@@ -806,13 +719,12 @@ struct ipg_nic_private {
        spinlock_t lock;
        int tenmbpsmode;
 
-       /*Jesse20040128EEPROM_VALUE */
-       u16 LED_Mode;
+       u16 led_mode;
        u16 station_addr[3];    /* Station Address in EEPROM Reg 0x10..0x12 */
 
        struct mutex            mii_mutex;
        struct mii_if_info      mii_if;
-       int ResetCurrentTFD;
+       int reset_current_tfd;
 #ifdef IPG_DEBUG
        int RFDlistendCount;
        int RFDListCheckedCount;