Lines Matching refs:interface
415 struct fm10k_intfc *interface = rx_ring->q_vector->interface; in fm10k_rx_hwtstamp() local
419 if (unlikely(interface->flags & FM10K_FLAG_RX_TS_ENABLED)) in fm10k_rx_hwtstamp()
420 fm10k_systime_to_hwtstamp(interface, skb_hwtstamps(skb), in fm10k_rx_hwtstamp()
680 struct fm10k_intfc *interface = netdev_priv(skb->dev); in fm10k_port_is_vxlan() local
684 vxlan_port = list_first_entry_or_null(&interface->vxlan_port, in fm10k_port_is_vxlan()
1202 void fm10k_tx_timeout_reset(struct fm10k_intfc *interface) in fm10k_tx_timeout_reset() argument
1205 if (!test_bit(__FM10K_DOWN, &interface->state)) { in fm10k_tx_timeout_reset()
1206 interface->tx_timeout_count++; in fm10k_tx_timeout_reset()
1207 interface->flags |= FM10K_FLAG_RESET_REQUESTED; in fm10k_tx_timeout_reset()
1208 fm10k_service_event_schedule(interface); in fm10k_tx_timeout_reset()
1220 struct fm10k_intfc *interface = q_vector->interface; in fm10k_clean_tx_irq() local
1227 if (test_bit(__FM10K_DOWN, &interface->state)) in fm10k_clean_tx_irq()
1317 struct fm10k_hw *hw = &interface->hw; in fm10k_clean_tx_irq()
1319 netif_err(interface, drv, tx_ring->netdev, in fm10k_clean_tx_irq()
1333 netif_info(interface, probe, tx_ring->netdev, in fm10k_clean_tx_irq()
1335 interface->tx_timeout_count + 1, in fm10k_clean_tx_irq()
1338 fm10k_tx_timeout_reset(interface); in fm10k_clean_tx_irq()
1357 !test_bit(__FM10K_DOWN, &interface->state)) { in fm10k_clean_tx_irq()
1480 static bool fm10k_set_qos_queues(struct fm10k_intfc *interface) in fm10k_set_qos_queues() argument
1482 struct net_device *dev = interface->netdev; in fm10k_set_qos_queues()
1494 f = &interface->ring_feature[RING_F_QOS]; in fm10k_set_qos_queues()
1499 rss_i = interface->hw.mac.max_queues / pcs; in fm10k_set_qos_queues()
1503 f = &interface->ring_feature[RING_F_RSS]; in fm10k_set_qos_queues()
1512 interface->num_rx_queues = rss_i * pcs; in fm10k_set_qos_queues()
1513 interface->num_tx_queues = rss_i * pcs; in fm10k_set_qos_queues()
1526 static bool fm10k_set_rss_queues(struct fm10k_intfc *interface) in fm10k_set_rss_queues() argument
1531 f = &interface->ring_feature[RING_F_RSS]; in fm10k_set_rss_queues()
1532 rss_i = min_t(u16, interface->hw.mac.max_queues, f->limit); in fm10k_set_rss_queues()
1538 interface->num_rx_queues = rss_i; in fm10k_set_rss_queues()
1539 interface->num_tx_queues = rss_i; in fm10k_set_rss_queues()
1555 static void fm10k_set_num_queues(struct fm10k_intfc *interface) in fm10k_set_num_queues() argument
1558 interface->num_rx_queues = 1; in fm10k_set_num_queues()
1559 interface->num_tx_queues = 1; in fm10k_set_num_queues()
1561 if (fm10k_set_qos_queues(interface)) in fm10k_set_num_queues()
1564 fm10k_set_rss_queues(interface); in fm10k_set_num_queues()
1579 static int fm10k_alloc_q_vector(struct fm10k_intfc *interface, in fm10k_alloc_q_vector() argument
1598 netif_napi_add(interface->netdev, &q_vector->napi, in fm10k_alloc_q_vector()
1602 interface->q_vector[v_idx] = q_vector; in fm10k_alloc_q_vector()
1603 q_vector->interface = interface; in fm10k_alloc_q_vector()
1612 q_vector->tx.itr = interface->tx_itr; in fm10k_alloc_q_vector()
1617 ring->dev = &interface->pdev->dev; in fm10k_alloc_q_vector()
1618 ring->netdev = interface->netdev; in fm10k_alloc_q_vector()
1624 ring->count = interface->tx_ring_count; in fm10k_alloc_q_vector()
1628 interface->tx_ring[txr_idx] = ring; in fm10k_alloc_q_vector()
1640 q_vector->rx.itr = interface->rx_itr; in fm10k_alloc_q_vector()
1645 ring->dev = &interface->pdev->dev; in fm10k_alloc_q_vector()
1646 ring->netdev = interface->netdev; in fm10k_alloc_q_vector()
1647 rcu_assign_pointer(ring->l2_accel, interface->l2_accel); in fm10k_alloc_q_vector()
1653 ring->count = interface->rx_ring_count; in fm10k_alloc_q_vector()
1657 interface->rx_ring[rxr_idx] = ring; in fm10k_alloc_q_vector()
1681 static void fm10k_free_q_vector(struct fm10k_intfc *interface, int v_idx) in fm10k_free_q_vector() argument
1683 struct fm10k_q_vector *q_vector = interface->q_vector[v_idx]; in fm10k_free_q_vector()
1689 interface->tx_ring[ring->queue_index] = NULL; in fm10k_free_q_vector()
1692 interface->rx_ring[ring->queue_index] = NULL; in fm10k_free_q_vector()
1694 interface->q_vector[v_idx] = NULL; in fm10k_free_q_vector()
1706 static int fm10k_alloc_q_vectors(struct fm10k_intfc *interface) in fm10k_alloc_q_vectors() argument
1708 unsigned int q_vectors = interface->num_q_vectors; in fm10k_alloc_q_vectors()
1709 unsigned int rxr_remaining = interface->num_rx_queues; in fm10k_alloc_q_vectors()
1710 unsigned int txr_remaining = interface->num_tx_queues; in fm10k_alloc_q_vectors()
1716 err = fm10k_alloc_q_vector(interface, q_vectors, v_idx, in fm10k_alloc_q_vectors()
1731 err = fm10k_alloc_q_vector(interface, q_vectors, v_idx, in fm10k_alloc_q_vectors()
1748 interface->num_tx_queues = 0; in fm10k_alloc_q_vectors()
1749 interface->num_rx_queues = 0; in fm10k_alloc_q_vectors()
1750 interface->num_q_vectors = 0; in fm10k_alloc_q_vectors()
1753 fm10k_free_q_vector(interface, v_idx); in fm10k_alloc_q_vectors()
1766 static void fm10k_free_q_vectors(struct fm10k_intfc *interface) in fm10k_free_q_vectors() argument
1768 int v_idx = interface->num_q_vectors; in fm10k_free_q_vectors()
1770 interface->num_tx_queues = 0; in fm10k_free_q_vectors()
1771 interface->num_rx_queues = 0; in fm10k_free_q_vectors()
1772 interface->num_q_vectors = 0; in fm10k_free_q_vectors()
1775 fm10k_free_q_vector(interface, v_idx); in fm10k_free_q_vectors()
1784 static void fm10k_reset_msix_capability(struct fm10k_intfc *interface) in fm10k_reset_msix_capability() argument
1786 pci_disable_msix(interface->pdev); in fm10k_reset_msix_capability()
1787 kfree(interface->msix_entries); in fm10k_reset_msix_capability()
1788 interface->msix_entries = NULL; in fm10k_reset_msix_capability()
1798 static int fm10k_init_msix_capability(struct fm10k_intfc *interface) in fm10k_init_msix_capability() argument
1800 struct fm10k_hw *hw = &interface->hw; in fm10k_init_msix_capability()
1809 v_budget = max(interface->num_rx_queues, interface->num_tx_queues); in fm10k_init_msix_capability()
1824 interface->msix_entries = kcalloc(v_budget, sizeof(struct msix_entry), in fm10k_init_msix_capability()
1826 if (!interface->msix_entries) in fm10k_init_msix_capability()
1831 interface->msix_entries[vector].entry = vector; in fm10k_init_msix_capability()
1834 v_budget = pci_enable_msix_range(interface->pdev, in fm10k_init_msix_capability()
1835 interface->msix_entries, in fm10k_init_msix_capability()
1839 kfree(interface->msix_entries); in fm10k_init_msix_capability()
1840 interface->msix_entries = NULL; in fm10k_init_msix_capability()
1845 interface->num_q_vectors = v_budget - NON_Q_VECTORS(hw); in fm10k_init_msix_capability()
1856 static bool fm10k_cache_ring_qos(struct fm10k_intfc *interface) in fm10k_cache_ring_qos() argument
1858 struct net_device *dev = interface->netdev; in fm10k_cache_ring_qos()
1860 u16 pc_stride = interface->ring_feature[RING_F_QOS].mask + 1; in fm10k_cache_ring_qos()
1866 rss_i = interface->ring_feature[RING_F_RSS].indices; in fm10k_cache_ring_qos()
1871 interface->tx_ring[offset + i]->reg_idx = q_idx; in fm10k_cache_ring_qos()
1872 interface->tx_ring[offset + i]->qos_pc = pc; in fm10k_cache_ring_qos()
1873 interface->rx_ring[offset + i]->reg_idx = q_idx; in fm10k_cache_ring_qos()
1874 interface->rx_ring[offset + i]->qos_pc = pc; in fm10k_cache_ring_qos()
1888 static void fm10k_cache_ring_rss(struct fm10k_intfc *interface) in fm10k_cache_ring_rss() argument
1892 for (i = 0; i < interface->num_rx_queues; i++) in fm10k_cache_ring_rss()
1893 interface->rx_ring[i]->reg_idx = i; in fm10k_cache_ring_rss()
1895 for (i = 0; i < interface->num_tx_queues; i++) in fm10k_cache_ring_rss()
1896 interface->tx_ring[i]->reg_idx = i; in fm10k_cache_ring_rss()
1907 static void fm10k_assign_rings(struct fm10k_intfc *interface) in fm10k_assign_rings() argument
1909 if (fm10k_cache_ring_qos(interface)) in fm10k_assign_rings()
1912 fm10k_cache_ring_rss(interface); in fm10k_assign_rings()
1915 static void fm10k_init_reta(struct fm10k_intfc *interface) in fm10k_init_reta() argument
1917 u16 i, rss_i = interface->ring_feature[RING_F_RSS].indices; in fm10k_init_reta()
1921 if (interface->netdev->reg_state) { in fm10k_init_reta()
1923 reta = interface->reta[i]; in fm10k_init_reta()
1950 interface->reta[i] = reta; in fm10k_init_reta()
1962 int fm10k_init_queueing_scheme(struct fm10k_intfc *interface) in fm10k_init_queueing_scheme() argument
1967 fm10k_set_num_queues(interface); in fm10k_init_queueing_scheme()
1970 err = fm10k_init_msix_capability(interface); in fm10k_init_queueing_scheme()
1972 dev_err(&interface->pdev->dev, in fm10k_init_queueing_scheme()
1978 err = fm10k_alloc_q_vectors(interface); in fm10k_init_queueing_scheme()
1983 fm10k_assign_rings(interface); in fm10k_init_queueing_scheme()
1986 fm10k_init_reta(interface); in fm10k_init_queueing_scheme()
1998 void fm10k_clear_queueing_scheme(struct fm10k_intfc *interface) in fm10k_clear_queueing_scheme() argument
2000 fm10k_free_q_vectors(interface); in fm10k_clear_queueing_scheme()
2001 fm10k_reset_msix_capability(interface); in fm10k_clear_queueing_scheme()