X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=drivers%2Fnet%2Fipg.h;h=e0e718ab4c2ee3f69f1463dfe199a3446f48c7d5;hb=532f4aee934cf26f1905fae101ac9f0ba3087f21;hp=e418b9035caceb3be77a4927896df424daf39245;hpb=857e37dc367142f25836fac42e045f08114bd4be;p=linux-2.6 diff --git a/drivers/net/ipg.h b/drivers/net/ipg.h index e418b9035c..e0e718ab4c 100644 --- a/drivers/net/ipg.h +++ b/drivers/net/ipg.h @@ -1,20 +1,8 @@ /* - * - * ipg.h - * * Include file for Gigabit Ethernet device driver for Network * Interface Cards (NICs) utilizing the Tamarack Microelectronics * Inc. IPG Gigabit or Triple Speed Ethernet Media Access * Controller. - * - * Craig Rich - * Sundance Technology, Inc. - * 1485 Saratoga Avenue - * Suite 200 - * San Jose, CA 95129 - * 408 873 4117 - * www.sundanceti.com - * craig_rich@sundanceti.com */ #ifndef __LINUX_IPG_H #define __LINUX_IPG_H @@ -35,11 +23,6 @@ #include #include #include -/*#include */ - -#define DrvVer "2.09d" - -#define IPG_DEV_KFREE_SKB(skb) dev_kfree_skb_irq(skb) /* * Constants @@ -68,7 +51,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, @@ -81,22 +64,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, @@ -107,11 +90,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. */ @@ -329,7 +312,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 @@ -386,8 +369,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 @@ -490,38 +473,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. @@ -557,83 +536,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. @@ -647,9 +549,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. */ @@ -753,8 +655,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) @@ -789,11 +690,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; @@ -801,16 +703,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; @@ -818,13 +721,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; @@ -833,24 +735,4 @@ struct ipg_nic_private { struct delayed_work task; }; -//variable record -- index by leading revision/length -//Revision/Length(=N*4), Address1, Data1, Address2, Data2,...,AddressN,DataN -unsigned short DefaultPhyParam[] = { - // 11/12/03 IP1000A v1-3 rev=0x40 - /*-------------------------------------------------------------------------- - (0x4000|(15*4)), 31, 0x0001, 27, 0x01e0, 31, 0x0002, 22, 0x85bd, 24, 0xfff2, - 27, 0x0c10, 28, 0x0c10, 29, 0x2c10, 31, 0x0003, 23, 0x92f6, - 31, 0x0000, 23, 0x003d, 30, 0x00de, 20, 0x20e7, 9, 0x0700, - --------------------------------------------------------------------------*/ - // 12/17/03 IP1000A v1-4 rev=0x40 - (0x4000 | (07 * 4)), 31, 0x0001, 27, 0x01e0, 31, 0x0002, 27, 0xeb8e, 31, - 0x0000, - 30, 0x005e, 9, 0x0700, - // 01/09/04 IP1000A v1-5 rev=0x41 - (0x4100 | (07 * 4)), 31, 0x0001, 27, 0x01e0, 31, 0x0002, 27, 0xeb8e, 31, - 0x0000, - 30, 0x005e, 9, 0x0700, - 0x0000 -}; - #endif /* __LINUX_IPG_H */