Lines Matching refs:q_vector

118 static void ixgbevf_set_itr(struct ixgbevf_q_vector *q_vector);
290 static bool ixgbevf_clean_tx_irq(struct ixgbevf_q_vector *q_vector, in ixgbevf_clean_tx_irq() argument
293 struct ixgbevf_adapter *adapter = q_vector->adapter; in ixgbevf_clean_tx_irq()
385 q_vector->tx.total_bytes += total_bytes; in ixgbevf_clean_tx_irq()
386 q_vector->tx.total_packets += total_packets; in ixgbevf_clean_tx_irq()
444 static void ixgbevf_rx_skb(struct ixgbevf_q_vector *q_vector, in ixgbevf_rx_skb() argument
448 skb_mark_napi_id(skb, &q_vector->napi); in ixgbevf_rx_skb()
450 if (ixgbevf_qv_busy_polling(q_vector)) { in ixgbevf_rx_skb()
457 napi_gro_receive(&q_vector->napi, skb); in ixgbevf_rx_skb()
912 static int ixgbevf_clean_rx_irq(struct ixgbevf_q_vector *q_vector, in ixgbevf_clean_rx_irq() argument
976 ixgbevf_rx_skb(q_vector, skb); in ixgbevf_clean_rx_irq()
992 q_vector->rx.total_packets += total_rx_packets; in ixgbevf_clean_rx_irq()
993 q_vector->rx.total_bytes += total_rx_bytes; in ixgbevf_clean_rx_irq()
1008 struct ixgbevf_q_vector *q_vector = in ixgbevf_poll() local
1010 struct ixgbevf_adapter *adapter = q_vector->adapter; in ixgbevf_poll()
1015 ixgbevf_for_each_ring(ring, q_vector->tx) in ixgbevf_poll()
1016 clean_complete &= ixgbevf_clean_tx_irq(q_vector, ring); in ixgbevf_poll()
1019 if (!ixgbevf_qv_lock_napi(q_vector)) in ixgbevf_poll()
1026 if (q_vector->rx.count > 1) in ixgbevf_poll()
1027 per_ring_budget = max(budget/q_vector->rx.count, 1); in ixgbevf_poll()
1031 ixgbevf_for_each_ring(ring, q_vector->rx) in ixgbevf_poll()
1032 clean_complete &= (ixgbevf_clean_rx_irq(q_vector, ring, in ixgbevf_poll()
1037 ixgbevf_qv_unlock_napi(q_vector); in ixgbevf_poll()
1046 ixgbevf_set_itr(q_vector); in ixgbevf_poll()
1050 1 << q_vector->v_idx); in ixgbevf_poll()
1059 void ixgbevf_write_eitr(struct ixgbevf_q_vector *q_vector) in ixgbevf_write_eitr() argument
1061 struct ixgbevf_adapter *adapter = q_vector->adapter; in ixgbevf_write_eitr()
1063 int v_idx = q_vector->v_idx; in ixgbevf_write_eitr()
1064 u32 itr_reg = q_vector->itr & IXGBE_MAX_EITR; in ixgbevf_write_eitr()
1078 struct ixgbevf_q_vector *q_vector = in ixgbevf_busy_poll_recv() local
1080 struct ixgbevf_adapter *adapter = q_vector->adapter; in ixgbevf_busy_poll_recv()
1087 if (!ixgbevf_qv_lock_poll(q_vector)) in ixgbevf_busy_poll_recv()
1090 ixgbevf_for_each_ring(ring, q_vector->rx) { in ixgbevf_busy_poll_recv()
1091 found = ixgbevf_clean_rx_irq(q_vector, ring, 4); in ixgbevf_busy_poll_recv()
1102 ixgbevf_qv_unlock_poll(q_vector); in ixgbevf_busy_poll_recv()
1117 struct ixgbevf_q_vector *q_vector; in ixgbevf_configure_msix() local
1129 q_vector = adapter->q_vector[v_idx]; in ixgbevf_configure_msix()
1131 ixgbevf_for_each_ring(ring, q_vector->rx) in ixgbevf_configure_msix()
1134 ixgbevf_for_each_ring(ring, q_vector->tx) in ixgbevf_configure_msix()
1137 if (q_vector->tx.ring && !q_vector->rx.ring) { in ixgbevf_configure_msix()
1140 q_vector->itr = IXGBE_10K_ITR; in ixgbevf_configure_msix()
1142 q_vector->itr = adapter->tx_itr_setting; in ixgbevf_configure_msix()
1146 q_vector->itr = IXGBE_20K_ITR; in ixgbevf_configure_msix()
1148 q_vector->itr = adapter->rx_itr_setting; in ixgbevf_configure_msix()
1154 ixgbevf_write_eitr(q_vector); in ixgbevf_configure_msix()
1183 static void ixgbevf_update_itr(struct ixgbevf_q_vector *q_vector, in ixgbevf_update_itr() argument
1201 timepassed_us = q_vector->itr >> 2; in ixgbevf_update_itr()
1229 static void ixgbevf_set_itr(struct ixgbevf_q_vector *q_vector) in ixgbevf_set_itr() argument
1231 u32 new_itr = q_vector->itr; in ixgbevf_set_itr()
1234 ixgbevf_update_itr(q_vector, &q_vector->tx); in ixgbevf_set_itr()
1235 ixgbevf_update_itr(q_vector, &q_vector->rx); in ixgbevf_set_itr()
1237 current_itr = max(q_vector->rx.itr, q_vector->tx.itr); in ixgbevf_set_itr()
1253 if (new_itr != q_vector->itr) { in ixgbevf_set_itr()
1255 new_itr = (10 * new_itr * q_vector->itr) / in ixgbevf_set_itr()
1256 ((9 * new_itr) + q_vector->itr); in ixgbevf_set_itr()
1259 q_vector->itr = new_itr; in ixgbevf_set_itr()
1261 ixgbevf_write_eitr(q_vector); in ixgbevf_set_itr()
1286 struct ixgbevf_q_vector *q_vector = data; in ixgbevf_msix_clean_rings() local
1289 if (q_vector->rx.ring || q_vector->tx.ring) in ixgbevf_msix_clean_rings()
1290 napi_schedule(&q_vector->napi); in ixgbevf_msix_clean_rings()
1298 struct ixgbevf_q_vector *q_vector = a->q_vector[v_idx]; in map_vector_to_rxq() local
1300 a->rx_ring[r_idx]->next = q_vector->rx.ring; in map_vector_to_rxq()
1301 q_vector->rx.ring = a->rx_ring[r_idx]; in map_vector_to_rxq()
1302 q_vector->rx.count++; in map_vector_to_rxq()
1308 struct ixgbevf_q_vector *q_vector = a->q_vector[v_idx]; in map_vector_to_txq() local
1310 a->tx_ring[t_idx]->next = q_vector->tx.ring; in map_vector_to_txq()
1311 q_vector->tx.ring = a->tx_ring[t_idx]; in map_vector_to_txq()
1312 q_vector->tx.count++; in map_vector_to_txq()
1391 struct ixgbevf_q_vector *q_vector = adapter->q_vector[vector]; in ixgbevf_request_msix_irqs() local
1394 if (q_vector->tx.ring && q_vector->rx.ring) { in ixgbevf_request_msix_irqs()
1395 snprintf(q_vector->name, sizeof(q_vector->name) - 1, in ixgbevf_request_msix_irqs()
1398 } else if (q_vector->rx.ring) { in ixgbevf_request_msix_irqs()
1399 snprintf(q_vector->name, sizeof(q_vector->name) - 1, in ixgbevf_request_msix_irqs()
1401 } else if (q_vector->tx.ring) { in ixgbevf_request_msix_irqs()
1402 snprintf(q_vector->name, sizeof(q_vector->name) - 1, in ixgbevf_request_msix_irqs()
1409 q_vector->name, q_vector); in ixgbevf_request_msix_irqs()
1432 adapter->q_vector[vector]); in ixgbevf_request_msix_irqs()
1453 struct ixgbevf_q_vector *q_vector = adapter->q_vector[i]; in ixgbevf_reset_q_vectors() local
1455 q_vector->rx.ring = NULL; in ixgbevf_reset_q_vectors()
1456 q_vector->tx.ring = NULL; in ixgbevf_reset_q_vectors()
1457 q_vector->rx.count = 0; in ixgbevf_reset_q_vectors()
1458 q_vector->tx.count = 0; in ixgbevf_reset_q_vectors()
1493 if (!adapter->q_vector[i]->rx.ring && in ixgbevf_free_irq()
1494 !adapter->q_vector[i]->tx.ring) in ixgbevf_free_irq()
1498 adapter->q_vector[i]); in ixgbevf_free_irq()
1907 struct ixgbevf_q_vector *q_vector; in ixgbevf_napi_enable_all() local
1911 q_vector = adapter->q_vector[q_idx]; in ixgbevf_napi_enable_all()
1913 ixgbevf_qv_init_lock(adapter->q_vector[q_idx]); in ixgbevf_napi_enable_all()
1915 napi_enable(&q_vector->napi); in ixgbevf_napi_enable_all()
1922 struct ixgbevf_q_vector *q_vector; in ixgbevf_napi_disable_all() local
1926 q_vector = adapter->q_vector[q_idx]; in ixgbevf_napi_disable_all()
1927 napi_disable(&q_vector->napi); in ixgbevf_napi_disable_all()
1929 while (!ixgbevf_qv_disable(adapter->q_vector[q_idx])) { in ixgbevf_napi_disable_all()
2462 struct ixgbevf_q_vector *q_vector; in ixgbevf_alloc_q_vectors() local
2467 q_vector = kzalloc(sizeof(struct ixgbevf_q_vector), GFP_KERNEL); in ixgbevf_alloc_q_vectors()
2468 if (!q_vector) in ixgbevf_alloc_q_vectors()
2470 q_vector->adapter = adapter; in ixgbevf_alloc_q_vectors()
2471 q_vector->v_idx = q_idx; in ixgbevf_alloc_q_vectors()
2472 netif_napi_add(adapter->netdev, &q_vector->napi, in ixgbevf_alloc_q_vectors()
2475 napi_hash_add(&q_vector->napi); in ixgbevf_alloc_q_vectors()
2477 adapter->q_vector[q_idx] = q_vector; in ixgbevf_alloc_q_vectors()
2485 q_vector = adapter->q_vector[q_idx]; in ixgbevf_alloc_q_vectors()
2487 napi_hash_del(&q_vector->napi); in ixgbevf_alloc_q_vectors()
2489 netif_napi_del(&q_vector->napi); in ixgbevf_alloc_q_vectors()
2490 kfree(q_vector); in ixgbevf_alloc_q_vectors()
2491 adapter->q_vector[q_idx] = NULL; in ixgbevf_alloc_q_vectors()
2509 struct ixgbevf_q_vector *q_vector = adapter->q_vector[q_idx]; in ixgbevf_free_q_vectors() local
2511 adapter->q_vector[q_idx] = NULL; in ixgbevf_free_q_vectors()
2513 napi_hash_del(&q_vector->napi); in ixgbevf_free_q_vectors()
2515 netif_napi_del(&q_vector->napi); in ixgbevf_free_q_vectors()
2516 kfree(q_vector); in ixgbevf_free_q_vectors()
2791 struct ixgbevf_q_vector *qv = adapter->q_vector[i]; in ixgbevf_check_hang_subtask()
3755 ixgbevf_msix_clean_rings(0, adapter->q_vector[i]); in ixgbevf_netpoll()