]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/e1000e/e1000.h
Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzi...
[linux-2.6-omap-h63xx.git] / drivers / net / e1000e / e1000.h
index 8b88c226e8581908f2d19dfec380ed1cff35ae00..38bfd0d261fee3f272f80415da323311eb8ddf43 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
 
   Intel PRO/1000 Linux driver
-  Copyright(c) 1999 - 2007 Intel Corporation.
+  Copyright(c) 1999 - 2008 Intel Corporation.
 
   This program is free software; you can redistribute it and/or modify it
   under the terms and conditions of the GNU General Public License,
@@ -42,8 +42,7 @@
 struct e1000_info;
 
 #define ndev_printk(level, netdev, format, arg...) \
-       printk(level "%s: %s: " format, (netdev)->dev.parent->bus_id, \
-              (netdev)->name, ## arg)
+       printk(level "%s: " format, (netdev)->name, ## arg)
 
 #ifdef DEBUG
 #define ndev_dbg(netdev, format, arg...) \
@@ -62,14 +61,17 @@ struct e1000_info;
        ndev_printk(KERN_NOTICE , netdev, format, ## arg)
 
 
-/* TX/RX descriptor defines */
+/* Tx/Rx descriptor defines */
 #define E1000_DEFAULT_TXD              256
 #define E1000_MAX_TXD                  4096
-#define E1000_MIN_TXD                  80
+#define E1000_MIN_TXD                  64
 
 #define E1000_DEFAULT_RXD              256
 #define E1000_MAX_RXD                  4096
-#define E1000_MIN_RXD                  80
+#define E1000_MIN_RXD                  64
+
+#define E1000_MIN_ITR_USECS            10 /* 100000 irq/sec */
+#define E1000_MAX_ITR_USECS            10000 /* 100    irq/sec */
 
 /* Early Receive defines */
 #define E1000_ERT_2048                 0x100
@@ -115,13 +117,13 @@ struct e1000_buffer {
        dma_addr_t dma;
        struct sk_buff *skb;
        union {
-               /* TX */
+               /* Tx */
                struct {
                        unsigned long time_stamp;
                        u16 length;
                        u16 next_to_watch;
                };
-               /* RX */
+               /* Rx */
                /* arrays of page information for packet split */
                struct e1000_ps_page *ps_pages;
        };
@@ -148,6 +150,18 @@ struct e1000_ring {
        struct e1000_queue_stats stats;
 };
 
+/* PHY register snapshot values */
+struct e1000_phy_regs {
+       u16 bmcr;               /* basic mode control register    */
+       u16 bmsr;               /* basic mode status register     */
+       u16 advertise;          /* auto-negotiation advertisement */
+       u16 lpa;                /* link partner ability register  */
+       u16 expansion;          /* auto-negotiation expansion reg */
+       u16 ctrl1000;           /* 1000BASE-T control register    */
+       u16 stat1000;           /* 1000BASE-T status register     */
+       u16 estatus;            /* extended status register       */
+};
+
 /* board specific private data structure */
 struct e1000_adapter {
        struct timer_list watchdog_timer;
@@ -168,9 +182,6 @@ struct e1000_adapter {
 
        spinlock_t tx_queue_lock; /* prevent concurrent tail updates */
 
-       /* this is still needed for 82571 and above */
-       atomic_t irq_sem;
-
        /* track device up/down/testing state */
        unsigned long state;
 
@@ -181,7 +192,7 @@ struct e1000_adapter {
        u16 rx_itr;
 
        /*
-        * TX
+        * Tx
         */
        struct e1000_ring *tx_ring /* One per active queue */
                                                ____cacheline_aligned_in_smp;
@@ -203,11 +214,11 @@ struct e1000_adapter {
        unsigned int total_rx_bytes;
        unsigned int total_rx_packets;
 
-       /* TX stats */
+       /* Tx stats */
        u64 tpt_old;
        u64 colc_old;
-       u64 gotcl_old;
-       u32 gotcl;
+       u32 gotc;
+       u64 gotc_old;
        u32 tx_timeout_count;
        u32 tx_fifo_head;
        u32 tx_head_addr;
@@ -215,7 +226,7 @@ struct e1000_adapter {
        u32 tx_dma_failed;
 
        /*
-        * RX
+        * Rx
         */
        bool (*clean_rx) (struct e1000_adapter *adapter,
                          int *work_done, int work_to_do)
@@ -227,17 +238,19 @@ struct e1000_adapter {
        u32 rx_int_delay;
        u32 rx_abs_int_delay;
 
-       /* RX stats */
+       /* Rx stats */
        u64 hw_csum_err;
        u64 hw_csum_good;
        u64 rx_hdr_split;
-       u64 gorcl_old;
-       u32 gorcl;
+       u32 gorc;
+       u64 gorc_old;
        u32 alloc_rx_buff_failed;
        u32 rx_dma_failed;
 
        unsigned int rx_ps_pages;
        u16 rx_ps_bsize0;
+       u32 max_frame_size;
+       u32 min_frame_size;
 
        /* OS defined structs */
        struct net_device *netdev;
@@ -252,6 +265,9 @@ struct e1000_adapter {
        struct e1000_phy_info phy_info;
        struct e1000_phy_stats phy_stats;
 
+       /* Snapshot of PHY registers */
+       struct e1000_phy_regs phy_regs;
+
        struct e1000_ring test_tx_ring;
        struct e1000_ring test_rx_ring;
        u32 test_icr;
@@ -262,7 +278,7 @@ struct e1000_adapter {
        u32 wol;
        u32 pba;
 
-       u8 fc_autoneg;
+       bool fc_autoneg;
 
        unsigned long led_status;
 
@@ -273,7 +289,7 @@ struct e1000_info {
        enum e1000_mac_type     mac;
        unsigned int            flags;
        u32                     pba;
-       s32                     (*get_invariants)(struct e1000_adapter *);
+       s32                     (*get_variants)(struct e1000_adapter *);
        struct e1000_mac_operations *mac_ops;
        struct e1000_phy_operations *phy_ops;
        struct e1000_nvm_operations *nvm_ops;
@@ -288,8 +304,6 @@ struct e1000_info {
 #define FLAG_HAS_CTRLEXT_ON_LOAD          (1 << 5)
 #define FLAG_HAS_SWSM_ON_LOAD             (1 << 6)
 #define FLAG_HAS_JUMBO_FRAMES             (1 << 7)
-#define FLAG_HAS_STATS_ICR_ICT            (1 << 9)
-#define FLAG_HAS_STATS_PTC_PRC            (1 << 10)
 #define FLAG_HAS_SMART_POWER_DOWN         (1 << 11)
 #define FLAG_IS_QUAD_PORT_A               (1 << 12)
 #define FLAG_IS_QUAD_PORT                 (1 << 13)
@@ -309,6 +323,7 @@ struct e1000_info {
 #define FLAG_MSI_ENABLED                  (1 << 27)
 #define FLAG_RX_CSUM_ENABLED              (1 << 28)
 #define FLAG_TSO_FORCE                    (1 << 29)
+#define FLAG_RX_RESTART_NOW               (1 << 30)
 
 #define E1000_RX_DESC_PS(R, i)     \
        (&(((union e1000_rx_desc_packet_split *)((R).desc))[i]))
@@ -358,7 +373,7 @@ extern struct e1000_info e1000_ich8_info;
 extern struct e1000_info e1000_ich9_info;
 extern struct e1000_info e1000_es2_info;
 
-extern s32 e1000e_read_part_num(struct e1000_hw *hw, u32 *part_num);
+extern s32 e1000e_read_pba_num(struct e1000_hw *hw, u32 *pba_num);
 
 extern s32  e1000e_commit_phy(struct e1000_hw *hw);
 
@@ -391,9 +406,11 @@ extern s32 e1000e_copper_link_setup_igp(struct e1000_hw *hw);
 extern s32 e1000e_setup_link(struct e1000_hw *hw);
 extern void e1000e_clear_vfta(struct e1000_hw *hw);
 extern void e1000e_init_rx_addrs(struct e1000_hw *hw, u16 rar_count);
-extern void e1000e_mc_addr_list_update_generic(struct e1000_hw *hw,
-                                      u8 *mc_addr_list, u32 mc_addr_count,
-                                      u32 rar_used_count, u32 rar_count);
+extern void e1000e_update_mc_addr_list_generic(struct e1000_hw *hw,
+                                              u8 *mc_addr_list,
+                                              u32 mc_addr_count,
+                                              u32 rar_used_count,
+                                              u32 rar_count);
 extern void e1000e_rar_set(struct e1000_hw *hw, u8 *addr, u32 index);
 extern s32 e1000e_set_fc_watermarks(struct e1000_hw *hw);
 extern void e1000e_set_pcie_no_snoop(struct e1000_hw *hw, u32 no_snoop);
@@ -432,6 +449,8 @@ extern s32 e1000e_read_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 *data);
 extern s32 e1000e_phy_has_link_generic(struct e1000_hw *hw, u32 iterations,
                               u32 usec_interval, bool *success);
 extern s32 e1000e_phy_reset_dsp(struct e1000_hw *hw);
+extern s32 e1000e_read_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 *data);
+extern s32 e1000e_write_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 data);
 extern s32 e1000e_check_downshift(struct e1000_hw *hw);
 
 static inline s32 e1000_phy_hw_reset(struct e1000_hw *hw)
@@ -463,7 +482,6 @@ extern s32 e1000e_acquire_nvm(struct e1000_hw *hw);
 extern s32 e1000e_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data);
 extern s32 e1000e_update_nvm_checksum_generic(struct e1000_hw *hw);
 extern s32 e1000e_poll_eerd_eewr_done(struct e1000_hw *hw, int ee_reg);
-extern s32 e1000e_read_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data);
 extern s32 e1000e_read_nvm_eerd(struct e1000_hw *hw, u16 offset, u16 words, u16 *data);
 extern s32 e1000e_validate_nvm_checksum_generic(struct e1000_hw *hw);
 extern void e1000e_release_nvm(struct e1000_hw *hw);