/* This function comes into picture only if Receive side is being handled through polling (called NAPI in linux). It mostly does what the normal Rx interrupt handler does in terms of descriptor and packet processing but not in an interrupt context. Also it will process a specified number of packets at most in one iteration. This value is passed down by the kernel as the function argument 'budget'.  */
static int vxge_poll_msix(struct napi_struct *napi, int budget)
/* This function comes into picture only if Receive side is being handled through polling (called NAPI in linux). It mostly does what the normal Rx interrupt handler does in terms of descriptor and packet processing but not in an interrupt context. Also it will process a specified number of packets at most in one iteration. This value is passed down by the kernel as the function argument 'budget'.  */
static int vxge_poll_msix(struct napi_struct *napi, int budget)
{
	struct vxge_ring *ring =
		container_of(napi, struct vxge_ring, napi);
	int budget_org = budget;
	ring->budget = budget;
	vxge_hw_vpath_poll_rx(ring->handle);
	if (ring->pkts_processed < budget_org) {
		napi_complete(napi);
		vxge_hw_channel_msix_unmask(
				(struct __vxge_hw_channel *)ring->handle,
				ring->rx_vector_no);
	}
	return ring->pkts_processed;
}