Lines Matching refs:interface

433 	struct fm10k_intfc *interface = rx_ring->q_vector->interface;  in fm10k_rx_hwtstamp()  local
437 if (unlikely(interface->flags & FM10K_FLAG_RX_TS_ENABLED)) in fm10k_rx_hwtstamp()
438 fm10k_systime_to_hwtstamp(interface, skb_hwtstamps(skb), in fm10k_rx_hwtstamp()
671 struct fm10k_intfc *interface = netdev_priv(skb->dev); in fm10k_port_is_vxlan() local
675 vxlan_port = list_first_entry_or_null(&interface->vxlan_port, in fm10k_port_is_vxlan()
1189 void fm10k_tx_timeout_reset(struct fm10k_intfc *interface) in fm10k_tx_timeout_reset() argument
1192 if (!test_bit(__FM10K_DOWN, &interface->state)) { in fm10k_tx_timeout_reset()
1193 interface->tx_timeout_count++; in fm10k_tx_timeout_reset()
1194 interface->flags |= FM10K_FLAG_RESET_REQUESTED; in fm10k_tx_timeout_reset()
1195 fm10k_service_event_schedule(interface); in fm10k_tx_timeout_reset()
1207 struct fm10k_intfc *interface = q_vector->interface; in fm10k_clean_tx_irq() local
1214 if (test_bit(__FM10K_DOWN, &interface->state)) in fm10k_clean_tx_irq()
1304 struct fm10k_hw *hw = &interface->hw; in fm10k_clean_tx_irq()
1306 netif_err(interface, drv, tx_ring->netdev, in fm10k_clean_tx_irq()
1320 netif_info(interface, probe, tx_ring->netdev, in fm10k_clean_tx_irq()
1322 interface->tx_timeout_count + 1, in fm10k_clean_tx_irq()
1325 fm10k_tx_timeout_reset(interface); in fm10k_clean_tx_irq()
1344 !test_bit(__FM10K_DOWN, &interface->state)) { in fm10k_clean_tx_irq()
1470 static bool fm10k_set_qos_queues(struct fm10k_intfc *interface) in fm10k_set_qos_queues() argument
1472 struct net_device *dev = interface->netdev; in fm10k_set_qos_queues()
1484 f = &interface->ring_feature[RING_F_QOS]; in fm10k_set_qos_queues()
1489 rss_i = interface->hw.mac.max_queues / pcs; in fm10k_set_qos_queues()
1493 f = &interface->ring_feature[RING_F_RSS]; in fm10k_set_qos_queues()
1502 interface->num_rx_queues = rss_i * pcs; in fm10k_set_qos_queues()
1503 interface->num_tx_queues = rss_i * pcs; in fm10k_set_qos_queues()
1516 static bool fm10k_set_rss_queues(struct fm10k_intfc *interface) in fm10k_set_rss_queues() argument
1521 f = &interface->ring_feature[RING_F_RSS]; in fm10k_set_rss_queues()
1522 rss_i = min_t(u16, interface->hw.mac.max_queues, f->limit); in fm10k_set_rss_queues()
1528 interface->num_rx_queues = rss_i; in fm10k_set_rss_queues()
1529 interface->num_tx_queues = rss_i; in fm10k_set_rss_queues()
1545 static void fm10k_set_num_queues(struct fm10k_intfc *interface) in fm10k_set_num_queues() argument
1548 interface->num_rx_queues = 1; in fm10k_set_num_queues()
1549 interface->num_tx_queues = 1; in fm10k_set_num_queues()
1551 if (fm10k_set_qos_queues(interface)) in fm10k_set_num_queues()
1554 fm10k_set_rss_queues(interface); in fm10k_set_num_queues()
1569 static int fm10k_alloc_q_vector(struct fm10k_intfc *interface, in fm10k_alloc_q_vector() argument
1588 netif_napi_add(interface->netdev, &q_vector->napi, in fm10k_alloc_q_vector()
1592 interface->q_vector[v_idx] = q_vector; in fm10k_alloc_q_vector()
1593 q_vector->interface = interface; in fm10k_alloc_q_vector()
1602 q_vector->tx.itr = interface->tx_itr; in fm10k_alloc_q_vector()
1607 ring->dev = &interface->pdev->dev; in fm10k_alloc_q_vector()
1608 ring->netdev = interface->netdev; in fm10k_alloc_q_vector()
1614 ring->count = interface->tx_ring_count; in fm10k_alloc_q_vector()
1618 interface->tx_ring[txr_idx] = ring; in fm10k_alloc_q_vector()
1630 q_vector->rx.itr = interface->rx_itr; in fm10k_alloc_q_vector()
1635 ring->dev = &interface->pdev->dev; in fm10k_alloc_q_vector()
1636 ring->netdev = interface->netdev; in fm10k_alloc_q_vector()
1637 rcu_assign_pointer(ring->l2_accel, interface->l2_accel); in fm10k_alloc_q_vector()
1643 ring->count = interface->rx_ring_count; in fm10k_alloc_q_vector()
1647 interface->rx_ring[rxr_idx] = ring; in fm10k_alloc_q_vector()
1671 static void fm10k_free_q_vector(struct fm10k_intfc *interface, int v_idx) in fm10k_free_q_vector() argument
1673 struct fm10k_q_vector *q_vector = interface->q_vector[v_idx]; in fm10k_free_q_vector()
1679 interface->tx_ring[ring->queue_index] = NULL; in fm10k_free_q_vector()
1682 interface->rx_ring[ring->queue_index] = NULL; in fm10k_free_q_vector()
1684 interface->q_vector[v_idx] = NULL; in fm10k_free_q_vector()
1696 static int fm10k_alloc_q_vectors(struct fm10k_intfc *interface) in fm10k_alloc_q_vectors() argument
1698 unsigned int q_vectors = interface->num_q_vectors; in fm10k_alloc_q_vectors()
1699 unsigned int rxr_remaining = interface->num_rx_queues; in fm10k_alloc_q_vectors()
1700 unsigned int txr_remaining = interface->num_tx_queues; in fm10k_alloc_q_vectors()
1706 err = fm10k_alloc_q_vector(interface, q_vectors, v_idx, in fm10k_alloc_q_vectors()
1721 err = fm10k_alloc_q_vector(interface, q_vectors, v_idx, in fm10k_alloc_q_vectors()
1738 interface->num_tx_queues = 0; in fm10k_alloc_q_vectors()
1739 interface->num_rx_queues = 0; in fm10k_alloc_q_vectors()
1740 interface->num_q_vectors = 0; in fm10k_alloc_q_vectors()
1743 fm10k_free_q_vector(interface, v_idx); in fm10k_alloc_q_vectors()
1756 static void fm10k_free_q_vectors(struct fm10k_intfc *interface) in fm10k_free_q_vectors() argument
1758 int v_idx = interface->num_q_vectors; in fm10k_free_q_vectors()
1760 interface->num_tx_queues = 0; in fm10k_free_q_vectors()
1761 interface->num_rx_queues = 0; in fm10k_free_q_vectors()
1762 interface->num_q_vectors = 0; in fm10k_free_q_vectors()
1765 fm10k_free_q_vector(interface, v_idx); in fm10k_free_q_vectors()
1774 static void fm10k_reset_msix_capability(struct fm10k_intfc *interface) in fm10k_reset_msix_capability() argument
1776 pci_disable_msix(interface->pdev); in fm10k_reset_msix_capability()
1777 kfree(interface->msix_entries); in fm10k_reset_msix_capability()
1778 interface->msix_entries = NULL; in fm10k_reset_msix_capability()
1788 static int fm10k_init_msix_capability(struct fm10k_intfc *interface) in fm10k_init_msix_capability() argument
1790 struct fm10k_hw *hw = &interface->hw; in fm10k_init_msix_capability()
1799 v_budget = max(interface->num_rx_queues, interface->num_tx_queues); in fm10k_init_msix_capability()
1814 interface->msix_entries = kcalloc(v_budget, sizeof(struct msix_entry), in fm10k_init_msix_capability()
1816 if (!interface->msix_entries) in fm10k_init_msix_capability()
1821 interface->msix_entries[vector].entry = vector; in fm10k_init_msix_capability()
1824 v_budget = pci_enable_msix_range(interface->pdev, in fm10k_init_msix_capability()
1825 interface->msix_entries, in fm10k_init_msix_capability()
1829 kfree(interface->msix_entries); in fm10k_init_msix_capability()
1830 interface->msix_entries = NULL; in fm10k_init_msix_capability()
1835 interface->num_q_vectors = v_budget - NON_Q_VECTORS(hw); in fm10k_init_msix_capability()
1846 static bool fm10k_cache_ring_qos(struct fm10k_intfc *interface) in fm10k_cache_ring_qos() argument
1848 struct net_device *dev = interface->netdev; in fm10k_cache_ring_qos()
1850 u16 pc_stride = interface->ring_feature[RING_F_QOS].mask + 1; in fm10k_cache_ring_qos()
1856 rss_i = interface->ring_feature[RING_F_RSS].indices; in fm10k_cache_ring_qos()
1861 interface->tx_ring[offset + i]->reg_idx = q_idx; in fm10k_cache_ring_qos()
1862 interface->tx_ring[offset + i]->qos_pc = pc; in fm10k_cache_ring_qos()
1863 interface->rx_ring[offset + i]->reg_idx = q_idx; in fm10k_cache_ring_qos()
1864 interface->rx_ring[offset + i]->qos_pc = pc; in fm10k_cache_ring_qos()
1878 static void fm10k_cache_ring_rss(struct fm10k_intfc *interface) in fm10k_cache_ring_rss() argument
1882 for (i = 0; i < interface->num_rx_queues; i++) in fm10k_cache_ring_rss()
1883 interface->rx_ring[i]->reg_idx = i; in fm10k_cache_ring_rss()
1885 for (i = 0; i < interface->num_tx_queues; i++) in fm10k_cache_ring_rss()
1886 interface->tx_ring[i]->reg_idx = i; in fm10k_cache_ring_rss()
1897 static void fm10k_assign_rings(struct fm10k_intfc *interface) in fm10k_assign_rings() argument
1899 if (fm10k_cache_ring_qos(interface)) in fm10k_assign_rings()
1902 fm10k_cache_ring_rss(interface); in fm10k_assign_rings()
1905 static void fm10k_init_reta(struct fm10k_intfc *interface) in fm10k_init_reta() argument
1907 u16 i, rss_i = interface->ring_feature[RING_F_RSS].indices; in fm10k_init_reta()
1911 if (interface->netdev->reg_state != NETREG_UNINITIALIZED) { in fm10k_init_reta()
1913 reta = interface->reta[i]; in fm10k_init_reta()
1940 interface->reta[i] = reta; in fm10k_init_reta()
1952 int fm10k_init_queueing_scheme(struct fm10k_intfc *interface) in fm10k_init_queueing_scheme() argument
1957 fm10k_set_num_queues(interface); in fm10k_init_queueing_scheme()
1960 err = fm10k_init_msix_capability(interface); in fm10k_init_queueing_scheme()
1962 dev_err(&interface->pdev->dev, in fm10k_init_queueing_scheme()
1968 err = fm10k_alloc_q_vectors(interface); in fm10k_init_queueing_scheme()
1973 fm10k_assign_rings(interface); in fm10k_init_queueing_scheme()
1976 fm10k_init_reta(interface); in fm10k_init_queueing_scheme()
1988 void fm10k_clear_queueing_scheme(struct fm10k_intfc *interface) in fm10k_clear_queueing_scheme() argument
1990 fm10k_free_q_vectors(interface); in fm10k_clear_queueing_scheme()
1991 fm10k_reset_msix_capability(interface); in fm10k_clear_queueing_scheme()