sunvnet: Use one Tx queue per vnet_port
[deliverable/linux.git] / drivers / net / ethernet / sun / sunvnet.h
index de5c2c64996f34c5eb76e5376a71d93b72ebf490..cd5d343ea2321a90a90085510a0d3ecb8dcc52dc 100644 (file)
  */
 #define VNET_TX_TIMEOUT                        (5 * HZ)
 
+/* length of time (or less) we expect pending descriptors to be marked
+ * as VIO_DESC_DONE and skbs ready to be freed
+ */
+#define        VNET_CLEAN_TIMEOUT              ((HZ/100)+1)
+
+#define VNET_MAXPACKET                 (65535ULL + ETH_HLEN + VLAN_HLEN)
 #define VNET_TX_RING_SIZE              512
 #define VNET_TX_WAKEUP_THRESH(dr)      ((dr)->pending / 4)
 
  */
 #define VNET_PACKET_SKIP               6
 
+#define VNET_MAXCOOKIES                        (VNET_MAXPACKET/PAGE_SIZE + 1)
+
 struct vnet_tx_entry {
-       void                    *buf;
+       struct sk_buff          *skb;
        unsigned int            ncookies;
-       struct ldc_trans_cookie cookies[2];
+       struct ldc_trans_cookie cookies[VNET_MAXCOOKIES];
 };
 
 struct vnet;
@@ -40,6 +48,20 @@ struct vnet_port {
        struct vnet_tx_entry    tx_bufs[VNET_TX_RING_SIZE];
 
        struct list_head        list;
+
+       u32                     stop_rx_idx;
+       bool                    stop_rx;
+       bool                    start_cons;
+
+       struct timer_list       clean_timer;
+
+       u64                     rmtu;
+
+       struct napi_struct      napi;
+       u32                     napi_stop_idx;
+       bool                    napi_resume;
+       int                     rx_event;
+       u16                     q_index;
 };
 
 static inline struct vnet_port *to_vnet_port(struct vio_driver_state *vio)
@@ -81,7 +103,7 @@ struct vnet {
        struct list_head        list;
        u64                     local_mac;
 
-       struct tasklet_struct   vnet_tx_wakeup;
+       int                     nports;
 };
 
 #endif /* _SUNVNET_H */
This page took 0.025169 seconds and 5 git commands to generate.