aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/xen-netback/common.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/xen-netback/common.h')
-rw-r--r--drivers/net/xen-netback/common.h26
1 files changed, 9 insertions, 17 deletions
diff --git a/drivers/net/xen-netback/common.h b/drivers/net/xen-netback/common.h
index c47794b9d42f..ae413a2cbee7 100644
--- a/drivers/net/xen-netback/common.h
+++ b/drivers/net/xen-netback/common.h
@@ -143,12 +143,7 @@ struct xenvif {
143 char rx_irq_name[IFNAMSIZ+4]; /* DEVNAME-rx */ 143 char rx_irq_name[IFNAMSIZ+4]; /* DEVNAME-rx */
144 struct xen_netif_rx_back_ring rx; 144 struct xen_netif_rx_back_ring rx;
145 struct sk_buff_head rx_queue; 145 struct sk_buff_head rx_queue;
146 146 RING_IDX rx_last_skb_slots;
147 /* Allow xenvif_start_xmit() to peek ahead in the rx request
148 * ring. This is a prediction of what rx_req_cons will be
149 * once all queued skbs are put on the ring.
150 */
151 RING_IDX rx_req_cons_peek;
152 147
153 /* This array is allocated seperately as it is large */ 148 /* This array is allocated seperately as it is large */
154 struct gnttab_copy *grant_copy_op; 149 struct gnttab_copy *grant_copy_op;
@@ -205,8 +200,6 @@ void xenvif_xenbus_fini(void);
205 200
206int xenvif_schedulable(struct xenvif *vif); 201int xenvif_schedulable(struct xenvif *vif);
207 202
208int xenvif_rx_ring_full(struct xenvif *vif);
209
210int xenvif_must_stop_queue(struct xenvif *vif); 203int xenvif_must_stop_queue(struct xenvif *vif);
211 204
212/* (Un)Map communication rings. */ 205/* (Un)Map communication rings. */
@@ -218,21 +211,20 @@ int xenvif_map_frontend_rings(struct xenvif *vif,
218/* Check for SKBs from frontend and schedule backend processing */ 211/* Check for SKBs from frontend and schedule backend processing */
219void xenvif_check_rx_xenvif(struct xenvif *vif); 212void xenvif_check_rx_xenvif(struct xenvif *vif);
220 213
221/* Queue an SKB for transmission to the frontend */
222void xenvif_queue_tx_skb(struct xenvif *vif, struct sk_buff *skb);
223/* Notify xenvif that ring now has space to send an skb to the frontend */
224void xenvif_notify_tx_completion(struct xenvif *vif);
225
226/* Prevent the device from generating any further traffic. */ 214/* Prevent the device from generating any further traffic. */
227void xenvif_carrier_off(struct xenvif *vif); 215void xenvif_carrier_off(struct xenvif *vif);
228 216
229/* Returns number of ring slots required to send an skb to the frontend */
230unsigned int xenvif_count_skb_slots(struct xenvif *vif, struct sk_buff *skb);
231
232int xenvif_tx_action(struct xenvif *vif, int budget); 217int xenvif_tx_action(struct xenvif *vif, int budget);
233void xenvif_rx_action(struct xenvif *vif);
234 218
235int xenvif_kthread(void *data); 219int xenvif_kthread(void *data);
220void xenvif_kick_thread(struct xenvif *vif);
221
222/* Determine whether the needed number of slots (req) are available,
223 * and set req_event if not.
224 */
225bool xenvif_rx_ring_slots_available(struct xenvif *vif, int needed);
226
227void xenvif_stop_queue(struct xenvif *vif);
236 228
237extern bool separate_tx_rx_irq; 229extern bool separate_tx_rx_irq;
238 230