hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/drivers/net/ethernet/intel/fm10k/fm10k_pci.c
....@@ -1,5 +1,5 @@
11 // SPDX-License-Identifier: GPL-2.0
2
-/* Copyright(c) 2013 - 2018 Intel Corporation. */
2
+/* Copyright(c) 2013 - 2019 Intel Corporation. */
33
44 #include <linux/module.h>
55 #include <linux/interrupt.h>
....@@ -23,6 +23,8 @@
2323 */
2424 static const struct pci_device_id fm10k_pci_tbl[] = {
2525 { PCI_VDEVICE(INTEL, FM10K_DEV_ID_PF), fm10k_device_pf },
26
+ { PCI_VDEVICE(INTEL, FM10K_DEV_ID_SDI_FM10420_QDA2), fm10k_device_pf },
27
+ { PCI_VDEVICE(INTEL, FM10K_DEV_ID_SDI_FM10420_DA2), fm10k_device_pf },
2628 { PCI_VDEVICE(INTEL, FM10K_DEV_ID_VF), fm10k_device_vf },
2729 /* required last entry */
2830 { 0, }
....@@ -219,8 +221,6 @@
219221 {
220222 struct net_device *netdev = interface->netdev;
221223
222
- WARN_ON(in_interrupt());
223
-
224224 /* put off any impending NetWatchDogTimeout */
225225 netif_trans_update(netdev);
226226
....@@ -342,7 +342,6 @@
342342 struct net_device *netdev = interface->netdev;
343343 u32 __iomem *hw_addr;
344344 u32 value;
345
- int err;
346345
347346 /* do nothing if netdev is still present or hw_addr is set */
348347 if (netif_device_present(netdev) || interface->hw.hw_addr)
....@@ -360,6 +359,8 @@
360359 hw_addr = READ_ONCE(interface->uc_addr);
361360 value = readl(hw_addr);
362361 if (~value) {
362
+ int err;
363
+
363364 /* Make sure the reset was initiated because we detached,
364365 * otherwise we might race with a different reset flow.
365366 */
....@@ -627,6 +628,9 @@
627628 net_stats->rx_errors = rx_errors;
628629 net_stats->rx_dropped = interface->stats.nodesc_drop.count;
629630
631
+ /* Update VF statistics */
632
+ fm10k_iov_update_stats(interface);
633
+
630634 clear_bit(__FM10K_UPDATING_STATS, interface->state);
631635 }
632636
....@@ -695,8 +699,6 @@
695699 */
696700 static void fm10k_check_hang_subtask(struct fm10k_intfc *interface)
697701 {
698
- int i;
699
-
700702 /* If we're down or resetting, just bail */
701703 if (test_bit(__FM10K_DOWN, interface->state) ||
702704 test_bit(__FM10K_RESETTING, interface->state))
....@@ -708,6 +710,8 @@
708710 interface->next_tx_hang_check = jiffies + (2 * HZ);
709711
710712 if (netif_carrier_ok(interface->netdev)) {
713
+ int i;
714
+
711715 /* Force detection of hung controller */
712716 for (i = 0; i < interface->num_tx_queues; i++)
713717 set_check_for_tx_hang(interface->tx_ring[i]);
....@@ -895,7 +899,7 @@
895899
896900 /* Map interrupt */
897901 if (ring->q_vector) {
898
- txint = ring->q_vector->v_idx + NON_Q_VECTORS(hw);
902
+ txint = ring->q_vector->v_idx + NON_Q_VECTORS;
899903 txint |= FM10K_INT_MAP_TIMER0;
900904 }
901905
....@@ -1034,7 +1038,7 @@
10341038
10351039 /* Map interrupt */
10361040 if (ring->q_vector) {
1037
- rxint = ring->q_vector->v_idx + NON_Q_VECTORS(hw);
1041
+ rxint = ring->q_vector->v_idx + NON_Q_VECTORS;
10381042 rxint |= FM10K_INT_MAP_TIMER1;
10391043 }
10401044
....@@ -1717,10 +1721,9 @@
17171721 void fm10k_qv_free_irq(struct fm10k_intfc *interface)
17181722 {
17191723 int vector = interface->num_q_vectors;
1720
- struct fm10k_hw *hw = &interface->hw;
17211724 struct msix_entry *entry;
17221725
1723
- entry = &interface->msix_entries[NON_Q_VECTORS(hw) + vector];
1726
+ entry = &interface->msix_entries[NON_Q_VECTORS + vector];
17241727
17251728 while (vector) {
17261729 struct fm10k_q_vector *q_vector;
....@@ -1757,7 +1760,7 @@
17571760 unsigned int ri = 0, ti = 0;
17581761 int vector, err;
17591762
1760
- entry = &interface->msix_entries[NON_Q_VECTORS(hw)];
1763
+ entry = &interface->msix_entries[NON_Q_VECTORS];
17611764
17621765 for (vector = 0; vector < interface->num_q_vectors; vector++) {
17631766 struct fm10k_q_vector *q_vector = interface->q_vector[vector];
....@@ -2061,10 +2064,6 @@
20612064 interface->tx_itr = FM10K_TX_ITR_DEFAULT;
20622065 interface->rx_itr = FM10K_ITR_ADAPTIVE | FM10K_RX_ITR_DEFAULT;
20632066
2064
- /* initialize udp port lists */
2065
- INIT_LIST_HEAD(&interface->vxlan_port);
2066
- INIT_LIST_HEAD(&interface->geneve_port);
2067
-
20682067 /* Initialize the MAC/VLAN queue */
20692068 INIT_LIST_HEAD(&interface->macvlan_requests);
20702069
....@@ -2338,7 +2337,7 @@
23382337 /* Restart the MAC/VLAN request queue in-case of outstanding events */
23392338 fm10k_macvlan_schedule(interface);
23402339
2341
- return err;
2340
+ return 0;
23422341 }
23432342
23442343 /**
....@@ -2351,7 +2350,7 @@
23512350 **/
23522351 static int __maybe_unused fm10k_resume(struct device *dev)
23532352 {
2354
- struct fm10k_intfc *interface = pci_get_drvdata(to_pci_dev(dev));
2353
+ struct fm10k_intfc *interface = dev_get_drvdata(dev);
23552354 struct net_device *netdev = interface->netdev;
23562355 struct fm10k_hw *hw = &interface->hw;
23572356 int err;
....@@ -2378,7 +2377,7 @@
23782377 **/
23792378 static int __maybe_unused fm10k_suspend(struct device *dev)
23802379 {
2381
- struct fm10k_intfc *interface = pci_get_drvdata(to_pci_dev(dev));
2380
+ struct fm10k_intfc *interface = dev_get_drvdata(dev);
23822381 struct net_device *netdev = interface->netdev;
23832382
23842383 netif_device_detach(netdev);
....@@ -2440,8 +2439,6 @@
24402439
24412440 result = PCI_ERS_RESULT_RECOVERED;
24422441 }
2443
-
2444
- pci_cleanup_aer_uncorrect_error_status(pdev);
24452442
24462443 return result;
24472444 }