ixgbe: Remove unused emulation MAC storage from the per VF data structure.
[safe/jmp/linux-2.6] / drivers / net / ixgbe / ixgbe.h
index 7eb08a6..e576fb4 100644 (file)
@@ -1,7 +1,7 @@
 /*******************************************************************************
 
   Intel 10 Gigabit PCI Express Linux driver
-  Copyright(c) 1999 - 2009 Intel Corporation.
+  Copyright(c) 1999 - 2010 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,
                __func__ , ## args)))
 
 /* TX/RX descriptor defines */
-#define IXGBE_DEFAULT_TXD                 1024
+#define IXGBE_DEFAULT_TXD                  512
 #define IXGBE_MAX_TXD                     4096
 #define IXGBE_MIN_TXD                       64
 
-#define IXGBE_DEFAULT_RXD                 1024
+#define IXGBE_DEFAULT_RXD                  512
 #define IXGBE_MAX_RXD                     4096
 #define IXGBE_MIN_RXD                       64
 
 
 #define IXGBE_MAX_RSC_INT_RATE          162760
 
+#define IXGBE_MAX_VF_MC_ENTRIES         30
+#define IXGBE_MAX_VF_FUNCTIONS          64
+#define IXGBE_MAX_VFTA_ENTRIES          128
+#define MAX_EMULATION_MAC_ADDRS         16
+#define VMDQ_P(p)   ((p) + adapter->num_vfs)
+
+struct vf_data_storage {
+       unsigned char vf_mac_addresses[ETH_ALEN];
+       u16 vf_mc_hashes[IXGBE_MAX_VF_MC_ENTRIES];
+       u16 num_vf_mc_hashes;
+       u16 default_vf_vlan_id;
+       u16 vlans_enabled;
+       bool clear_to_send;
+       int rar;
+};
+
 /* wrapper around a pointer to a socket buffer,
  * so a DMA handle can be stored along with the buffer */
 struct ixgbe_tx_buffer {
@@ -106,6 +122,7 @@ struct ixgbe_tx_buffer {
        unsigned long time_stamp;
        u16 length;
        u16 next_to_watch;
+       u16 mapped_as_page;
 };
 
 struct ixgbe_rx_buffer {
@@ -159,15 +176,18 @@ struct ixgbe_ring {
        struct ixgbe_queue_stats stats;
        unsigned long reinit_state;
        u64 rsc_count;                  /* stat for coalesced packets */
+       u64 rsc_flush;                  /* stats for flushed packets */
+       u32 restart_queue;              /* track tx queue restarts */
+       u32 non_eop_descs;              /* track hardware descriptor chaining */
 
        unsigned int size;              /* length in bytes */
        dma_addr_t dma;                 /* phys. address of descriptor ring */
-};
+} ____cacheline_internodealigned_in_smp;
 
 enum ixgbe_ring_f_enum {
        RING_F_NONE = 0,
        RING_F_DCB,
-       RING_F_VMDQ,
+       RING_F_VMDQ,  /* SR-IOV uses the same ring feature */
        RING_F_RSS,
        RING_F_FDIR,
 #ifdef IXGBE_FCOE
@@ -179,7 +199,7 @@ enum ixgbe_ring_f_enum {
 
 #define IXGBE_MAX_DCB_INDICES   8
 #define IXGBE_MAX_RSS_INDICES  16
-#define IXGBE_MAX_VMDQ_INDICES 16
+#define IXGBE_MAX_VMDQ_INDICES 64
 #define IXGBE_MAX_FDIR_INDICES 64
 #ifdef IXGBE_FCOE
 #define IXGBE_MAX_FCOE_INDICES  8
@@ -187,7 +207,7 @@ enum ixgbe_ring_f_enum {
 struct ixgbe_ring_feature {
        int indices;
        int mask;
-};
+} ____cacheline_internodealigned_in_smp;
 
 #define MAX_RX_QUEUES 128
 #define MAX_TX_QUEUES 128
@@ -273,29 +293,27 @@ struct ixgbe_adapter {
        u16 eitr_high;
 
        /* TX */
-       struct ixgbe_ring *tx_ring;     /* One per active queue */
+       struct ixgbe_ring *tx_ring ____cacheline_aligned_in_smp; /* One per active queue */
        int num_tx_queues;
-       u64 restart_queue;
-       u64 hw_csum_tx_good;
-       u64 lsc_int;
-       u64 hw_tso_ctxt;
-       u64 hw_tso6_ctxt;
        u32 tx_timeout_count;
        bool detect_tx_hung;
 
+       u64 restart_queue;
+       u64 lsc_int;
+
        /* RX */
-       struct ixgbe_ring *rx_ring;     /* One per active queue */
+       struct ixgbe_ring *rx_ring ____cacheline_aligned_in_smp; /* One per active queue */
        int num_rx_queues;
+       int num_rx_pools;               /* == num_rx_queues in 82598 */
+       int num_rx_queues_per_pool;     /* 1 if 82598, can be many if 82599 */
        u64 hw_csum_rx_error;
        u64 hw_rx_no_dma_resources;
-       u64 hw_csum_rx_good;
        u64 non_eop_descs;
        int num_msix_vectors;
        int max_msix_q_vectors;         /* true count of q_vectors for device */
        struct ixgbe_ring_feature ring_feature[RING_F_ARRAY_SIZE];
        struct msix_entry *msix_entries;
 
-       u64 rx_hdr_split;
        u32 alloc_rx_page_failed;
        u32 alloc_rx_buff_failed;
 
@@ -330,6 +348,8 @@ struct ixgbe_adapter {
 #define IXGBE_FLAG_FDIR_PERFECT_CAPABLE         (u32)(1 << 27)
 #define IXGBE_FLAG_FCOE_CAPABLE                 (u32)(1 << 28)
 #define IXGBE_FLAG_FCOE_ENABLED                 (u32)(1 << 29)
+#define IXGBE_FLAG_SRIOV_CAPABLE                (u32)(1 << 30)
+#define IXGBE_FLAG_SRIOV_ENABLED                (u32)(1 << 31)
 
        u32 flags2;
 #define IXGBE_FLAG2_RSC_CAPABLE                 (u32)(1)
@@ -375,9 +395,15 @@ struct ixgbe_adapter {
 #ifdef IXGBE_FCOE
        struct ixgbe_fcoe fcoe;
 #endif /* IXGBE_FCOE */
-       u64 rsc_count;
+       u64 rsc_total_count;
+       u64 rsc_total_flush;
        u32 wol;
        u16 eeprom_version;
+
+       /* SR-IOV */
+       DECLARE_BITMAP(active_vfs, IXGBE_MAX_VF_FUNCTIONS);
+       unsigned int num_vfs;
+       struct vf_data_storage *vfinfo;
 };
 
 enum ixbge_state_t {
@@ -439,6 +465,7 @@ extern s32 ixgbe_atr_set_flex_byte_82599(struct ixgbe_atr_input *input,
                                          u16 flex_byte);
 extern s32 ixgbe_atr_set_l4type_82599(struct ixgbe_atr_input *input,
                                       u8 l4type);
+extern void ixgbe_set_rx_mode(struct net_device *netdev);
 #ifdef IXGBE_FCOE
 extern void ixgbe_configure_fcoe(struct ixgbe_adapter *adapter);
 extern int ixgbe_fso(struct ixgbe_adapter *adapter,