scrq             2675 drivers/net/ethernet/ibm/ibmvnic.c 				   struct ibmvnic_sub_crq_queue *scrq)
scrq             2679 drivers/net/ethernet/ibm/ibmvnic.c 	if (scrq->irq) {
scrq             2680 drivers/net/ethernet/ibm/ibmvnic.c 		free_irq(scrq->irq, scrq);
scrq             2681 drivers/net/ethernet/ibm/ibmvnic.c 		irq_dispose_mapping(scrq->irq);
scrq             2682 drivers/net/ethernet/ibm/ibmvnic.c 		scrq->irq = 0;
scrq             2685 drivers/net/ethernet/ibm/ibmvnic.c 	memset(scrq->msgs, 0, 4 * PAGE_SIZE);
scrq             2686 drivers/net/ethernet/ibm/ibmvnic.c 	atomic_set(&scrq->used, 0);
scrq             2687 drivers/net/ethernet/ibm/ibmvnic.c 	scrq->cur = 0;
scrq             2689 drivers/net/ethernet/ibm/ibmvnic.c 	rc = h_reg_sub_crq(adapter->vdev->unit_address, scrq->msg_token,
scrq             2690 drivers/net/ethernet/ibm/ibmvnic.c 			   4 * PAGE_SIZE, &scrq->crq_num, &scrq->hw_irq);
scrq             2716 drivers/net/ethernet/ibm/ibmvnic.c 				  struct ibmvnic_sub_crq_queue *scrq,
scrq             2729 drivers/net/ethernet/ibm/ibmvnic.c 						scrq->crq_num);
scrq             2735 drivers/net/ethernet/ibm/ibmvnic.c 				   scrq->crq_num, rc);
scrq             2739 drivers/net/ethernet/ibm/ibmvnic.c 	dma_unmap_single(dev, scrq->msg_token, 4 * PAGE_SIZE,
scrq             2741 drivers/net/ethernet/ibm/ibmvnic.c 	free_pages((unsigned long)scrq->msgs, 2);
scrq             2742 drivers/net/ethernet/ibm/ibmvnic.c 	kfree(scrq);
scrq             2749 drivers/net/ethernet/ibm/ibmvnic.c 	struct ibmvnic_sub_crq_queue *scrq;
scrq             2752 drivers/net/ethernet/ibm/ibmvnic.c 	scrq = kzalloc(sizeof(*scrq), GFP_KERNEL);
scrq             2753 drivers/net/ethernet/ibm/ibmvnic.c 	if (!scrq)
scrq             2756 drivers/net/ethernet/ibm/ibmvnic.c 	scrq->msgs =
scrq             2758 drivers/net/ethernet/ibm/ibmvnic.c 	if (!scrq->msgs) {
scrq             2763 drivers/net/ethernet/ibm/ibmvnic.c 	scrq->msg_token = dma_map_single(dev, scrq->msgs, 4 * PAGE_SIZE,
scrq             2765 drivers/net/ethernet/ibm/ibmvnic.c 	if (dma_mapping_error(dev, scrq->msg_token)) {
scrq             2770 drivers/net/ethernet/ibm/ibmvnic.c 	rc = h_reg_sub_crq(adapter->vdev->unit_address, scrq->msg_token,
scrq             2771 drivers/net/ethernet/ibm/ibmvnic.c 			   4 * PAGE_SIZE, &scrq->crq_num, &scrq->hw_irq);
scrq             2783 drivers/net/ethernet/ibm/ibmvnic.c 	scrq->adapter = adapter;
scrq             2784 drivers/net/ethernet/ibm/ibmvnic.c 	scrq->size = 4 * PAGE_SIZE / sizeof(*scrq->msgs);
scrq             2785 drivers/net/ethernet/ibm/ibmvnic.c 	spin_lock_init(&scrq->lock);
scrq             2789 drivers/net/ethernet/ibm/ibmvnic.c 		   scrq->crq_num, scrq->hw_irq, scrq->irq);
scrq             2791 drivers/net/ethernet/ibm/ibmvnic.c 	return scrq;
scrq             2794 drivers/net/ethernet/ibm/ibmvnic.c 	dma_unmap_single(dev, scrq->msg_token, 4 * PAGE_SIZE,
scrq             2797 drivers/net/ethernet/ibm/ibmvnic.c 	free_pages((unsigned long)scrq->msgs, 2);
scrq             2799 drivers/net/ethernet/ibm/ibmvnic.c 	kfree(scrq);
scrq             2856 drivers/net/ethernet/ibm/ibmvnic.c 			    struct ibmvnic_sub_crq_queue *scrq)
scrq             2862 drivers/net/ethernet/ibm/ibmvnic.c 				H_DISABLE_VIO_INTERRUPT, scrq->hw_irq, 0, 0);
scrq             2865 drivers/net/ethernet/ibm/ibmvnic.c 			scrq->hw_irq, rc);
scrq             2870 drivers/net/ethernet/ibm/ibmvnic.c 			   struct ibmvnic_sub_crq_queue *scrq)
scrq             2875 drivers/net/ethernet/ibm/ibmvnic.c 	if (scrq->hw_irq > 0x100000000ULL) {
scrq             2876 drivers/net/ethernet/ibm/ibmvnic.c 		dev_err(dev, "bad hw_irq = %lx\n", scrq->hw_irq);
scrq             2882 drivers/net/ethernet/ibm/ibmvnic.c 		u64 val = (0xff000000) | scrq->hw_irq;
scrq             2894 drivers/net/ethernet/ibm/ibmvnic.c 				H_ENABLE_VIO_INTERRUPT, scrq->hw_irq, 0, 0);
scrq             2897 drivers/net/ethernet/ibm/ibmvnic.c 			scrq->hw_irq, rc);
scrq             2902 drivers/net/ethernet/ibm/ibmvnic.c 			       struct ibmvnic_sub_crq_queue *scrq)
scrq             2912 drivers/net/ethernet/ibm/ibmvnic.c 	while (pending_scrq(adapter, scrq)) {
scrq             2913 drivers/net/ethernet/ibm/ibmvnic.c 		unsigned int pool = scrq->pool_index;
scrq             2916 drivers/net/ethernet/ibm/ibmvnic.c 		next = ibmvnic_next_scrq(adapter, scrq);
scrq             2955 drivers/net/ethernet/ibm/ibmvnic.c 		if (atomic_sub_return(num_entries, &scrq->used) <=
scrq             2958 drivers/net/ethernet/ibm/ibmvnic.c 					     scrq->pool_index)) {
scrq             2959 drivers/net/ethernet/ibm/ibmvnic.c 			netif_wake_subqueue(adapter->netdev, scrq->pool_index);
scrq             2961 drivers/net/ethernet/ibm/ibmvnic.c 				   scrq->pool_index);
scrq             2965 drivers/net/ethernet/ibm/ibmvnic.c 	enable_scrq_irq(adapter, scrq);
scrq             2967 drivers/net/ethernet/ibm/ibmvnic.c 	if (pending_scrq(adapter, scrq)) {
scrq             2968 drivers/net/ethernet/ibm/ibmvnic.c 		disable_scrq_irq(adapter, scrq);
scrq             2977 drivers/net/ethernet/ibm/ibmvnic.c 	struct ibmvnic_sub_crq_queue *scrq = instance;
scrq             2978 drivers/net/ethernet/ibm/ibmvnic.c 	struct ibmvnic_adapter *adapter = scrq->adapter;
scrq             2980 drivers/net/ethernet/ibm/ibmvnic.c 	disable_scrq_irq(adapter, scrq);
scrq             2981 drivers/net/ethernet/ibm/ibmvnic.c 	ibmvnic_complete_tx(adapter, scrq);
scrq             2988 drivers/net/ethernet/ibm/ibmvnic.c 	struct ibmvnic_sub_crq_queue *scrq = instance;
scrq             2989 drivers/net/ethernet/ibm/ibmvnic.c 	struct ibmvnic_adapter *adapter = scrq->adapter;
scrq             2997 drivers/net/ethernet/ibm/ibmvnic.c 	adapter->rx_stats_buffers[scrq->scrq_num].interrupts++;
scrq             2999 drivers/net/ethernet/ibm/ibmvnic.c 	if (napi_schedule_prep(&adapter->napi[scrq->scrq_num])) {
scrq             3000 drivers/net/ethernet/ibm/ibmvnic.c 		disable_scrq_irq(adapter, scrq);
scrq             3001 drivers/net/ethernet/ibm/ibmvnic.c 		__napi_schedule(&adapter->napi[scrq->scrq_num]);
scrq             3010 drivers/net/ethernet/ibm/ibmvnic.c 	struct ibmvnic_sub_crq_queue *scrq;
scrq             3017 drivers/net/ethernet/ibm/ibmvnic.c 		scrq = adapter->tx_scrq[i];
scrq             3018 drivers/net/ethernet/ibm/ibmvnic.c 		scrq->irq = irq_create_mapping(NULL, scrq->hw_irq);
scrq             3020 drivers/net/ethernet/ibm/ibmvnic.c 		if (!scrq->irq) {
scrq             3026 drivers/net/ethernet/ibm/ibmvnic.c 		snprintf(scrq->name, sizeof(scrq->name), "ibmvnic-%x-tx%d",
scrq             3028 drivers/net/ethernet/ibm/ibmvnic.c 		rc = request_irq(scrq->irq, ibmvnic_interrupt_tx,
scrq             3029 drivers/net/ethernet/ibm/ibmvnic.c 				 0, scrq->name, scrq);
scrq             3033 drivers/net/ethernet/ibm/ibmvnic.c 				scrq->irq, rc);
scrq             3034 drivers/net/ethernet/ibm/ibmvnic.c 			irq_dispose_mapping(scrq->irq);
scrq             3042 drivers/net/ethernet/ibm/ibmvnic.c 		scrq = adapter->rx_scrq[i];
scrq             3043 drivers/net/ethernet/ibm/ibmvnic.c 		scrq->irq = irq_create_mapping(NULL, scrq->hw_irq);
scrq             3044 drivers/net/ethernet/ibm/ibmvnic.c 		if (!scrq->irq) {
scrq             3049 drivers/net/ethernet/ibm/ibmvnic.c 		snprintf(scrq->name, sizeof(scrq->name), "ibmvnic-%x-rx%d",
scrq             3051 drivers/net/ethernet/ibm/ibmvnic.c 		rc = request_irq(scrq->irq, ibmvnic_interrupt_rx,
scrq             3052 drivers/net/ethernet/ibm/ibmvnic.c 				 0, scrq->name, scrq);
scrq             3055 drivers/net/ethernet/ibm/ibmvnic.c 				scrq->irq, rc);
scrq             3056 drivers/net/ethernet/ibm/ibmvnic.c 			irq_dispose_mapping(scrq->irq);
scrq             3290 drivers/net/ethernet/ibm/ibmvnic.c 			struct ibmvnic_sub_crq_queue *scrq)
scrq             3292 drivers/net/ethernet/ibm/ibmvnic.c 	union sub_crq *entry = &scrq->msgs[scrq->cur];
scrq             3301 drivers/net/ethernet/ibm/ibmvnic.c 					struct ibmvnic_sub_crq_queue *scrq)
scrq             3306 drivers/net/ethernet/ibm/ibmvnic.c 	spin_lock_irqsave(&scrq->lock, flags);
scrq             3307 drivers/net/ethernet/ibm/ibmvnic.c 	entry = &scrq->msgs[scrq->cur];
scrq             3309 drivers/net/ethernet/ibm/ibmvnic.c 		if (++scrq->cur == scrq->size)
scrq             3310 drivers/net/ethernet/ibm/ibmvnic.c 			scrq->cur = 0;
scrq             3314 drivers/net/ethernet/ibm/ibmvnic.c 	spin_unlock_irqrestore(&scrq->lock, flags);