Lines Matching refs:pkt

227 			       struct xenvif_pkt_state *pkt)  in xenvif_rx_next_skb()  argument
238 memset(pkt, 0, sizeof(struct xenvif_pkt_state)); in xenvif_rx_next_skb()
240 pkt->skb = skb; in xenvif_rx_next_skb()
241 pkt->frag_iter = skb; in xenvif_rx_next_skb()
242 pkt->remaining_len = skb->len; in xenvif_rx_next_skb()
243 pkt->frag = -1; in xenvif_rx_next_skb()
249 extra = &pkt->extras[XEN_NETIF_EXTRA_TYPE_GSO - 1]; in xenvif_rx_next_skb()
258 pkt->extra_count++; in xenvif_rx_next_skb()
264 extra = &pkt->extras[XEN_NETIF_EXTRA_TYPE_HASH - 1]; in xenvif_rx_next_skb()
285 pkt->extra_count++; in xenvif_rx_next_skb()
290 struct xenvif_pkt_state *pkt) in xenvif_rx_complete() argument
295 __skb_queue_tail(queue->rx_copy.completed, pkt->skb); in xenvif_rx_complete()
298 static void xenvif_rx_next_frag(struct xenvif_pkt_state *pkt) in xenvif_rx_next_frag() argument
300 struct sk_buff *frag_iter = pkt->frag_iter; in xenvif_rx_next_frag()
303 pkt->frag++; in xenvif_rx_next_frag()
304 pkt->frag_offset = 0; in xenvif_rx_next_frag()
306 if (pkt->frag >= nr_frags) { in xenvif_rx_next_frag()
307 if (frag_iter == pkt->skb) in xenvif_rx_next_frag()
308 pkt->frag_iter = skb_shinfo(frag_iter)->frag_list; in xenvif_rx_next_frag()
310 pkt->frag_iter = frag_iter->next; in xenvif_rx_next_frag()
312 pkt->frag = -1; in xenvif_rx_next_frag()
317 struct xenvif_pkt_state *pkt, in xenvif_rx_next_chunk() argument
321 struct sk_buff *frag_iter = pkt->frag_iter; in xenvif_rx_next_chunk()
327 if (pkt->frag == -1) { in xenvif_rx_next_chunk()
331 skb_frag_t *frag = &skb_shinfo(frag_iter)->frags[pkt->frag]; in xenvif_rx_next_chunk()
337 frag_data += pkt->frag_offset; in xenvif_rx_next_chunk()
338 frag_len -= pkt->frag_offset; in xenvif_rx_next_chunk()
344 pkt->frag_offset += chunk_len; in xenvif_rx_next_chunk()
348 xenvif_rx_next_frag(pkt); in xenvif_rx_next_chunk()
355 struct xenvif_pkt_state *pkt, in xenvif_rx_data_slot() argument
366 xenvif_rx_next_chunk(queue, pkt, offset, &data, &len); in xenvif_rx_data_slot()
370 pkt->remaining_len -= len; in xenvif_rx_data_slot()
372 } while (offset < XEN_PAGE_SIZE && pkt->remaining_len > 0); in xenvif_rx_data_slot()
374 if (pkt->remaining_len > 0) in xenvif_rx_data_slot()
379 if (pkt->slot == 0) { in xenvif_rx_data_slot()
380 struct sk_buff *skb = pkt->skb; in xenvif_rx_data_slot()
388 if (pkt->extra_count != 0) in xenvif_rx_data_slot()
399 struct xenvif_pkt_state *pkt, in xenvif_rx_extra_slot() argument
406 pkt->extra_count--; in xenvif_rx_extra_slot()
408 for (i = 0; i < ARRAY_SIZE(pkt->extras); i++) { in xenvif_rx_extra_slot()
409 if (pkt->extras[i].type) { in xenvif_rx_extra_slot()
410 *extra = pkt->extras[i]; in xenvif_rx_extra_slot()
412 if (pkt->extra_count != 0) in xenvif_rx_extra_slot()
415 pkt->extras[i].type = 0; in xenvif_rx_extra_slot()
424 struct xenvif_pkt_state pkt; in xenvif_rx_skb() local
426 xenvif_rx_next_skb(queue, &pkt); in xenvif_rx_skb()
438 if (pkt.slot != 0 && pkt.extra_count != 0) in xenvif_rx_skb()
439 xenvif_rx_extra_slot(queue, &pkt, req, rsp); in xenvif_rx_skb()
441 xenvif_rx_data_slot(queue, &pkt, req, rsp); in xenvif_rx_skb()
444 pkt.slot++; in xenvif_rx_skb()
445 } while (pkt.remaining_len > 0 || pkt.extra_count != 0); in xenvif_rx_skb()
447 xenvif_rx_complete(queue, &pkt); in xenvif_rx_skb()