igb: setup vlan tag replication stripping in igb_vmm_control
[deliverable/linux.git] / drivers / net / igb / igb.h
index 044ba02211cdff2bc469589a0eaaae529c1ff3a2..2416c12af3fed1fac0b8109781e25900c0fb3f1b 100644 (file)
@@ -87,9 +87,13 @@ struct vf_data_storage {
  *           descriptors until either it has this many to write back, or the
  *           ITR timer expires.
  */
-#define IGB_RX_PTHRESH                    16
+#define IGB_RX_PTHRESH                    (hw->mac.type <= e1000_82576 ? 16 : 8)
 #define IGB_RX_HTHRESH                     8
 #define IGB_RX_WTHRESH                     1
+#define IGB_TX_PTHRESH                     8
+#define IGB_TX_HTHRESH                     1
+#define IGB_TX_WTHRESH                     ((hw->mac.type == e1000_82576 && \
+                                             adapter->msix_entries) ? 0 : 16)
 
 /* this is the size past which hardware will drop packets when setting LPE=0 */
 #define MAXIMUM_ETHERNET_VLAN_SIZE 1522
@@ -141,12 +145,15 @@ struct igb_buffer {
 struct igb_tx_queue_stats {
        u64 packets;
        u64 bytes;
+       u64 restart_queue;
 };
 
 struct igb_rx_queue_stats {
        u64 packets;
        u64 bytes;
        u64 drops;
+       u64 csum_err;
+       u64 alloc_failed;
 };
 
 struct igb_q_vector {
@@ -168,14 +175,16 @@ struct igb_q_vector {
 
 struct igb_ring {
        struct igb_q_vector *q_vector; /* backlink to q_vector */
-       void *desc;                    /* descriptor ring memory */
+       struct net_device *netdev;     /* back pointer to net_device */
+       struct pci_dev *pdev;          /* pci device for dma mapping */
        dma_addr_t dma;                /* phys address of the ring */
+       void *desc;                    /* descriptor ring memory */
        unsigned int size;             /* length of desc. ring in bytes */
        unsigned int count;            /* number of desc. in the ring */
        u16 next_to_use;
        u16 next_to_clean;
-       u16 head;
-       u16 tail;
+       void __iomem *head;
+       void __iomem *tail;
        struct igb_buffer *buffer_info; /* array of buffer info structs */
 
        u8 queue_index;
@@ -184,6 +193,8 @@ struct igb_ring {
        unsigned int total_bytes;
        unsigned int total_packets;
 
+       u32 flags;
+
        union {
                /* TX */
                struct {
@@ -193,11 +204,18 @@ struct igb_ring {
                /* RX */
                struct {
                        struct igb_rx_queue_stats rx_stats;
-                       u64 rx_queue_drops;
+                       u32 rx_buffer_len;
                };
        };
 };
 
+#define IGB_RING_FLAG_RX_CSUM        0x00000001 /* RX CSUM enabled */
+#define IGB_RING_FLAG_RX_SCTP_CSUM   0x00000002 /* SCTP CSUM offload enabled */
+
+#define IGB_RING_FLAG_TX_CTX_IDX     0x00000001 /* HW requires context index */
+
+#define IGB_ADVTXD_DCMD (E1000_TXD_CMD_EOP | E1000_TXD_CMD_RS)
+
 #define E1000_RX_DESC_ADV(R, i)            \
        (&(((union e1000_adv_rx_desc *)((R).desc))[i]))
 #define E1000_TX_DESC_ADV(R, i)            \
@@ -213,7 +231,6 @@ struct igb_adapter {
        struct vlan_group *vlgrp;
        u16 mng_vlan_id;
        u32 bd_number;
-       u32 rx_buffer_len;
        u32 wol;
        u32 en_mng_pt;
        u16 link_speed;
@@ -237,9 +254,7 @@ struct igb_adapter {
 
        /* TX */
        struct igb_ring *tx_ring;      /* One per active queue */
-       unsigned int restart_queue;
        unsigned long tx_queue_len;
-       u32 txd_cmd;
        u32 gotc;
        u64 gotc_old;
        u64 tpt_old;
@@ -251,11 +266,8 @@ struct igb_adapter {
        int num_tx_queues;
        int num_rx_queues;
 
-       u64 hw_csum_err;
-       u32 alloc_rx_buff_failed;
        u32 gorc;
        u64 gorc_old;
-       u16 rx_ps_hdr_size;
        u32 max_frame_size;
        u32 min_frame_size;
 
@@ -300,8 +312,6 @@ struct igb_adapter {
 #define IGB_FLAG_HAS_MSI           (1 << 0)
 #define IGB_FLAG_DCA_ENABLED       (1 << 1)
 #define IGB_FLAG_QUAD_PORT_A       (1 << 2)
-#define IGB_FLAG_NEED_CTX_IDX      (1 << 3)
-#define IGB_FLAG_RX_CSUM_DISABLED  (1 << 4)
 
 enum e1000_state_t {
        __IGB_TESTING,
@@ -322,8 +332,8 @@ extern void igb_down(struct igb_adapter *);
 extern void igb_reinit_locked(struct igb_adapter *);
 extern void igb_reset(struct igb_adapter *);
 extern int igb_set_spd_dplx(struct igb_adapter *, u16);
-extern int igb_setup_tx_resources(struct igb_adapter *, struct igb_ring *);
-extern int igb_setup_rx_resources(struct igb_adapter *, struct igb_ring *);
+extern int igb_setup_tx_resources(struct igb_ring *);
+extern int igb_setup_rx_resources(struct igb_ring *);
 extern void igb_free_tx_resources(struct igb_ring *);
 extern void igb_free_rx_resources(struct igb_ring *);
 extern void igb_update_stats(struct igb_adapter *);
This page took 0.03237 seconds and 5 git commands to generate.