Lines Matching refs:interface

35 	struct fm10k_intfc *interface = hw->back;
41 pci_read_config_word(interface->pdev, reg, &value);
58 struct fm10k_intfc *interface = hw->back;
59 struct net_device *netdev = interface->netdev;
69 static int fm10k_hw_ready(struct fm10k_intfc *interface)
71 struct fm10k_hw *hw = &interface->hw;
80 * @interface: fm10k private interface structure
85 void fm10k_macvlan_schedule(struct fm10k_intfc *interface)
90 if (!test_bit(__FM10K_MACVLAN_DISABLE, interface->state) &&
91 !test_and_set_bit(__FM10K_MACVLAN_SCHED, interface->state)) {
92 clear_bit(__FM10K_MACVLAN_REQUEST, interface->state);
99 &interface->macvlan_task, 10);
101 set_bit(__FM10K_MACVLAN_REQUEST, interface->state);
107 * @interface: fm10k private interface structure
112 static void fm10k_stop_macvlan_task(struct fm10k_intfc *interface)
115 set_bit(__FM10K_MACVLAN_DISABLE, interface->state);
118 cancel_delayed_work_sync(&interface->macvlan_task);
126 clear_bit(__FM10K_MACVLAN_SCHED, interface->state);
131 * @interface: fm10k private interface structure
136 static void fm10k_resume_macvlan_task(struct fm10k_intfc *interface)
139 clear_bit(__FM10K_MACVLAN_DISABLE, interface->state);
144 if (test_bit(__FM10K_MACVLAN_REQUEST, interface->state))
145 fm10k_macvlan_schedule(interface);
148 void fm10k_service_event_schedule(struct fm10k_intfc *interface)
150 if (!test_bit(__FM10K_SERVICE_DISABLE, interface->state) &&
151 !test_and_set_bit(__FM10K_SERVICE_SCHED, interface->state)) {
152 clear_bit(__FM10K_SERVICE_REQUEST, interface->state);
153 queue_work(fm10k_workqueue, &interface->service_task);
155 set_bit(__FM10K_SERVICE_REQUEST, interface->state);
159 static void fm10k_service_event_complete(struct fm10k_intfc *interface)
161 WARN_ON(!test_bit(__FM10K_SERVICE_SCHED, interface->state));
165 clear_bit(__FM10K_SERVICE_SCHED, interface->state);
171 if (test_bit(__FM10K_SERVICE_REQUEST, interface->state))
172 fm10k_service_event_schedule(interface);
175 static void fm10k_stop_service_event(struct fm10k_intfc *interface)
177 set_bit(__FM10K_SERVICE_DISABLE, interface->state);
178 cancel_work_sync(&interface->service_task);
187 clear_bit(__FM10K_SERVICE_SCHED, interface->state);
190 static void fm10k_start_service_event(struct fm10k_intfc *interface)
192 clear_bit(__FM10K_SERVICE_DISABLE, interface->state);
193 fm10k_service_event_schedule(interface);
202 struct fm10k_intfc *interface = from_timer(interface, t,
206 mod_timer(&interface->service_timer, (HZ * 2) + jiffies);
208 fm10k_service_event_schedule(interface);
213 * @interface: fm10k private data structure
219 static bool fm10k_prepare_for_reset(struct fm10k_intfc *interface)
221 struct net_device *netdev = interface->netdev;
227 if (test_and_set_bit(__FM10K_RESETTING, interface->state))
234 fm10k_stop_macvlan_task(interface);
238 fm10k_iov_suspend(interface->pdev);
243 fm10k_mbx_free_irq(interface);
246 fm10k_clear_queueing_scheme(interface);
249 interface->last_reset = jiffies + (10 * HZ);
256 static int fm10k_handle_reset(struct fm10k_intfc *interface)
258 struct net_device *netdev = interface->netdev;
259 struct fm10k_hw *hw = &interface->hw;
262 WARN_ON(!test_bit(__FM10K_RESETTING, interface->state));
266 pci_set_master(interface->pdev);
271 dev_err(&interface->pdev->dev, "reset_hw failed: %d\n", err);
277 dev_err(&interface->pdev->dev, "init_hw failed: %d\n", err);
281 err = fm10k_init_queueing_scheme(interface);
283 dev_err(&interface->pdev->dev,
289 err = fm10k_mbx_request_irq(interface);
293 err = fm10k_hw_ready(interface);
316 fm10k_iov_resume(interface->pdev);
320 fm10k_resume_macvlan_task(interface);
322 clear_bit(__FM10K_RESETTING, interface->state);
326 fm10k_mbx_free_irq(interface);
328 fm10k_clear_queueing_scheme(interface);
334 clear_bit(__FM10K_RESETTING, interface->state);
339 static void fm10k_detach_subtask(struct fm10k_intfc *interface)
341 struct net_device *netdev = interface->netdev;
346 if (netif_device_present(netdev) || interface->hw.hw_addr)
354 if (fm10k_prepare_for_reset(interface))
355 set_bit(__FM10K_RESET_DETACHED, interface->state);
358 hw_addr = READ_ONCE(interface->uc_addr);
367 interface->state))
371 interface->hw.hw_addr = interface->uc_addr;
376 err = fm10k_handle_reset(interface);
379 interface->hw.hw_addr = NULL;
390 static void fm10k_reset_subtask(struct fm10k_intfc *interface)
395 interface->flags))
405 if (!fm10k_prepare_for_reset(interface))
408 netdev_err(interface->netdev, "Reset interface\n");
410 err = fm10k_handle_reset(interface);
412 dev_err(&interface->pdev->dev,
418 * @interface: board private structure
422 static void fm10k_configure_swpri_map(struct fm10k_intfc *interface)
424 struct net_device *netdev = interface->netdev;
425 struct fm10k_hw *hw = &interface->hw;
429 clear_bit(FM10K_FLAG_SWPRI_CONFIG, interface->flags);
443 * @interface: board private structure
445 static void fm10k_watchdog_update_host_state(struct fm10k_intfc *interface)
447 struct fm10k_hw *hw = &interface->hw;
450 if (test_bit(__FM10K_LINK_DOWN, interface->state)) {
451 interface->host_ready = false;
452 if (time_is_after_jiffies(interface->link_down_event))
454 clear_bit(__FM10K_LINK_DOWN, interface->state);
457 if (test_bit(FM10K_FLAG_SWPRI_CONFIG, interface->flags)) {
459 fm10k_configure_swpri_map(interface);
465 fm10k_mbx_lock(interface);
467 err = hw->mac.ops.get_host_state(hw, &interface->host_ready);
468 if (err && time_is_before_jiffies(interface->last_reset))
469 set_bit(FM10K_FLAG_RESET_REQUESTED, interface->flags);
472 fm10k_mbx_unlock(interface);
477 * @interface: board private structure
481 static void fm10k_mbx_subtask(struct fm10k_intfc *interface)
484 if (test_bit(__FM10K_RESETTING, interface->state))
488 fm10k_watchdog_update_host_state(interface);
491 fm10k_iov_mbx(interface);
496 * @interface: board private structure
498 static void fm10k_watchdog_host_is_ready(struct fm10k_intfc *interface)
500 struct net_device *netdev = interface->netdev;
506 netif_info(interface, drv, netdev, "NIC Link is up\n");
514 * @interface: board private structure
516 static void fm10k_watchdog_host_not_ready(struct fm10k_intfc *interface)
518 struct net_device *netdev = interface->netdev;
524 netif_info(interface, drv, netdev, "NIC Link is down\n");
532 * @interface: board private structure
534 void fm10k_update_stats(struct fm10k_intfc *interface)
536 struct net_device_stats *net_stats = &interface->netdev->stats;
537 struct fm10k_hw *hw = &interface->hw;
549 if (test_and_set_bit(__FM10K_UPDATING_STATS, interface->state))
553 interface->next_stats_update = jiffies + HZ;
555 /* gather some stats to the interface struct that are per queue */
556 for (bytes = 0, pkts = 0, i = 0; i < interface->num_tx_queues; i++) {
557 struct fm10k_ring *tx_ring = READ_ONCE(interface->tx_ring[i]);
570 interface->restart_queue = restart_queue;
571 interface->tx_busy = tx_busy;
574 interface->tx_csum_errors = tx_csum_errors;
575 interface->hw_csum_tx_good = hw_csum_tx_good;
577 /* gather some stats to the interface struct that are per queue */
578 for (bytes = 0, pkts = 0, i = 0; i < interface->num_rx_queues; i++) {
579 struct fm10k_ring *rx_ring = READ_ONCE(interface->rx_ring[i]);
599 interface->alloc_failed = alloc_failed;
600 interface->rx_csum_errors = rx_csum_errors;
601 interface->hw_csum_rx_good = hw_csum_rx_good;
602 interface->rx_switch_errors = rx_switch_errors;
603 interface->rx_drops = rx_drops;
604 interface->rx_pp_errors = rx_pp_errors;
605 interface->rx_link_errors = rx_link_errors;
606 interface->rx_length_errors = rx_length_errors;
608 hw->mac.ops.update_hw_stats(hw, &interface->stats);
611 struct fm10k_hw_stats_q *q = &interface->stats.q[i];
620 interface->tx_bytes_nic = tx_bytes_nic;
621 interface->tx_packets_nic = tx_pkts_nic;
622 interface->rx_bytes_nic = rx_bytes_nic;
623 interface->rx_packets_nic = rx_pkts_nic;
624 interface->rx_drops_nic = rx_drops_nic;
628 net_stats->rx_dropped = interface->stats.nodesc_drop.count;
631 fm10k_iov_update_stats(interface);
633 clear_bit(__FM10K_UPDATING_STATS, interface->state);
638 * @interface: pointer to the device interface structure
640 static void fm10k_watchdog_flush_tx(struct fm10k_intfc *interface)
646 if (netif_carrier_ok(interface->netdev))
649 for (i = 0; i < interface->num_tx_queues; i++) {
650 struct fm10k_ring *tx_ring = interface->tx_ring[i];
663 set_bit(FM10K_FLAG_RESET_REQUESTED, interface->flags);
668 * @interface: pointer to the device interface structure
670 static void fm10k_watchdog_subtask(struct fm10k_intfc *interface)
672 /* if interface is down do nothing */
673 if (test_bit(__FM10K_DOWN, interface->state) ||
674 test_bit(__FM10K_RESETTING, interface->state))
677 if (interface->host_ready)
678 fm10k_watchdog_host_is_ready(interface);
680 fm10k_watchdog_host_not_ready(interface);
683 if (time_is_before_jiffies(interface->next_stats_update))
684 fm10k_update_stats(interface);
687 fm10k_watchdog_flush_tx(interface);
692 * @interface: pointer to the device interface structure
699 static void fm10k_check_hang_subtask(struct fm10k_intfc *interface)
702 if (test_bit(__FM10K_DOWN, interface->state) ||
703 test_bit(__FM10K_RESETTING, interface->state))
707 if (time_is_after_eq_jiffies(interface->next_tx_hang_check))
709 interface->next_tx_hang_check = jiffies + (2 * HZ);
711 if (netif_carrier_ok(interface->netdev)) {
715 for (i = 0; i < interface->num_tx_queues; i++)
716 set_check_for_tx_hang(interface->tx_ring[i]);
719 for (i = 0; i < interface->num_q_vectors; i++) {
720 struct fm10k_q_vector *qv = interface->q_vector[i];
735 struct fm10k_intfc *interface;
737 interface = container_of(work, struct fm10k_intfc, service_task);
740 fm10k_detach_subtask(interface);
742 /* tasks run even when interface is down */
743 fm10k_mbx_subtask(interface);
744 fm10k_reset_subtask(interface);
746 /* tasks only run when interface is up */
747 fm10k_watchdog_subtask(interface);
748 fm10k_check_hang_subtask(interface);
751 fm10k_service_event_complete(interface);
759 * the interface is up, it will attempt to queue mailbox messages to the
768 struct fm10k_intfc *interface;
775 interface = container_of(dwork, struct fm10k_intfc, macvlan_task);
776 hw = &interface->hw;
777 requests = &interface->macvlan_requests;
781 spin_lock_irqsave(&interface->macvlan_lock, flags);
788 spin_unlock_irqrestore(&interface->macvlan_lock, flags);
794 fm10k_mbx_lock(interface);
803 set_bit(__FM10K_MACVLAN_REQUEST, interface->state);
804 fm10k_mbx_unlock(interface);
807 spin_lock_irqsave(&interface->macvlan_lock, flags);
809 spin_unlock_irqrestore(&interface->macvlan_lock, flags);
839 fm10k_mbx_unlock(interface);
846 WARN_ON(!test_bit(__FM10K_MACVLAN_SCHED, interface->state));
850 clear_bit(__FM10K_MACVLAN_SCHED, interface->state);
856 if (test_bit(__FM10K_MACVLAN_REQUEST, interface->state))
857 fm10k_macvlan_schedule(interface);
862 * @interface: board private structure
867 static void fm10k_configure_tx_ring(struct fm10k_intfc *interface,
870 struct fm10k_hw *hw = &interface->hw;
893 ring->tail = &interface->uc_addr[FM10K_TDT(reg_idx)];
924 * @interface: board private structure
929 static void fm10k_enable_tx_ring(struct fm10k_intfc *interface,
932 struct fm10k_hw *hw = &interface->hw;
947 netif_err(interface, drv, interface->netdev,
953 * @interface: board private structure
957 static void fm10k_configure_tx(struct fm10k_intfc *interface)
962 for (i = 0; i < interface->num_tx_queues; i++)
963 fm10k_configure_tx_ring(interface, interface->tx_ring[i]);
966 for (i = 0; i < interface->num_tx_queues; i++)
967 fm10k_enable_tx_ring(interface, interface->tx_ring[i]);
972 * @interface: board private structure
977 static void fm10k_configure_rx_ring(struct fm10k_intfc *interface,
981 struct fm10k_hw *hw = &interface->hw;
986 u8 rx_pause = interface->rx_pause;
1007 ring->tail = &interface->uc_addr[FM10K_RDT(reg_idx)];
1023 if (interface->pfc_en)
1024 rx_pause = interface->pfc_en;
1035 if (test_bit(hw->mac.default_vid, interface->active_vlans))
1057 * @interface: board private structure
1061 void fm10k_update_rx_drop_en(struct fm10k_intfc *interface)
1063 struct fm10k_hw *hw = &interface->hw;
1064 u8 rx_pause = interface->rx_pause;
1068 if (interface->pfc_en)
1069 rx_pause = interface->pfc_en;
1072 for (i = 0; i < interface->num_rx_queues; i++) {
1073 struct fm10k_ring *ring = interface->rx_ring[i];
1086 * @interface: board private structure
1090 static void fm10k_configure_dglort(struct fm10k_intfc *interface)
1093 struct fm10k_hw *hw = &interface->hw;
1099 fm10k_write_reg(hw, FM10K_RSSRK(0, i), interface->rssrk[i]);
1103 fm10k_write_reg(hw, FM10K_RETA(0, i), interface->reta[i]);
1113 if (test_bit(FM10K_FLAG_RSS_FIELD_IPV4_UDP, interface->flags))
1115 if (test_bit(FM10K_FLAG_RSS_FIELD_IPV6_UDP, interface->flags))
1122 dglort.rss_l = fls(interface->ring_feature[RING_F_RSS].mask);
1123 dglort.pc_l = fls(interface->ring_feature[RING_F_QOS].mask);
1127 if (interface->glort_count > 64) {
1130 dglort.glort = interface->glort + 64;
1132 dglort.queue_l = fls(interface->num_rx_queues - 1);
1136 /* assign glort value for RSS/DCB specific to this interface */
1139 dglort.glort = interface->glort;
1140 dglort.rss_l = fls(interface->ring_feature[RING_F_RSS].mask);
1141 dglort.pc_l = fls(interface->ring_feature[RING_F_QOS].mask);
1144 if (interface->l2_accel)
1145 dglort.shared_l = fls(interface->l2_accel->size);
1151 * @interface: board private structure
1155 static void fm10k_configure_rx(struct fm10k_intfc *interface)
1160 fm10k_configure_swpri_map(interface);
1163 fm10k_configure_dglort(interface);
1166 for (i = 0; i < interface->num_rx_queues; i++)
1167 fm10k_configure_rx_ring(interface, interface->rx_ring[i]);
1172 static void fm10k_napi_enable_all(struct fm10k_intfc *interface)
1177 for (q_idx = 0; q_idx < interface->num_q_vectors; q_idx++) {
1178 q_vector = interface->q_vector[q_idx];
1195 struct fm10k_intfc *interface = data;
1196 struct fm10k_hw *hw = &interface->hw;
1205 if (fm10k_mbx_trylock(interface)) {
1207 fm10k_mbx_unlock(interface);
1211 fm10k_service_event_schedule(interface);
1217 static void fm10k_handle_fault(struct fm10k_intfc *interface, int type,
1220 struct pci_dev *pdev = interface->pdev;
1221 struct fm10k_hw *hw = &interface->hw;
1222 struct fm10k_iov_data *iov_data = interface->iov_data;
1302 static void fm10k_report_fault(struct fm10k_intfc *interface, u32 eicr)
1304 struct fm10k_hw *hw = &interface->hw;
1318 dev_err(&interface->pdev->dev,
1323 fm10k_handle_fault(interface, type, &fault);
1327 static void fm10k_reset_drop_on_empty(struct fm10k_intfc *interface, u32 eicr)
1329 struct fm10k_hw *hw = &interface->hw;
1343 interface->rx_overrun_pf++;
1346 interface->rx_overrun_vf++;
1368 struct fm10k_intfc *interface = data;
1369 struct fm10k_hw *hw = &interface->hw;
1380 fm10k_report_fault(interface, eicr);
1383 fm10k_reset_drop_on_empty(interface, eicr);
1386 if (fm10k_mbx_trylock(interface)) {
1390 set_bit(FM10K_FLAG_RESET_REQUESTED, interface->flags);
1393 fm10k_iov_event(interface);
1394 fm10k_mbx_unlock(interface);
1400 interface->link_down_event = jiffies + (4 * HZ);
1401 set_bit(__FM10K_LINK_DOWN, interface->state);
1411 fm10k_service_event_schedule(interface);
1421 void fm10k_mbx_free_irq(struct fm10k_intfc *interface)
1423 struct fm10k_hw *hw = &interface->hw;
1428 if (!interface->msix_entries)
1431 entry = &interface->msix_entries[FM10K_MBX_VECTOR];
1454 free_irq(entry->vector, interface);
1462 struct fm10k_intfc *interface;
1469 interface = container_of(hw, struct fm10k_intfc, hw);
1474 set_bit(FM10K_FLAG_RESET_REQUESTED, interface->flags);
1479 set_bit(FM10K_FLAG_RESET_REQUESTED, interface->flags);
1488 struct fm10k_intfc *interface;
1491 interface = container_of(hw, struct fm10k_intfc, hw);
1492 pdev = interface->pdev;
1507 static int fm10k_mbx_request_irq_vf(struct fm10k_intfc *interface)
1509 struct msix_entry *entry = &interface->msix_entries[FM10K_MBX_VECTOR];
1510 struct net_device *dev = interface->netdev;
1511 struct fm10k_hw *hw = &interface->hw;
1524 dev->name, interface);
1526 netif_err(interface, probe, dev,
1543 struct fm10k_intfc *interface;
1547 interface = container_of(hw, struct fm10k_intfc, hw);
1552 interface->link_down_event = jiffies + (2 * HZ);
1553 set_bit(__FM10K_LINK_DOWN, interface->state);
1558 fm10k_service_event_schedule(interface);
1561 if (interface->lport_map_failed)
1564 interface->lport_map_failed = true;
1567 dev_warn(&interface->pdev->dev,
1568 "cannot obtain link because the host interface is configured for a PCIe host interface bandwidth of zero\n");
1569 dev_warn(&interface->pdev->dev,
1580 interface->lport_map_failed = false;
1584 set_bit(FM10K_FLAG_RESET_REQUESTED, interface->flags);
1592 struct fm10k_intfc *interface;
1614 interface = container_of(hw, struct fm10k_intfc, hw);
1617 err = fm10k_iov_update_pvid(interface, glort, pvid);
1623 set_bit(FM10K_FLAG_RESET_REQUESTED, interface->flags);
1640 static int fm10k_mbx_request_irq_pf(struct fm10k_intfc *interface)
1642 struct msix_entry *entry = &interface->msix_entries[FM10K_MBX_VECTOR];
1643 struct net_device *dev = interface->netdev;
1644 struct fm10k_hw *hw = &interface->hw;
1658 dev->name, interface);
1660 netif_err(interface, probe, dev,
1691 int fm10k_mbx_request_irq(struct fm10k_intfc *interface)
1693 struct fm10k_hw *hw = &interface->hw;
1698 err = fm10k_mbx_request_irq_pf(interface);
1700 err = fm10k_mbx_request_irq_vf(interface);
1709 fm10k_mbx_free_irq(interface);
1716 * @interface: board private structure
1718 * Release all interrupts associated with this interface
1720 void fm10k_qv_free_irq(struct fm10k_intfc *interface)
1722 int vector = interface->num_q_vectors;
1725 entry = &interface->msix_entries[NON_Q_VECTORS + vector];
1732 q_vector = interface->q_vector[vector];
1749 * @interface: board private structure
1754 int fm10k_qv_request_irq(struct fm10k_intfc *interface)
1756 struct net_device *dev = interface->netdev;
1757 struct fm10k_hw *hw = &interface->hw;
1762 entry = &interface->msix_entries[NON_Q_VECTORS];
1764 for (vector = 0; vector < interface->num_q_vectors; vector++) {
1765 struct fm10k_q_vector *q_vector = interface->q_vector[vector];
1785 &interface->uc_addr[FM10K_ITR(entry->entry)] :
1786 &interface->uc_addr[FM10K_VFITR(entry->entry)];
1792 netif_err(interface, probe, dev,
1816 q_vector = interface->q_vector[vector];
1833 void fm10k_up(struct fm10k_intfc *interface)
1835 struct fm10k_hw *hw = &interface->hw;
1841 fm10k_configure_tx(interface);
1844 fm10k_configure_rx(interface);
1850 clear_bit(__FM10K_UPDATING_STATS, interface->state);
1853 clear_bit(__FM10K_DOWN, interface->state);
1856 fm10k_napi_enable_all(interface);
1859 fm10k_restore_rx_state(interface);
1862 netif_tx_start_all_queues(interface->netdev);
1866 mod_timer(&interface->service_timer, jiffies);
1869 static void fm10k_napi_disable_all(struct fm10k_intfc *interface)
1874 for (q_idx = 0; q_idx < interface->num_q_vectors; q_idx++) {
1875 q_vector = interface->q_vector[q_idx];
1880 void fm10k_down(struct fm10k_intfc *interface)
1882 struct net_device *netdev = interface->netdev;
1883 struct fm10k_hw *hw = &interface->hw;
1887 if (test_and_set_bit(__FM10K_DOWN, interface->state))
1898 fm10k_reset_rx_state(interface);
1901 fm10k_napi_disable_all(interface);
1903 /* capture stats one last time before stopping interface */
1904 fm10k_update_stats(interface);
1907 while (test_and_set_bit(__FM10K_UPDATING_STATS, interface->state))
1931 for (; i < interface->num_tx_queues; i++)
1932 if (fm10k_get_tx_pending(interface->tx_ring[i], false))
1936 if (i == interface->num_tx_queues)
1941 dev_err(&interface->pdev->dev,
1948 dev_err(&interface->pdev->dev,
1951 dev_err(&interface->pdev->dev, "stop_hw failed: %d\n", err);
1954 fm10k_clean_all_tx_rings(interface);
1955 fm10k_clean_all_rx_rings(interface);
1960 * @interface: host interface private structure to initialize
1963 * fm10k_sw_init initializes the interface private data structure.
1967 static int fm10k_sw_init(struct fm10k_intfc *interface,
1971 struct fm10k_hw *hw = &interface->hw;
1972 struct pci_dev *pdev = interface->pdev;
1973 struct net_device *netdev = interface->netdev;
1979 hw->back = interface;
1980 hw->hw_addr = interface->uc_addr;
1999 interface->ring_feature[RING_F_RSS].limit = rss;
2030 hw->mac.ops.update_hw_stats(hw, &interface->stats);
2055 /* initialize DCBNL interface */
2059 interface->tx_ring_count = FM10K_DEFAULT_TXD;
2060 interface->rx_ring_count = FM10K_DEFAULT_RXD;
2063 interface->tx_itr = FM10K_TX_ITR_DEFAULT;
2064 interface->rx_itr = FM10K_ITR_ADAPTIVE | FM10K_RX_ITR_DEFAULT;
2067 INIT_LIST_HEAD(&interface->macvlan_requests);
2070 memcpy(interface->rssrk, rss_key, sizeof(rss_key));
2073 spin_lock_init(&interface->mbx_lock);
2074 spin_lock_init(&interface->macvlan_lock);
2076 /* Start off interface as being down */
2077 set_bit(__FM10K_DOWN, interface->state);
2078 set_bit(__FM10K_UPDATING_STATS, interface->state);
2090 * fm10k_probe initializes an interface identified by a pci_dev structure.
2091 * The OS initialization, configuring of the interface private structure,
2097 struct fm10k_intfc *interface;
2140 interface = netdev_priv(netdev);
2141 pci_set_drvdata(pdev, interface);
2143 interface->netdev = netdev;
2144 interface->pdev = pdev;
2146 interface->uc_addr = ioremap(pci_resource_start(pdev, 0),
2148 if (!interface->uc_addr) {
2153 err = fm10k_sw_init(interface, ent);
2158 fm10k_dbg_intfc_init(interface);
2160 err = fm10k_init_queueing_scheme(interface);
2168 set_bit(__FM10K_SERVICE_DISABLE, interface->state);
2170 err = fm10k_mbx_request_irq(interface);
2174 /* final check of hardware state before registering the interface */
2175 err = fm10k_hw_ready(interface);
2192 timer_setup(&interface->service_timer, fm10k_service_timer, 0);
2193 INIT_WORK(&interface->service_task, fm10k_service_task);
2196 INIT_DELAYED_WORK(&interface->macvlan_task, fm10k_macvlan_task);
2198 /* kick off service timer now, even when interface is down */
2199 mod_timer(&interface->service_timer, (HZ * 2) + jiffies);
2202 pcie_print_link_status(interface->pdev);
2211 clear_bit(__FM10K_SERVICE_DISABLE, interface->state);
2212 fm10k_service_event_schedule(interface);
2217 fm10k_mbx_free_irq(interface);
2219 fm10k_clear_queueing_scheme(interface);
2221 if (interface->sw_addr)
2222 iounmap(interface->sw_addr);
2223 iounmap(interface->uc_addr);
2245 struct fm10k_intfc *interface = pci_get_drvdata(pdev);
2246 struct net_device *netdev = interface->netdev;
2248 del_timer_sync(&interface->service_timer);
2250 fm10k_stop_service_event(interface);
2251 fm10k_stop_macvlan_task(interface);
2254 fm10k_clear_macvlan_queue(interface, interface->glort, true);
2264 fm10k_mbx_free_irq(interface);
2267 fm10k_clear_queueing_scheme(interface);
2270 fm10k_dbg_intfc_exit(interface);
2272 if (interface->sw_addr)
2273 iounmap(interface->sw_addr);
2274 iounmap(interface->uc_addr);
2283 static void fm10k_prepare_suspend(struct fm10k_intfc *interface)
2293 fm10k_stop_service_event(interface);
2295 if (fm10k_prepare_for_reset(interface))
2296 set_bit(__FM10K_RESET_SUSPENDED, interface->state);
2299 static int fm10k_handle_resume(struct fm10k_intfc *interface)
2301 struct fm10k_hw *hw = &interface->hw;
2307 if (!test_and_clear_bit(__FM10K_RESET_SUSPENDED, interface->state))
2308 dev_warn(&interface->pdev->dev,
2312 hw->mac.ops.rebind_hw_stats(hw, &interface->stats);
2314 err = fm10k_handle_reset(interface);
2321 interface->host_ready = false;
2322 fm10k_watchdog_host_not_ready(interface);
2325 interface->link_down_event = jiffies + (HZ);
2326 set_bit(__FM10K_LINK_DOWN, interface->state);
2329 fm10k_start_service_event(interface);
2332 fm10k_macvlan_schedule(interface);
2347 struct fm10k_intfc *interface = dev_get_drvdata(dev);
2348 struct net_device *netdev = interface->netdev;
2349 struct fm10k_hw *hw = &interface->hw;
2353 hw->hw_addr = interface->uc_addr;
2355 err = fm10k_handle_resume(interface);
2374 struct fm10k_intfc *interface = dev_get_drvdata(dev);
2375 struct net_device *netdev = interface->netdev;
2379 fm10k_prepare_suspend(interface);
2395 struct fm10k_intfc *interface = pci_get_drvdata(pdev);
2396 struct net_device *netdev = interface->netdev;
2403 fm10k_prepare_suspend(interface);
2449 struct fm10k_intfc *interface = pci_get_drvdata(pdev);
2450 struct net_device *netdev = interface->netdev;
2453 err = fm10k_handle_resume(interface);
2487 struct fm10k_intfc *interface = pci_get_drvdata(pdev);
2488 int err = fm10k_handle_resume(interface);
2493 netif_device_detach(interface->netdev);
2520 * fm10k_register_pci_driver - register driver interface
2530 * fm10k_unregister_pci_driver - unregister driver interface