hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/drivers/net/ethernet/intel/e1000/e1000_main.c
....@@ -10,8 +10,6 @@
1010
1111 char e1000_driver_name[] = "e1000";
1212 static char e1000_driver_string[] = "Intel(R) PRO/1000 Network Driver";
13
-#define DRV_VERSION "7.3.21-k8-NAPI"
14
-const char e1000_driver_version[] = DRV_VERSION;
1513 static const char e1000_copyright[] = "Copyright (c) 1999-2006 Intel Corporation.";
1614
1715 /* e1000_pci_tbl - PCI Device ID Table
....@@ -134,7 +132,7 @@
134132 int cmd);
135133 static void e1000_enter_82542_rst(struct e1000_adapter *adapter);
136134 static void e1000_leave_82542_rst(struct e1000_adapter *adapter);
137
-static void e1000_tx_timeout(struct net_device *dev);
135
+static void e1000_tx_timeout(struct net_device *dev, unsigned int txqueue);
138136 static void e1000_reset_task(struct work_struct *work);
139137 static void e1000_smartspeed(struct e1000_adapter *adapter);
140138 static int e1000_82547_fifo_workaround(struct e1000_adapter *adapter,
....@@ -151,10 +149,8 @@
151149 __be16 proto, u16 vid);
152150 static void e1000_restore_vlan(struct e1000_adapter *adapter);
153151
154
-#ifdef CONFIG_PM
155
-static int e1000_suspend(struct pci_dev *pdev, pm_message_t state);
156
-static int e1000_resume(struct pci_dev *pdev);
157
-#endif
152
+static int __maybe_unused e1000_suspend(struct device *dev);
153
+static int __maybe_unused e1000_resume(struct device *dev);
158154 static void e1000_shutdown(struct pci_dev *pdev);
159155
160156 #ifdef CONFIG_NET_POLL_CONTROLLER
....@@ -179,24 +175,23 @@
179175 .resume = e1000_io_resume,
180176 };
181177
178
+static SIMPLE_DEV_PM_OPS(e1000_pm_ops, e1000_suspend, e1000_resume);
179
+
182180 static struct pci_driver e1000_driver = {
183181 .name = e1000_driver_name,
184182 .id_table = e1000_pci_tbl,
185183 .probe = e1000_probe,
186184 .remove = e1000_remove,
187
-#ifdef CONFIG_PM
188
- /* Power Management Hooks */
189
- .suspend = e1000_suspend,
190
- .resume = e1000_resume,
191
-#endif
185
+ .driver = {
186
+ .pm = &e1000_pm_ops,
187
+ },
192188 .shutdown = e1000_shutdown,
193189 .err_handler = &e1000_err_handler
194190 };
195191
196192 MODULE_AUTHOR("Intel Corporation, <linux.nics@intel.com>");
197193 MODULE_DESCRIPTION("Intel(R) PRO/1000 Network Driver");
198
-MODULE_LICENSE("GPL");
199
-MODULE_VERSION(DRV_VERSION);
194
+MODULE_LICENSE("GPL v2");
200195
201196 #define DEFAULT_MSG_ENABLE (NETIF_MSG_DRV|NETIF_MSG_PROBE|NETIF_MSG_LINK)
202197 static int debug = -1;
....@@ -204,8 +199,10 @@
204199 MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
205200
206201 /**
207
- * e1000_get_hw_dev - return device
208
- * used by hardware layer to print debugging information
202
+ * e1000_get_hw_dev - helper function for getting netdev
203
+ * @hw: pointer to HW struct
204
+ *
205
+ * return device used by hardware layer to print debugging information
209206 *
210207 **/
211208 struct net_device *e1000_get_hw_dev(struct e1000_hw *hw)
....@@ -223,7 +220,7 @@
223220 static int __init e1000_init_module(void)
224221 {
225222 int ret;
226
- pr_info("%s - version %s\n", e1000_driver_string, e1000_driver_version);
223
+ pr_info("%s\n", e1000_driver_string);
227224
228225 pr_info("%s\n", e1000_copyright);
229226
....@@ -359,7 +356,7 @@
359356
360357 /**
361358 * e1000_configure - configure the hardware for RX and TX
362
- * @adapter = private board structure
359
+ * @adapter: private board structure
363360 **/
364361 static void e1000_configure(struct e1000_adapter *adapter)
365362 {
....@@ -539,7 +536,6 @@
539536
540537 void e1000_reinit_locked(struct e1000_adapter *adapter)
541538 {
542
- WARN_ON(in_interrupt());
543539 while (test_and_set_bit(__E1000_RESETTING, &adapter->flags))
544540 msleep(1);
545541
....@@ -825,7 +821,7 @@
825821 else
826822 e1000_reset(adapter);
827823
828
- return 0;
824
+ return 1;
829825 }
830826
831827 static const struct net_device_ops e1000_netdev_ops = {
....@@ -982,7 +978,7 @@
982978 goto err_ioremap;
983979
984980 if (adapter->need_ioport) {
985
- for (i = BAR_1; i <= BAR_5; i++) {
981
+ for (i = BAR_1; i < PCI_STD_NUM_BARS; i++) {
986982 if (pci_resource_len(pdev, i) == 0)
987983 continue;
988984 if (pci_resource_flags(pdev, i) & IORESOURCE_IO) {
....@@ -1143,7 +1139,7 @@
11431139 EEPROM_INIT_CONTROL3_PORT_B, 1, &eeprom_data);
11441140 break;
11451141 }
1146
- /* Fall Through */
1142
+ fallthrough;
11471143 default:
11481144 e1000_read_eeprom(hw,
11491145 EEPROM_INIT_CONTROL3_PORT_A, 1, &eeprom_data);
....@@ -1486,7 +1482,7 @@
14861482 if (hw->mac_type == e1000_82545 ||
14871483 hw->mac_type == e1000_ce4100 ||
14881484 hw->mac_type == e1000_82546) {
1489
- return ((begin ^ (end - 1)) >> 16) != 0 ? false : true;
1485
+ return ((begin ^ (end - 1)) >> 16) == 0;
14901486 }
14911487
14921488 return true;
....@@ -2443,7 +2439,6 @@
24432439 if (link) {
24442440 if (!netif_carrier_ok(netdev)) {
24452441 u32 ctrl;
2446
- bool txb2b = true;
24472442 /* update snapshot of PHY registers on LSC */
24482443 e1000_get_speed_and_duplex(hw,
24492444 &adapter->link_speed,
....@@ -2465,11 +2460,9 @@
24652460 adapter->tx_timeout_factor = 1;
24662461 switch (adapter->link_speed) {
24672462 case SPEED_10:
2468
- txb2b = false;
24692463 adapter->tx_timeout_factor = 16;
24702464 break;
24712465 case SPEED_100:
2472
- txb2b = false;
24732466 /* maybe add some timeout factor ? */
24742467 break;
24752468 }
....@@ -2728,11 +2721,7 @@
27282721 cmd_length = E1000_TXD_CMD_IP;
27292722 ipcse = skb_transport_offset(skb) - 1;
27302723 } else if (skb_is_gso_v6(skb)) {
2731
- ipv6_hdr(skb)->payload_len = 0;
2732
- tcp_hdr(skb)->check =
2733
- ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
2734
- &ipv6_hdr(skb)->daddr,
2735
- 0, IPPROTO_TCP, 0);
2724
+ tcp_v6_gso_csum_prep(skb);
27362725 ipcse = 0;
27372726 }
27382727 ipcss = skb_network_offset(skb);
....@@ -2902,9 +2891,8 @@
29022891 }
29032892
29042893 for (f = 0; f < nr_frags; f++) {
2905
- const struct skb_frag_struct *frag;
2894
+ const skb_frag_t *frag = &skb_shinfo(skb)->frags[f];
29062895
2907
- frag = &skb_shinfo(skb)->frags[f];
29082896 len = skb_frag_size(frag);
29092897 offset = 0;
29102898
....@@ -3032,7 +3020,7 @@
30323020 * applicable for weak-ordered memory model archs,
30333021 * such as IA-64).
30343022 */
3035
- wmb();
3023
+ dma_wmb();
30363024
30373025 tx_ring->next_to_use = i;
30383026 }
....@@ -3167,7 +3155,6 @@
31673155 if ((unsigned long)(skb_tail_pointer(skb) - 1)
31683156 & 4)
31693157 break;
3170
- /* fall through */
31713158 pull_size = min((unsigned int)4, skb->data_len);
31723159 if (!__pskb_pull_tail(skb, pull_size)) {
31733160 e_err(drv, "__pskb_pull_tail "
....@@ -3282,14 +3269,9 @@
32823269 /* Make sure there is space in the ring for the next send. */
32833270 e1000_maybe_stop_tx(netdev, tx_ring, desc_needed);
32843271
3285
- if (!skb->xmit_more ||
3272
+ if (!netdev_xmit_more() ||
32863273 netif_xmit_stopped(netdev_get_tx_queue(netdev, 0))) {
32873274 writel(tx_ring->next_to_use, hw->hw_addr + tx_ring->tdt);
3288
- /* we need this if more than one processor can write to
3289
- * our tail at a time, it synchronizes IO on IA64/Altix
3290
- * systems
3291
- */
3292
- mmiowb();
32933275 }
32943276 } else {
32953277 dev_kfree_skb_any(skb);
....@@ -3508,8 +3490,9 @@
35083490 /**
35093491 * e1000_tx_timeout - Respond to a Tx Hang
35103492 * @netdev: network interface device structure
3493
+ * @txqueue: number of the Tx queue that hung (unused)
35113494 **/
3512
-static void e1000_tx_timeout(struct net_device *netdev)
3495
+static void e1000_tx_timeout(struct net_device *netdev, unsigned int __always_unused txqueue)
35133496 {
35143497 struct e1000_adapter *adapter = netdev_priv(netdev);
35153498
....@@ -3586,8 +3569,8 @@
35863569 (max_frame == MAXIMUM_ETHERNET_VLAN_SIZE)))
35873570 adapter->rx_buffer_len = MAXIMUM_ETHERNET_VLAN_SIZE;
35883571
3589
- pr_info("%s changing MTU from %d to %d\n",
3590
- netdev->name, netdev->mtu, new_mtu);
3572
+ netdev_dbg(netdev, "changing MTU from %d to %d\n",
3573
+ netdev->mtu, new_mtu);
35913574 netdev->mtu = new_mtu;
35923575
35933576 if (netif_running(netdev))
....@@ -3806,7 +3789,8 @@
38063789
38073790 /**
38083791 * e1000_clean - NAPI Rx polling callback
3809
- * @adapter: board private structure
3792
+ * @napi: napi struct containing references to driver info
3793
+ * @budget: budget given to driver for receive packets
38103794 **/
38113795 static int e1000_clean(struct napi_struct *napi, int budget)
38123796 {
....@@ -3818,14 +3802,15 @@
38183802
38193803 adapter->clean_rx(adapter, &adapter->rx_ring[0], &work_done, budget);
38203804
3821
- if (!tx_clean_complete)
3822
- work_done = budget;
3805
+ if (!tx_clean_complete || work_done == budget)
3806
+ return budget;
38233807
3824
- /* If budget not fully consumed, exit the polling mode */
3825
- if (work_done < budget) {
3808
+ /* Exit the polling mode, but don't re-enable interrupts if stack might
3809
+ * poll us due to busy-polling
3810
+ */
3811
+ if (likely(napi_complete_done(napi, work_done))) {
38263812 if (likely(adapter->itr_setting & 3))
38273813 e1000_set_itr(adapter);
3828
- napi_complete_done(napi, work_done);
38293814 if (!test_bit(__E1000_DOWN, &adapter->flags))
38303815 e1000_irq_enable(adapter);
38313816 }
....@@ -3836,6 +3821,7 @@
38363821 /**
38373822 * e1000_clean_tx_irq - Reclaim resources after transmit completes
38383823 * @adapter: board private structure
3824
+ * @tx_ring: ring to clean
38393825 **/
38403826 static bool e1000_clean_tx_irq(struct e1000_adapter *adapter,
38413827 struct e1000_tx_ring *tx_ring)
....@@ -3951,7 +3937,7 @@
39513937 * @adapter: board private structure
39523938 * @status_err: receive descriptor status and error fields
39533939 * @csum: receive descriptor csum field
3954
- * @sk_buff: socket buffer with received data
3940
+ * @skb: socket buffer with received data
39553941 **/
39563942 static void e1000_rx_checksum(struct e1000_adapter *adapter, u32 status_err,
39573943 u32 csum, struct sk_buff *skb)
....@@ -3988,6 +3974,9 @@
39883974
39893975 /**
39903976 * e1000_consume_page - helper function for jumbo Rx path
3977
+ * @bi: software descriptor shadow data
3978
+ * @skb: skb being modified
3979
+ * @length: length of data being added
39913980 **/
39923981 static void e1000_consume_page(struct e1000_rx_buffer *bi, struct sk_buff *skb,
39933982 u16 length)
....@@ -4021,6 +4010,7 @@
40214010 /**
40224011 * e1000_tbi_adjust_stats
40234012 * @hw: Struct containing variables accessed by shared code
4013
+ * @stats: point to stats struct
40244014 * @frame_len: The length of the frame in question
40254015 * @mac_addr: The Ethernet destination address of the frame in question
40264016 *
....@@ -4195,8 +4185,7 @@
41954185 /* an error means any chain goes out the window
41964186 * too
41974187 */
4198
- if (rx_ring->rx_skb_top)
4199
- dev_kfree_skb(rx_ring->rx_skb_top);
4188
+ dev_kfree_skb(rx_ring->rx_skb_top);
42004189 rx_ring->rx_skb_top = NULL;
42014190 goto next_desc;
42024191 }
....@@ -4559,7 +4548,7 @@
45594548 * applicable for weak-ordered memory model archs,
45604549 * such as IA-64).
45614550 */
4562
- wmb();
4551
+ dma_wmb();
45634552 writel(i, adapter->hw.hw_addr + rx_ring->rdt);
45644553 }
45654554 }
....@@ -4567,6 +4556,8 @@
45674556 /**
45684557 * e1000_alloc_rx_buffers - Replace used receive buffers; legacy & extended
45694558 * @adapter: address of board private structure
4559
+ * @rx_ring: pointer to ring struct
4560
+ * @cleaned_count: number of new Rx buffers to try to allocate
45704561 **/
45714562 static void e1000_alloc_rx_buffers(struct e1000_adapter *adapter,
45724563 struct e1000_rx_ring *rx_ring,
....@@ -4674,14 +4665,14 @@
46744665 * applicable for weak-ordered memory model archs,
46754666 * such as IA-64).
46764667 */
4677
- wmb();
4668
+ dma_wmb();
46784669 writel(i, hw->hw_addr + rx_ring->rdt);
46794670 }
46804671 }
46814672
46824673 /**
46834674 * e1000_smartspeed - Workaround for SmartSpeed on 82541 and 82547 controllers.
4684
- * @adapter:
4675
+ * @adapter: address of board private structure
46854676 **/
46864677 static void e1000_smartspeed(struct e1000_adapter *adapter)
46874678 {
....@@ -4737,10 +4728,10 @@
47374728 }
47384729
47394730 /**
4740
- * e1000_ioctl -
4741
- * @netdev:
4742
- * @ifreq:
4743
- * @cmd:
4731
+ * e1000_ioctl - handle ioctl calls
4732
+ * @netdev: pointer to our netdev
4733
+ * @ifr: pointer to interface request structure
4734
+ * @cmd: ioctl data
47444735 **/
47454736 static int e1000_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
47464737 {
....@@ -4756,9 +4747,9 @@
47564747
47574748 /**
47584749 * e1000_mii_ioctl -
4759
- * @netdev:
4760
- * @ifreq:
4761
- * @cmd:
4750
+ * @netdev: pointer to our netdev
4751
+ * @ifr: pointer to interface request structure
4752
+ * @cmd: ioctl data
47624753 **/
47634754 static int e1000_mii_ioctl(struct net_device *netdev, struct ifreq *ifr,
47644755 int cmd)
....@@ -5073,9 +5064,6 @@
50735064 struct e1000_hw *hw = &adapter->hw;
50745065 u32 ctrl, ctrl_ext, rctl, status;
50755066 u32 wufc = adapter->wol;
5076
-#ifdef CONFIG_PM
5077
- int retval = 0;
5078
-#endif
50795067
50805068 netif_device_detach(netdev);
50815069
....@@ -5088,12 +5076,6 @@
50885076 WARN_ON(test_bit(__E1000_RESETTING, &adapter->flags));
50895077 e1000_down(adapter);
50905078 }
5091
-
5092
-#ifdef CONFIG_PM
5093
- retval = pci_save_state(pdev);
5094
- if (retval)
5095
- return retval;
5096
-#endif
50975079
50985080 status = er32(STATUS);
50995081 if (status & E1000_STATUS_LU)
....@@ -5155,36 +5137,25 @@
51555137 return 0;
51565138 }
51575139
5158
-#ifdef CONFIG_PM
5159
-static int e1000_suspend(struct pci_dev *pdev, pm_message_t state)
5140
+static int __maybe_unused e1000_suspend(struct device *dev)
51605141 {
51615142 int retval;
5143
+ struct pci_dev *pdev = to_pci_dev(dev);
51625144 bool wake;
51635145
51645146 retval = __e1000_shutdown(pdev, &wake);
5165
- if (retval)
5166
- return retval;
5147
+ device_set_wakeup_enable(dev, wake);
51675148
5168
- if (wake) {
5169
- pci_prepare_to_sleep(pdev);
5170
- } else {
5171
- pci_wake_from_d3(pdev, false);
5172
- pci_set_power_state(pdev, PCI_D3hot);
5173
- }
5174
-
5175
- return 0;
5149
+ return retval;
51765150 }
51775151
5178
-static int e1000_resume(struct pci_dev *pdev)
5152
+static int __maybe_unused e1000_resume(struct device *dev)
51795153 {
5154
+ struct pci_dev *pdev = to_pci_dev(dev);
51805155 struct net_device *netdev = pci_get_drvdata(pdev);
51815156 struct e1000_adapter *adapter = netdev_priv(netdev);
51825157 struct e1000_hw *hw = &adapter->hw;
51835158 u32 err;
5184
-
5185
- pci_set_power_state(pdev, PCI_D0);
5186
- pci_restore_state(pdev);
5187
- pci_save_state(pdev);
51885159
51895160 if (adapter->need_ioport)
51905161 err = pci_enable_device(pdev);
....@@ -5222,7 +5193,6 @@
52225193
52235194 return 0;
52245195 }
5225
-#endif
52265196
52275197 static void e1000_shutdown(struct pci_dev *pdev)
52285198 {