ixgbe: add a netdev pointer to the ring structure
[deliverable/linux.git] / drivers / net / ixgbe / ixgbe.h
index 149cf26b25452b4c611f0c19d64c0401d6c6eccb..dc4b97e5777f7d9a43a70f32fbbad4e1e12cea4f 100644 (file)
@@ -146,8 +146,23 @@ struct ixgbe_queue_stats {
        u64 bytes;
 };
 
+struct ixgbe_tx_queue_stats {
+       u64 restart_queue;
+       u64 tx_busy;
+};
+
+struct ixgbe_rx_queue_stats {
+       u64 rsc_count;
+       u64 rsc_flush;
+       u64 non_eop_descs;
+       u64 alloc_rx_page_failed;
+       u64 alloc_rx_buff_failed;
+};
+
 struct ixgbe_ring {
        void *desc;                     /* descriptor ring memory */
+       struct device *dev;             /* device for DMA mapping */
+       struct net_device *netdev;      /* netdev ring belongs to */
        union {
                struct ixgbe_tx_buffer *tx_buffer_info;
                struct ixgbe_rx_buffer *rx_buffer_info;
@@ -163,8 +178,7 @@ struct ixgbe_ring {
 
 #define IXGBE_RING_RX_PS_ENABLED                (u8)(1)
        u8 flags;                       /* per ring feature flags */
-       u16 head;
-       u16 tail;
+       u8 __iomem *tail;
 
        unsigned int total_bytes;
        unsigned int total_packets;
@@ -183,13 +197,12 @@ struct ixgbe_ring {
 
        struct ixgbe_queue_stats stats;
        struct u64_stats_sync syncp;
-       int numa_node;
+       union {
+               struct ixgbe_tx_queue_stats tx_stats;
+               struct ixgbe_rx_queue_stats rx_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 */
-
+       int numa_node;
        unsigned int size;              /* length in bytes */
        dma_addr_t dma;                 /* phys. address of descriptor ring */
        struct rcu_head rcu;
@@ -455,24 +468,21 @@ extern void ixgbe_down(struct ixgbe_adapter *adapter);
 extern void ixgbe_reinit_locked(struct ixgbe_adapter *adapter);
 extern void ixgbe_reset(struct ixgbe_adapter *adapter);
 extern void ixgbe_set_ethtool_ops(struct net_device *netdev);
-extern int ixgbe_setup_rx_resources(struct ixgbe_adapter *, struct ixgbe_ring *);
-extern int ixgbe_setup_tx_resources(struct ixgbe_adapter *, struct ixgbe_ring *);
-extern void ixgbe_free_rx_resources(struct ixgbe_adapter *, struct ixgbe_ring *);
-extern void ixgbe_free_tx_resources(struct ixgbe_adapter *, struct ixgbe_ring *);
+extern int ixgbe_setup_rx_resources(struct ixgbe_ring *);
+extern int ixgbe_setup_tx_resources(struct ixgbe_ring *);
+extern void ixgbe_free_rx_resources(struct ixgbe_ring *);
+extern void ixgbe_free_tx_resources(struct ixgbe_ring *);
 extern void ixgbe_configure_rx_ring(struct ixgbe_adapter *,struct ixgbe_ring *);
 extern void ixgbe_configure_tx_ring(struct ixgbe_adapter *,struct ixgbe_ring *);
 extern void ixgbe_update_stats(struct ixgbe_adapter *adapter);
 extern int ixgbe_init_interrupt_scheme(struct ixgbe_adapter *adapter);
 extern void ixgbe_clear_interrupt_scheme(struct ixgbe_adapter *adapter);
 extern netdev_tx_t ixgbe_xmit_frame_ring(struct sk_buff *,
-                                        struct net_device *,
                                         struct ixgbe_adapter *,
                                         struct ixgbe_ring *);
-extern void ixgbe_unmap_and_free_tx_resource(struct ixgbe_adapter *,
+extern void ixgbe_unmap_and_free_tx_resource(struct ixgbe_ring *,
                                              struct ixgbe_tx_buffer *);
-extern void ixgbe_alloc_rx_buffers(struct ixgbe_adapter *adapter,
-                                   struct ixgbe_ring *rx_ring,
-                                  u16 cleaned_count);
+extern void ixgbe_alloc_rx_buffers(struct ixgbe_ring *, u16);
 extern void ixgbe_write_eitr(struct ixgbe_q_vector *);
 extern int ethtool_ioctl(struct ifreq *ifr);
 extern s32 ixgbe_reinit_fdir_tables_82599(struct ixgbe_hw *hw);
This page took 0.024926 seconds and 5 git commands to generate.