/* ixgbe_receive_skb - Send a completed packet up the stack @adapter: board private structure @skb: packet to send up @status: hardware indication of status of receive @rx_ring: rx descriptor ring (for a specific queue) to setup @rx_desc: rx descriptor  */
static void ixgbe_receive_skb(struct ixgbe_q_vector *q_vector, struct sk_buff *skb, u8 status, struct ixgbe_ring *ring, union ixgbe_adv_rx_desc *rx_desc)
/* ixgbe_receive_skb - Send a completed packet up the stack @adapter: board private structure @skb: packet to send up @status: hardware indication of status of receive @rx_ring: rx descriptor ring (for a specific queue) to setup @rx_desc: rx descriptor  */
static void ixgbe_receive_skb(struct ixgbe_q_vector *q_vector, struct sk_buff *skb, u8 status, struct ixgbe_ring *ring, union ixgbe_adv_rx_desc *rx_desc)
{
	struct ixgbe_adapter *adapter = q_vector->adapter;
	struct napi_struct *napi = &q_vector->napi;
	bool is_vlan = (status & IXGBE_RXD_STAT_VP);
	u16 tag = le16_to_cpu(rx_desc->wb.upper.vlan);
	skb_record_rx_queue(skb, ring->queue_index);
	if (!(adapter->flags & IXGBE_FLAG_IN_NETPOLL)) {
		if (adapter->vlgrp && is_vlan && (tag & VLAN_VID_MASK))
			vlan_gro_receive(napi, adapter->vlgrp, tag, skb);
		else
			napi_gro_receive(napi, skb);
	} else {
		if (adapter->vlgrp && is_vlan && (tag & VLAN_VID_MASK))
			vlan_hwaccel_rx(skb, adapter->vlgrp, tag);
		else
			netif_rx(skb);
	}
}