Lines Matching refs:q_vector

795 static void igb_assign_vector(struct igb_q_vector *q_vector, int msix_vector)  in igb_assign_vector()  argument
797 struct igb_adapter *adapter = q_vector->adapter; in igb_assign_vector()
803 if (q_vector->rx.ring) in igb_assign_vector()
804 rx_queue = q_vector->rx.ring->reg_idx; in igb_assign_vector()
805 if (q_vector->tx.ring) in igb_assign_vector()
806 tx_queue = q_vector->tx.ring->reg_idx; in igb_assign_vector()
822 q_vector->eims_value = msixbm; in igb_assign_vector()
838 q_vector->eims_value = 1 << msix_vector; in igb_assign_vector()
859 q_vector->eims_value = 1 << msix_vector; in igb_assign_vector()
867 adapter->eims_enable_mask |= q_vector->eims_value; in igb_assign_vector()
870 q_vector->set_itr = 1; in igb_assign_vector()
934 igb_assign_vector(adapter->q_vector[i], vector++); in igb_configure_msix()
958 struct igb_q_vector *q_vector = adapter->q_vector[i]; in igb_request_msix() local
962 q_vector->itr_register = hw->hw_addr + E1000_EITR(vector); in igb_request_msix()
964 if (q_vector->rx.ring && q_vector->tx.ring) in igb_request_msix()
965 sprintf(q_vector->name, "%s-TxRx-%u", netdev->name, in igb_request_msix()
966 q_vector->rx.ring->queue_index); in igb_request_msix()
967 else if (q_vector->tx.ring) in igb_request_msix()
968 sprintf(q_vector->name, "%s-tx-%u", netdev->name, in igb_request_msix()
969 q_vector->tx.ring->queue_index); in igb_request_msix()
970 else if (q_vector->rx.ring) in igb_request_msix()
971 sprintf(q_vector->name, "%s-rx-%u", netdev->name, in igb_request_msix()
972 q_vector->rx.ring->queue_index); in igb_request_msix()
974 sprintf(q_vector->name, "%s-unused", netdev->name); in igb_request_msix()
977 igb_msix_ring, 0, q_vector->name, in igb_request_msix()
978 q_vector); in igb_request_msix()
993 adapter->q_vector[i]); in igb_request_msix()
1008 struct igb_q_vector *q_vector = adapter->q_vector[v_idx]; in igb_free_q_vector() local
1010 adapter->q_vector[v_idx] = NULL; in igb_free_q_vector()
1015 if (q_vector) in igb_free_q_vector()
1016 kfree_rcu(q_vector, rcu); in igb_free_q_vector()
1029 struct igb_q_vector *q_vector = adapter->q_vector[v_idx]; in igb_reset_q_vector() local
1034 if (!q_vector) in igb_reset_q_vector()
1037 if (q_vector->tx.ring) in igb_reset_q_vector()
1038 adapter->tx_ring[q_vector->tx.ring->queue_index] = NULL; in igb_reset_q_vector()
1040 if (q_vector->rx.ring) in igb_reset_q_vector()
1041 adapter->rx_ring[q_vector->rx.ring->queue_index] = NULL; in igb_reset_q_vector()
1043 netif_napi_del(&q_vector->napi); in igb_reset_q_vector()
1196 struct igb_q_vector *q_vector; in igb_alloc_q_vector() local
1209 q_vector = adapter->q_vector[v_idx]; in igb_alloc_q_vector()
1210 if (!q_vector) { in igb_alloc_q_vector()
1211 q_vector = kzalloc(size, GFP_KERNEL); in igb_alloc_q_vector()
1212 } else if (size > ksize(q_vector)) { in igb_alloc_q_vector()
1213 kfree_rcu(q_vector, rcu); in igb_alloc_q_vector()
1214 q_vector = kzalloc(size, GFP_KERNEL); in igb_alloc_q_vector()
1216 memset(q_vector, 0, size); in igb_alloc_q_vector()
1218 if (!q_vector) in igb_alloc_q_vector()
1222 netif_napi_add(adapter->netdev, &q_vector->napi, in igb_alloc_q_vector()
1226 adapter->q_vector[v_idx] = q_vector; in igb_alloc_q_vector()
1227 q_vector->adapter = adapter; in igb_alloc_q_vector()
1230 q_vector->tx.work_limit = adapter->tx_work_limit; in igb_alloc_q_vector()
1233 q_vector->itr_register = adapter->hw.hw_addr + E1000_EITR(0); in igb_alloc_q_vector()
1234 q_vector->itr_val = IGB_START_ITR; in igb_alloc_q_vector()
1237 ring = q_vector->ring; in igb_alloc_q_vector()
1243 q_vector->itr_val = adapter->rx_itr_setting; in igb_alloc_q_vector()
1247 q_vector->itr_val = adapter->tx_itr_setting; in igb_alloc_q_vector()
1256 ring->q_vector = q_vector; in igb_alloc_q_vector()
1259 igb_add_ring(ring, &q_vector->tx); in igb_alloc_q_vector()
1285 ring->q_vector = q_vector; in igb_alloc_q_vector()
1288 igb_add_ring(ring, &q_vector->rx); in igb_alloc_q_vector()
1433 igb_assign_vector(adapter->q_vector[0], 0); in igb_request_irq()
1466 adapter->q_vector[i]); in igb_free_irq()
1738 napi_enable(&(adapter->q_vector[i]->napi)); in igb_up()
1743 igb_assign_vector(adapter->q_vector[0], 0); in igb_up()
1803 if (adapter->q_vector[i]) { in igb_down()
1804 napi_synchronize(&adapter->q_vector[i]->napi); in igb_down()
1805 napi_disable(&adapter->q_vector[i]->napi); in igb_down()
3085 napi_enable(&(adapter->q_vector[i]->napi)); in __igb_open()
4386 eics |= adapter->q_vector[i]->eims_value; in igb_watchdog_task()
4433 static void igb_update_ring_itr(struct igb_q_vector *q_vector) in igb_update_ring_itr() argument
4435 int new_val = q_vector->itr_val; in igb_update_ring_itr()
4437 struct igb_adapter *adapter = q_vector->adapter; in igb_update_ring_itr()
4448 packets = q_vector->rx.total_packets; in igb_update_ring_itr()
4450 avg_wire_size = q_vector->rx.total_bytes / packets; in igb_update_ring_itr()
4452 packets = q_vector->tx.total_packets; in igb_update_ring_itr()
4455 q_vector->tx.total_bytes / packets); in igb_update_ring_itr()
4475 ((q_vector->rx.ring && adapter->rx_itr_setting == 3) || in igb_update_ring_itr()
4476 (!q_vector->rx.ring && adapter->tx_itr_setting == 3))) in igb_update_ring_itr()
4480 if (new_val != q_vector->itr_val) { in igb_update_ring_itr()
4481 q_vector->itr_val = new_val; in igb_update_ring_itr()
4482 q_vector->set_itr = 1; in igb_update_ring_itr()
4485 q_vector->rx.total_bytes = 0; in igb_update_ring_itr()
4486 q_vector->rx.total_packets = 0; in igb_update_ring_itr()
4487 q_vector->tx.total_bytes = 0; in igb_update_ring_itr()
4488 q_vector->tx.total_packets = 0; in igb_update_ring_itr()
4507 static void igb_update_itr(struct igb_q_vector *q_vector, in igb_update_itr() argument
4559 static void igb_set_itr(struct igb_q_vector *q_vector) in igb_set_itr() argument
4561 struct igb_adapter *adapter = q_vector->adapter; in igb_set_itr()
4562 u32 new_itr = q_vector->itr_val; in igb_set_itr()
4572 igb_update_itr(q_vector, &q_vector->tx); in igb_set_itr()
4573 igb_update_itr(q_vector, &q_vector->rx); in igb_set_itr()
4575 current_itr = max(q_vector->rx.itr, q_vector->tx.itr); in igb_set_itr()
4579 ((q_vector->rx.ring && adapter->rx_itr_setting == 3) || in igb_set_itr()
4580 (!q_vector->rx.ring && adapter->tx_itr_setting == 3))) in igb_set_itr()
4599 if (new_itr != q_vector->itr_val) { in igb_set_itr()
4604 new_itr = new_itr > q_vector->itr_val ? in igb_set_itr()
4605 max((new_itr * q_vector->itr_val) / in igb_set_itr()
4606 (new_itr + (q_vector->itr_val >> 2)), in igb_set_itr()
4614 q_vector->itr_val = new_itr; in igb_set_itr()
4615 q_vector->set_itr = 1; in igb_set_itr()
5505 static void igb_write_itr(struct igb_q_vector *q_vector) in igb_write_itr() argument
5507 struct igb_adapter *adapter = q_vector->adapter; in igb_write_itr()
5508 u32 itr_val = q_vector->itr_val & 0x7FFC; in igb_write_itr()
5510 if (!q_vector->set_itr) in igb_write_itr()
5521 writel(itr_val, q_vector->itr_register); in igb_write_itr()
5522 q_vector->set_itr = 0; in igb_write_itr()
5527 struct igb_q_vector *q_vector = data; in igb_msix_ring() local
5530 igb_write_itr(q_vector); in igb_msix_ring()
5532 napi_schedule(&q_vector->napi); in igb_msix_ring()
5579 static void igb_update_dca(struct igb_q_vector *q_vector) in igb_update_dca() argument
5581 struct igb_adapter *adapter = q_vector->adapter; in igb_update_dca()
5584 if (q_vector->cpu == cpu) in igb_update_dca()
5587 if (q_vector->tx.ring) in igb_update_dca()
5588 igb_update_tx_dca(adapter, q_vector->tx.ring, cpu); in igb_update_dca()
5590 if (q_vector->rx.ring) in igb_update_dca()
5591 igb_update_rx_dca(adapter, q_vector->rx.ring, cpu); in igb_update_dca()
5593 q_vector->cpu = cpu; in igb_update_dca()
5610 adapter->q_vector[i]->cpu = -1; in igb_setup_dca()
5611 igb_update_dca(adapter->q_vector[i]); in igb_setup_dca()
6260 struct igb_q_vector *q_vector = adapter->q_vector[0]; in igb_intr_msi() local
6265 igb_write_itr(q_vector); in igb_intr_msi()
6284 napi_schedule(&q_vector->napi); in igb_intr_msi()
6297 struct igb_q_vector *q_vector = adapter->q_vector[0]; in igb_intr() local
6310 igb_write_itr(q_vector); in igb_intr()
6330 napi_schedule(&q_vector->napi); in igb_intr()
6335 static void igb_ring_irq_enable(struct igb_q_vector *q_vector) in igb_ring_irq_enable() argument
6337 struct igb_adapter *adapter = q_vector->adapter; in igb_ring_irq_enable()
6340 if ((q_vector->rx.ring && (adapter->rx_itr_setting & 3)) || in igb_ring_irq_enable()
6341 (!q_vector->rx.ring && (adapter->tx_itr_setting & 3))) { in igb_ring_irq_enable()
6343 igb_set_itr(q_vector); in igb_ring_irq_enable()
6345 igb_update_ring_itr(q_vector); in igb_ring_irq_enable()
6350 wr32(E1000_EIMS, q_vector->eims_value); in igb_ring_irq_enable()
6363 struct igb_q_vector *q_vector = container_of(napi, in igb_poll() local
6370 if (q_vector->adapter->flags & IGB_FLAG_DCA_ENABLED) in igb_poll()
6371 igb_update_dca(q_vector); in igb_poll()
6373 if (q_vector->tx.ring) in igb_poll()
6374 clean_complete = igb_clean_tx_irq(q_vector); in igb_poll()
6376 if (q_vector->rx.ring) { in igb_poll()
6377 int cleaned = igb_clean_rx_irq(q_vector, budget); in igb_poll()
6389 igb_ring_irq_enable(q_vector); in igb_poll()
6400 static bool igb_clean_tx_irq(struct igb_q_vector *q_vector) in igb_clean_tx_irq() argument
6402 struct igb_adapter *adapter = q_vector->adapter; in igb_clean_tx_irq()
6403 struct igb_ring *tx_ring = q_vector->tx.ring; in igb_clean_tx_irq()
6407 unsigned int budget = q_vector->tx.work_limit; in igb_clean_tx_irq()
6497 q_vector->tx.total_bytes += total_bytes; in igb_clean_tx_irq()
6498 q_vector->tx.total_packets += total_packets; in igb_clean_tx_irq()
6664 igb_ptp_rx_pktstamp(rx_ring->q_vector, va, skb); in igb_add_rx_frag()
6722 skb = napi_alloc_skb(&rx_ring->q_vector->napi, IGB_RX_HDR_LEN); in igb_fetch_rx_buffer()
6892 igb_ptp_rx_rgtstamp(rx_ring->q_vector, skb); in igb_process_skb_fields()
6912 static int igb_clean_rx_irq(struct igb_q_vector *q_vector, const int budget) in igb_clean_rx_irq() argument
6914 struct igb_ring *rx_ring = q_vector->rx.ring; in igb_clean_rx_irq()
6964 napi_gro_receive(&q_vector->napi, skb); in igb_clean_rx_irq()
6980 q_vector->rx.total_packets += total_packets; in igb_clean_rx_irq()
6981 q_vector->rx.total_bytes += total_bytes; in igb_clean_rx_irq()
7584 struct igb_q_vector *q_vector; in igb_netpoll() local
7588 q_vector = adapter->q_vector[i]; in igb_netpoll()
7590 wr32(E1000_EIMC, q_vector->eims_value); in igb_netpoll()
7593 napi_schedule(&q_vector->napi); in igb_netpoll()