Root/package/ep80579-drivers/patches/102-iegbe_nuke_polling_netdev.patch

1--- a/Embedded/src/GbE/iegbe.h
2+++ b/Embedded/src/GbE/iegbe.h
3@@ -316,7 +316,6 @@ struct iegbe_adapter {
4                 int cleaned_count);
5     struct iegbe_rx_ring *rx_ring; /* One per active queue */
6     struct napi_struct napi;
7- struct net_device *polling_netdev; /* One per active queue */
8 
9     int num_tx_queues;
10     int num_rx_queues;
11--- a/Embedded/src/GbE/iegbe_main.c
12+++ b/Embedded/src/GbE/iegbe_main.c
13@@ -763,7 +763,7 @@ static int __devinit iegbe_probe(struct
14     struct iegbe_hw *hw;
15 
16     static int cards_found = 0;
17- int i, err, pci_using_dac;
18+ int err, pci_using_dac;
19     u16 eeprom_data = 0;
20     u16 eeprom_apme_mask = E1000_EEPROM_APME;
21     int bars;
22@@ -984,11 +984,8 @@ err_eeprom:
23         iegbe_phy_hw_reset(hw);
24     if (hw->flash_address)
25         iounmap(hw->flash_address);
26- for (i = 0; i < adapter->num_rx_queues; i++)
27- dev_put(&adapter->polling_netdev[i]);
28     kfree(adapter->tx_ring);
29     kfree(adapter->rx_ring);
30- kfree(adapter->polling_netdev);
31 err_sw_init:
32     iounmap(hw->hw_addr);
33 err_ioremap:
34@@ -1017,7 +1014,6 @@ iegbe_remove(struct pci_dev *pdev)
35     struct net_device *netdev = pci_get_drvdata(pdev);
36     struct iegbe_adapter *adapter = netdev_priv(netdev);
37     uint32_t manc;
38- int i;
39 
40     if(adapter->hw.mac_type >= iegbe_82540
41        && adapter->hw.mac_type != iegbe_icp_xxxx
42@@ -1030,15 +1026,11 @@ iegbe_remove(struct pci_dev *pdev)
43     }
44 
45     unregister_netdev(netdev);
46- for (i = 0x0; i < adapter->num_rx_queues; i++)
47- dev_put(&adapter->polling_netdev[i]);
48-
49     if(!iegbe_check_phy_reset_block(&adapter->hw)) {
50         iegbe_phy_hw_reset(&adapter->hw);
51     }
52     kfree(adapter->tx_ring);
53     kfree(adapter->rx_ring);
54- kfree(adapter->polling_netdev);
55 
56     iounmap(adapter->hw.hw_addr);
57     pci_release_regions(pdev);
58@@ -1061,7 +1053,6 @@ iegbe_sw_init(struct iegbe_adapter *adap
59     struct iegbe_hw *hw = &adapter->hw;
60     struct net_device *netdev = adapter->netdev;
61     struct pci_dev *pdev = adapter->pdev;
62- int i;
63 
64     /* PCI config space info */
65 
66@@ -1111,11 +1102,6 @@ iegbe_sw_init(struct iegbe_adapter *adap
67         return -ENOMEM;
68     }
69 
70- for (i = 0; i < adapter->num_rx_queues; i++) {
71- adapter->polling_netdev[i].priv = adapter;
72- dev_hold(&adapter->polling_netdev[i]);
73- set_bit(__LINK_STATE_START, &adapter->polling_netdev[i].state);
74- }
75     spin_lock_init(&adapter->tx_queue_lock);
76 
77         /*
78@@ -1137,8 +1123,7 @@ iegbe_sw_init(struct iegbe_adapter *adap
79  * @adapter: board private structure to initialize
80  *
81  * We allocate one ring per queue at run-time since we don't know the
82- * number of queues at compile-time. The polling_netdev array is
83- * intended for Multiqueue, but should work fine with a single queue.
84+ * number of queues at compile-time.
85  **/
86 
87 static int __devinit
88@@ -1158,15 +1143,6 @@ iegbe_alloc_queues(struct iegbe_adapter
89         return -ENOMEM;
90     }
91 
92- adapter->polling_netdev = kcalloc(adapter->num_rx_queues,
93- sizeof(struct net_device),
94- GFP_KERNEL);
95- if (!adapter->polling_netdev) {
96- kfree(adapter->tx_ring);
97- kfree(adapter->rx_ring);
98- return -ENOMEM;
99- }
100-
101     return E1000_SUCCESS;
102 }
103 
104

Archive Download this file



interactive