Lines Matching refs:pkt
253 struct xenvif_pkt_state *pkt) in xenvif_rx_next_skb() argument
264 memset(pkt, 0, sizeof(struct xenvif_pkt_state)); in xenvif_rx_next_skb()
266 pkt->skb = skb; in xenvif_rx_next_skb()
267 pkt->frag_iter = skb; in xenvif_rx_next_skb()
268 pkt->remaining_len = skb->len; in xenvif_rx_next_skb()
269 pkt->frag = -1; in xenvif_rx_next_skb()
275 extra = &pkt->extras[XEN_NETIF_EXTRA_TYPE_GSO - 1]; in xenvif_rx_next_skb()
284 pkt->extra_count++; in xenvif_rx_next_skb()
290 extra = &pkt->extras[XEN_NETIF_EXTRA_TYPE_XDP - 1]; in xenvif_rx_next_skb()
297 pkt->extra_count++; in xenvif_rx_next_skb()
303 extra = &pkt->extras[XEN_NETIF_EXTRA_TYPE_HASH - 1]; in xenvif_rx_next_skb()
324 pkt->extra_count++; in xenvif_rx_next_skb()
329 struct xenvif_pkt_state *pkt) in xenvif_rx_complete() argument
334 __skb_queue_tail(queue->rx_copy.completed, pkt->skb); in xenvif_rx_complete()
337 static void xenvif_rx_next_frag(struct xenvif_pkt_state *pkt) in xenvif_rx_next_frag() argument
339 struct sk_buff *frag_iter = pkt->frag_iter; in xenvif_rx_next_frag()
342 pkt->frag++; in xenvif_rx_next_frag()
343 pkt->frag_offset = 0; in xenvif_rx_next_frag()
345 if (pkt->frag >= nr_frags) { in xenvif_rx_next_frag()
346 if (frag_iter == pkt->skb) in xenvif_rx_next_frag()
347 pkt->frag_iter = skb_shinfo(frag_iter)->frag_list; in xenvif_rx_next_frag()
349 pkt->frag_iter = frag_iter->next; in xenvif_rx_next_frag()
351 pkt->frag = -1; in xenvif_rx_next_frag()
356 struct xenvif_pkt_state *pkt, in xenvif_rx_next_chunk() argument
360 struct sk_buff *frag_iter = pkt->frag_iter; in xenvif_rx_next_chunk()
366 if (pkt->frag == -1) { in xenvif_rx_next_chunk()
370 skb_frag_t *frag = &skb_shinfo(frag_iter)->frags[pkt->frag]; in xenvif_rx_next_chunk()
376 frag_data += pkt->frag_offset; in xenvif_rx_next_chunk()
377 frag_len -= pkt->frag_offset; in xenvif_rx_next_chunk()
383 pkt->frag_offset += chunk_len; in xenvif_rx_next_chunk()
387 xenvif_rx_next_frag(pkt); in xenvif_rx_next_chunk()
394 struct xenvif_pkt_state *pkt, in xenvif_rx_data_slot() argument
405 xenvif_rx_next_chunk(queue, pkt, offset, &data, &len); in xenvif_rx_data_slot()
409 pkt->remaining_len -= len; in xenvif_rx_data_slot()
411 } while (offset < XEN_PAGE_SIZE && pkt->remaining_len > 0); in xenvif_rx_data_slot()
413 if (pkt->remaining_len > 0) in xenvif_rx_data_slot()
418 if (pkt->slot == 0) { in xenvif_rx_data_slot()
419 struct sk_buff *skb = pkt->skb; in xenvif_rx_data_slot()
427 if (pkt->extra_count != 0) in xenvif_rx_data_slot()
438 struct xenvif_pkt_state *pkt, in xenvif_rx_extra_slot() argument
445 pkt->extra_count--; in xenvif_rx_extra_slot()
447 for (i = 0; i < ARRAY_SIZE(pkt->extras); i++) { in xenvif_rx_extra_slot()
448 if (pkt->extras[i].type) { in xenvif_rx_extra_slot()
449 *extra = pkt->extras[i]; in xenvif_rx_extra_slot()
451 if (pkt->extra_count != 0) in xenvif_rx_extra_slot()
454 pkt->extras[i].type = 0; in xenvif_rx_extra_slot()
463 struct xenvif_pkt_state pkt; in xenvif_rx_skb() local
465 xenvif_rx_next_skb(queue, &pkt); in xenvif_rx_skb()
477 if (pkt.slot != 0 && pkt.extra_count != 0) in xenvif_rx_skb()
478 xenvif_rx_extra_slot(queue, &pkt, req, rsp); in xenvif_rx_skb()
480 xenvif_rx_data_slot(queue, &pkt, req, rsp); in xenvif_rx_skb()
483 pkt.slot++; in xenvif_rx_skb()
484 } while (pkt.remaining_len > 0 || pkt.extra_count != 0); in xenvif_rx_skb()
486 xenvif_rx_complete(queue, &pkt); in xenvif_rx_skb()