xref: /linux/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c (revision 6a20b34fe3b31b292078bc79ec18a2ab0d9f7719)
1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright(c) 1999 - 2024 Intel Corporation. */
3 
4 /******************************************************************************
5  Copyright (c)2006 - 2007 Myricom, Inc. for some LRO specific code
6 ******************************************************************************/
7 
8 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
9 
10 #include <linux/types.h>
11 #include <linux/bitops.h>
12 #include <linux/module.h>
13 #include <linux/pci.h>
14 #include <linux/netdevice.h>
15 #include <linux/vmalloc.h>
16 #include <linux/string.h>
17 #include <linux/in.h>
18 #include <linux/ip.h>
19 #include <linux/tcp.h>
20 #include <linux/sctp.h>
21 #include <linux/ipv6.h>
22 #include <linux/slab.h>
23 #include <net/checksum.h>
24 #include <net/ip6_checksum.h>
25 #include <linux/ethtool.h>
26 #include <linux/if.h>
27 #include <linux/if_vlan.h>
28 #include <linux/prefetch.h>
29 #include <net/mpls.h>
30 #include <linux/bpf.h>
31 #include <linux/bpf_trace.h>
32 #include <linux/atomic.h>
33 #include <net/xfrm.h>
34 
35 #include "ixgbevf.h"
36 
37 const char ixgbevf_driver_name[] = "ixgbevf";
38 static const char ixgbevf_driver_string[] =
39 	"Intel(R) 10 Gigabit PCI Express Virtual Function Network Driver";
40 
41 static char ixgbevf_copyright[] =
42 	"Copyright (c) 2009 - 2024 Intel Corporation.";
43 
44 static const struct ixgbevf_info *ixgbevf_info_tbl[] = {
45 	[board_82599_vf]	= &ixgbevf_82599_vf_info,
46 	[board_82599_vf_hv]	= &ixgbevf_82599_vf_hv_info,
47 	[board_X540_vf]		= &ixgbevf_X540_vf_info,
48 	[board_X540_vf_hv]	= &ixgbevf_X540_vf_hv_info,
49 	[board_X550_vf]		= &ixgbevf_X550_vf_info,
50 	[board_X550_vf_hv]	= &ixgbevf_X550_vf_hv_info,
51 	[board_X550EM_x_vf]	= &ixgbevf_X550EM_x_vf_info,
52 	[board_X550EM_x_vf_hv]	= &ixgbevf_X550EM_x_vf_hv_info,
53 	[board_x550em_a_vf]	= &ixgbevf_x550em_a_vf_info,
54 	[board_e610_vf]         = &ixgbevf_e610_vf_info,
55 	[board_e610_vf_hv]      = &ixgbevf_e610_vf_hv_info,
56 };
57 
58 /* ixgbevf_pci_tbl - PCI Device ID Table
59  *
60  * Wildcard entries (PCI_ANY_ID) should come last
61  * Last entry must be all 0s
62  *
63  * { Vendor ID, Device ID, SubVendor ID, SubDevice ID,
64  *   Class, Class Mask, private data (not used) }
65  */
66 static const struct pci_device_id ixgbevf_pci_tbl[] = {
67 	{
68 		PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_VF),
69 		.driver_data = board_82599_vf,
70 	}, {
71 		PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_VF_HV),
72 		.driver_data = board_82599_vf_hv,
73 	}, {
74 		PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X540_VF),
75 		.driver_data = board_X540_vf,
76 	}, {
77 		PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X540_VF_HV),
78 		.driver_data = board_X540_vf_hv,
79 	}, {
80 		PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550_VF),
81 		.driver_data = board_X550_vf,
82 	}, {
83 		PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550_VF_HV),
84 		.driver_data = board_X550_vf_hv,
85 	}, {
86 		PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550EM_X_VF),
87 		.driver_data = board_X550EM_x_vf,
88 	}, {
89 		PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550EM_X_VF_HV),
90 		.driver_data = board_X550EM_x_vf_hv
91 	}, {
92 		PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550EM_A_VF),
93 		.driver_data = board_x550em_a_vf,
94 	}, {
95 		PCI_VDEVICE_SUB(INTEL, IXGBE_DEV_ID_E610_VF,
96 				PCI_ANY_ID, IXGBE_SUBDEV_ID_E610_VF_HV),
97 		.driver_data = board_e610_vf_hv,
98 	}, {
99 		PCI_VDEVICE(INTEL, IXGBE_DEV_ID_E610_VF),
100 		.driver_data = board_e610_vf,
101 	},
102 	/* required last entry */
103 	{ }
104 };
105 MODULE_DEVICE_TABLE(pci, ixgbevf_pci_tbl);
106 
107 MODULE_DESCRIPTION("Intel(R) 10 Gigabit Virtual Function Network Driver");
108 MODULE_LICENSE("GPL v2");
109 
110 #define DEFAULT_MSG_ENABLE (NETIF_MSG_DRV|NETIF_MSG_PROBE|NETIF_MSG_LINK)
111 static int debug = -1;
112 module_param(debug, int, 0);
113 MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
114 
115 static struct workqueue_struct *ixgbevf_wq;
116 
117 static void ixgbevf_service_event_schedule(struct ixgbevf_adapter *adapter)
118 {
119 	if (!test_bit(__IXGBEVF_DOWN, &adapter->state) &&
120 	    !test_bit(__IXGBEVF_REMOVING, &adapter->state) &&
121 	    !test_and_set_bit(__IXGBEVF_SERVICE_SCHED, &adapter->state))
122 		queue_work(ixgbevf_wq, &adapter->service_task);
123 }
124 
125 static void ixgbevf_service_event_complete(struct ixgbevf_adapter *adapter)
126 {
127 	BUG_ON(!test_bit(__IXGBEVF_SERVICE_SCHED, &adapter->state));
128 
129 	/* flush memory to make sure state is correct before next watchdog */
130 	smp_mb__before_atomic();
131 	clear_bit(__IXGBEVF_SERVICE_SCHED, &adapter->state);
132 }
133 
134 /* forward decls */
135 static void ixgbevf_queue_reset_subtask(struct ixgbevf_adapter *adapter);
136 static void ixgbevf_set_itr(struct ixgbevf_q_vector *q_vector);
137 static void ixgbevf_free_all_rx_resources(struct ixgbevf_adapter *adapter);
138 static bool ixgbevf_can_reuse_rx_page(struct ixgbevf_rx_buffer *rx_buffer);
139 static void ixgbevf_reuse_rx_page(struct ixgbevf_ring *rx_ring,
140 				  struct ixgbevf_rx_buffer *old_buff);
141 
142 static void ixgbevf_remove_adapter(struct ixgbe_hw *hw)
143 {
144 	struct ixgbevf_adapter *adapter = hw->back;
145 
146 	if (!hw->hw_addr)
147 		return;
148 	hw->hw_addr = NULL;
149 	dev_err(&adapter->pdev->dev, "Adapter removed\n");
150 	if (test_bit(__IXGBEVF_SERVICE_INITED, &adapter->state))
151 		ixgbevf_service_event_schedule(adapter);
152 }
153 
154 static void ixgbevf_check_remove(struct ixgbe_hw *hw, u32 reg)
155 {
156 	u32 value;
157 
158 	/* The following check not only optimizes a bit by not
159 	 * performing a read on the status register when the
160 	 * register just read was a status register read that
161 	 * returned IXGBE_FAILED_READ_REG. It also blocks any
162 	 * potential recursion.
163 	 */
164 	if (reg == IXGBE_VFSTATUS) {
165 		ixgbevf_remove_adapter(hw);
166 		return;
167 	}
168 	value = ixgbevf_read_reg(hw, IXGBE_VFSTATUS);
169 	if (value == IXGBE_FAILED_READ_REG)
170 		ixgbevf_remove_adapter(hw);
171 }
172 
173 u32 ixgbevf_read_reg(struct ixgbe_hw *hw, u32 reg)
174 {
175 	u8 __iomem *reg_addr = READ_ONCE(hw->hw_addr);
176 	u32 value;
177 
178 	if (IXGBE_REMOVED(reg_addr))
179 		return IXGBE_FAILED_READ_REG;
180 	value = readl(reg_addr + reg);
181 	if (unlikely(value == IXGBE_FAILED_READ_REG))
182 		ixgbevf_check_remove(hw, reg);
183 	return value;
184 }
185 
186 /**
187  * ixgbevf_set_ivar - set IVAR registers - maps interrupt causes to vectors
188  * @adapter: pointer to adapter struct
189  * @direction: 0 for Rx, 1 for Tx, -1 for other causes
190  * @queue: queue to map the corresponding interrupt to
191  * @msix_vector: the vector to map to the corresponding queue
192  **/
193 static void ixgbevf_set_ivar(struct ixgbevf_adapter *adapter, s8 direction,
194 			     u8 queue, u8 msix_vector)
195 {
196 	u32 ivar, index;
197 	struct ixgbe_hw *hw = &adapter->hw;
198 
199 	if (direction == -1) {
200 		/* other causes */
201 		msix_vector |= IXGBE_IVAR_ALLOC_VAL;
202 		ivar = IXGBE_READ_REG(hw, IXGBE_VTIVAR_MISC);
203 		ivar &= ~0xFF;
204 		ivar |= msix_vector;
205 		IXGBE_WRITE_REG(hw, IXGBE_VTIVAR_MISC, ivar);
206 	} else {
207 		/* Tx or Rx causes */
208 		msix_vector |= IXGBE_IVAR_ALLOC_VAL;
209 		index = ((16 * (queue & 1)) + (8 * direction));
210 		ivar = IXGBE_READ_REG(hw, IXGBE_VTIVAR(queue >> 1));
211 		ivar &= ~(0xFF << index);
212 		ivar |= (msix_vector << index);
213 		IXGBE_WRITE_REG(hw, IXGBE_VTIVAR(queue >> 1), ivar);
214 	}
215 }
216 
217 static u64 ixgbevf_get_tx_completed(struct ixgbevf_ring *ring)
218 {
219 	return ring->stats.packets;
220 }
221 
222 static u32 ixgbevf_get_tx_pending(struct ixgbevf_ring *ring)
223 {
224 	struct ixgbevf_adapter *adapter = netdev_priv(ring->netdev);
225 	struct ixgbe_hw *hw = &adapter->hw;
226 
227 	u32 head = IXGBE_READ_REG(hw, IXGBE_VFTDH(ring->reg_idx));
228 	u32 tail = IXGBE_READ_REG(hw, IXGBE_VFTDT(ring->reg_idx));
229 
230 	if (head != tail)
231 		return (head < tail) ?
232 			tail - head : (tail + ring->count - head);
233 
234 	return 0;
235 }
236 
237 static inline bool ixgbevf_check_tx_hang(struct ixgbevf_ring *tx_ring)
238 {
239 	u32 tx_done = ixgbevf_get_tx_completed(tx_ring);
240 	u32 tx_done_old = tx_ring->tx_stats.tx_done_old;
241 	u32 tx_pending = ixgbevf_get_tx_pending(tx_ring);
242 
243 	clear_check_for_tx_hang(tx_ring);
244 
245 	/* Check for a hung queue, but be thorough. This verifies
246 	 * that a transmit has been completed since the previous
247 	 * check AND there is at least one packet pending. The
248 	 * ARMED bit is set to indicate a potential hang.
249 	 */
250 	if ((tx_done_old == tx_done) && tx_pending) {
251 		/* make sure it is true for two checks in a row */
252 		return test_and_set_bit(__IXGBEVF_HANG_CHECK_ARMED,
253 					&tx_ring->state);
254 	}
255 	/* reset the countdown */
256 	clear_bit(__IXGBEVF_HANG_CHECK_ARMED, &tx_ring->state);
257 
258 	/* update completed stats and continue */
259 	tx_ring->tx_stats.tx_done_old = tx_done;
260 
261 	return false;
262 }
263 
264 static void ixgbevf_tx_timeout_reset(struct ixgbevf_adapter *adapter)
265 {
266 	/* Do the reset outside of interrupt context */
267 	if (!test_bit(__IXGBEVF_DOWN, &adapter->state)) {
268 		set_bit(__IXGBEVF_RESET_REQUESTED, &adapter->state);
269 		ixgbevf_service_event_schedule(adapter);
270 	}
271 }
272 
273 /**
274  * ixgbevf_tx_timeout - Respond to a Tx Hang
275  * @netdev: network interface device structure
276  * @txqueue: transmit queue hanging (unused)
277  **/
278 static void ixgbevf_tx_timeout(struct net_device *netdev, unsigned int __always_unused txqueue)
279 {
280 	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
281 
282 	ixgbevf_tx_timeout_reset(adapter);
283 }
284 
285 /**
286  * ixgbevf_clean_tx_irq - Reclaim resources after transmit completes
287  * @q_vector: board private structure
288  * @tx_ring: tx ring to clean
289  * @napi_budget: Used to determine if we are in netpoll
290  **/
291 static bool ixgbevf_clean_tx_irq(struct ixgbevf_q_vector *q_vector,
292 				 struct ixgbevf_ring *tx_ring, int napi_budget)
293 {
294 	struct ixgbevf_adapter *adapter = q_vector->adapter;
295 	struct ixgbevf_tx_buffer *tx_buffer;
296 	union ixgbe_adv_tx_desc *tx_desc;
297 	unsigned int total_bytes = 0, total_packets = 0, total_ipsec = 0;
298 	unsigned int budget = tx_ring->count / 2;
299 	unsigned int i = tx_ring->next_to_clean;
300 
301 	if (test_bit(__IXGBEVF_DOWN, &adapter->state))
302 		return true;
303 
304 	tx_buffer = &tx_ring->tx_buffer_info[i];
305 	tx_desc = IXGBEVF_TX_DESC(tx_ring, i);
306 	i -= tx_ring->count;
307 
308 	do {
309 		union ixgbe_adv_tx_desc *eop_desc = tx_buffer->next_to_watch;
310 
311 		/* if next_to_watch is not set then there is no work pending */
312 		if (!eop_desc)
313 			break;
314 
315 		/* prevent any other reads prior to eop_desc */
316 		smp_rmb();
317 
318 		/* if DD is not set pending work has not been completed */
319 		if (!(eop_desc->wb.status & cpu_to_le32(IXGBE_TXD_STAT_DD)))
320 			break;
321 
322 		/* clear next_to_watch to prevent false hangs */
323 		tx_buffer->next_to_watch = NULL;
324 
325 		/* update the statistics for this packet */
326 		total_bytes += tx_buffer->bytecount;
327 		total_packets += tx_buffer->gso_segs;
328 		if (tx_buffer->tx_flags & IXGBE_TX_FLAGS_IPSEC)
329 			total_ipsec++;
330 
331 		/* free the skb */
332 		if (ring_is_xdp(tx_ring))
333 			page_frag_free(tx_buffer->data);
334 		else
335 			napi_consume_skb(tx_buffer->skb, napi_budget);
336 
337 		/* unmap skb header data */
338 		dma_unmap_single(tx_ring->dev,
339 				 dma_unmap_addr(tx_buffer, dma),
340 				 dma_unmap_len(tx_buffer, len),
341 				 DMA_TO_DEVICE);
342 
343 		/* clear tx_buffer data */
344 		dma_unmap_len_set(tx_buffer, len, 0);
345 
346 		/* unmap remaining buffers */
347 		while (tx_desc != eop_desc) {
348 			tx_buffer++;
349 			tx_desc++;
350 			i++;
351 			if (unlikely(!i)) {
352 				i -= tx_ring->count;
353 				tx_buffer = tx_ring->tx_buffer_info;
354 				tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);
355 			}
356 
357 			/* unmap any remaining paged data */
358 			if (dma_unmap_len(tx_buffer, len)) {
359 				dma_unmap_page(tx_ring->dev,
360 					       dma_unmap_addr(tx_buffer, dma),
361 					       dma_unmap_len(tx_buffer, len),
362 					       DMA_TO_DEVICE);
363 				dma_unmap_len_set(tx_buffer, len, 0);
364 			}
365 		}
366 
367 		/* move us one more past the eop_desc for start of next pkt */
368 		tx_buffer++;
369 		tx_desc++;
370 		i++;
371 		if (unlikely(!i)) {
372 			i -= tx_ring->count;
373 			tx_buffer = tx_ring->tx_buffer_info;
374 			tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);
375 		}
376 
377 		/* issue prefetch for next Tx descriptor */
378 		prefetch(tx_desc);
379 
380 		/* update budget accounting */
381 		budget--;
382 	} while (likely(budget));
383 
384 	i += tx_ring->count;
385 	tx_ring->next_to_clean = i;
386 	u64_stats_update_begin(&tx_ring->syncp);
387 	tx_ring->stats.bytes += total_bytes;
388 	tx_ring->stats.packets += total_packets;
389 	u64_stats_update_end(&tx_ring->syncp);
390 	q_vector->tx.total_bytes += total_bytes;
391 	q_vector->tx.total_packets += total_packets;
392 	adapter->tx_ipsec += total_ipsec;
393 
394 	if (check_for_tx_hang(tx_ring) && ixgbevf_check_tx_hang(tx_ring)) {
395 		struct ixgbe_hw *hw = &adapter->hw;
396 		union ixgbe_adv_tx_desc *eop_desc;
397 
398 		eop_desc = tx_ring->tx_buffer_info[i].next_to_watch;
399 
400 		pr_err("Detected Tx Unit Hang%s\n"
401 		       "  Tx Queue             <%d>\n"
402 		       "  TDH, TDT             <%x>, <%x>\n"
403 		       "  next_to_use          <%x>\n"
404 		       "  next_to_clean        <%x>\n"
405 		       "tx_buffer_info[next_to_clean]\n"
406 		       "  next_to_watch        <%p>\n"
407 		       "  eop_desc->wb.status  <%x>\n"
408 		       "  time_stamp           <%lx>\n"
409 		       "  jiffies              <%lx>\n",
410 		       ring_is_xdp(tx_ring) ? " XDP" : "",
411 		       tx_ring->queue_index,
412 		       IXGBE_READ_REG(hw, IXGBE_VFTDH(tx_ring->reg_idx)),
413 		       IXGBE_READ_REG(hw, IXGBE_VFTDT(tx_ring->reg_idx)),
414 		       tx_ring->next_to_use, i,
415 		       eop_desc, (eop_desc ? eop_desc->wb.status : 0),
416 		       tx_ring->tx_buffer_info[i].time_stamp, jiffies);
417 
418 		if (!ring_is_xdp(tx_ring))
419 			netif_stop_subqueue(tx_ring->netdev,
420 					    tx_ring->queue_index);
421 
422 		/* schedule immediate reset if we believe we hung */
423 		ixgbevf_tx_timeout_reset(adapter);
424 
425 		return true;
426 	}
427 
428 	if (ring_is_xdp(tx_ring))
429 		return !!budget;
430 
431 #define TX_WAKE_THRESHOLD (DESC_NEEDED * 2)
432 	if (unlikely(total_packets && netif_carrier_ok(tx_ring->netdev) &&
433 		     (ixgbevf_desc_unused(tx_ring) >= TX_WAKE_THRESHOLD))) {
434 		/* Make sure that anybody stopping the queue after this
435 		 * sees the new next_to_clean.
436 		 */
437 		smp_mb();
438 
439 		if (__netif_subqueue_stopped(tx_ring->netdev,
440 					     tx_ring->queue_index) &&
441 		    !test_bit(__IXGBEVF_DOWN, &adapter->state)) {
442 			netif_wake_subqueue(tx_ring->netdev,
443 					    tx_ring->queue_index);
444 			++tx_ring->tx_stats.restart_queue;
445 		}
446 	}
447 
448 	return !!budget;
449 }
450 
451 /**
452  * ixgbevf_rx_skb - Helper function to determine proper Rx method
453  * @q_vector: structure containing interrupt and ring information
454  * @skb: packet to send up
455  **/
456 static void ixgbevf_rx_skb(struct ixgbevf_q_vector *q_vector,
457 			   struct sk_buff *skb)
458 {
459 	napi_gro_receive(&q_vector->napi, skb);
460 }
461 
462 #define IXGBE_RSS_L4_TYPES_MASK \
463 	((1ul << IXGBE_RXDADV_RSSTYPE_IPV4_TCP) | \
464 	 (1ul << IXGBE_RXDADV_RSSTYPE_IPV4_UDP) | \
465 	 (1ul << IXGBE_RXDADV_RSSTYPE_IPV6_TCP) | \
466 	 (1ul << IXGBE_RXDADV_RSSTYPE_IPV6_UDP))
467 
468 static inline void ixgbevf_rx_hash(struct ixgbevf_ring *ring,
469 				   union ixgbe_adv_rx_desc *rx_desc,
470 				   struct sk_buff *skb)
471 {
472 	u16 rss_type;
473 
474 	if (!(ring->netdev->features & NETIF_F_RXHASH))
475 		return;
476 
477 	rss_type = le16_to_cpu(rx_desc->wb.lower.lo_dword.hs_rss.pkt_info) &
478 		   IXGBE_RXDADV_RSSTYPE_MASK;
479 
480 	if (!rss_type)
481 		return;
482 
483 	skb_set_hash(skb, le32_to_cpu(rx_desc->wb.lower.hi_dword.rss),
484 		     (IXGBE_RSS_L4_TYPES_MASK & (1ul << rss_type)) ?
485 		     PKT_HASH_TYPE_L4 : PKT_HASH_TYPE_L3);
486 }
487 
488 /**
489  * ixgbevf_rx_checksum - indicate in skb if hw indicated a good cksum
490  * @ring: structure containig ring specific data
491  * @rx_desc: current Rx descriptor being processed
492  * @skb: skb currently being received and modified
493  **/
494 static inline void ixgbevf_rx_checksum(struct ixgbevf_ring *ring,
495 				       union ixgbe_adv_rx_desc *rx_desc,
496 				       struct sk_buff *skb)
497 {
498 	skb_checksum_none_assert(skb);
499 
500 	/* Rx csum disabled */
501 	if (!(ring->netdev->features & NETIF_F_RXCSUM))
502 		return;
503 
504 	/* if IP and error */
505 	if (ixgbevf_test_staterr(rx_desc, IXGBE_RXD_STAT_IPCS) &&
506 	    ixgbevf_test_staterr(rx_desc, IXGBE_RXDADV_ERR_IPE)) {
507 		ring->rx_stats.csum_err++;
508 		return;
509 	}
510 
511 	if (!ixgbevf_test_staterr(rx_desc, IXGBE_RXD_STAT_L4CS))
512 		return;
513 
514 	if (ixgbevf_test_staterr(rx_desc, IXGBE_RXDADV_ERR_TCPE)) {
515 		ring->rx_stats.csum_err++;
516 		return;
517 	}
518 
519 	/* It must be a TCP or UDP packet with a valid checksum */
520 	skb->ip_summed = CHECKSUM_UNNECESSARY;
521 }
522 
523 /**
524  * ixgbevf_process_skb_fields - Populate skb header fields from Rx descriptor
525  * @rx_ring: rx descriptor ring packet is being transacted on
526  * @rx_desc: pointer to the EOP Rx descriptor
527  * @skb: pointer to current skb being populated
528  *
529  * This function checks the ring, descriptor, and packet information in
530  * order to populate the checksum, VLAN, protocol, and other fields within
531  * the skb.
532  **/
533 static void ixgbevf_process_skb_fields(struct ixgbevf_ring *rx_ring,
534 				       union ixgbe_adv_rx_desc *rx_desc,
535 				       struct sk_buff *skb)
536 {
537 	ixgbevf_rx_hash(rx_ring, rx_desc, skb);
538 	ixgbevf_rx_checksum(rx_ring, rx_desc, skb);
539 
540 	if (ixgbevf_test_staterr(rx_desc, IXGBE_RXD_STAT_VP)) {
541 		u16 vid = le16_to_cpu(rx_desc->wb.upper.vlan);
542 		unsigned long *active_vlans = netdev_priv(rx_ring->netdev);
543 
544 		if (test_bit(vid & VLAN_VID_MASK, active_vlans))
545 			__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), vid);
546 	}
547 
548 	if (ixgbevf_test_staterr(rx_desc, IXGBE_RXDADV_STAT_SECP))
549 		ixgbevf_ipsec_rx(rx_ring, rx_desc, skb);
550 
551 	skb->protocol = eth_type_trans(skb, rx_ring->netdev);
552 }
553 
554 static
555 struct ixgbevf_rx_buffer *ixgbevf_get_rx_buffer(struct ixgbevf_ring *rx_ring,
556 						const unsigned int size)
557 {
558 	struct ixgbevf_rx_buffer *rx_buffer;
559 
560 	rx_buffer = &rx_ring->rx_buffer_info[rx_ring->next_to_clean];
561 	prefetchw(rx_buffer->page);
562 
563 	/* we are reusing so sync this buffer for CPU use */
564 	dma_sync_single_range_for_cpu(rx_ring->dev,
565 				      rx_buffer->dma,
566 				      rx_buffer->page_offset,
567 				      size,
568 				      DMA_FROM_DEVICE);
569 
570 	rx_buffer->pagecnt_bias--;
571 
572 	return rx_buffer;
573 }
574 
575 static void ixgbevf_put_rx_buffer(struct ixgbevf_ring *rx_ring,
576 				  struct ixgbevf_rx_buffer *rx_buffer,
577 				  struct sk_buff *skb)
578 {
579 	if (ixgbevf_can_reuse_rx_page(rx_buffer)) {
580 		/* hand second half of page back to the ring */
581 		ixgbevf_reuse_rx_page(rx_ring, rx_buffer);
582 	} else {
583 		if (IS_ERR(skb))
584 			/* We are not reusing the buffer so unmap it and free
585 			 * any references we are holding to it
586 			 */
587 			dma_unmap_page_attrs(rx_ring->dev, rx_buffer->dma,
588 					     ixgbevf_rx_pg_size(rx_ring),
589 					     DMA_FROM_DEVICE,
590 					     IXGBEVF_RX_DMA_ATTR);
591 		__page_frag_cache_drain(rx_buffer->page,
592 					rx_buffer->pagecnt_bias);
593 	}
594 
595 	/* clear contents of rx_buffer */
596 	rx_buffer->page = NULL;
597 }
598 
599 /**
600  * ixgbevf_is_non_eop - process handling of non-EOP buffers
601  * @rx_ring: Rx ring being processed
602  * @rx_desc: Rx descriptor for current buffer
603  *
604  * This function updates next to clean.  If the buffer is an EOP buffer
605  * this function exits returning false, otherwise it will place the
606  * sk_buff in the next buffer to be chained and return true indicating
607  * that this is in fact a non-EOP buffer.
608  **/
609 static bool ixgbevf_is_non_eop(struct ixgbevf_ring *rx_ring,
610 			       union ixgbe_adv_rx_desc *rx_desc)
611 {
612 	u32 ntc = rx_ring->next_to_clean + 1;
613 
614 	/* fetch, update, and store next to clean */
615 	ntc = (ntc < rx_ring->count) ? ntc : 0;
616 	rx_ring->next_to_clean = ntc;
617 
618 	prefetch(IXGBEVF_RX_DESC(rx_ring, ntc));
619 
620 	if (likely(ixgbevf_test_staterr(rx_desc, IXGBE_RXD_STAT_EOP)))
621 		return false;
622 
623 	return true;
624 }
625 
626 static inline unsigned int ixgbevf_rx_offset(struct ixgbevf_ring *rx_ring)
627 {
628 	return ring_uses_build_skb(rx_ring) ? IXGBEVF_SKB_PAD : 0;
629 }
630 
631 static bool ixgbevf_alloc_mapped_page(struct ixgbevf_ring *rx_ring,
632 				      struct ixgbevf_rx_buffer *bi)
633 {
634 	struct page *page = bi->page;
635 	dma_addr_t dma;
636 
637 	/* since we are recycling buffers we should seldom need to alloc */
638 	if (likely(page))
639 		return true;
640 
641 	/* alloc new page for storage */
642 	page = dev_alloc_pages(ixgbevf_rx_pg_order(rx_ring));
643 	if (unlikely(!page)) {
644 		rx_ring->rx_stats.alloc_rx_page_failed++;
645 		return false;
646 	}
647 
648 	/* map page for use */
649 	dma = dma_map_page_attrs(rx_ring->dev, page, 0,
650 				 ixgbevf_rx_pg_size(rx_ring),
651 				 DMA_FROM_DEVICE, IXGBEVF_RX_DMA_ATTR);
652 
653 	/* if mapping failed free memory back to system since
654 	 * there isn't much point in holding memory we can't use
655 	 */
656 	if (dma_mapping_error(rx_ring->dev, dma)) {
657 		__free_pages(page, ixgbevf_rx_pg_order(rx_ring));
658 
659 		rx_ring->rx_stats.alloc_rx_page_failed++;
660 		return false;
661 	}
662 
663 	bi->dma = dma;
664 	bi->page = page;
665 	bi->page_offset = ixgbevf_rx_offset(rx_ring);
666 	bi->pagecnt_bias = 1;
667 	rx_ring->rx_stats.alloc_rx_page++;
668 
669 	return true;
670 }
671 
672 /**
673  * ixgbevf_alloc_rx_buffers - Replace used receive buffers; packet split
674  * @rx_ring: rx descriptor ring (for a specific queue) to setup buffers on
675  * @cleaned_count: number of buffers to replace
676  **/
677 static void ixgbevf_alloc_rx_buffers(struct ixgbevf_ring *rx_ring,
678 				     u16 cleaned_count)
679 {
680 	union ixgbe_adv_rx_desc *rx_desc;
681 	struct ixgbevf_rx_buffer *bi;
682 	unsigned int i = rx_ring->next_to_use;
683 
684 	/* nothing to do or no valid netdev defined */
685 	if (!cleaned_count || !rx_ring->netdev)
686 		return;
687 
688 	rx_desc = IXGBEVF_RX_DESC(rx_ring, i);
689 	bi = &rx_ring->rx_buffer_info[i];
690 	i -= rx_ring->count;
691 
692 	do {
693 		if (!ixgbevf_alloc_mapped_page(rx_ring, bi))
694 			break;
695 
696 		/* sync the buffer for use by the device */
697 		dma_sync_single_range_for_device(rx_ring->dev, bi->dma,
698 						 bi->page_offset,
699 						 ixgbevf_rx_bufsz(rx_ring),
700 						 DMA_FROM_DEVICE);
701 
702 		/* Refresh the desc even if pkt_addr didn't change
703 		 * because each write-back erases this info.
704 		 */
705 		rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset);
706 
707 		rx_desc++;
708 		bi++;
709 		i++;
710 		if (unlikely(!i)) {
711 			rx_desc = IXGBEVF_RX_DESC(rx_ring, 0);
712 			bi = rx_ring->rx_buffer_info;
713 			i -= rx_ring->count;
714 		}
715 
716 		/* clear the length for the next_to_use descriptor */
717 		rx_desc->wb.upper.length = 0;
718 
719 		cleaned_count--;
720 	} while (cleaned_count);
721 
722 	i += rx_ring->count;
723 
724 	if (rx_ring->next_to_use != i) {
725 		/* record the next descriptor to use */
726 		rx_ring->next_to_use = i;
727 
728 		/* update next to alloc since we have filled the ring */
729 		rx_ring->next_to_alloc = i;
730 
731 		/* Force memory writes to complete before letting h/w
732 		 * know there are new descriptors to fetch.  (Only
733 		 * applicable for weak-ordered memory model archs,
734 		 * such as IA-64).
735 		 */
736 		wmb();
737 		ixgbevf_write_tail(rx_ring, i);
738 	}
739 }
740 
741 /**
742  * ixgbevf_cleanup_headers - Correct corrupted or empty headers
743  * @rx_ring: rx descriptor ring packet is being transacted on
744  * @rx_desc: pointer to the EOP Rx descriptor
745  * @skb: pointer to current skb being fixed
746  *
747  * Check for corrupted packet headers caused by senders on the local L2
748  * embedded NIC switch not setting up their Tx Descriptors right.  These
749  * should be very rare.
750  *
751  * Also address the case where we are pulling data in on pages only
752  * and as such no data is present in the skb header.
753  *
754  * In addition if skb is not at least 60 bytes we need to pad it so that
755  * it is large enough to qualify as a valid Ethernet frame.
756  *
757  * Returns true if an error was encountered and skb was freed.
758  **/
759 static bool ixgbevf_cleanup_headers(struct ixgbevf_ring *rx_ring,
760 				    union ixgbe_adv_rx_desc *rx_desc,
761 				    struct sk_buff *skb)
762 {
763 	/* verify that the packet does not have any known errors */
764 	if (unlikely(ixgbevf_test_staterr(rx_desc,
765 					  IXGBE_RXDADV_ERR_FRAME_ERR_MASK))) {
766 		struct net_device *netdev = rx_ring->netdev;
767 
768 		if (!(netdev->features & NETIF_F_RXALL)) {
769 			dev_kfree_skb_any(skb);
770 			return true;
771 		}
772 	}
773 
774 	/* if eth_skb_pad returns an error the skb was freed */
775 	if (eth_skb_pad(skb))
776 		return true;
777 
778 	return false;
779 }
780 
781 /**
782  * ixgbevf_reuse_rx_page - page flip buffer and store it back on the ring
783  * @rx_ring: rx descriptor ring to store buffers on
784  * @old_buff: donor buffer to have page reused
785  *
786  * Synchronizes page for reuse by the adapter
787  **/
788 static void ixgbevf_reuse_rx_page(struct ixgbevf_ring *rx_ring,
789 				  struct ixgbevf_rx_buffer *old_buff)
790 {
791 	struct ixgbevf_rx_buffer *new_buff;
792 	u16 nta = rx_ring->next_to_alloc;
793 
794 	new_buff = &rx_ring->rx_buffer_info[nta];
795 
796 	/* update, and store next to alloc */
797 	nta++;
798 	rx_ring->next_to_alloc = (nta < rx_ring->count) ? nta : 0;
799 
800 	/* transfer page from old buffer to new buffer */
801 	new_buff->page = old_buff->page;
802 	new_buff->dma = old_buff->dma;
803 	new_buff->page_offset = old_buff->page_offset;
804 	new_buff->pagecnt_bias = old_buff->pagecnt_bias;
805 }
806 
807 static bool ixgbevf_can_reuse_rx_page(struct ixgbevf_rx_buffer *rx_buffer)
808 {
809 	unsigned int pagecnt_bias = rx_buffer->pagecnt_bias;
810 	struct page *page = rx_buffer->page;
811 
812 	/* avoid re-using remote and pfmemalloc pages */
813 	if (!dev_page_is_reusable(page))
814 		return false;
815 
816 #if (PAGE_SIZE < 8192)
817 	/* if we are only owner of page we can reuse it */
818 	if (unlikely((page_ref_count(page) - pagecnt_bias) > 1))
819 		return false;
820 #else
821 #define IXGBEVF_LAST_OFFSET \
822 	(SKB_WITH_OVERHEAD(PAGE_SIZE) - IXGBEVF_RXBUFFER_2048)
823 
824 	if (rx_buffer->page_offset > IXGBEVF_LAST_OFFSET)
825 		return false;
826 
827 #endif
828 
829 	/* If we have drained the page fragment pool we need to update
830 	 * the pagecnt_bias and page count so that we fully restock the
831 	 * number of references the driver holds.
832 	 */
833 	if (unlikely(!pagecnt_bias)) {
834 		page_ref_add(page, USHRT_MAX);
835 		rx_buffer->pagecnt_bias = USHRT_MAX;
836 	}
837 
838 	return true;
839 }
840 
841 /**
842  * ixgbevf_add_rx_frag - Add contents of Rx buffer to sk_buff
843  * @rx_ring: rx descriptor ring to transact packets on
844  * @rx_buffer: buffer containing page to add
845  * @skb: sk_buff to place the data into
846  * @size: size of buffer to be added
847  *
848  * This function will add the data contained in rx_buffer->page to the skb.
849  **/
850 static void ixgbevf_add_rx_frag(struct ixgbevf_ring *rx_ring,
851 				struct ixgbevf_rx_buffer *rx_buffer,
852 				struct sk_buff *skb,
853 				unsigned int size)
854 {
855 #if (PAGE_SIZE < 8192)
856 	unsigned int truesize = ixgbevf_rx_pg_size(rx_ring) / 2;
857 #else
858 	unsigned int truesize = ring_uses_build_skb(rx_ring) ?
859 				SKB_DATA_ALIGN(IXGBEVF_SKB_PAD + size) :
860 				SKB_DATA_ALIGN(size);
861 #endif
862 	skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, rx_buffer->page,
863 			rx_buffer->page_offset, size, truesize);
864 #if (PAGE_SIZE < 8192)
865 	rx_buffer->page_offset ^= truesize;
866 #else
867 	rx_buffer->page_offset += truesize;
868 #endif
869 }
870 
871 static
872 struct sk_buff *ixgbevf_construct_skb(struct ixgbevf_ring *rx_ring,
873 				      struct ixgbevf_rx_buffer *rx_buffer,
874 				      struct xdp_buff *xdp,
875 				      union ixgbe_adv_rx_desc *rx_desc)
876 {
877 	unsigned int size = xdp->data_end - xdp->data;
878 #if (PAGE_SIZE < 8192)
879 	unsigned int truesize = ixgbevf_rx_pg_size(rx_ring) / 2;
880 #else
881 	unsigned int truesize = SKB_DATA_ALIGN(xdp->data_end -
882 					       xdp->data_hard_start);
883 #endif
884 	unsigned int headlen;
885 	struct sk_buff *skb;
886 
887 	/* prefetch first cache line of first page */
888 	net_prefetch(xdp->data);
889 
890 	/* Note, we get here by enabling legacy-rx via:
891 	 *
892 	 *    ethtool --set-priv-flags <dev> legacy-rx on
893 	 *
894 	 * In this mode, we currently get 0 extra XDP headroom as
895 	 * opposed to having legacy-rx off, where we process XDP
896 	 * packets going to stack via ixgbevf_build_skb().
897 	 *
898 	 * For ixgbevf_construct_skb() mode it means that the
899 	 * xdp->data_meta will always point to xdp->data, since
900 	 * the helper cannot expand the head. Should this ever
901 	 * changed in future for legacy-rx mode on, then lets also
902 	 * add xdp->data_meta handling here.
903 	 */
904 
905 	/* allocate a skb to store the frags */
906 	skb = napi_alloc_skb(&rx_ring->q_vector->napi, IXGBEVF_RX_HDR_SIZE);
907 	if (unlikely(!skb))
908 		return NULL;
909 
910 	/* Determine available headroom for copy */
911 	headlen = size;
912 	if (headlen > IXGBEVF_RX_HDR_SIZE)
913 		headlen = eth_get_headlen(skb->dev, xdp->data,
914 					  IXGBEVF_RX_HDR_SIZE);
915 
916 	/* align pull length to size of long to optimize memcpy performance */
917 	memcpy(__skb_put(skb, headlen), xdp->data,
918 	       ALIGN(headlen, sizeof(long)));
919 
920 	/* update all of the pointers */
921 	size -= headlen;
922 	if (size) {
923 		skb_add_rx_frag(skb, 0, rx_buffer->page,
924 				(xdp->data + headlen) -
925 					page_address(rx_buffer->page),
926 				size, truesize);
927 #if (PAGE_SIZE < 8192)
928 		rx_buffer->page_offset ^= truesize;
929 #else
930 		rx_buffer->page_offset += truesize;
931 #endif
932 	} else {
933 		rx_buffer->pagecnt_bias++;
934 	}
935 
936 	return skb;
937 }
938 
939 static inline void ixgbevf_irq_enable_queues(struct ixgbevf_adapter *adapter,
940 					     u32 qmask)
941 {
942 	struct ixgbe_hw *hw = &adapter->hw;
943 
944 	IXGBE_WRITE_REG(hw, IXGBE_VTEIMS, qmask);
945 }
946 
947 static struct sk_buff *ixgbevf_build_skb(struct ixgbevf_ring *rx_ring,
948 					 struct ixgbevf_rx_buffer *rx_buffer,
949 					 struct xdp_buff *xdp,
950 					 union ixgbe_adv_rx_desc *rx_desc)
951 {
952 	unsigned int metasize = xdp->data - xdp->data_meta;
953 #if (PAGE_SIZE < 8192)
954 	unsigned int truesize = ixgbevf_rx_pg_size(rx_ring) / 2;
955 #else
956 	unsigned int truesize = SKB_DATA_ALIGN(sizeof(struct skb_shared_info)) +
957 				SKB_DATA_ALIGN(xdp->data_end -
958 					       xdp->data_hard_start);
959 #endif
960 	struct sk_buff *skb;
961 
962 	/* Prefetch first cache line of first page. If xdp->data_meta
963 	 * is unused, this points to xdp->data, otherwise, we likely
964 	 * have a consumer accessing first few bytes of meta data,
965 	 * and then actual data.
966 	 */
967 	net_prefetch(xdp->data_meta);
968 
969 	/* build an skb around the page buffer */
970 	skb = napi_build_skb(xdp->data_hard_start, truesize);
971 	if (unlikely(!skb))
972 		return NULL;
973 
974 	/* update pointers within the skb to store the data */
975 	skb_reserve(skb, xdp->data - xdp->data_hard_start);
976 	__skb_put(skb, xdp->data_end - xdp->data);
977 	if (metasize)
978 		skb_metadata_set(skb, metasize);
979 
980 	/* update buffer offset */
981 #if (PAGE_SIZE < 8192)
982 	rx_buffer->page_offset ^= truesize;
983 #else
984 	rx_buffer->page_offset += truesize;
985 #endif
986 
987 	return skb;
988 }
989 
990 #define IXGBEVF_XDP_PASS 0
991 #define IXGBEVF_XDP_CONSUMED 1
992 #define IXGBEVF_XDP_TX 2
993 
994 static int ixgbevf_xmit_xdp_ring(struct ixgbevf_ring *ring,
995 				 struct xdp_buff *xdp)
996 {
997 	struct ixgbevf_tx_buffer *tx_buffer;
998 	union ixgbe_adv_tx_desc *tx_desc;
999 	u32 len, cmd_type;
1000 	dma_addr_t dma;
1001 	u16 i;
1002 
1003 	len = xdp->data_end - xdp->data;
1004 
1005 	if (unlikely(!ixgbevf_desc_unused(ring)))
1006 		return IXGBEVF_XDP_CONSUMED;
1007 
1008 	dma = dma_map_single(ring->dev, xdp->data, len, DMA_TO_DEVICE);
1009 	if (dma_mapping_error(ring->dev, dma))
1010 		return IXGBEVF_XDP_CONSUMED;
1011 
1012 	/* record the location of the first descriptor for this packet */
1013 	i = ring->next_to_use;
1014 	tx_buffer = &ring->tx_buffer_info[i];
1015 
1016 	dma_unmap_len_set(tx_buffer, len, len);
1017 	dma_unmap_addr_set(tx_buffer, dma, dma);
1018 	tx_buffer->data = xdp->data;
1019 	tx_buffer->bytecount = len;
1020 	tx_buffer->gso_segs = 1;
1021 	tx_buffer->protocol = 0;
1022 
1023 	/* Populate minimal context descriptor that will provide for the
1024 	 * fact that we are expected to process Ethernet frames.
1025 	 */
1026 	if (!test_bit(__IXGBEVF_TX_XDP_RING_PRIMED, &ring->state)) {
1027 		struct ixgbe_adv_tx_context_desc *context_desc;
1028 
1029 		set_bit(__IXGBEVF_TX_XDP_RING_PRIMED, &ring->state);
1030 
1031 		context_desc = IXGBEVF_TX_CTXTDESC(ring, 0);
1032 		context_desc->vlan_macip_lens	=
1033 			cpu_to_le32(ETH_HLEN << IXGBE_ADVTXD_MACLEN_SHIFT);
1034 		context_desc->fceof_saidx	= 0;
1035 		context_desc->type_tucmd_mlhl	=
1036 			cpu_to_le32(IXGBE_TXD_CMD_DEXT |
1037 				    IXGBE_ADVTXD_DTYP_CTXT);
1038 		context_desc->mss_l4len_idx	= 0;
1039 
1040 		i = 1;
1041 	}
1042 
1043 	/* put descriptor type bits */
1044 	cmd_type = IXGBE_ADVTXD_DTYP_DATA |
1045 		   IXGBE_ADVTXD_DCMD_DEXT |
1046 		   IXGBE_ADVTXD_DCMD_IFCS;
1047 	cmd_type |= len | IXGBE_TXD_CMD;
1048 
1049 	tx_desc = IXGBEVF_TX_DESC(ring, i);
1050 	tx_desc->read.buffer_addr = cpu_to_le64(dma);
1051 
1052 	tx_desc->read.cmd_type_len = cpu_to_le32(cmd_type);
1053 	tx_desc->read.olinfo_status =
1054 			cpu_to_le32((len << IXGBE_ADVTXD_PAYLEN_SHIFT) |
1055 				    IXGBE_ADVTXD_CC);
1056 
1057 	/* Avoid any potential race with cleanup */
1058 	smp_wmb();
1059 
1060 	/* set next_to_watch value indicating a packet is present */
1061 	i++;
1062 	if (i == ring->count)
1063 		i = 0;
1064 
1065 	tx_buffer->next_to_watch = tx_desc;
1066 	ring->next_to_use = i;
1067 
1068 	return IXGBEVF_XDP_TX;
1069 }
1070 
1071 static int ixgbevf_run_xdp(struct ixgbevf_adapter *adapter,
1072 			   struct ixgbevf_ring *rx_ring,
1073 			   struct xdp_buff *xdp)
1074 {
1075 	int result = IXGBEVF_XDP_PASS;
1076 	struct ixgbevf_ring *xdp_ring;
1077 	struct bpf_prog *xdp_prog;
1078 	u32 act;
1079 
1080 	xdp_prog = READ_ONCE(rx_ring->xdp_prog);
1081 
1082 	if (!xdp_prog)
1083 		goto xdp_out;
1084 
1085 	act = bpf_prog_run_xdp(xdp_prog, xdp);
1086 	switch (act) {
1087 	case XDP_PASS:
1088 		break;
1089 	case XDP_TX:
1090 		xdp_ring = adapter->xdp_ring[rx_ring->queue_index];
1091 		result = ixgbevf_xmit_xdp_ring(xdp_ring, xdp);
1092 		if (result == IXGBEVF_XDP_CONSUMED)
1093 			goto out_failure;
1094 		break;
1095 	default:
1096 		bpf_warn_invalid_xdp_action(rx_ring->netdev, xdp_prog, act);
1097 		fallthrough;
1098 	case XDP_ABORTED:
1099 out_failure:
1100 		trace_xdp_exception(rx_ring->netdev, xdp_prog, act);
1101 		fallthrough; /* handle aborts by dropping packet */
1102 	case XDP_DROP:
1103 		result = IXGBEVF_XDP_CONSUMED;
1104 		break;
1105 	}
1106 xdp_out:
1107 	return result;
1108 }
1109 
1110 static unsigned int ixgbevf_rx_frame_truesize(struct ixgbevf_ring *rx_ring,
1111 					      unsigned int size)
1112 {
1113 	unsigned int truesize;
1114 
1115 #if (PAGE_SIZE < 8192)
1116 	truesize = ixgbevf_rx_pg_size(rx_ring) / 2; /* Must be power-of-2 */
1117 #else
1118 	truesize = ring_uses_build_skb(rx_ring) ?
1119 		SKB_DATA_ALIGN(IXGBEVF_SKB_PAD + size) +
1120 		SKB_DATA_ALIGN(sizeof(struct skb_shared_info)) :
1121 		SKB_DATA_ALIGN(size);
1122 #endif
1123 	return truesize;
1124 }
1125 
1126 static void ixgbevf_rx_buffer_flip(struct ixgbevf_ring *rx_ring,
1127 				   struct ixgbevf_rx_buffer *rx_buffer,
1128 				   unsigned int size)
1129 {
1130 	unsigned int truesize = ixgbevf_rx_frame_truesize(rx_ring, size);
1131 
1132 #if (PAGE_SIZE < 8192)
1133 	rx_buffer->page_offset ^= truesize;
1134 #else
1135 	rx_buffer->page_offset += truesize;
1136 #endif
1137 }
1138 
1139 static int ixgbevf_clean_rx_irq(struct ixgbevf_q_vector *q_vector,
1140 				struct ixgbevf_ring *rx_ring,
1141 				int budget)
1142 {
1143 	unsigned int total_rx_bytes = 0, total_rx_packets = 0, frame_sz = 0;
1144 	struct ixgbevf_adapter *adapter = q_vector->adapter;
1145 	u16 cleaned_count = ixgbevf_desc_unused(rx_ring);
1146 	struct sk_buff *skb = rx_ring->skb;
1147 	bool xdp_xmit = false;
1148 	struct xdp_buff xdp;
1149 	int xdp_res = 0;
1150 
1151 	/* Frame size depend on rx_ring setup when PAGE_SIZE=4K */
1152 #if (PAGE_SIZE < 8192)
1153 	frame_sz = ixgbevf_rx_frame_truesize(rx_ring, 0);
1154 #endif
1155 	xdp_init_buff(&xdp, frame_sz, &rx_ring->xdp_rxq);
1156 
1157 	while (likely(total_rx_packets < budget)) {
1158 		struct ixgbevf_rx_buffer *rx_buffer;
1159 		union ixgbe_adv_rx_desc *rx_desc;
1160 		unsigned int size;
1161 
1162 		/* return some buffers to hardware, one at a time is too slow */
1163 		if (cleaned_count >= IXGBEVF_RX_BUFFER_WRITE) {
1164 			ixgbevf_alloc_rx_buffers(rx_ring, cleaned_count);
1165 			cleaned_count = 0;
1166 		}
1167 
1168 		rx_desc = IXGBEVF_RX_DESC(rx_ring, rx_ring->next_to_clean);
1169 		size = le16_to_cpu(rx_desc->wb.upper.length);
1170 		if (!size)
1171 			break;
1172 
1173 		/* This memory barrier is needed to keep us from reading
1174 		 * any other fields out of the rx_desc until we know the
1175 		 * RXD_STAT_DD bit is set
1176 		 */
1177 		rmb();
1178 
1179 		rx_buffer = ixgbevf_get_rx_buffer(rx_ring, size);
1180 
1181 		/* retrieve a buffer from the ring */
1182 		if (!skb) {
1183 			unsigned int offset = ixgbevf_rx_offset(rx_ring);
1184 			unsigned char *hard_start;
1185 
1186 			hard_start = page_address(rx_buffer->page) +
1187 				     rx_buffer->page_offset - offset;
1188 			xdp_prepare_buff(&xdp, hard_start, offset, size, true);
1189 #if (PAGE_SIZE > 4096)
1190 			/* At larger PAGE_SIZE, frame_sz depend on len size */
1191 			xdp.frame_sz = ixgbevf_rx_frame_truesize(rx_ring, size);
1192 #endif
1193 			xdp_res = ixgbevf_run_xdp(adapter, rx_ring, &xdp);
1194 		}
1195 
1196 		if (xdp_res) {
1197 			if (xdp_res == IXGBEVF_XDP_TX) {
1198 				xdp_xmit = true;
1199 				ixgbevf_rx_buffer_flip(rx_ring, rx_buffer,
1200 						       size);
1201 			} else {
1202 				rx_buffer->pagecnt_bias++;
1203 			}
1204 			total_rx_packets++;
1205 			total_rx_bytes += size;
1206 		} else if (skb) {
1207 			ixgbevf_add_rx_frag(rx_ring, rx_buffer, skb, size);
1208 		} else if (ring_uses_build_skb(rx_ring)) {
1209 			skb = ixgbevf_build_skb(rx_ring, rx_buffer,
1210 						&xdp, rx_desc);
1211 		} else {
1212 			skb = ixgbevf_construct_skb(rx_ring, rx_buffer,
1213 						    &xdp, rx_desc);
1214 		}
1215 
1216 		/* exit if we failed to retrieve a buffer */
1217 		if (!xdp_res && !skb) {
1218 			rx_ring->rx_stats.alloc_rx_buff_failed++;
1219 			rx_buffer->pagecnt_bias++;
1220 			break;
1221 		}
1222 
1223 		ixgbevf_put_rx_buffer(rx_ring, rx_buffer, skb);
1224 		cleaned_count++;
1225 
1226 		/* fetch next buffer in frame if non-eop */
1227 		if (ixgbevf_is_non_eop(rx_ring, rx_desc))
1228 			continue;
1229 
1230 		/* verify the packet layout is correct */
1231 		if (xdp_res || ixgbevf_cleanup_headers(rx_ring, rx_desc, skb)) {
1232 			skb = NULL;
1233 			continue;
1234 		}
1235 
1236 		/* probably a little skewed due to removing CRC */
1237 		total_rx_bytes += skb->len;
1238 
1239 		/* Workaround hardware that can't do proper VEPA multicast
1240 		 * source pruning.
1241 		 */
1242 		if ((skb->pkt_type == PACKET_BROADCAST ||
1243 		     skb->pkt_type == PACKET_MULTICAST) &&
1244 		    ether_addr_equal(rx_ring->netdev->dev_addr,
1245 				     eth_hdr(skb)->h_source)) {
1246 			dev_kfree_skb_irq(skb);
1247 			skb = NULL;
1248 			continue;
1249 		}
1250 
1251 		/* populate checksum, VLAN, and protocol */
1252 		ixgbevf_process_skb_fields(rx_ring, rx_desc, skb);
1253 
1254 		ixgbevf_rx_skb(q_vector, skb);
1255 
1256 		/* reset skb pointer */
1257 		skb = NULL;
1258 
1259 		/* update budget accounting */
1260 		total_rx_packets++;
1261 	}
1262 
1263 	/* place incomplete frames back on ring for completion */
1264 	rx_ring->skb = skb;
1265 
1266 	if (xdp_xmit) {
1267 		struct ixgbevf_ring *xdp_ring =
1268 			adapter->xdp_ring[rx_ring->queue_index];
1269 
1270 		/* Force memory writes to complete before letting h/w
1271 		 * know there are new descriptors to fetch.
1272 		 */
1273 		wmb();
1274 		ixgbevf_write_tail(xdp_ring, xdp_ring->next_to_use);
1275 	}
1276 
1277 	u64_stats_update_begin(&rx_ring->syncp);
1278 	rx_ring->stats.packets += total_rx_packets;
1279 	rx_ring->stats.bytes += total_rx_bytes;
1280 	u64_stats_update_end(&rx_ring->syncp);
1281 	q_vector->rx.total_packets += total_rx_packets;
1282 	q_vector->rx.total_bytes += total_rx_bytes;
1283 
1284 	return total_rx_packets;
1285 }
1286 
1287 /**
1288  * ixgbevf_poll - NAPI polling calback
1289  * @napi: napi struct with our devices info in it
1290  * @budget: amount of work driver is allowed to do this pass, in packets
1291  *
1292  * This function will clean more than one or more rings associated with a
1293  * q_vector.
1294  **/
1295 static int ixgbevf_poll(struct napi_struct *napi, int budget)
1296 {
1297 	struct ixgbevf_q_vector *q_vector =
1298 		container_of(napi, struct ixgbevf_q_vector, napi);
1299 	struct ixgbevf_adapter *adapter = q_vector->adapter;
1300 	struct ixgbevf_ring *ring;
1301 	int per_ring_budget, work_done = 0;
1302 	bool clean_complete = true;
1303 
1304 	ixgbevf_for_each_ring(ring, q_vector->tx) {
1305 		if (!ixgbevf_clean_tx_irq(q_vector, ring, budget))
1306 			clean_complete = false;
1307 	}
1308 
1309 	if (budget <= 0)
1310 		return budget;
1311 
1312 	/* attempt to distribute budget to each queue fairly, but don't allow
1313 	 * the budget to go below 1 because we'll exit polling
1314 	 */
1315 	if (q_vector->rx.count > 1)
1316 		per_ring_budget = max(budget/q_vector->rx.count, 1);
1317 	else
1318 		per_ring_budget = budget;
1319 
1320 	ixgbevf_for_each_ring(ring, q_vector->rx) {
1321 		int cleaned = ixgbevf_clean_rx_irq(q_vector, ring,
1322 						   per_ring_budget);
1323 		work_done += cleaned;
1324 		if (cleaned >= per_ring_budget)
1325 			clean_complete = false;
1326 	}
1327 
1328 	/* If all work not completed, return budget and keep polling */
1329 	if (!clean_complete)
1330 		return budget;
1331 
1332 	/* Exit the polling mode, but don't re-enable interrupts if stack might
1333 	 * poll us due to busy-polling
1334 	 */
1335 	if (likely(napi_complete_done(napi, work_done))) {
1336 		if (adapter->rx_itr_setting == 1)
1337 			ixgbevf_set_itr(q_vector);
1338 		if (!test_bit(__IXGBEVF_DOWN, &adapter->state) &&
1339 		    !test_bit(__IXGBEVF_REMOVING, &adapter->state))
1340 			ixgbevf_irq_enable_queues(adapter,
1341 						  BIT(q_vector->v_idx));
1342 	}
1343 
1344 	return min(work_done, budget - 1);
1345 }
1346 
1347 /**
1348  * ixgbevf_write_eitr - write VTEITR register in hardware specific way
1349  * @q_vector: structure containing interrupt and ring information
1350  **/
1351 void ixgbevf_write_eitr(struct ixgbevf_q_vector *q_vector)
1352 {
1353 	struct ixgbevf_adapter *adapter = q_vector->adapter;
1354 	struct ixgbe_hw *hw = &adapter->hw;
1355 	int v_idx = q_vector->v_idx;
1356 	u32 itr_reg = q_vector->itr & IXGBE_MAX_EITR;
1357 
1358 	/* set the WDIS bit to not clear the timer bits and cause an
1359 	 * immediate assertion of the interrupt
1360 	 */
1361 	itr_reg |= IXGBE_EITR_CNT_WDIS;
1362 
1363 	IXGBE_WRITE_REG(hw, IXGBE_VTEITR(v_idx), itr_reg);
1364 }
1365 
1366 /**
1367  * ixgbevf_configure_msix - Configure MSI-X hardware
1368  * @adapter: board private structure
1369  *
1370  * ixgbevf_configure_msix sets up the hardware to properly generate MSI-X
1371  * interrupts.
1372  **/
1373 static void ixgbevf_configure_msix(struct ixgbevf_adapter *adapter)
1374 {
1375 	struct ixgbevf_q_vector *q_vector;
1376 	int q_vectors, v_idx;
1377 
1378 	q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
1379 	adapter->eims_enable_mask = 0;
1380 
1381 	/* Populate the IVAR table and set the ITR values to the
1382 	 * corresponding register.
1383 	 */
1384 	for (v_idx = 0; v_idx < q_vectors; v_idx++) {
1385 		struct ixgbevf_ring *ring;
1386 
1387 		q_vector = adapter->q_vector[v_idx];
1388 
1389 		ixgbevf_for_each_ring(ring, q_vector->rx)
1390 			ixgbevf_set_ivar(adapter, 0, ring->reg_idx, v_idx);
1391 
1392 		ixgbevf_for_each_ring(ring, q_vector->tx)
1393 			ixgbevf_set_ivar(adapter, 1, ring->reg_idx, v_idx);
1394 
1395 		if (q_vector->tx.ring && !q_vector->rx.ring) {
1396 			/* Tx only vector */
1397 			if (adapter->tx_itr_setting == 1)
1398 				q_vector->itr = IXGBE_12K_ITR;
1399 			else
1400 				q_vector->itr = adapter->tx_itr_setting;
1401 		} else {
1402 			/* Rx or Rx/Tx vector */
1403 			if (adapter->rx_itr_setting == 1)
1404 				q_vector->itr = IXGBE_20K_ITR;
1405 			else
1406 				q_vector->itr = adapter->rx_itr_setting;
1407 		}
1408 
1409 		/* add q_vector eims value to global eims_enable_mask */
1410 		adapter->eims_enable_mask |= BIT(v_idx);
1411 
1412 		ixgbevf_write_eitr(q_vector);
1413 	}
1414 
1415 	ixgbevf_set_ivar(adapter, -1, 1, v_idx);
1416 	/* setup eims_other and add value to global eims_enable_mask */
1417 	adapter->eims_other = BIT(v_idx);
1418 	adapter->eims_enable_mask |= adapter->eims_other;
1419 }
1420 
1421 enum latency_range {
1422 	lowest_latency = 0,
1423 	low_latency = 1,
1424 	bulk_latency = 2,
1425 	latency_invalid = 255
1426 };
1427 
1428 /**
1429  * ixgbevf_update_itr - update the dynamic ITR value based on statistics
1430  * @q_vector: structure containing interrupt and ring information
1431  * @ring_container: structure containing ring performance data
1432  *
1433  * Stores a new ITR value based on packets and byte
1434  * counts during the last interrupt.  The advantage of per interrupt
1435  * computation is faster updates and more accurate ITR for the current
1436  * traffic pattern.  Constants in this function were computed
1437  * based on theoretical maximum wire speed and thresholds were set based
1438  * on testing data as well as attempting to minimize response time
1439  * while increasing bulk throughput.
1440  **/
1441 static void ixgbevf_update_itr(struct ixgbevf_q_vector *q_vector,
1442 			       struct ixgbevf_ring_container *ring_container)
1443 {
1444 	int bytes = ring_container->total_bytes;
1445 	int packets = ring_container->total_packets;
1446 	u32 timepassed_us;
1447 	u64 bytes_perint;
1448 	u8 itr_setting = ring_container->itr;
1449 
1450 	if (packets == 0)
1451 		return;
1452 
1453 	/* simple throttle rate management
1454 	 *    0-20MB/s lowest (100000 ints/s)
1455 	 *   20-100MB/s low   (20000 ints/s)
1456 	 *  100-1249MB/s bulk (12000 ints/s)
1457 	 */
1458 	/* what was last interrupt timeslice? */
1459 	timepassed_us = q_vector->itr >> 2;
1460 	if (timepassed_us == 0)
1461 		return;
1462 
1463 	bytes_perint = bytes / timepassed_us; /* bytes/usec */
1464 
1465 	switch (itr_setting) {
1466 	case lowest_latency:
1467 		if (bytes_perint > 10)
1468 			itr_setting = low_latency;
1469 		break;
1470 	case low_latency:
1471 		if (bytes_perint > 20)
1472 			itr_setting = bulk_latency;
1473 		else if (bytes_perint <= 10)
1474 			itr_setting = lowest_latency;
1475 		break;
1476 	case bulk_latency:
1477 		if (bytes_perint <= 20)
1478 			itr_setting = low_latency;
1479 		break;
1480 	}
1481 
1482 	/* clear work counters since we have the values we need */
1483 	ring_container->total_bytes = 0;
1484 	ring_container->total_packets = 0;
1485 
1486 	/* write updated itr to ring container */
1487 	ring_container->itr = itr_setting;
1488 }
1489 
1490 static void ixgbevf_set_itr(struct ixgbevf_q_vector *q_vector)
1491 {
1492 	u32 new_itr = q_vector->itr;
1493 	u8 current_itr;
1494 
1495 	ixgbevf_update_itr(q_vector, &q_vector->tx);
1496 	ixgbevf_update_itr(q_vector, &q_vector->rx);
1497 
1498 	current_itr = max(q_vector->rx.itr, q_vector->tx.itr);
1499 
1500 	switch (current_itr) {
1501 	/* counts and packets in update_itr are dependent on these numbers */
1502 	case lowest_latency:
1503 		new_itr = IXGBE_100K_ITR;
1504 		break;
1505 	case low_latency:
1506 		new_itr = IXGBE_20K_ITR;
1507 		break;
1508 	case bulk_latency:
1509 		new_itr = IXGBE_12K_ITR;
1510 		break;
1511 	default:
1512 		break;
1513 	}
1514 
1515 	if (new_itr != q_vector->itr) {
1516 		/* do an exponential smoothing */
1517 		new_itr = (10 * new_itr * q_vector->itr) /
1518 			  ((9 * new_itr) + q_vector->itr);
1519 
1520 		/* save the algorithm value here */
1521 		q_vector->itr = new_itr;
1522 
1523 		ixgbevf_write_eitr(q_vector);
1524 	}
1525 }
1526 
1527 static irqreturn_t ixgbevf_msix_other(int irq, void *data)
1528 {
1529 	struct ixgbevf_adapter *adapter = data;
1530 	struct ixgbe_hw *hw = &adapter->hw;
1531 
1532 	hw->mac.get_link_status = 1;
1533 
1534 	ixgbevf_service_event_schedule(adapter);
1535 
1536 	IXGBE_WRITE_REG(hw, IXGBE_VTEIMS, adapter->eims_other);
1537 
1538 	return IRQ_HANDLED;
1539 }
1540 
1541 /**
1542  * ixgbevf_msix_clean_rings - single unshared vector rx clean (all queues)
1543  * @irq: unused
1544  * @data: pointer to our q_vector struct for this interrupt vector
1545  **/
1546 static irqreturn_t ixgbevf_msix_clean_rings(int irq, void *data)
1547 {
1548 	struct ixgbevf_q_vector *q_vector = data;
1549 
1550 	/* EIAM disabled interrupts (on this vector) for us */
1551 	if (q_vector->rx.ring || q_vector->tx.ring)
1552 		napi_schedule_irqoff(&q_vector->napi);
1553 
1554 	return IRQ_HANDLED;
1555 }
1556 
1557 /**
1558  * ixgbevf_request_msix_irqs - Initialize MSI-X interrupts
1559  * @adapter: board private structure
1560  *
1561  * ixgbevf_request_msix_irqs allocates MSI-X vectors and requests
1562  * interrupts from the kernel.
1563  **/
1564 static int ixgbevf_request_msix_irqs(struct ixgbevf_adapter *adapter)
1565 {
1566 	struct net_device *netdev = adapter->netdev;
1567 	int q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
1568 	unsigned int ri = 0, ti = 0;
1569 	int vector, err;
1570 
1571 	for (vector = 0; vector < q_vectors; vector++) {
1572 		struct ixgbevf_q_vector *q_vector = adapter->q_vector[vector];
1573 		struct msix_entry *entry = &adapter->msix_entries[vector];
1574 
1575 		if (q_vector->tx.ring && q_vector->rx.ring) {
1576 			snprintf(q_vector->name, sizeof(q_vector->name),
1577 				 "%s-TxRx-%u", netdev->name, ri++);
1578 			ti++;
1579 		} else if (q_vector->rx.ring) {
1580 			snprintf(q_vector->name, sizeof(q_vector->name),
1581 				 "%s-rx-%u", netdev->name, ri++);
1582 		} else if (q_vector->tx.ring) {
1583 			snprintf(q_vector->name, sizeof(q_vector->name),
1584 				 "%s-tx-%u", netdev->name, ti++);
1585 		} else {
1586 			/* skip this unused q_vector */
1587 			continue;
1588 		}
1589 		err = request_irq(entry->vector, &ixgbevf_msix_clean_rings, 0,
1590 				  q_vector->name, q_vector);
1591 		if (err) {
1592 			hw_dbg(&adapter->hw,
1593 			       "request_irq failed for MSIX interrupt Error: %d\n",
1594 			       err);
1595 			goto free_queue_irqs;
1596 		}
1597 	}
1598 
1599 	err = request_irq(adapter->msix_entries[vector].vector,
1600 			  &ixgbevf_msix_other, 0, netdev->name, adapter);
1601 	if (err) {
1602 		hw_dbg(&adapter->hw, "request_irq for msix_other failed: %d\n",
1603 		       err);
1604 		goto free_queue_irqs;
1605 	}
1606 
1607 	return 0;
1608 
1609 free_queue_irqs:
1610 	while (vector) {
1611 		vector--;
1612 		free_irq(adapter->msix_entries[vector].vector,
1613 			 adapter->q_vector[vector]);
1614 	}
1615 	/* This failure is non-recoverable - it indicates the system is
1616 	 * out of MSIX vector resources and the VF driver cannot run
1617 	 * without them.  Set the number of msix vectors to zero
1618 	 * indicating that not enough can be allocated.  The error
1619 	 * will be returned to the user indicating device open failed.
1620 	 * Any further attempts to force the driver to open will also
1621 	 * fail.  The only way to recover is to unload the driver and
1622 	 * reload it again.  If the system has recovered some MSIX
1623 	 * vectors then it may succeed.
1624 	 */
1625 	adapter->num_msix_vectors = 0;
1626 	return err;
1627 }
1628 
1629 /**
1630  * ixgbevf_request_irq - initialize interrupts
1631  * @adapter: board private structure
1632  *
1633  * Attempts to configure interrupts using the best available
1634  * capabilities of the hardware and kernel.
1635  **/
1636 static int ixgbevf_request_irq(struct ixgbevf_adapter *adapter)
1637 {
1638 	int err = ixgbevf_request_msix_irqs(adapter);
1639 
1640 	if (err)
1641 		hw_dbg(&adapter->hw, "request_irq failed, Error %d\n", err);
1642 
1643 	return err;
1644 }
1645 
1646 static void ixgbevf_free_irq(struct ixgbevf_adapter *adapter)
1647 {
1648 	int i, q_vectors;
1649 
1650 	if (!adapter->msix_entries)
1651 		return;
1652 
1653 	q_vectors = adapter->num_msix_vectors;
1654 	i = q_vectors - 1;
1655 
1656 	free_irq(adapter->msix_entries[i].vector, adapter);
1657 	i--;
1658 
1659 	for (; i >= 0; i--) {
1660 		/* free only the irqs that were actually requested */
1661 		if (!adapter->q_vector[i]->rx.ring &&
1662 		    !adapter->q_vector[i]->tx.ring)
1663 			continue;
1664 
1665 		free_irq(adapter->msix_entries[i].vector,
1666 			 adapter->q_vector[i]);
1667 	}
1668 }
1669 
1670 /**
1671  * ixgbevf_irq_disable - Mask off interrupt generation on the NIC
1672  * @adapter: board private structure
1673  **/
1674 static inline void ixgbevf_irq_disable(struct ixgbevf_adapter *adapter)
1675 {
1676 	struct ixgbe_hw *hw = &adapter->hw;
1677 	int i;
1678 
1679 	IXGBE_WRITE_REG(hw, IXGBE_VTEIAM, 0);
1680 	IXGBE_WRITE_REG(hw, IXGBE_VTEIMC, ~0);
1681 	IXGBE_WRITE_REG(hw, IXGBE_VTEIAC, 0);
1682 
1683 	IXGBE_WRITE_FLUSH(hw);
1684 
1685 	for (i = 0; i < adapter->num_msix_vectors; i++)
1686 		synchronize_irq(adapter->msix_entries[i].vector);
1687 }
1688 
1689 /**
1690  * ixgbevf_irq_enable - Enable default interrupt generation settings
1691  * @adapter: board private structure
1692  **/
1693 static inline void ixgbevf_irq_enable(struct ixgbevf_adapter *adapter)
1694 {
1695 	struct ixgbe_hw *hw = &adapter->hw;
1696 
1697 	IXGBE_WRITE_REG(hw, IXGBE_VTEIAM, adapter->eims_enable_mask);
1698 	IXGBE_WRITE_REG(hw, IXGBE_VTEIAC, adapter->eims_enable_mask);
1699 	IXGBE_WRITE_REG(hw, IXGBE_VTEIMS, adapter->eims_enable_mask);
1700 }
1701 
1702 /**
1703  * ixgbevf_configure_tx_ring - Configure 82599 VF Tx ring after Reset
1704  * @adapter: board private structure
1705  * @ring: structure containing ring specific data
1706  *
1707  * Configure the Tx descriptor ring after a reset.
1708  **/
1709 static void ixgbevf_configure_tx_ring(struct ixgbevf_adapter *adapter,
1710 				      struct ixgbevf_ring *ring)
1711 {
1712 	struct ixgbe_hw *hw = &adapter->hw;
1713 	u64 tdba = ring->dma;
1714 	int wait_loop = 10;
1715 	u32 txdctl = IXGBE_TXDCTL_ENABLE;
1716 	u8 reg_idx = ring->reg_idx;
1717 
1718 	/* disable queue to avoid issues while updating state */
1719 	IXGBE_WRITE_REG(hw, IXGBE_VFTXDCTL(reg_idx), IXGBE_TXDCTL_SWFLSH);
1720 	IXGBE_WRITE_FLUSH(hw);
1721 
1722 	IXGBE_WRITE_REG(hw, IXGBE_VFTDBAL(reg_idx), tdba & DMA_BIT_MASK(32));
1723 	IXGBE_WRITE_REG(hw, IXGBE_VFTDBAH(reg_idx), tdba >> 32);
1724 	IXGBE_WRITE_REG(hw, IXGBE_VFTDLEN(reg_idx),
1725 			ring->count * sizeof(union ixgbe_adv_tx_desc));
1726 
1727 	/* disable head writeback */
1728 	IXGBE_WRITE_REG(hw, IXGBE_VFTDWBAH(reg_idx), 0);
1729 	IXGBE_WRITE_REG(hw, IXGBE_VFTDWBAL(reg_idx), 0);
1730 
1731 	/* enable relaxed ordering */
1732 	IXGBE_WRITE_REG(hw, IXGBE_VFDCA_TXCTRL(reg_idx),
1733 			(IXGBE_DCA_TXCTRL_DESC_RRO_EN |
1734 			 IXGBE_DCA_TXCTRL_DATA_RRO_EN));
1735 
1736 	/* reset head and tail pointers */
1737 	IXGBE_WRITE_REG(hw, IXGBE_VFTDH(reg_idx), 0);
1738 	IXGBE_WRITE_REG(hw, IXGBE_VFTDT(reg_idx), 0);
1739 	ring->tail = adapter->io_addr + IXGBE_VFTDT(reg_idx);
1740 
1741 	/* reset ntu and ntc to place SW in sync with hardwdare */
1742 	ring->next_to_clean = 0;
1743 	ring->next_to_use = 0;
1744 
1745 	/* In order to avoid issues WTHRESH + PTHRESH should always be equal
1746 	 * to or less than the number of on chip descriptors, which is
1747 	 * currently 40.
1748 	 */
1749 	txdctl |= (8 << 16);    /* WTHRESH = 8 */
1750 
1751 	/* Setting PTHRESH to 32 both improves performance */
1752 	txdctl |= (1u << 8) |    /* HTHRESH = 1 */
1753 		   32;           /* PTHRESH = 32 */
1754 
1755 	/* reinitialize tx_buffer_info */
1756 	memset(ring->tx_buffer_info, 0,
1757 	       sizeof(struct ixgbevf_tx_buffer) * ring->count);
1758 
1759 	clear_bit(__IXGBEVF_HANG_CHECK_ARMED, &ring->state);
1760 	clear_bit(__IXGBEVF_TX_XDP_RING_PRIMED, &ring->state);
1761 
1762 	IXGBE_WRITE_REG(hw, IXGBE_VFTXDCTL(reg_idx), txdctl);
1763 
1764 	/* poll to verify queue is enabled */
1765 	do {
1766 		usleep_range(1000, 2000);
1767 		txdctl = IXGBE_READ_REG(hw, IXGBE_VFTXDCTL(reg_idx));
1768 	}  while (--wait_loop && !(txdctl & IXGBE_TXDCTL_ENABLE));
1769 	if (!wait_loop)
1770 		hw_dbg(hw, "Could not enable Tx Queue %d\n", reg_idx);
1771 }
1772 
1773 /**
1774  * ixgbevf_configure_tx - Configure 82599 VF Transmit Unit after Reset
1775  * @adapter: board private structure
1776  *
1777  * Configure the Tx unit of the MAC after a reset.
1778  **/
1779 static void ixgbevf_configure_tx(struct ixgbevf_adapter *adapter)
1780 {
1781 	u32 i;
1782 
1783 	/* Setup the HW Tx Head and Tail descriptor pointers */
1784 	for (i = 0; i < adapter->num_tx_queues; i++)
1785 		ixgbevf_configure_tx_ring(adapter, adapter->tx_ring[i]);
1786 	for (i = 0; i < adapter->num_xdp_queues; i++)
1787 		ixgbevf_configure_tx_ring(adapter, adapter->xdp_ring[i]);
1788 }
1789 
1790 #define IXGBE_SRRCTL_BSIZEHDRSIZE_SHIFT	2
1791 
1792 static void ixgbevf_configure_srrctl(struct ixgbevf_adapter *adapter,
1793 				     struct ixgbevf_ring *ring, int index)
1794 {
1795 	struct ixgbe_hw *hw = &adapter->hw;
1796 	u32 srrctl;
1797 
1798 	srrctl = IXGBE_SRRCTL_DROP_EN;
1799 
1800 	srrctl |= IXGBEVF_RX_HDR_SIZE << IXGBE_SRRCTL_BSIZEHDRSIZE_SHIFT;
1801 	if (ring_uses_large_buffer(ring))
1802 		srrctl |= IXGBEVF_RXBUFFER_3072 >> IXGBE_SRRCTL_BSIZEPKT_SHIFT;
1803 	else
1804 		srrctl |= IXGBEVF_RXBUFFER_2048 >> IXGBE_SRRCTL_BSIZEPKT_SHIFT;
1805 	srrctl |= IXGBE_SRRCTL_DESCTYPE_ADV_ONEBUF;
1806 
1807 	IXGBE_WRITE_REG(hw, IXGBE_VFSRRCTL(index), srrctl);
1808 }
1809 
1810 static void ixgbevf_setup_psrtype(struct ixgbevf_adapter *adapter)
1811 {
1812 	struct ixgbe_hw *hw = &adapter->hw;
1813 
1814 	/* PSRTYPE must be initialized in 82599 */
1815 	u32 psrtype = IXGBE_PSRTYPE_TCPHDR | IXGBE_PSRTYPE_UDPHDR |
1816 		      IXGBE_PSRTYPE_IPV4HDR | IXGBE_PSRTYPE_IPV6HDR |
1817 		      IXGBE_PSRTYPE_L2HDR;
1818 
1819 	if (adapter->num_rx_queues > 1)
1820 		psrtype |= BIT(29);
1821 
1822 	IXGBE_WRITE_REG(hw, IXGBE_VFPSRTYPE, psrtype);
1823 }
1824 
1825 #define IXGBEVF_MAX_RX_DESC_POLL 10
1826 static void ixgbevf_disable_rx_queue(struct ixgbevf_adapter *adapter,
1827 				     struct ixgbevf_ring *ring)
1828 {
1829 	struct ixgbe_hw *hw = &adapter->hw;
1830 	int wait_loop = IXGBEVF_MAX_RX_DESC_POLL;
1831 	u32 rxdctl;
1832 	u8 reg_idx = ring->reg_idx;
1833 
1834 	if (IXGBE_REMOVED(hw->hw_addr))
1835 		return;
1836 	rxdctl = IXGBE_READ_REG(hw, IXGBE_VFRXDCTL(reg_idx));
1837 	rxdctl &= ~IXGBE_RXDCTL_ENABLE;
1838 
1839 	/* write value back with RXDCTL.ENABLE bit cleared */
1840 	IXGBE_WRITE_REG(hw, IXGBE_VFRXDCTL(reg_idx), rxdctl);
1841 
1842 	/* the hardware may take up to 100us to really disable the Rx queue */
1843 	do {
1844 		udelay(10);
1845 		rxdctl = IXGBE_READ_REG(hw, IXGBE_VFRXDCTL(reg_idx));
1846 	} while (--wait_loop && (rxdctl & IXGBE_RXDCTL_ENABLE));
1847 
1848 	if (!wait_loop)
1849 		pr_err("RXDCTL.ENABLE queue %d not cleared while polling\n",
1850 		       reg_idx);
1851 }
1852 
1853 static void ixgbevf_rx_desc_queue_enable(struct ixgbevf_adapter *adapter,
1854 					 struct ixgbevf_ring *ring)
1855 {
1856 	struct ixgbe_hw *hw = &adapter->hw;
1857 	int wait_loop = IXGBEVF_MAX_RX_DESC_POLL;
1858 	u32 rxdctl;
1859 	u8 reg_idx = ring->reg_idx;
1860 
1861 	if (IXGBE_REMOVED(hw->hw_addr))
1862 		return;
1863 	do {
1864 		usleep_range(1000, 2000);
1865 		rxdctl = IXGBE_READ_REG(hw, IXGBE_VFRXDCTL(reg_idx));
1866 	} while (--wait_loop && !(rxdctl & IXGBE_RXDCTL_ENABLE));
1867 
1868 	if (!wait_loop)
1869 		pr_err("RXDCTL.ENABLE queue %d not set while polling\n",
1870 		       reg_idx);
1871 }
1872 
1873 /**
1874  * ixgbevf_init_rss_key - Initialize adapter RSS key
1875  * @adapter: device handle
1876  *
1877  * Allocates and initializes the RSS key if it is not allocated.
1878  **/
1879 static inline int ixgbevf_init_rss_key(struct ixgbevf_adapter *adapter)
1880 {
1881 	u32 *rss_key;
1882 
1883 	if (!adapter->rss_key) {
1884 		rss_key = kzalloc(IXGBEVF_RSS_HASH_KEY_SIZE, GFP_KERNEL);
1885 		if (unlikely(!rss_key))
1886 			return -ENOMEM;
1887 
1888 		netdev_rss_key_fill(rss_key, IXGBEVF_RSS_HASH_KEY_SIZE);
1889 		adapter->rss_key = rss_key;
1890 	}
1891 
1892 	return 0;
1893 }
1894 
1895 static void ixgbevf_setup_vfmrqc(struct ixgbevf_adapter *adapter)
1896 {
1897 	struct ixgbe_hw *hw = &adapter->hw;
1898 	u32 vfmrqc = 0, vfreta = 0;
1899 	u16 rss_i = adapter->num_rx_queues;
1900 	u8 i, j;
1901 
1902 	/* Fill out hash function seeds */
1903 	for (i = 0; i < IXGBEVF_VFRSSRK_REGS; i++)
1904 		IXGBE_WRITE_REG(hw, IXGBE_VFRSSRK(i), *(adapter->rss_key + i));
1905 
1906 	for (i = 0, j = 0; i < IXGBEVF_X550_VFRETA_SIZE; i++, j++) {
1907 		if (j == rss_i)
1908 			j = 0;
1909 
1910 		adapter->rss_indir_tbl[i] = j;
1911 
1912 		vfreta |= j << (i & 0x3) * 8;
1913 		if ((i & 3) == 3) {
1914 			IXGBE_WRITE_REG(hw, IXGBE_VFRETA(i >> 2), vfreta);
1915 			vfreta = 0;
1916 		}
1917 	}
1918 
1919 	/* Perform hash on these packet types */
1920 	vfmrqc |= IXGBE_VFMRQC_RSS_FIELD_IPV4 |
1921 		IXGBE_VFMRQC_RSS_FIELD_IPV4_TCP |
1922 		IXGBE_VFMRQC_RSS_FIELD_IPV6 |
1923 		IXGBE_VFMRQC_RSS_FIELD_IPV6_TCP;
1924 
1925 	vfmrqc |= IXGBE_VFMRQC_RSSEN;
1926 
1927 	IXGBE_WRITE_REG(hw, IXGBE_VFMRQC, vfmrqc);
1928 }
1929 
1930 static void ixgbevf_configure_rx_ring(struct ixgbevf_adapter *adapter,
1931 				      struct ixgbevf_ring *ring)
1932 {
1933 	struct ixgbe_hw *hw = &adapter->hw;
1934 	union ixgbe_adv_rx_desc *rx_desc;
1935 	u64 rdba = ring->dma;
1936 	u32 rxdctl;
1937 	u8 reg_idx = ring->reg_idx;
1938 
1939 	/* disable queue to avoid issues while updating state */
1940 	rxdctl = IXGBE_READ_REG(hw, IXGBE_VFRXDCTL(reg_idx));
1941 	ixgbevf_disable_rx_queue(adapter, ring);
1942 
1943 	IXGBE_WRITE_REG(hw, IXGBE_VFRDBAL(reg_idx), rdba & DMA_BIT_MASK(32));
1944 	IXGBE_WRITE_REG(hw, IXGBE_VFRDBAH(reg_idx), rdba >> 32);
1945 	IXGBE_WRITE_REG(hw, IXGBE_VFRDLEN(reg_idx),
1946 			ring->count * sizeof(union ixgbe_adv_rx_desc));
1947 
1948 #ifndef CONFIG_SPARC
1949 	/* enable relaxed ordering */
1950 	IXGBE_WRITE_REG(hw, IXGBE_VFDCA_RXCTRL(reg_idx),
1951 			IXGBE_DCA_RXCTRL_DESC_RRO_EN);
1952 #else
1953 	IXGBE_WRITE_REG(hw, IXGBE_VFDCA_RXCTRL(reg_idx),
1954 			IXGBE_DCA_RXCTRL_DESC_RRO_EN |
1955 			IXGBE_DCA_RXCTRL_DATA_WRO_EN);
1956 #endif
1957 
1958 	/* reset head and tail pointers */
1959 	IXGBE_WRITE_REG(hw, IXGBE_VFRDH(reg_idx), 0);
1960 	IXGBE_WRITE_REG(hw, IXGBE_VFRDT(reg_idx), 0);
1961 	ring->tail = adapter->io_addr + IXGBE_VFRDT(reg_idx);
1962 
1963 	/* initialize rx_buffer_info */
1964 	memset(ring->rx_buffer_info, 0,
1965 	       sizeof(struct ixgbevf_rx_buffer) * ring->count);
1966 
1967 	/* initialize Rx descriptor 0 */
1968 	rx_desc = IXGBEVF_RX_DESC(ring, 0);
1969 	rx_desc->wb.upper.length = 0;
1970 
1971 	/* reset ntu and ntc to place SW in sync with hardwdare */
1972 	ring->next_to_clean = 0;
1973 	ring->next_to_use = 0;
1974 	ring->next_to_alloc = 0;
1975 
1976 	ixgbevf_configure_srrctl(adapter, ring, reg_idx);
1977 
1978 	/* RXDCTL.RLPML does not work on 82599 */
1979 	if (adapter->hw.mac.type != ixgbe_mac_82599_vf) {
1980 		rxdctl &= ~(IXGBE_RXDCTL_RLPMLMASK |
1981 			    IXGBE_RXDCTL_RLPML_EN);
1982 
1983 #if (PAGE_SIZE < 8192)
1984 		/* Limit the maximum frame size so we don't overrun the skb */
1985 		if (ring_uses_build_skb(ring) &&
1986 		    !ring_uses_large_buffer(ring))
1987 			rxdctl |= IXGBEVF_MAX_FRAME_BUILD_SKB |
1988 				  IXGBE_RXDCTL_RLPML_EN;
1989 #endif
1990 	}
1991 
1992 	rxdctl |= IXGBE_RXDCTL_ENABLE | IXGBE_RXDCTL_VME;
1993 	IXGBE_WRITE_REG(hw, IXGBE_VFRXDCTL(reg_idx), rxdctl);
1994 
1995 	ixgbevf_rx_desc_queue_enable(adapter, ring);
1996 	ixgbevf_alloc_rx_buffers(ring, ixgbevf_desc_unused(ring));
1997 }
1998 
1999 static void ixgbevf_set_rx_buffer_len(struct ixgbevf_adapter *adapter,
2000 				      struct ixgbevf_ring *rx_ring)
2001 {
2002 	struct net_device *netdev = adapter->netdev;
2003 	unsigned int max_frame = netdev->mtu + ETH_HLEN + ETH_FCS_LEN;
2004 
2005 	/* set build_skb and buffer size flags */
2006 	clear_ring_build_skb_enabled(rx_ring);
2007 	clear_ring_uses_large_buffer(rx_ring);
2008 
2009 	if (adapter->flags & IXGBEVF_FLAGS_LEGACY_RX)
2010 		return;
2011 
2012 	if (PAGE_SIZE < 8192)
2013 		if (max_frame > IXGBEVF_MAX_FRAME_BUILD_SKB)
2014 			set_ring_uses_large_buffer(rx_ring);
2015 
2016 	/* 82599 can't rely on RXDCTL.RLPML to restrict the size of the frame */
2017 	if (adapter->hw.mac.type == ixgbe_mac_82599_vf && !ring_uses_large_buffer(rx_ring))
2018 		return;
2019 
2020 	set_ring_build_skb_enabled(rx_ring);
2021 }
2022 
2023 /**
2024  * ixgbevf_configure_rx - Configure 82599 VF Receive Unit after Reset
2025  * @adapter: board private structure
2026  *
2027  * Configure the Rx unit of the MAC after a reset.
2028  **/
2029 static void ixgbevf_configure_rx(struct ixgbevf_adapter *adapter)
2030 {
2031 	struct ixgbe_hw *hw = &adapter->hw;
2032 	struct net_device *netdev = adapter->netdev;
2033 	int i, ret;
2034 
2035 	ixgbevf_setup_psrtype(adapter);
2036 	if (hw->mac.type >= ixgbe_mac_X550_vf)
2037 		ixgbevf_setup_vfmrqc(adapter);
2038 
2039 	spin_lock_bh(&adapter->mbx_lock);
2040 	/* notify the PF of our intent to use this size of frame */
2041 	ret = hw->mac.ops.set_rlpml(hw, netdev->mtu + ETH_HLEN + ETH_FCS_LEN);
2042 	spin_unlock_bh(&adapter->mbx_lock);
2043 	if (ret)
2044 		dev_err(&adapter->pdev->dev,
2045 			"Failed to set MTU at %d\n", netdev->mtu);
2046 
2047 	/* Setup the HW Rx Head and Tail Descriptor Pointers and
2048 	 * the Base and Length of the Rx Descriptor Ring
2049 	 */
2050 	for (i = 0; i < adapter->num_rx_queues; i++) {
2051 		struct ixgbevf_ring *rx_ring = adapter->rx_ring[i];
2052 
2053 		ixgbevf_set_rx_buffer_len(adapter, rx_ring);
2054 		ixgbevf_configure_rx_ring(adapter, rx_ring);
2055 	}
2056 }
2057 
2058 static int ixgbevf_vlan_rx_add_vid(struct net_device *netdev,
2059 				   __be16 proto, u16 vid)
2060 {
2061 	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
2062 	struct ixgbe_hw *hw = &adapter->hw;
2063 	int err;
2064 
2065 	spin_lock_bh(&adapter->mbx_lock);
2066 
2067 	/* add VID to filter table */
2068 	err = hw->mac.ops.set_vfta(hw, vid, 0, true);
2069 
2070 	spin_unlock_bh(&adapter->mbx_lock);
2071 
2072 	if (err) {
2073 		netdev_err(netdev, "VF could not set VLAN %d\n", vid);
2074 
2075 		/* translate error return types so error makes sense */
2076 		if (err == IXGBE_ERR_MBX)
2077 			return -EIO;
2078 
2079 		if (err == IXGBE_ERR_INVALID_ARGUMENT)
2080 			return -EACCES;
2081 	}
2082 
2083 	set_bit(vid, adapter->active_vlans);
2084 
2085 	return err;
2086 }
2087 
2088 static int ixgbevf_vlan_rx_kill_vid(struct net_device *netdev,
2089 				    __be16 proto, u16 vid)
2090 {
2091 	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
2092 	struct ixgbe_hw *hw = &adapter->hw;
2093 	int err;
2094 
2095 	spin_lock_bh(&adapter->mbx_lock);
2096 
2097 	/* remove VID from filter table */
2098 	err = hw->mac.ops.set_vfta(hw, vid, 0, false);
2099 
2100 	spin_unlock_bh(&adapter->mbx_lock);
2101 
2102 	if (err)
2103 		netdev_err(netdev, "Could not remove VLAN %d\n", vid);
2104 
2105 	clear_bit(vid, adapter->active_vlans);
2106 
2107 	return err;
2108 }
2109 
2110 static void ixgbevf_restore_vlan(struct ixgbevf_adapter *adapter)
2111 {
2112 	u16 vid;
2113 
2114 	for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID)
2115 		ixgbevf_vlan_rx_add_vid(adapter->netdev,
2116 					htons(ETH_P_8021Q), vid);
2117 }
2118 
2119 static int ixgbevf_write_uc_addr_list(struct net_device *netdev)
2120 {
2121 	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
2122 	struct ixgbe_hw *hw = &adapter->hw;
2123 	int count = 0;
2124 
2125 	if (!netdev_uc_empty(netdev)) {
2126 		struct netdev_hw_addr *ha;
2127 
2128 		netdev_for_each_uc_addr(ha, netdev) {
2129 			hw->mac.ops.set_uc_addr(hw, ++count, ha->addr);
2130 			udelay(200);
2131 		}
2132 	} else {
2133 		/* If the list is empty then send message to PF driver to
2134 		 * clear all MAC VLANs on this VF.
2135 		 */
2136 		hw->mac.ops.set_uc_addr(hw, 0, NULL);
2137 	}
2138 
2139 	return count;
2140 }
2141 
2142 /**
2143  * ixgbevf_set_rx_mode - Multicast and unicast set
2144  * @netdev: network interface device structure
2145  *
2146  * The set_rx_method entry point is called whenever the multicast address
2147  * list, unicast address list or the network interface flags are updated.
2148  * This routine is responsible for configuring the hardware for proper
2149  * multicast mode and configuring requested unicast filters.
2150  **/
2151 static void ixgbevf_set_rx_mode(struct net_device *netdev)
2152 {
2153 	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
2154 	struct ixgbe_hw *hw = &adapter->hw;
2155 	unsigned int flags = netdev->flags;
2156 	int xcast_mode;
2157 
2158 	/* request the most inclusive mode we need */
2159 	if (flags & IFF_PROMISC)
2160 		xcast_mode = IXGBEVF_XCAST_MODE_PROMISC;
2161 	else if (flags & IFF_ALLMULTI)
2162 		xcast_mode = IXGBEVF_XCAST_MODE_ALLMULTI;
2163 	else if (flags & (IFF_BROADCAST | IFF_MULTICAST))
2164 		xcast_mode = IXGBEVF_XCAST_MODE_MULTI;
2165 	else
2166 		xcast_mode = IXGBEVF_XCAST_MODE_NONE;
2167 
2168 	spin_lock_bh(&adapter->mbx_lock);
2169 
2170 	hw->mac.ops.update_xcast_mode(hw, xcast_mode);
2171 
2172 	/* reprogram multicast list */
2173 	hw->mac.ops.update_mc_addr_list(hw, netdev);
2174 
2175 	ixgbevf_write_uc_addr_list(netdev);
2176 
2177 	spin_unlock_bh(&adapter->mbx_lock);
2178 }
2179 
2180 static void ixgbevf_napi_enable_all(struct ixgbevf_adapter *adapter)
2181 {
2182 	int q_idx;
2183 	struct ixgbevf_q_vector *q_vector;
2184 	int q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
2185 
2186 	for (q_idx = 0; q_idx < q_vectors; q_idx++) {
2187 		q_vector = adapter->q_vector[q_idx];
2188 		napi_enable(&q_vector->napi);
2189 	}
2190 }
2191 
2192 static void ixgbevf_napi_disable_all(struct ixgbevf_adapter *adapter)
2193 {
2194 	int q_idx;
2195 	struct ixgbevf_q_vector *q_vector;
2196 	int q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
2197 
2198 	for (q_idx = 0; q_idx < q_vectors; q_idx++) {
2199 		q_vector = adapter->q_vector[q_idx];
2200 		napi_disable(&q_vector->napi);
2201 	}
2202 }
2203 
2204 static int ixgbevf_configure_dcb(struct ixgbevf_adapter *adapter)
2205 {
2206 	struct ixgbe_hw *hw = &adapter->hw;
2207 	unsigned int def_q = 0;
2208 	unsigned int num_tcs = 0;
2209 	unsigned int num_rx_queues = adapter->num_rx_queues;
2210 	unsigned int num_tx_queues = adapter->num_tx_queues;
2211 	int err;
2212 
2213 	spin_lock_bh(&adapter->mbx_lock);
2214 
2215 	/* fetch queue configuration from the PF */
2216 	err = ixgbevf_get_queues(hw, &num_tcs, &def_q);
2217 
2218 	spin_unlock_bh(&adapter->mbx_lock);
2219 
2220 	if (err)
2221 		return err;
2222 
2223 	if (num_tcs > 1) {
2224 		/* we need only one Tx queue */
2225 		num_tx_queues = 1;
2226 
2227 		/* update default Tx ring register index */
2228 		adapter->tx_ring[0]->reg_idx = def_q;
2229 
2230 		/* we need as many queues as traffic classes */
2231 		num_rx_queues = num_tcs;
2232 	}
2233 
2234 	/* if we have a bad config abort request queue reset */
2235 	if ((adapter->num_rx_queues != num_rx_queues) ||
2236 	    (adapter->num_tx_queues != num_tx_queues)) {
2237 		/* force mailbox timeout to prevent further messages */
2238 		hw->mbx.timeout = 0;
2239 
2240 		/* wait for watchdog to come around and bail us out */
2241 		set_bit(__IXGBEVF_QUEUE_RESET_REQUESTED, &adapter->state);
2242 	}
2243 
2244 	return 0;
2245 }
2246 
2247 static void ixgbevf_configure(struct ixgbevf_adapter *adapter)
2248 {
2249 	ixgbevf_configure_dcb(adapter);
2250 
2251 	ixgbevf_set_rx_mode(adapter->netdev);
2252 
2253 	ixgbevf_restore_vlan(adapter);
2254 	ixgbevf_ipsec_restore(adapter);
2255 
2256 	ixgbevf_configure_tx(adapter);
2257 	ixgbevf_configure_rx(adapter);
2258 }
2259 
2260 static void ixgbevf_save_reset_stats(struct ixgbevf_adapter *adapter)
2261 {
2262 	/* Only save pre-reset stats if there are some */
2263 	if (adapter->stats.vfgprc || adapter->stats.vfgptc) {
2264 		adapter->stats.saved_reset_vfgprc += adapter->stats.vfgprc -
2265 			adapter->stats.base_vfgprc;
2266 		adapter->stats.saved_reset_vfgptc += adapter->stats.vfgptc -
2267 			adapter->stats.base_vfgptc;
2268 		adapter->stats.saved_reset_vfgorc += adapter->stats.vfgorc -
2269 			adapter->stats.base_vfgorc;
2270 		adapter->stats.saved_reset_vfgotc += adapter->stats.vfgotc -
2271 			adapter->stats.base_vfgotc;
2272 		adapter->stats.saved_reset_vfmprc += adapter->stats.vfmprc -
2273 			adapter->stats.base_vfmprc;
2274 	}
2275 }
2276 
2277 static void ixgbevf_init_last_counter_stats(struct ixgbevf_adapter *adapter)
2278 {
2279 	struct ixgbe_hw *hw = &adapter->hw;
2280 
2281 	adapter->stats.last_vfgprc = IXGBE_READ_REG(hw, IXGBE_VFGPRC);
2282 	adapter->stats.last_vfgorc = IXGBE_READ_REG(hw, IXGBE_VFGORC_LSB);
2283 	adapter->stats.last_vfgorc |=
2284 		(((u64)(IXGBE_READ_REG(hw, IXGBE_VFGORC_MSB))) << 32);
2285 	adapter->stats.last_vfgptc = IXGBE_READ_REG(hw, IXGBE_VFGPTC);
2286 	adapter->stats.last_vfgotc = IXGBE_READ_REG(hw, IXGBE_VFGOTC_LSB);
2287 	adapter->stats.last_vfgotc |=
2288 		(((u64)(IXGBE_READ_REG(hw, IXGBE_VFGOTC_MSB))) << 32);
2289 	adapter->stats.last_vfmprc = IXGBE_READ_REG(hw, IXGBE_VFMPRC);
2290 
2291 	adapter->stats.base_vfgprc = adapter->stats.last_vfgprc;
2292 	adapter->stats.base_vfgorc = adapter->stats.last_vfgorc;
2293 	adapter->stats.base_vfgptc = adapter->stats.last_vfgptc;
2294 	adapter->stats.base_vfgotc = adapter->stats.last_vfgotc;
2295 	adapter->stats.base_vfmprc = adapter->stats.last_vfmprc;
2296 }
2297 
2298 /**
2299  * ixgbevf_set_features - Set features supported by PF
2300  * @adapter: pointer to the adapter struct
2301  *
2302  * Negotiate with PF supported features and then set pf_features accordingly.
2303  */
2304 static void ixgbevf_set_features(struct ixgbevf_adapter *adapter)
2305 {
2306 	u32 *pf_features = &adapter->pf_features;
2307 	struct ixgbe_hw *hw = &adapter->hw;
2308 	int err;
2309 
2310 	err = hw->mac.ops.negotiate_features(hw, pf_features);
2311 	if (err && err != -EOPNOTSUPP)
2312 		netdev_dbg(adapter->netdev,
2313 			   "PF feature negotiation failed.\n");
2314 
2315 	/* Address also pre API 1.7 cases */
2316 	if (hw->api_version == ixgbe_mbox_api_14)
2317 		*pf_features |= IXGBEVF_PF_SUP_IPSEC;
2318 	else if (hw->api_version == ixgbe_mbox_api_15)
2319 		*pf_features |= IXGBEVF_PF_SUP_ESX_MBX;
2320 }
2321 
2322 static void ixgbevf_negotiate_api(struct ixgbevf_adapter *adapter)
2323 {
2324 	struct ixgbe_hw *hw = &adapter->hw;
2325 	static const int api[] = {
2326 		ixgbe_mbox_api_17,
2327 		ixgbe_mbox_api_16,
2328 		ixgbe_mbox_api_15,
2329 		ixgbe_mbox_api_14,
2330 		ixgbe_mbox_api_13,
2331 		ixgbe_mbox_api_12,
2332 		ixgbe_mbox_api_11,
2333 		ixgbe_mbox_api_10,
2334 		ixgbe_mbox_api_unknown
2335 	};
2336 	int err, idx = 0;
2337 
2338 	spin_lock_bh(&adapter->mbx_lock);
2339 
2340 	while (api[idx] != ixgbe_mbox_api_unknown) {
2341 		err = hw->mac.ops.negotiate_api_version(hw, api[idx]);
2342 		if (!err)
2343 			break;
2344 		idx++;
2345 	}
2346 
2347 	ixgbevf_set_features(adapter);
2348 
2349 	if (adapter->pf_features & IXGBEVF_PF_SUP_ESX_MBX) {
2350 		hw->mbx.ops.init_params(hw);
2351 		memcpy(&hw->mbx.ops, &ixgbevf_mbx_ops,
2352 		       sizeof(struct ixgbe_mbx_operations));
2353 	}
2354 
2355 	spin_unlock_bh(&adapter->mbx_lock);
2356 }
2357 
2358 static void ixgbevf_up_complete(struct ixgbevf_adapter *adapter)
2359 {
2360 	struct net_device *netdev = adapter->netdev;
2361 	struct pci_dev *pdev = adapter->pdev;
2362 	struct ixgbe_hw *hw = &adapter->hw;
2363 	bool state;
2364 
2365 	ixgbevf_configure_msix(adapter);
2366 
2367 	spin_lock_bh(&adapter->mbx_lock);
2368 
2369 	if (is_valid_ether_addr(hw->mac.addr))
2370 		hw->mac.ops.set_rar(hw, 0, hw->mac.addr, 0);
2371 	else
2372 		hw->mac.ops.set_rar(hw, 0, hw->mac.perm_addr, 0);
2373 
2374 	spin_unlock_bh(&adapter->mbx_lock);
2375 
2376 	state = adapter->link_state;
2377 	hw->mac.ops.get_link_state(hw, &adapter->link_state);
2378 	if (state && state != adapter->link_state)
2379 		dev_info(&pdev->dev, "VF is administratively disabled\n");
2380 
2381 	smp_mb__before_atomic();
2382 	clear_bit(__IXGBEVF_DOWN, &adapter->state);
2383 	ixgbevf_napi_enable_all(adapter);
2384 
2385 	/* clear any pending interrupts, may auto mask */
2386 	IXGBE_READ_REG(hw, IXGBE_VTEICR);
2387 	ixgbevf_irq_enable(adapter);
2388 
2389 	/* enable transmits */
2390 	netif_tx_start_all_queues(netdev);
2391 
2392 	ixgbevf_save_reset_stats(adapter);
2393 	ixgbevf_init_last_counter_stats(adapter);
2394 
2395 	hw->mac.get_link_status = 1;
2396 	mod_timer(&adapter->service_timer, jiffies);
2397 }
2398 
2399 void ixgbevf_up(struct ixgbevf_adapter *adapter)
2400 {
2401 	ixgbevf_configure(adapter);
2402 
2403 	ixgbevf_up_complete(adapter);
2404 }
2405 
2406 /**
2407  * ixgbevf_clean_rx_ring - Free Rx Buffers per Queue
2408  * @rx_ring: ring to free buffers from
2409  **/
2410 static void ixgbevf_clean_rx_ring(struct ixgbevf_ring *rx_ring)
2411 {
2412 	u16 i = rx_ring->next_to_clean;
2413 
2414 	/* Free Rx ring sk_buff */
2415 	if (rx_ring->skb) {
2416 		dev_kfree_skb(rx_ring->skb);
2417 		rx_ring->skb = NULL;
2418 	}
2419 
2420 	/* Free all the Rx ring pages */
2421 	while (i != rx_ring->next_to_alloc) {
2422 		struct ixgbevf_rx_buffer *rx_buffer;
2423 
2424 		rx_buffer = &rx_ring->rx_buffer_info[i];
2425 
2426 		/* Invalidate cache lines that may have been written to by
2427 		 * device so that we avoid corrupting memory.
2428 		 */
2429 		dma_sync_single_range_for_cpu(rx_ring->dev,
2430 					      rx_buffer->dma,
2431 					      rx_buffer->page_offset,
2432 					      ixgbevf_rx_bufsz(rx_ring),
2433 					      DMA_FROM_DEVICE);
2434 
2435 		/* free resources associated with mapping */
2436 		dma_unmap_page_attrs(rx_ring->dev,
2437 				     rx_buffer->dma,
2438 				     ixgbevf_rx_pg_size(rx_ring),
2439 				     DMA_FROM_DEVICE,
2440 				     IXGBEVF_RX_DMA_ATTR);
2441 
2442 		__page_frag_cache_drain(rx_buffer->page,
2443 					rx_buffer->pagecnt_bias);
2444 
2445 		i++;
2446 		if (i == rx_ring->count)
2447 			i = 0;
2448 	}
2449 
2450 	rx_ring->next_to_alloc = 0;
2451 	rx_ring->next_to_clean = 0;
2452 	rx_ring->next_to_use = 0;
2453 }
2454 
2455 /**
2456  * ixgbevf_clean_tx_ring - Free Tx Buffers
2457  * @tx_ring: ring to be cleaned
2458  **/
2459 static void ixgbevf_clean_tx_ring(struct ixgbevf_ring *tx_ring)
2460 {
2461 	u16 i = tx_ring->next_to_clean;
2462 	struct ixgbevf_tx_buffer *tx_buffer = &tx_ring->tx_buffer_info[i];
2463 
2464 	while (i != tx_ring->next_to_use) {
2465 		union ixgbe_adv_tx_desc *eop_desc, *tx_desc;
2466 
2467 		/* Free all the Tx ring sk_buffs */
2468 		if (ring_is_xdp(tx_ring))
2469 			page_frag_free(tx_buffer->data);
2470 		else
2471 			dev_kfree_skb_any(tx_buffer->skb);
2472 
2473 		/* unmap skb header data */
2474 		dma_unmap_single(tx_ring->dev,
2475 				 dma_unmap_addr(tx_buffer, dma),
2476 				 dma_unmap_len(tx_buffer, len),
2477 				 DMA_TO_DEVICE);
2478 
2479 		/* check for eop_desc to determine the end of the packet */
2480 		eop_desc = tx_buffer->next_to_watch;
2481 		tx_desc = IXGBEVF_TX_DESC(tx_ring, i);
2482 
2483 		/* unmap remaining buffers */
2484 		while (tx_desc != eop_desc) {
2485 			tx_buffer++;
2486 			tx_desc++;
2487 			i++;
2488 			if (unlikely(i == tx_ring->count)) {
2489 				i = 0;
2490 				tx_buffer = tx_ring->tx_buffer_info;
2491 				tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);
2492 			}
2493 
2494 			/* unmap any remaining paged data */
2495 			if (dma_unmap_len(tx_buffer, len))
2496 				dma_unmap_page(tx_ring->dev,
2497 					       dma_unmap_addr(tx_buffer, dma),
2498 					       dma_unmap_len(tx_buffer, len),
2499 					       DMA_TO_DEVICE);
2500 		}
2501 
2502 		/* move us one more past the eop_desc for start of next pkt */
2503 		tx_buffer++;
2504 		i++;
2505 		if (unlikely(i == tx_ring->count)) {
2506 			i = 0;
2507 			tx_buffer = tx_ring->tx_buffer_info;
2508 		}
2509 	}
2510 
2511 	/* reset next_to_use and next_to_clean */
2512 	tx_ring->next_to_use = 0;
2513 	tx_ring->next_to_clean = 0;
2514 
2515 }
2516 
2517 /**
2518  * ixgbevf_clean_all_rx_rings - Free Rx Buffers for all queues
2519  * @adapter: board private structure
2520  **/
2521 static void ixgbevf_clean_all_rx_rings(struct ixgbevf_adapter *adapter)
2522 {
2523 	int i;
2524 
2525 	for (i = 0; i < adapter->num_rx_queues; i++)
2526 		ixgbevf_clean_rx_ring(adapter->rx_ring[i]);
2527 }
2528 
2529 /**
2530  * ixgbevf_clean_all_tx_rings - Free Tx Buffers for all queues
2531  * @adapter: board private structure
2532  **/
2533 static void ixgbevf_clean_all_tx_rings(struct ixgbevf_adapter *adapter)
2534 {
2535 	int i;
2536 
2537 	for (i = 0; i < adapter->num_tx_queues; i++)
2538 		ixgbevf_clean_tx_ring(adapter->tx_ring[i]);
2539 	for (i = 0; i < adapter->num_xdp_queues; i++)
2540 		ixgbevf_clean_tx_ring(adapter->xdp_ring[i]);
2541 }
2542 
2543 void ixgbevf_down(struct ixgbevf_adapter *adapter)
2544 {
2545 	struct net_device *netdev = adapter->netdev;
2546 	struct ixgbe_hw *hw = &adapter->hw;
2547 	int i;
2548 
2549 	/* signal that we are down to the interrupt handler */
2550 	if (test_and_set_bit(__IXGBEVF_DOWN, &adapter->state))
2551 		return; /* do nothing if already down */
2552 
2553 	/* disable all enabled Rx queues */
2554 	for (i = 0; i < adapter->num_rx_queues; i++)
2555 		ixgbevf_disable_rx_queue(adapter, adapter->rx_ring[i]);
2556 
2557 	usleep_range(10000, 20000);
2558 
2559 	netif_tx_stop_all_queues(netdev);
2560 
2561 	/* call carrier off first to avoid false dev_watchdog timeouts */
2562 	netif_carrier_off(netdev);
2563 	netif_tx_disable(netdev);
2564 
2565 	ixgbevf_irq_disable(adapter);
2566 
2567 	ixgbevf_napi_disable_all(adapter);
2568 
2569 	timer_delete_sync(&adapter->service_timer);
2570 
2571 	/* disable transmits in the hardware now that interrupts are off */
2572 	for (i = 0; i < adapter->num_tx_queues; i++) {
2573 		u8 reg_idx = adapter->tx_ring[i]->reg_idx;
2574 
2575 		IXGBE_WRITE_REG(hw, IXGBE_VFTXDCTL(reg_idx),
2576 				IXGBE_TXDCTL_SWFLSH);
2577 	}
2578 
2579 	for (i = 0; i < adapter->num_xdp_queues; i++) {
2580 		u8 reg_idx = adapter->xdp_ring[i]->reg_idx;
2581 
2582 		IXGBE_WRITE_REG(hw, IXGBE_VFTXDCTL(reg_idx),
2583 				IXGBE_TXDCTL_SWFLSH);
2584 	}
2585 
2586 	if (!pci_channel_offline(adapter->pdev))
2587 		ixgbevf_reset(adapter);
2588 
2589 	ixgbevf_clean_all_tx_rings(adapter);
2590 	ixgbevf_clean_all_rx_rings(adapter);
2591 }
2592 
2593 void ixgbevf_reinit_locked(struct ixgbevf_adapter *adapter)
2594 {
2595 	while (test_and_set_bit(__IXGBEVF_RESETTING, &adapter->state))
2596 		msleep(1);
2597 
2598 	ixgbevf_down(adapter);
2599 	pci_set_master(adapter->pdev);
2600 	ixgbevf_up(adapter);
2601 
2602 	clear_bit(__IXGBEVF_RESETTING, &adapter->state);
2603 }
2604 
2605 void ixgbevf_reset(struct ixgbevf_adapter *adapter)
2606 {
2607 	struct ixgbe_hw *hw = &adapter->hw;
2608 	struct net_device *netdev = adapter->netdev;
2609 
2610 	if (hw->mac.ops.reset_hw(hw)) {
2611 		hw_dbg(hw, "PF still resetting\n");
2612 	} else {
2613 		hw->mac.ops.init_hw(hw);
2614 		ixgbevf_negotiate_api(adapter);
2615 	}
2616 
2617 	if (is_valid_ether_addr(adapter->hw.mac.addr)) {
2618 		eth_hw_addr_set(netdev, adapter->hw.mac.addr);
2619 		ether_addr_copy(netdev->perm_addr, adapter->hw.mac.addr);
2620 	}
2621 
2622 	adapter->last_reset = jiffies;
2623 }
2624 
2625 static int ixgbevf_acquire_msix_vectors(struct ixgbevf_adapter *adapter,
2626 					int vectors)
2627 {
2628 	int vector_threshold;
2629 
2630 	/* We'll want at least 2 (vector_threshold):
2631 	 * 1) TxQ[0] + RxQ[0] handler
2632 	 * 2) Other (Link Status Change, etc.)
2633 	 */
2634 	vector_threshold = MIN_MSIX_COUNT;
2635 
2636 	/* The more we get, the more we will assign to Tx/Rx Cleanup
2637 	 * for the separate queues...where Rx Cleanup >= Tx Cleanup.
2638 	 * Right now, we simply care about how many we'll get; we'll
2639 	 * set them up later while requesting irq's.
2640 	 */
2641 	vectors = pci_enable_msix_range(adapter->pdev, adapter->msix_entries,
2642 					vector_threshold, vectors);
2643 
2644 	if (vectors < 0) {
2645 		dev_err(&adapter->pdev->dev,
2646 			"Unable to allocate MSI-X interrupts\n");
2647 		kfree(adapter->msix_entries);
2648 		adapter->msix_entries = NULL;
2649 		return vectors;
2650 	}
2651 
2652 	/* Adjust for only the vectors we'll use, which is minimum
2653 	 * of max_msix_q_vectors + NON_Q_VECTORS, or the number of
2654 	 * vectors we were allocated.
2655 	 */
2656 	adapter->num_msix_vectors = vectors;
2657 
2658 	return 0;
2659 }
2660 
2661 /**
2662  * ixgbevf_set_num_queues - Allocate queues for device, feature dependent
2663  * @adapter: board private structure to initialize
2664  *
2665  * This is the top level queue allocation routine.  The order here is very
2666  * important, starting with the "most" number of features turned on at once,
2667  * and ending with the smallest set of features.  This way large combinations
2668  * can be allocated if they're turned on, and smaller combinations are the
2669  * fall through conditions.
2670  *
2671  **/
2672 static void ixgbevf_set_num_queues(struct ixgbevf_adapter *adapter)
2673 {
2674 	struct ixgbe_hw *hw = &adapter->hw;
2675 	unsigned int def_q = 0;
2676 	unsigned int num_tcs = 0;
2677 	int err;
2678 
2679 	/* Start with base case */
2680 	adapter->num_rx_queues = 1;
2681 	adapter->num_tx_queues = 1;
2682 	adapter->num_xdp_queues = 0;
2683 
2684 	spin_lock_bh(&adapter->mbx_lock);
2685 
2686 	/* fetch queue configuration from the PF */
2687 	err = ixgbevf_get_queues(hw, &num_tcs, &def_q);
2688 
2689 	spin_unlock_bh(&adapter->mbx_lock);
2690 
2691 	if (err)
2692 		return;
2693 
2694 	/* we need as many queues as traffic classes */
2695 	if (num_tcs > 1) {
2696 		adapter->num_rx_queues = num_tcs;
2697 	} else {
2698 		u16 rss = min_t(u16, num_online_cpus(), IXGBEVF_MAX_RSS_QUEUES);
2699 
2700 		switch (hw->api_version) {
2701 		case ixgbe_mbox_api_11:
2702 		case ixgbe_mbox_api_12:
2703 		case ixgbe_mbox_api_13:
2704 		case ixgbe_mbox_api_14:
2705 		case ixgbe_mbox_api_15:
2706 		case ixgbe_mbox_api_16:
2707 		case ixgbe_mbox_api_17:
2708 			if (adapter->xdp_prog &&
2709 			    hw->mac.max_tx_queues == rss)
2710 				rss = rss > 3 ? 2 : 1;
2711 
2712 			adapter->num_rx_queues = rss;
2713 			adapter->num_tx_queues = rss;
2714 			adapter->num_xdp_queues = adapter->xdp_prog ? rss : 0;
2715 			break;
2716 		default:
2717 			break;
2718 		}
2719 	}
2720 }
2721 
2722 /**
2723  * ixgbevf_set_interrupt_capability - set MSI-X or FAIL if not supported
2724  * @adapter: board private structure to initialize
2725  *
2726  * Attempt to configure the interrupts using the best available
2727  * capabilities of the hardware and the kernel.
2728  **/
2729 static int ixgbevf_set_interrupt_capability(struct ixgbevf_adapter *adapter)
2730 {
2731 	int vector, v_budget;
2732 
2733 	/* It's easy to be greedy for MSI-X vectors, but it really
2734 	 * doesn't do us much good if we have a lot more vectors
2735 	 * than CPU's.  So let's be conservative and only ask for
2736 	 * (roughly) the same number of vectors as there are CPU's.
2737 	 * The default is to use pairs of vectors.
2738 	 */
2739 	v_budget = max(adapter->num_rx_queues, adapter->num_tx_queues);
2740 	v_budget = min_t(int, v_budget, num_online_cpus());
2741 	v_budget += NON_Q_VECTORS;
2742 
2743 	adapter->msix_entries = kzalloc_objs(struct msix_entry, v_budget);
2744 	if (!adapter->msix_entries)
2745 		return -ENOMEM;
2746 
2747 	for (vector = 0; vector < v_budget; vector++)
2748 		adapter->msix_entries[vector].entry = vector;
2749 
2750 	/* A failure in MSI-X entry allocation isn't fatal, but the VF driver
2751 	 * does not support any other modes, so we will simply fail here. Note
2752 	 * that we clean up the msix_entries pointer else-where.
2753 	 */
2754 	return ixgbevf_acquire_msix_vectors(adapter, v_budget);
2755 }
2756 
2757 static void ixgbevf_add_ring(struct ixgbevf_ring *ring,
2758 			     struct ixgbevf_ring_container *head)
2759 {
2760 	ring->next = head->ring;
2761 	head->ring = ring;
2762 	head->count++;
2763 }
2764 
2765 /**
2766  * ixgbevf_alloc_q_vector - Allocate memory for a single interrupt vector
2767  * @adapter: board private structure to initialize
2768  * @v_idx: index of vector in adapter struct
2769  * @txr_count: number of Tx rings for q vector
2770  * @txr_idx: index of first Tx ring to assign
2771  * @xdp_count: total number of XDP rings to allocate
2772  * @xdp_idx: index of first XDP ring to allocate
2773  * @rxr_count: number of Rx rings for q vector
2774  * @rxr_idx: index of first Rx ring to assign
2775  *
2776  * We allocate one q_vector.  If allocation fails we return -ENOMEM.
2777  **/
2778 static int ixgbevf_alloc_q_vector(struct ixgbevf_adapter *adapter, int v_idx,
2779 				  int txr_count, int txr_idx,
2780 				  int xdp_count, int xdp_idx,
2781 				  int rxr_count, int rxr_idx)
2782 {
2783 	struct ixgbevf_q_vector *q_vector;
2784 	int reg_idx = txr_idx + xdp_idx;
2785 	struct ixgbevf_ring *ring;
2786 	int ring_count, size;
2787 
2788 	ring_count = txr_count + xdp_count + rxr_count;
2789 	size = sizeof(*q_vector) + (sizeof(*ring) * ring_count);
2790 
2791 	/* allocate q_vector and rings */
2792 	q_vector = kzalloc(size, GFP_KERNEL);
2793 	if (!q_vector)
2794 		return -ENOMEM;
2795 
2796 	/* initialize NAPI */
2797 	netif_napi_add(adapter->netdev, &q_vector->napi, ixgbevf_poll);
2798 
2799 	/* tie q_vector and adapter together */
2800 	adapter->q_vector[v_idx] = q_vector;
2801 	q_vector->adapter = adapter;
2802 	q_vector->v_idx = v_idx;
2803 
2804 	/* initialize pointer to rings */
2805 	ring = q_vector->ring;
2806 
2807 	while (txr_count) {
2808 		/* assign generic ring traits */
2809 		ring->dev = &adapter->pdev->dev;
2810 		ring->netdev = adapter->netdev;
2811 
2812 		/* configure backlink on ring */
2813 		ring->q_vector = q_vector;
2814 
2815 		/* update q_vector Tx values */
2816 		ixgbevf_add_ring(ring, &q_vector->tx);
2817 
2818 		/* apply Tx specific ring traits */
2819 		ring->count = adapter->tx_ring_count;
2820 		ring->queue_index = txr_idx;
2821 		ring->reg_idx = reg_idx;
2822 
2823 		/* assign ring to adapter */
2824 		adapter->tx_ring[txr_idx] = ring;
2825 
2826 		/* update count and index */
2827 		txr_count--;
2828 		txr_idx++;
2829 		reg_idx++;
2830 
2831 		/* push pointer to next ring */
2832 		ring++;
2833 	}
2834 
2835 	while (xdp_count) {
2836 		/* assign generic ring traits */
2837 		ring->dev = &adapter->pdev->dev;
2838 		ring->netdev = adapter->netdev;
2839 
2840 		/* configure backlink on ring */
2841 		ring->q_vector = q_vector;
2842 
2843 		/* update q_vector Tx values */
2844 		ixgbevf_add_ring(ring, &q_vector->tx);
2845 
2846 		/* apply Tx specific ring traits */
2847 		ring->count = adapter->tx_ring_count;
2848 		ring->queue_index = xdp_idx;
2849 		ring->reg_idx = reg_idx;
2850 		set_ring_xdp(ring);
2851 
2852 		/* assign ring to adapter */
2853 		adapter->xdp_ring[xdp_idx] = ring;
2854 
2855 		/* update count and index */
2856 		xdp_count--;
2857 		xdp_idx++;
2858 		reg_idx++;
2859 
2860 		/* push pointer to next ring */
2861 		ring++;
2862 	}
2863 
2864 	while (rxr_count) {
2865 		/* assign generic ring traits */
2866 		ring->dev = &adapter->pdev->dev;
2867 		ring->netdev = adapter->netdev;
2868 
2869 		/* configure backlink on ring */
2870 		ring->q_vector = q_vector;
2871 
2872 		/* update q_vector Rx values */
2873 		ixgbevf_add_ring(ring, &q_vector->rx);
2874 
2875 		/* apply Rx specific ring traits */
2876 		ring->count = adapter->rx_ring_count;
2877 		ring->queue_index = rxr_idx;
2878 		ring->reg_idx = rxr_idx;
2879 
2880 		/* assign ring to adapter */
2881 		adapter->rx_ring[rxr_idx] = ring;
2882 
2883 		/* update count and index */
2884 		rxr_count--;
2885 		rxr_idx++;
2886 
2887 		/* push pointer to next ring */
2888 		ring++;
2889 	}
2890 
2891 	return 0;
2892 }
2893 
2894 /**
2895  * ixgbevf_free_q_vector - Free memory allocated for specific interrupt vector
2896  * @adapter: board private structure to initialize
2897  * @v_idx: index of vector in adapter struct
2898  *
2899  * This function frees the memory allocated to the q_vector.  In addition if
2900  * NAPI is enabled it will delete any references to the NAPI struct prior
2901  * to freeing the q_vector.
2902  **/
2903 static void ixgbevf_free_q_vector(struct ixgbevf_adapter *adapter, int v_idx)
2904 {
2905 	struct ixgbevf_q_vector *q_vector = adapter->q_vector[v_idx];
2906 	struct ixgbevf_ring *ring;
2907 
2908 	ixgbevf_for_each_ring(ring, q_vector->tx) {
2909 		if (ring_is_xdp(ring))
2910 			adapter->xdp_ring[ring->queue_index] = NULL;
2911 		else
2912 			adapter->tx_ring[ring->queue_index] = NULL;
2913 	}
2914 
2915 	ixgbevf_for_each_ring(ring, q_vector->rx)
2916 		adapter->rx_ring[ring->queue_index] = NULL;
2917 
2918 	adapter->q_vector[v_idx] = NULL;
2919 	netif_napi_del(&q_vector->napi);
2920 
2921 	/* ixgbevf_get_stats() might access the rings on this vector,
2922 	 * we must wait a grace period before freeing it.
2923 	 */
2924 	kfree_rcu(q_vector, rcu);
2925 }
2926 
2927 /**
2928  * ixgbevf_alloc_q_vectors - Allocate memory for interrupt vectors
2929  * @adapter: board private structure to initialize
2930  *
2931  * We allocate one q_vector per queue interrupt.  If allocation fails we
2932  * return -ENOMEM.
2933  **/
2934 static int ixgbevf_alloc_q_vectors(struct ixgbevf_adapter *adapter)
2935 {
2936 	int q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
2937 	int rxr_remaining = adapter->num_rx_queues;
2938 	int txr_remaining = adapter->num_tx_queues;
2939 	int xdp_remaining = adapter->num_xdp_queues;
2940 	int rxr_idx = 0, txr_idx = 0, xdp_idx = 0, v_idx = 0;
2941 	int err;
2942 
2943 	if (q_vectors >= (rxr_remaining + txr_remaining + xdp_remaining)) {
2944 		for (; rxr_remaining; v_idx++, q_vectors--) {
2945 			int rqpv = DIV_ROUND_UP(rxr_remaining, q_vectors);
2946 
2947 			err = ixgbevf_alloc_q_vector(adapter, v_idx,
2948 						     0, 0, 0, 0, rqpv, rxr_idx);
2949 			if (err)
2950 				goto err_out;
2951 
2952 			/* update counts and index */
2953 			rxr_remaining -= rqpv;
2954 			rxr_idx += rqpv;
2955 		}
2956 	}
2957 
2958 	for (; q_vectors; v_idx++, q_vectors--) {
2959 		int rqpv = DIV_ROUND_UP(rxr_remaining, q_vectors);
2960 		int tqpv = DIV_ROUND_UP(txr_remaining, q_vectors);
2961 		int xqpv = DIV_ROUND_UP(xdp_remaining, q_vectors);
2962 
2963 		err = ixgbevf_alloc_q_vector(adapter, v_idx,
2964 					     tqpv, txr_idx,
2965 					     xqpv, xdp_idx,
2966 					     rqpv, rxr_idx);
2967 
2968 		if (err)
2969 			goto err_out;
2970 
2971 		/* update counts and index */
2972 		rxr_remaining -= rqpv;
2973 		rxr_idx += rqpv;
2974 		txr_remaining -= tqpv;
2975 		txr_idx += tqpv;
2976 		xdp_remaining -= xqpv;
2977 		xdp_idx += xqpv;
2978 	}
2979 
2980 	return 0;
2981 
2982 err_out:
2983 	while (v_idx) {
2984 		v_idx--;
2985 		ixgbevf_free_q_vector(adapter, v_idx);
2986 	}
2987 
2988 	return -ENOMEM;
2989 }
2990 
2991 /**
2992  * ixgbevf_free_q_vectors - Free memory allocated for interrupt vectors
2993  * @adapter: board private structure to initialize
2994  *
2995  * This function frees the memory allocated to the q_vectors.  In addition if
2996  * NAPI is enabled it will delete any references to the NAPI struct prior
2997  * to freeing the q_vector.
2998  **/
2999 static void ixgbevf_free_q_vectors(struct ixgbevf_adapter *adapter)
3000 {
3001 	int q_vectors = adapter->num_msix_vectors - NON_Q_VECTORS;
3002 
3003 	while (q_vectors) {
3004 		q_vectors--;
3005 		ixgbevf_free_q_vector(adapter, q_vectors);
3006 	}
3007 }
3008 
3009 /**
3010  * ixgbevf_reset_interrupt_capability - Reset MSIX setup
3011  * @adapter: board private structure
3012  *
3013  **/
3014 static void ixgbevf_reset_interrupt_capability(struct ixgbevf_adapter *adapter)
3015 {
3016 	if (!adapter->msix_entries)
3017 		return;
3018 
3019 	pci_disable_msix(adapter->pdev);
3020 	kfree(adapter->msix_entries);
3021 	adapter->msix_entries = NULL;
3022 }
3023 
3024 /**
3025  * ixgbevf_init_interrupt_scheme - Determine if MSIX is supported and init
3026  * @adapter: board private structure to initialize
3027  *
3028  **/
3029 static int ixgbevf_init_interrupt_scheme(struct ixgbevf_adapter *adapter)
3030 {
3031 	int err;
3032 
3033 	/* Number of supported queues */
3034 	ixgbevf_set_num_queues(adapter);
3035 
3036 	err = ixgbevf_set_interrupt_capability(adapter);
3037 	if (err) {
3038 		hw_dbg(&adapter->hw,
3039 		       "Unable to setup interrupt capabilities\n");
3040 		goto err_set_interrupt;
3041 	}
3042 
3043 	err = ixgbevf_alloc_q_vectors(adapter);
3044 	if (err) {
3045 		hw_dbg(&adapter->hw, "Unable to allocate memory for queue vectors\n");
3046 		goto err_alloc_q_vectors;
3047 	}
3048 
3049 	hw_dbg(&adapter->hw, "Multiqueue %s: Rx Queue count = %u, Tx Queue count = %u XDP Queue count %u\n",
3050 	       (adapter->num_rx_queues > 1) ? "Enabled" : "Disabled",
3051 	       adapter->num_rx_queues, adapter->num_tx_queues,
3052 	       adapter->num_xdp_queues);
3053 
3054 	set_bit(__IXGBEVF_DOWN, &adapter->state);
3055 
3056 	return 0;
3057 err_alloc_q_vectors:
3058 	ixgbevf_reset_interrupt_capability(adapter);
3059 err_set_interrupt:
3060 	return err;
3061 }
3062 
3063 /**
3064  * ixgbevf_clear_interrupt_scheme - Clear the current interrupt scheme settings
3065  * @adapter: board private structure to clear interrupt scheme on
3066  *
3067  * We go through and clear interrupt specific resources and reset the structure
3068  * to pre-load conditions
3069  **/
3070 static void ixgbevf_clear_interrupt_scheme(struct ixgbevf_adapter *adapter)
3071 {
3072 	adapter->num_tx_queues = 0;
3073 	adapter->num_xdp_queues = 0;
3074 	adapter->num_rx_queues = 0;
3075 
3076 	ixgbevf_free_q_vectors(adapter);
3077 	ixgbevf_reset_interrupt_capability(adapter);
3078 }
3079 
3080 /**
3081  * ixgbevf_sw_init - Initialize general software structures
3082  * @adapter: board private structure to initialize
3083  *
3084  * ixgbevf_sw_init initializes the Adapter private data structure.
3085  * Fields are initialized based on PCI device information and
3086  * OS network device settings (MTU size).
3087  **/
3088 static int ixgbevf_sw_init(struct ixgbevf_adapter *adapter)
3089 {
3090 	struct ixgbe_hw *hw = &adapter->hw;
3091 	struct pci_dev *pdev = adapter->pdev;
3092 	struct net_device *netdev = adapter->netdev;
3093 	int err;
3094 
3095 	/* PCI config space info */
3096 	hw->vendor_id = pdev->vendor;
3097 	hw->device_id = pdev->device;
3098 	hw->revision_id = pdev->revision;
3099 	hw->subsystem_vendor_id = pdev->subsystem_vendor;
3100 	hw->subsystem_device_id = pdev->subsystem_device;
3101 
3102 	hw->mbx.ops.init_params(hw);
3103 
3104 	if (hw->mac.type >= ixgbe_mac_X550_vf) {
3105 		err = ixgbevf_init_rss_key(adapter);
3106 		if (err)
3107 			goto out;
3108 	}
3109 
3110 	/* assume legacy case in which PF would only give VF 2 queues */
3111 	hw->mac.max_tx_queues = 2;
3112 	hw->mac.max_rx_queues = 2;
3113 
3114 	/* lock to protect mailbox accesses */
3115 	spin_lock_init(&adapter->mbx_lock);
3116 
3117 	err = hw->mac.ops.reset_hw(hw);
3118 	if (err) {
3119 		dev_info(&pdev->dev,
3120 			 "PF still in reset state.  Is the PF interface up?\n");
3121 	} else {
3122 		err = hw->mac.ops.init_hw(hw);
3123 		if (err) {
3124 			pr_err("init_shared_code failed: %d\n", err);
3125 			goto out;
3126 		}
3127 		ixgbevf_negotiate_api(adapter);
3128 		err = hw->mac.ops.get_mac_addr(hw, hw->mac.addr);
3129 		if (err)
3130 			dev_info(&pdev->dev, "Error reading MAC address\n");
3131 		else if (is_zero_ether_addr(adapter->hw.mac.addr))
3132 			dev_info(&pdev->dev,
3133 				 "MAC address not assigned by administrator.\n");
3134 		eth_hw_addr_set(netdev, hw->mac.addr);
3135 	}
3136 
3137 	if (!is_valid_ether_addr(netdev->dev_addr)) {
3138 		dev_info(&pdev->dev, "Assigning random MAC address\n");
3139 		eth_hw_addr_random(netdev);
3140 		ether_addr_copy(hw->mac.addr, netdev->dev_addr);
3141 		ether_addr_copy(hw->mac.perm_addr, netdev->dev_addr);
3142 	}
3143 
3144 	/* Enable dynamic interrupt throttling rates */
3145 	adapter->rx_itr_setting = 1;
3146 	adapter->tx_itr_setting = 1;
3147 
3148 	/* set default ring sizes */
3149 	adapter->tx_ring_count = IXGBEVF_DEFAULT_TXD;
3150 	adapter->rx_ring_count = IXGBEVF_DEFAULT_RXD;
3151 
3152 	adapter->link_state = true;
3153 
3154 	set_bit(__IXGBEVF_DOWN, &adapter->state);
3155 	return 0;
3156 
3157 out:
3158 	return err;
3159 }
3160 
3161 #define UPDATE_VF_COUNTER_32bit(reg, last_counter, counter)	\
3162 	{							\
3163 		u32 current_counter = IXGBE_READ_REG(hw, reg);	\
3164 		if (current_counter < last_counter)		\
3165 			counter += 0x100000000LL;		\
3166 		last_counter = current_counter;			\
3167 		counter &= 0xFFFFFFFF00000000LL;		\
3168 		counter |= current_counter;			\
3169 	}
3170 
3171 #define UPDATE_VF_COUNTER_36bit(reg_lsb, reg_msb, last_counter, counter) \
3172 	{								 \
3173 		u64 current_counter_lsb = IXGBE_READ_REG(hw, reg_lsb);	 \
3174 		u64 current_counter_msb = IXGBE_READ_REG(hw, reg_msb);	 \
3175 		u64 current_counter = (current_counter_msb << 32) |	 \
3176 			current_counter_lsb;				 \
3177 		if (current_counter < last_counter)			 \
3178 			counter += 0x1000000000LL;			 \
3179 		last_counter = current_counter;				 \
3180 		counter &= 0xFFFFFFF000000000LL;			 \
3181 		counter |= current_counter;				 \
3182 	}
3183 /**
3184  * ixgbevf_update_stats - Update the board statistics counters.
3185  * @adapter: board private structure
3186  **/
3187 void ixgbevf_update_stats(struct ixgbevf_adapter *adapter)
3188 {
3189 	struct ixgbe_hw *hw = &adapter->hw;
3190 	u64 alloc_rx_page_failed = 0, alloc_rx_buff_failed = 0;
3191 	u64 alloc_rx_page = 0, hw_csum_rx_error = 0;
3192 	int i;
3193 
3194 	if (test_bit(__IXGBEVF_DOWN, &adapter->state) ||
3195 	    test_bit(__IXGBEVF_RESETTING, &adapter->state))
3196 		return;
3197 
3198 	UPDATE_VF_COUNTER_32bit(IXGBE_VFGPRC, adapter->stats.last_vfgprc,
3199 				adapter->stats.vfgprc);
3200 	UPDATE_VF_COUNTER_32bit(IXGBE_VFGPTC, adapter->stats.last_vfgptc,
3201 				adapter->stats.vfgptc);
3202 	UPDATE_VF_COUNTER_36bit(IXGBE_VFGORC_LSB, IXGBE_VFGORC_MSB,
3203 				adapter->stats.last_vfgorc,
3204 				adapter->stats.vfgorc);
3205 	UPDATE_VF_COUNTER_36bit(IXGBE_VFGOTC_LSB, IXGBE_VFGOTC_MSB,
3206 				adapter->stats.last_vfgotc,
3207 				adapter->stats.vfgotc);
3208 	UPDATE_VF_COUNTER_32bit(IXGBE_VFMPRC, adapter->stats.last_vfmprc,
3209 				adapter->stats.vfmprc);
3210 
3211 	for (i = 0;  i  < adapter->num_rx_queues;  i++) {
3212 		struct ixgbevf_ring *rx_ring = adapter->rx_ring[i];
3213 
3214 		hw_csum_rx_error += rx_ring->rx_stats.csum_err;
3215 		alloc_rx_page_failed += rx_ring->rx_stats.alloc_rx_page_failed;
3216 		alloc_rx_buff_failed += rx_ring->rx_stats.alloc_rx_buff_failed;
3217 		alloc_rx_page += rx_ring->rx_stats.alloc_rx_page;
3218 	}
3219 
3220 	adapter->hw_csum_rx_error = hw_csum_rx_error;
3221 	adapter->alloc_rx_page_failed = alloc_rx_page_failed;
3222 	adapter->alloc_rx_buff_failed = alloc_rx_buff_failed;
3223 	adapter->alloc_rx_page = alloc_rx_page;
3224 }
3225 
3226 /**
3227  * ixgbevf_service_timer - Timer Call-back
3228  * @t: pointer to timer_list struct
3229  **/
3230 static void ixgbevf_service_timer(struct timer_list *t)
3231 {
3232 	struct ixgbevf_adapter *adapter = timer_container_of(adapter, t,
3233 							     service_timer);
3234 
3235 	/* Reset the timer */
3236 	mod_timer(&adapter->service_timer, (HZ * 2) + jiffies);
3237 
3238 	ixgbevf_service_event_schedule(adapter);
3239 }
3240 
3241 static void ixgbevf_reset_subtask(struct ixgbevf_adapter *adapter)
3242 {
3243 	if (!test_and_clear_bit(__IXGBEVF_RESET_REQUESTED, &adapter->state))
3244 		return;
3245 
3246 	rtnl_lock();
3247 	/* If we're already down or resetting, just bail */
3248 	if (test_bit(__IXGBEVF_DOWN, &adapter->state) ||
3249 	    test_bit(__IXGBEVF_REMOVING, &adapter->state) ||
3250 	    test_bit(__IXGBEVF_RESETTING, &adapter->state)) {
3251 		rtnl_unlock();
3252 		return;
3253 	}
3254 
3255 	adapter->tx_timeout_count++;
3256 
3257 	ixgbevf_reinit_locked(adapter);
3258 	rtnl_unlock();
3259 }
3260 
3261 /**
3262  * ixgbevf_check_hang_subtask - check for hung queues and dropped interrupts
3263  * @adapter: pointer to the device adapter structure
3264  *
3265  * This function serves two purposes.  First it strobes the interrupt lines
3266  * in order to make certain interrupts are occurring.  Secondly it sets the
3267  * bits needed to check for TX hangs.  As a result we should immediately
3268  * determine if a hang has occurred.
3269  **/
3270 static void ixgbevf_check_hang_subtask(struct ixgbevf_adapter *adapter)
3271 {
3272 	struct ixgbe_hw *hw = &adapter->hw;
3273 	u32 eics = 0;
3274 	int i;
3275 
3276 	/* If we're down or resetting, just bail */
3277 	if (test_bit(__IXGBEVF_DOWN, &adapter->state) ||
3278 	    test_bit(__IXGBEVF_RESETTING, &adapter->state))
3279 		return;
3280 
3281 	/* Force detection of hung controller */
3282 	if (netif_carrier_ok(adapter->netdev)) {
3283 		for (i = 0; i < adapter->num_tx_queues; i++)
3284 			set_check_for_tx_hang(adapter->tx_ring[i]);
3285 		for (i = 0; i < adapter->num_xdp_queues; i++)
3286 			set_check_for_tx_hang(adapter->xdp_ring[i]);
3287 	}
3288 
3289 	/* get one bit for every active Tx/Rx interrupt vector */
3290 	for (i = 0; i < adapter->num_msix_vectors - NON_Q_VECTORS; i++) {
3291 		struct ixgbevf_q_vector *qv = adapter->q_vector[i];
3292 
3293 		if (qv->rx.ring || qv->tx.ring)
3294 			eics |= BIT(i);
3295 	}
3296 
3297 	/* Cause software interrupt to ensure rings are cleaned */
3298 	IXGBE_WRITE_REG(hw, IXGBE_VTEICS, eics);
3299 }
3300 
3301 /**
3302  * ixgbevf_watchdog_update_link - update the link status
3303  * @adapter: pointer to the device adapter structure
3304  **/
3305 static void ixgbevf_watchdog_update_link(struct ixgbevf_adapter *adapter)
3306 {
3307 	struct ixgbe_hw *hw = &adapter->hw;
3308 	u32 link_speed = adapter->link_speed;
3309 	bool link_up = adapter->link_up;
3310 	s32 err;
3311 
3312 	spin_lock_bh(&adapter->mbx_lock);
3313 
3314 	err = hw->mac.ops.check_link(hw, &link_speed, &link_up, false);
3315 
3316 	spin_unlock_bh(&adapter->mbx_lock);
3317 
3318 	/* if check for link returns error we will need to reset */
3319 	if (err && time_after(jiffies, adapter->last_reset + (10 * HZ))) {
3320 		set_bit(__IXGBEVF_RESET_REQUESTED, &adapter->state);
3321 		link_up = false;
3322 	}
3323 
3324 	adapter->link_up = link_up;
3325 	adapter->link_speed = link_speed;
3326 }
3327 
3328 /**
3329  * ixgbevf_watchdog_link_is_up - update netif_carrier status and
3330  *				 print link up message
3331  * @adapter: pointer to the device adapter structure
3332  **/
3333 static void ixgbevf_watchdog_link_is_up(struct ixgbevf_adapter *adapter)
3334 {
3335 	struct net_device *netdev = adapter->netdev;
3336 
3337 	/* only continue if link was previously down */
3338 	if (netif_carrier_ok(netdev))
3339 		return;
3340 
3341 	dev_info(&adapter->pdev->dev, "NIC Link is Up %s\n",
3342 		 (adapter->link_speed == IXGBE_LINK_SPEED_10GB_FULL) ?
3343 		 "10 Gbps" :
3344 		 (adapter->link_speed == IXGBE_LINK_SPEED_1GB_FULL) ?
3345 		 "1 Gbps" :
3346 		 (adapter->link_speed == IXGBE_LINK_SPEED_100_FULL) ?
3347 		 "100 Mbps" :
3348 		 "unknown speed");
3349 
3350 	netif_carrier_on(netdev);
3351 }
3352 
3353 /**
3354  * ixgbevf_watchdog_link_is_down - update netif_carrier status and
3355  *				   print link down message
3356  * @adapter: pointer to the adapter structure
3357  **/
3358 static void ixgbevf_watchdog_link_is_down(struct ixgbevf_adapter *adapter)
3359 {
3360 	struct net_device *netdev = adapter->netdev;
3361 
3362 	adapter->link_speed = 0;
3363 
3364 	/* only continue if link was up previously */
3365 	if (!netif_carrier_ok(netdev))
3366 		return;
3367 
3368 	dev_info(&adapter->pdev->dev, "NIC Link is Down\n");
3369 
3370 	netif_carrier_off(netdev);
3371 }
3372 
3373 /**
3374  * ixgbevf_watchdog_subtask - worker thread to bring link up
3375  * @adapter: board private structure
3376  **/
3377 static void ixgbevf_watchdog_subtask(struct ixgbevf_adapter *adapter)
3378 {
3379 	/* if interface is down do nothing */
3380 	if (test_bit(__IXGBEVF_DOWN, &adapter->state) ||
3381 	    test_bit(__IXGBEVF_RESETTING, &adapter->state))
3382 		return;
3383 
3384 	ixgbevf_watchdog_update_link(adapter);
3385 
3386 	if (adapter->link_up && adapter->link_state)
3387 		ixgbevf_watchdog_link_is_up(adapter);
3388 	else
3389 		ixgbevf_watchdog_link_is_down(adapter);
3390 
3391 	ixgbevf_update_stats(adapter);
3392 }
3393 
3394 /**
3395  * ixgbevf_service_task - manages and runs subtasks
3396  * @work: pointer to work_struct containing our data
3397  **/
3398 static void ixgbevf_service_task(struct work_struct *work)
3399 {
3400 	struct ixgbevf_adapter *adapter = container_of(work,
3401 						       struct ixgbevf_adapter,
3402 						       service_task);
3403 	struct ixgbe_hw *hw = &adapter->hw;
3404 
3405 	if (IXGBE_REMOVED(hw->hw_addr)) {
3406 		if (!test_bit(__IXGBEVF_DOWN, &adapter->state)) {
3407 			rtnl_lock();
3408 			ixgbevf_down(adapter);
3409 			rtnl_unlock();
3410 		}
3411 		return;
3412 	}
3413 
3414 	ixgbevf_queue_reset_subtask(adapter);
3415 	ixgbevf_reset_subtask(adapter);
3416 	ixgbevf_watchdog_subtask(adapter);
3417 	ixgbevf_check_hang_subtask(adapter);
3418 
3419 	ixgbevf_service_event_complete(adapter);
3420 }
3421 
3422 /**
3423  * ixgbevf_free_tx_resources - Free Tx Resources per Queue
3424  * @tx_ring: Tx descriptor ring for a specific queue
3425  *
3426  * Free all transmit software resources
3427  **/
3428 void ixgbevf_free_tx_resources(struct ixgbevf_ring *tx_ring)
3429 {
3430 	ixgbevf_clean_tx_ring(tx_ring);
3431 
3432 	vfree(tx_ring->tx_buffer_info);
3433 	tx_ring->tx_buffer_info = NULL;
3434 
3435 	/* if not set, then don't free */
3436 	if (!tx_ring->desc)
3437 		return;
3438 
3439 	dma_free_coherent(tx_ring->dev, tx_ring->size, tx_ring->desc,
3440 			  tx_ring->dma);
3441 
3442 	tx_ring->desc = NULL;
3443 }
3444 
3445 /**
3446  * ixgbevf_free_all_tx_resources - Free Tx Resources for All Queues
3447  * @adapter: board private structure
3448  *
3449  * Free all transmit software resources
3450  **/
3451 static void ixgbevf_free_all_tx_resources(struct ixgbevf_adapter *adapter)
3452 {
3453 	int i;
3454 
3455 	for (i = 0; i < adapter->num_tx_queues; i++)
3456 		if (adapter->tx_ring[i]->desc)
3457 			ixgbevf_free_tx_resources(adapter->tx_ring[i]);
3458 	for (i = 0; i < adapter->num_xdp_queues; i++)
3459 		if (adapter->xdp_ring[i]->desc)
3460 			ixgbevf_free_tx_resources(adapter->xdp_ring[i]);
3461 }
3462 
3463 /**
3464  * ixgbevf_setup_tx_resources - allocate Tx resources (Descriptors)
3465  * @tx_ring: Tx descriptor ring (for a specific queue) to setup
3466  *
3467  * Return 0 on success, negative on failure
3468  **/
3469 int ixgbevf_setup_tx_resources(struct ixgbevf_ring *tx_ring)
3470 {
3471 	struct ixgbevf_adapter *adapter = netdev_priv(tx_ring->netdev);
3472 	int size;
3473 
3474 	size = sizeof(struct ixgbevf_tx_buffer) * tx_ring->count;
3475 	tx_ring->tx_buffer_info = vmalloc(size);
3476 	if (!tx_ring->tx_buffer_info)
3477 		goto err;
3478 
3479 	u64_stats_init(&tx_ring->syncp);
3480 
3481 	/* round up to nearest 4K */
3482 	tx_ring->size = tx_ring->count * sizeof(union ixgbe_adv_tx_desc);
3483 	tx_ring->size = ALIGN(tx_ring->size, 4096);
3484 
3485 	tx_ring->desc = dma_alloc_coherent(tx_ring->dev, tx_ring->size,
3486 					   &tx_ring->dma, GFP_KERNEL);
3487 	if (!tx_ring->desc)
3488 		goto err;
3489 
3490 	return 0;
3491 
3492 err:
3493 	vfree(tx_ring->tx_buffer_info);
3494 	tx_ring->tx_buffer_info = NULL;
3495 	hw_dbg(&adapter->hw, "Unable to allocate memory for the transmit descriptor ring\n");
3496 	return -ENOMEM;
3497 }
3498 
3499 /**
3500  * ixgbevf_setup_all_tx_resources - allocate all queues Tx resources
3501  * @adapter: board private structure
3502  *
3503  * If this function returns with an error, then it's possible one or
3504  * more of the rings is populated (while the rest are not).  It is the
3505  * callers duty to clean those orphaned rings.
3506  *
3507  * Return 0 on success, negative on failure
3508  **/
3509 static int ixgbevf_setup_all_tx_resources(struct ixgbevf_adapter *adapter)
3510 {
3511 	int i, j = 0, err = 0;
3512 
3513 	for (i = 0; i < adapter->num_tx_queues; i++) {
3514 		err = ixgbevf_setup_tx_resources(adapter->tx_ring[i]);
3515 		if (!err)
3516 			continue;
3517 		hw_dbg(&adapter->hw, "Allocation for Tx Queue %u failed\n", i);
3518 		goto err_setup_tx;
3519 	}
3520 
3521 	for (j = 0; j < adapter->num_xdp_queues; j++) {
3522 		err = ixgbevf_setup_tx_resources(adapter->xdp_ring[j]);
3523 		if (!err)
3524 			continue;
3525 		hw_dbg(&adapter->hw, "Allocation for XDP Queue %u failed\n", j);
3526 		goto err_setup_tx;
3527 	}
3528 
3529 	return 0;
3530 err_setup_tx:
3531 	/* rewind the index freeing the rings as we go */
3532 	while (j--)
3533 		ixgbevf_free_tx_resources(adapter->xdp_ring[j]);
3534 	while (i--)
3535 		ixgbevf_free_tx_resources(adapter->tx_ring[i]);
3536 
3537 	return err;
3538 }
3539 
3540 /**
3541  * ixgbevf_setup_rx_resources - allocate Rx resources (Descriptors)
3542  * @adapter: board private structure
3543  * @rx_ring: Rx descriptor ring (for a specific queue) to setup
3544  *
3545  * Returns 0 on success, negative on failure
3546  **/
3547 int ixgbevf_setup_rx_resources(struct ixgbevf_adapter *adapter,
3548 			       struct ixgbevf_ring *rx_ring)
3549 {
3550 	int size;
3551 
3552 	size = sizeof(struct ixgbevf_rx_buffer) * rx_ring->count;
3553 	rx_ring->rx_buffer_info = vmalloc(size);
3554 	if (!rx_ring->rx_buffer_info)
3555 		goto err;
3556 
3557 	u64_stats_init(&rx_ring->syncp);
3558 
3559 	/* Round up to nearest 4K */
3560 	rx_ring->size = rx_ring->count * sizeof(union ixgbe_adv_rx_desc);
3561 	rx_ring->size = ALIGN(rx_ring->size, 4096);
3562 
3563 	rx_ring->desc = dma_alloc_coherent(rx_ring->dev, rx_ring->size,
3564 					   &rx_ring->dma, GFP_KERNEL);
3565 
3566 	if (!rx_ring->desc)
3567 		goto err;
3568 
3569 	/* XDP RX-queue info */
3570 	if (xdp_rxq_info_reg(&rx_ring->xdp_rxq, adapter->netdev,
3571 			     rx_ring->queue_index, 0) < 0)
3572 		goto err;
3573 
3574 	rx_ring->xdp_prog = adapter->xdp_prog;
3575 
3576 	return 0;
3577 err:
3578 	vfree(rx_ring->rx_buffer_info);
3579 	rx_ring->rx_buffer_info = NULL;
3580 	dev_err(rx_ring->dev, "Unable to allocate memory for the Rx descriptor ring\n");
3581 	return -ENOMEM;
3582 }
3583 
3584 /**
3585  * ixgbevf_setup_all_rx_resources - allocate all queues Rx resources
3586  * @adapter: board private structure
3587  *
3588  * If this function returns with an error, then it's possible one or
3589  * more of the rings is populated (while the rest are not).  It is the
3590  * callers duty to clean those orphaned rings.
3591  *
3592  * Return 0 on success, negative on failure
3593  **/
3594 static int ixgbevf_setup_all_rx_resources(struct ixgbevf_adapter *adapter)
3595 {
3596 	int i, err = 0;
3597 
3598 	for (i = 0; i < adapter->num_rx_queues; i++) {
3599 		err = ixgbevf_setup_rx_resources(adapter, adapter->rx_ring[i]);
3600 		if (!err)
3601 			continue;
3602 		hw_dbg(&adapter->hw, "Allocation for Rx Queue %u failed\n", i);
3603 		goto err_setup_rx;
3604 	}
3605 
3606 	return 0;
3607 err_setup_rx:
3608 	/* rewind the index freeing the rings as we go */
3609 	while (i--)
3610 		ixgbevf_free_rx_resources(adapter->rx_ring[i]);
3611 	return err;
3612 }
3613 
3614 /**
3615  * ixgbevf_free_rx_resources - Free Rx Resources
3616  * @rx_ring: ring to clean the resources from
3617  *
3618  * Free all receive software resources
3619  **/
3620 void ixgbevf_free_rx_resources(struct ixgbevf_ring *rx_ring)
3621 {
3622 	ixgbevf_clean_rx_ring(rx_ring);
3623 
3624 	rx_ring->xdp_prog = NULL;
3625 	xdp_rxq_info_unreg(&rx_ring->xdp_rxq);
3626 	vfree(rx_ring->rx_buffer_info);
3627 	rx_ring->rx_buffer_info = NULL;
3628 
3629 	dma_free_coherent(rx_ring->dev, rx_ring->size, rx_ring->desc,
3630 			  rx_ring->dma);
3631 
3632 	rx_ring->desc = NULL;
3633 }
3634 
3635 /**
3636  * ixgbevf_free_all_rx_resources - Free Rx Resources for All Queues
3637  * @adapter: board private structure
3638  *
3639  * Free all receive software resources
3640  **/
3641 static void ixgbevf_free_all_rx_resources(struct ixgbevf_adapter *adapter)
3642 {
3643 	int i;
3644 
3645 	for (i = 0; i < adapter->num_rx_queues; i++)
3646 		if (adapter->rx_ring[i]->desc)
3647 			ixgbevf_free_rx_resources(adapter->rx_ring[i]);
3648 }
3649 
3650 /**
3651  * ixgbevf_open - Called when a network interface is made active
3652  * @netdev: network interface device structure
3653  *
3654  * Returns 0 on success, negative value on failure
3655  *
3656  * The open entry point is called when a network interface is made
3657  * active by the system (IFF_UP).  At this point all resources needed
3658  * for transmit and receive operations are allocated, the interrupt
3659  * handler is registered with the OS, the watchdog timer is started,
3660  * and the stack is notified that the interface is ready.
3661  **/
3662 int ixgbevf_open(struct net_device *netdev)
3663 {
3664 	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
3665 	struct ixgbe_hw *hw = &adapter->hw;
3666 	int err;
3667 
3668 	/* A previous failure to open the device because of a lack of
3669 	 * available MSIX vector resources may have reset the number
3670 	 * of msix vectors variable to zero.  The only way to recover
3671 	 * is to unload/reload the driver and hope that the system has
3672 	 * been able to recover some MSIX vector resources.
3673 	 */
3674 	if (!adapter->num_msix_vectors)
3675 		return -ENOMEM;
3676 
3677 	if (hw->adapter_stopped) {
3678 		ixgbevf_reset(adapter);
3679 		/* if adapter is still stopped then PF isn't up and
3680 		 * the VF can't start.
3681 		 */
3682 		if (hw->adapter_stopped) {
3683 			err = IXGBE_ERR_MBX;
3684 			pr_err("Unable to start - perhaps the PF Driver isn't up yet\n");
3685 			goto err_setup_reset;
3686 		}
3687 	}
3688 
3689 	/* disallow open during test */
3690 	if (test_bit(__IXGBEVF_TESTING, &adapter->state))
3691 		return -EBUSY;
3692 
3693 	netif_carrier_off(netdev);
3694 
3695 	/* allocate transmit descriptors */
3696 	err = ixgbevf_setup_all_tx_resources(adapter);
3697 	if (err)
3698 		goto err_setup_tx;
3699 
3700 	/* allocate receive descriptors */
3701 	err = ixgbevf_setup_all_rx_resources(adapter);
3702 	if (err)
3703 		goto err_setup_rx;
3704 
3705 	ixgbevf_configure(adapter);
3706 
3707 	err = ixgbevf_request_irq(adapter);
3708 	if (err)
3709 		goto err_req_irq;
3710 
3711 	/* Notify the stack of the actual queue counts. */
3712 	err = netif_set_real_num_tx_queues(netdev, adapter->num_tx_queues);
3713 	if (err)
3714 		goto err_set_queues;
3715 
3716 	err = netif_set_real_num_rx_queues(netdev, adapter->num_rx_queues);
3717 	if (err)
3718 		goto err_set_queues;
3719 
3720 	ixgbevf_up_complete(adapter);
3721 
3722 	return 0;
3723 
3724 err_set_queues:
3725 	ixgbevf_free_irq(adapter);
3726 err_req_irq:
3727 	ixgbevf_free_all_rx_resources(adapter);
3728 err_setup_rx:
3729 	ixgbevf_free_all_tx_resources(adapter);
3730 err_setup_tx:
3731 	ixgbevf_reset(adapter);
3732 err_setup_reset:
3733 
3734 	return err;
3735 }
3736 
3737 /**
3738  * ixgbevf_close_suspend - actions necessary to both suspend and close flows
3739  * @adapter: the private adapter struct
3740  *
3741  * This function should contain the necessary work common to both suspending
3742  * and closing of the device.
3743  */
3744 static void ixgbevf_close_suspend(struct ixgbevf_adapter *adapter)
3745 {
3746 	ixgbevf_down(adapter);
3747 	ixgbevf_free_irq(adapter);
3748 	ixgbevf_free_all_tx_resources(adapter);
3749 	ixgbevf_free_all_rx_resources(adapter);
3750 }
3751 
3752 /**
3753  * ixgbevf_close - Disables a network interface
3754  * @netdev: network interface device structure
3755  *
3756  * Returns 0, this is not allowed to fail
3757  *
3758  * The close entry point is called when an interface is de-activated
3759  * by the OS.  The hardware is still under the drivers control, but
3760  * needs to be disabled.  A global MAC reset is issued to stop the
3761  * hardware, and all transmit and receive resources are freed.
3762  **/
3763 int ixgbevf_close(struct net_device *netdev)
3764 {
3765 	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
3766 
3767 	if (netif_device_present(netdev))
3768 		ixgbevf_close_suspend(adapter);
3769 
3770 	return 0;
3771 }
3772 
3773 static void ixgbevf_queue_reset_subtask(struct ixgbevf_adapter *adapter)
3774 {
3775 	struct net_device *dev = adapter->netdev;
3776 
3777 	if (!test_and_clear_bit(__IXGBEVF_QUEUE_RESET_REQUESTED,
3778 				&adapter->state))
3779 		return;
3780 
3781 	/* if interface is down do nothing */
3782 	if (test_bit(__IXGBEVF_DOWN, &adapter->state) ||
3783 	    test_bit(__IXGBEVF_RESETTING, &adapter->state))
3784 		return;
3785 
3786 	/* Hardware has to reinitialize queues and interrupts to
3787 	 * match packet buffer alignment. Unfortunately, the
3788 	 * hardware is not flexible enough to do this dynamically.
3789 	 */
3790 	rtnl_lock();
3791 
3792 	if (netif_running(dev))
3793 		ixgbevf_close(dev);
3794 
3795 	ixgbevf_clear_interrupt_scheme(adapter);
3796 	ixgbevf_init_interrupt_scheme(adapter);
3797 
3798 	if (netif_running(dev))
3799 		ixgbevf_open(dev);
3800 
3801 	rtnl_unlock();
3802 }
3803 
3804 static void ixgbevf_tx_ctxtdesc(struct ixgbevf_ring *tx_ring,
3805 				u32 vlan_macip_lens, u32 fceof_saidx,
3806 				u32 type_tucmd, u32 mss_l4len_idx)
3807 {
3808 	struct ixgbe_adv_tx_context_desc *context_desc;
3809 	u16 i = tx_ring->next_to_use;
3810 
3811 	context_desc = IXGBEVF_TX_CTXTDESC(tx_ring, i);
3812 
3813 	i++;
3814 	tx_ring->next_to_use = (i < tx_ring->count) ? i : 0;
3815 
3816 	/* set bits to identify this as an advanced context descriptor */
3817 	type_tucmd |= IXGBE_TXD_CMD_DEXT | IXGBE_ADVTXD_DTYP_CTXT;
3818 
3819 	context_desc->vlan_macip_lens	= cpu_to_le32(vlan_macip_lens);
3820 	context_desc->fceof_saidx	= cpu_to_le32(fceof_saidx);
3821 	context_desc->type_tucmd_mlhl	= cpu_to_le32(type_tucmd);
3822 	context_desc->mss_l4len_idx	= cpu_to_le32(mss_l4len_idx);
3823 }
3824 
3825 static int ixgbevf_tso(struct ixgbevf_ring *tx_ring,
3826 		       struct ixgbevf_tx_buffer *first,
3827 		       u8 *hdr_len,
3828 		       struct ixgbevf_ipsec_tx_data *itd)
3829 {
3830 	u32 vlan_macip_lens, type_tucmd, mss_l4len_idx;
3831 	struct sk_buff *skb = first->skb;
3832 	union {
3833 		struct iphdr *v4;
3834 		struct ipv6hdr *v6;
3835 		unsigned char *hdr;
3836 	} ip;
3837 	union {
3838 		struct tcphdr *tcp;
3839 		unsigned char *hdr;
3840 	} l4;
3841 	u32 paylen, l4_offset;
3842 	u32 fceof_saidx = 0;
3843 	int err;
3844 
3845 	if (skb->ip_summed != CHECKSUM_PARTIAL)
3846 		return 0;
3847 
3848 	if (!skb_is_gso(skb))
3849 		return 0;
3850 
3851 	err = skb_cow_head(skb, 0);
3852 	if (err < 0)
3853 		return err;
3854 
3855 	if (eth_p_mpls(first->protocol))
3856 		ip.hdr = skb_inner_network_header(skb);
3857 	else
3858 		ip.hdr = skb_network_header(skb);
3859 	l4.hdr = skb_checksum_start(skb);
3860 
3861 	/* ADV DTYP TUCMD MKRLOC/ISCSIHEDLEN */
3862 	type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_TCP;
3863 
3864 	/* initialize outer IP header fields */
3865 	if (ip.v4->version == 4) {
3866 		unsigned char *csum_start = skb_checksum_start(skb);
3867 		unsigned char *trans_start = ip.hdr + (ip.v4->ihl * 4);
3868 		int len = csum_start - trans_start;
3869 
3870 		/* IP header will have to cancel out any data that
3871 		 * is not a part of the outer IP header, so set to
3872 		 * a reverse csum if needed, else init check to 0.
3873 		 */
3874 		ip.v4->check = (skb_shinfo(skb)->gso_type & SKB_GSO_PARTIAL) ?
3875 					   csum_fold(csum_partial(trans_start,
3876 								  len, 0)) : 0;
3877 		type_tucmd |= IXGBE_ADVTXD_TUCMD_IPV4;
3878 
3879 		ip.v4->tot_len = 0;
3880 		first->tx_flags |= IXGBE_TX_FLAGS_TSO |
3881 				   IXGBE_TX_FLAGS_CSUM |
3882 				   IXGBE_TX_FLAGS_IPV4;
3883 	} else {
3884 		ip.v6->payload_len = 0;
3885 		first->tx_flags |= IXGBE_TX_FLAGS_TSO |
3886 				   IXGBE_TX_FLAGS_CSUM;
3887 	}
3888 
3889 	/* determine offset of inner transport header */
3890 	l4_offset = l4.hdr - skb->data;
3891 
3892 	/* compute length of segmentation header */
3893 	*hdr_len = (l4.tcp->doff * 4) + l4_offset;
3894 
3895 	/* remove payload length from inner checksum */
3896 	paylen = skb->len - l4_offset;
3897 	csum_replace_by_diff(&l4.tcp->check, (__force __wsum)htonl(paylen));
3898 
3899 	/* update gso size and bytecount with header size */
3900 	first->gso_segs = skb_shinfo(skb)->gso_segs;
3901 	first->bytecount += (first->gso_segs - 1) * *hdr_len;
3902 
3903 	/* mss_l4len_id: use 1 as index for TSO */
3904 	mss_l4len_idx = (*hdr_len - l4_offset) << IXGBE_ADVTXD_L4LEN_SHIFT;
3905 	mss_l4len_idx |= skb_shinfo(skb)->gso_size << IXGBE_ADVTXD_MSS_SHIFT;
3906 	mss_l4len_idx |= (1u << IXGBE_ADVTXD_IDX_SHIFT);
3907 
3908 	fceof_saidx |= itd->pfsa;
3909 	type_tucmd |= itd->flags | itd->trailer_len;
3910 
3911 	/* vlan_macip_lens: HEADLEN, MACLEN, VLAN tag */
3912 	vlan_macip_lens = l4.hdr - ip.hdr;
3913 	vlan_macip_lens |= (ip.hdr - skb->data) << IXGBE_ADVTXD_MACLEN_SHIFT;
3914 	vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK;
3915 
3916 	ixgbevf_tx_ctxtdesc(tx_ring, vlan_macip_lens, fceof_saidx, type_tucmd,
3917 			    mss_l4len_idx);
3918 
3919 	return 1;
3920 }
3921 
3922 static void ixgbevf_tx_csum(struct ixgbevf_ring *tx_ring,
3923 			    struct ixgbevf_tx_buffer *first,
3924 			    struct ixgbevf_ipsec_tx_data *itd)
3925 {
3926 	struct sk_buff *skb = first->skb;
3927 	u32 vlan_macip_lens = 0;
3928 	u32 fceof_saidx = 0;
3929 	u32 type_tucmd = 0;
3930 
3931 	if (skb->ip_summed != CHECKSUM_PARTIAL)
3932 		goto no_csum;
3933 
3934 	switch (skb->csum_offset) {
3935 	case offsetof(struct tcphdr, check):
3936 		type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_TCP;
3937 		fallthrough;
3938 	case offsetof(struct udphdr, check):
3939 		break;
3940 	case offsetof(struct sctphdr, checksum):
3941 		/* validate that this is actually an SCTP request */
3942 		if (skb_csum_is_sctp(skb)) {
3943 			type_tucmd = IXGBE_ADVTXD_TUCMD_L4T_SCTP;
3944 			break;
3945 		}
3946 		fallthrough;
3947 	default:
3948 		skb_checksum_help(skb);
3949 		goto no_csum;
3950 	}
3951 
3952 	if (first->protocol == htons(ETH_P_IP))
3953 		type_tucmd |= IXGBE_ADVTXD_TUCMD_IPV4;
3954 
3955 	/* update TX checksum flag */
3956 	first->tx_flags |= IXGBE_TX_FLAGS_CSUM;
3957 	vlan_macip_lens = skb_checksum_start_offset(skb) -
3958 			  skb_network_offset(skb);
3959 no_csum:
3960 	/* vlan_macip_lens: MACLEN, VLAN tag */
3961 	vlan_macip_lens |= skb_network_offset(skb) << IXGBE_ADVTXD_MACLEN_SHIFT;
3962 	vlan_macip_lens |= first->tx_flags & IXGBE_TX_FLAGS_VLAN_MASK;
3963 
3964 	fceof_saidx |= itd->pfsa;
3965 	type_tucmd |= itd->flags | itd->trailer_len;
3966 
3967 	ixgbevf_tx_ctxtdesc(tx_ring, vlan_macip_lens,
3968 			    fceof_saidx, type_tucmd, 0);
3969 }
3970 
3971 static __le32 ixgbevf_tx_cmd_type(u32 tx_flags)
3972 {
3973 	/* set type for advanced descriptor with frame checksum insertion */
3974 	__le32 cmd_type = cpu_to_le32(IXGBE_ADVTXD_DTYP_DATA |
3975 				      IXGBE_ADVTXD_DCMD_IFCS |
3976 				      IXGBE_ADVTXD_DCMD_DEXT);
3977 
3978 	/* set HW VLAN bit if VLAN is present */
3979 	if (tx_flags & IXGBE_TX_FLAGS_VLAN)
3980 		cmd_type |= cpu_to_le32(IXGBE_ADVTXD_DCMD_VLE);
3981 
3982 	/* set segmentation enable bits for TSO/FSO */
3983 	if (tx_flags & IXGBE_TX_FLAGS_TSO)
3984 		cmd_type |= cpu_to_le32(IXGBE_ADVTXD_DCMD_TSE);
3985 
3986 	return cmd_type;
3987 }
3988 
3989 static void ixgbevf_tx_olinfo_status(union ixgbe_adv_tx_desc *tx_desc,
3990 				     u32 tx_flags, unsigned int paylen)
3991 {
3992 	__le32 olinfo_status = cpu_to_le32(paylen << IXGBE_ADVTXD_PAYLEN_SHIFT);
3993 
3994 	/* enable L4 checksum for TSO and TX checksum offload */
3995 	if (tx_flags & IXGBE_TX_FLAGS_CSUM)
3996 		olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_POPTS_TXSM);
3997 
3998 	/* enble IPv4 checksum for TSO */
3999 	if (tx_flags & IXGBE_TX_FLAGS_IPV4)
4000 		olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_POPTS_IXSM);
4001 
4002 	/* enable IPsec */
4003 	if (tx_flags & IXGBE_TX_FLAGS_IPSEC)
4004 		olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_POPTS_IPSEC);
4005 
4006 	/* use index 1 context for TSO/FSO/FCOE/IPSEC */
4007 	if (tx_flags & (IXGBE_TX_FLAGS_TSO | IXGBE_TX_FLAGS_IPSEC))
4008 		olinfo_status |= cpu_to_le32(1u << IXGBE_ADVTXD_IDX_SHIFT);
4009 
4010 	/* Check Context must be set if Tx switch is enabled, which it
4011 	 * always is for case where virtual functions are running
4012 	 */
4013 	olinfo_status |= cpu_to_le32(IXGBE_ADVTXD_CC);
4014 
4015 	tx_desc->read.olinfo_status = olinfo_status;
4016 }
4017 
4018 static void ixgbevf_tx_map(struct ixgbevf_ring *tx_ring,
4019 			   struct ixgbevf_tx_buffer *first,
4020 			   const u8 hdr_len)
4021 {
4022 	struct sk_buff *skb = first->skb;
4023 	struct ixgbevf_tx_buffer *tx_buffer;
4024 	union ixgbe_adv_tx_desc *tx_desc;
4025 	skb_frag_t *frag;
4026 	dma_addr_t dma;
4027 	unsigned int data_len, size;
4028 	u32 tx_flags = first->tx_flags;
4029 	__le32 cmd_type = ixgbevf_tx_cmd_type(tx_flags);
4030 	u16 i = tx_ring->next_to_use;
4031 
4032 	tx_desc = IXGBEVF_TX_DESC(tx_ring, i);
4033 
4034 	ixgbevf_tx_olinfo_status(tx_desc, tx_flags, skb->len - hdr_len);
4035 
4036 	size = skb_headlen(skb);
4037 	data_len = skb->data_len;
4038 
4039 	dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE);
4040 
4041 	tx_buffer = first;
4042 
4043 	for (frag = &skb_shinfo(skb)->frags[0];; frag++) {
4044 		if (dma_mapping_error(tx_ring->dev, dma))
4045 			goto dma_error;
4046 
4047 		/* record length, and DMA address */
4048 		dma_unmap_len_set(tx_buffer, len, size);
4049 		dma_unmap_addr_set(tx_buffer, dma, dma);
4050 
4051 		tx_desc->read.buffer_addr = cpu_to_le64(dma);
4052 
4053 		while (unlikely(size > IXGBE_MAX_DATA_PER_TXD)) {
4054 			tx_desc->read.cmd_type_len =
4055 				cmd_type | cpu_to_le32(IXGBE_MAX_DATA_PER_TXD);
4056 
4057 			i++;
4058 			tx_desc++;
4059 			if (i == tx_ring->count) {
4060 				tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);
4061 				i = 0;
4062 			}
4063 			tx_desc->read.olinfo_status = 0;
4064 
4065 			dma += IXGBE_MAX_DATA_PER_TXD;
4066 			size -= IXGBE_MAX_DATA_PER_TXD;
4067 
4068 			tx_desc->read.buffer_addr = cpu_to_le64(dma);
4069 		}
4070 
4071 		if (likely(!data_len))
4072 			break;
4073 
4074 		tx_desc->read.cmd_type_len = cmd_type | cpu_to_le32(size);
4075 
4076 		i++;
4077 		tx_desc++;
4078 		if (i == tx_ring->count) {
4079 			tx_desc = IXGBEVF_TX_DESC(tx_ring, 0);
4080 			i = 0;
4081 		}
4082 		tx_desc->read.olinfo_status = 0;
4083 
4084 		size = skb_frag_size(frag);
4085 		data_len -= size;
4086 
4087 		dma = skb_frag_dma_map(tx_ring->dev, frag, 0, size,
4088 				       DMA_TO_DEVICE);
4089 
4090 		tx_buffer = &tx_ring->tx_buffer_info[i];
4091 	}
4092 
4093 	/* write last descriptor with RS and EOP bits */
4094 	cmd_type |= cpu_to_le32(size) | cpu_to_le32(IXGBE_TXD_CMD);
4095 	tx_desc->read.cmd_type_len = cmd_type;
4096 
4097 	/* set the timestamp */
4098 	first->time_stamp = jiffies;
4099 
4100 	skb_tx_timestamp(skb);
4101 
4102 	/* Force memory writes to complete before letting h/w know there
4103 	 * are new descriptors to fetch.  (Only applicable for weak-ordered
4104 	 * memory model archs, such as IA-64).
4105 	 *
4106 	 * We also need this memory barrier (wmb) to make certain all of the
4107 	 * status bits have been updated before next_to_watch is written.
4108 	 */
4109 	wmb();
4110 
4111 	/* set next_to_watch value indicating a packet is present */
4112 	first->next_to_watch = tx_desc;
4113 
4114 	i++;
4115 	if (i == tx_ring->count)
4116 		i = 0;
4117 
4118 	tx_ring->next_to_use = i;
4119 
4120 	/* notify HW of packet */
4121 	ixgbevf_write_tail(tx_ring, i);
4122 
4123 	return;
4124 dma_error:
4125 	dev_err(tx_ring->dev, "TX DMA map failed\n");
4126 	tx_buffer = &tx_ring->tx_buffer_info[i];
4127 
4128 	/* clear dma mappings for failed tx_buffer_info map */
4129 	while (tx_buffer != first) {
4130 		if (dma_unmap_len(tx_buffer, len))
4131 			dma_unmap_page(tx_ring->dev,
4132 				       dma_unmap_addr(tx_buffer, dma),
4133 				       dma_unmap_len(tx_buffer, len),
4134 				       DMA_TO_DEVICE);
4135 		dma_unmap_len_set(tx_buffer, len, 0);
4136 
4137 		if (i-- == 0)
4138 			i += tx_ring->count;
4139 		tx_buffer = &tx_ring->tx_buffer_info[i];
4140 	}
4141 
4142 	if (dma_unmap_len(tx_buffer, len))
4143 		dma_unmap_single(tx_ring->dev,
4144 				 dma_unmap_addr(tx_buffer, dma),
4145 				 dma_unmap_len(tx_buffer, len),
4146 				 DMA_TO_DEVICE);
4147 	dma_unmap_len_set(tx_buffer, len, 0);
4148 
4149 	dev_kfree_skb_any(tx_buffer->skb);
4150 	tx_buffer->skb = NULL;
4151 
4152 	tx_ring->next_to_use = i;
4153 }
4154 
4155 static int __ixgbevf_maybe_stop_tx(struct ixgbevf_ring *tx_ring, int size)
4156 {
4157 	netif_stop_subqueue(tx_ring->netdev, tx_ring->queue_index);
4158 	/* Herbert's original patch had:
4159 	 *  smp_mb__after_netif_stop_queue();
4160 	 * but since that doesn't exist yet, just open code it.
4161 	 */
4162 	smp_mb();
4163 
4164 	/* We need to check again in a case another CPU has just
4165 	 * made room available.
4166 	 */
4167 	if (likely(ixgbevf_desc_unused(tx_ring) < size))
4168 		return -EBUSY;
4169 
4170 	/* A reprieve! - use start_queue because it doesn't call schedule */
4171 	netif_start_subqueue(tx_ring->netdev, tx_ring->queue_index);
4172 	++tx_ring->tx_stats.restart_queue;
4173 
4174 	return 0;
4175 }
4176 
4177 static int ixgbevf_maybe_stop_tx(struct ixgbevf_ring *tx_ring, int size)
4178 {
4179 	if (likely(ixgbevf_desc_unused(tx_ring) >= size))
4180 		return 0;
4181 	return __ixgbevf_maybe_stop_tx(tx_ring, size);
4182 }
4183 
4184 static int ixgbevf_xmit_frame_ring(struct sk_buff *skb,
4185 				   struct ixgbevf_ring *tx_ring)
4186 {
4187 	struct ixgbevf_tx_buffer *first;
4188 	int tso;
4189 	u32 tx_flags = 0;
4190 	u16 count = TXD_USE_COUNT(skb_headlen(skb));
4191 	struct ixgbevf_ipsec_tx_data ipsec_tx = { 0 };
4192 #if PAGE_SIZE > IXGBE_MAX_DATA_PER_TXD
4193 	unsigned short f;
4194 #endif
4195 	u8 hdr_len = 0;
4196 	u8 *dst_mac = skb_header_pointer(skb, 0, 0, NULL);
4197 
4198 	if (!dst_mac || is_link_local_ether_addr(dst_mac)) {
4199 		dev_kfree_skb_any(skb);
4200 		return NETDEV_TX_OK;
4201 	}
4202 
4203 	/* need: 1 descriptor per page * PAGE_SIZE/IXGBE_MAX_DATA_PER_TXD,
4204 	 *       + 1 desc for skb_headlen/IXGBE_MAX_DATA_PER_TXD,
4205 	 *       + 2 desc gap to keep tail from touching head,
4206 	 *       + 1 desc for context descriptor,
4207 	 * otherwise try next time
4208 	 */
4209 #if PAGE_SIZE > IXGBE_MAX_DATA_PER_TXD
4210 	for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) {
4211 		skb_frag_t *frag = &skb_shinfo(skb)->frags[f];
4212 
4213 		count += TXD_USE_COUNT(skb_frag_size(frag));
4214 	}
4215 #else
4216 	count += skb_shinfo(skb)->nr_frags;
4217 #endif
4218 	if (ixgbevf_maybe_stop_tx(tx_ring, count + 3)) {
4219 		tx_ring->tx_stats.tx_busy++;
4220 		return NETDEV_TX_BUSY;
4221 	}
4222 
4223 	/* record the location of the first descriptor for this packet */
4224 	first = &tx_ring->tx_buffer_info[tx_ring->next_to_use];
4225 	first->skb = skb;
4226 	first->bytecount = skb->len;
4227 	first->gso_segs = 1;
4228 
4229 	if (skb_vlan_tag_present(skb)) {
4230 		tx_flags |= skb_vlan_tag_get(skb);
4231 		tx_flags <<= IXGBE_TX_FLAGS_VLAN_SHIFT;
4232 		tx_flags |= IXGBE_TX_FLAGS_VLAN;
4233 	}
4234 
4235 	/* record initial flags and protocol */
4236 	first->tx_flags = tx_flags;
4237 	first->protocol = vlan_get_protocol(skb);
4238 
4239 #ifdef CONFIG_IXGBEVF_IPSEC
4240 	if (xfrm_offload(skb) && !ixgbevf_ipsec_tx(tx_ring, first, &ipsec_tx))
4241 		goto out_drop;
4242 #endif
4243 	tso = ixgbevf_tso(tx_ring, first, &hdr_len, &ipsec_tx);
4244 	if (tso < 0)
4245 		goto out_drop;
4246 	else if (!tso)
4247 		ixgbevf_tx_csum(tx_ring, first, &ipsec_tx);
4248 
4249 	ixgbevf_tx_map(tx_ring, first, hdr_len);
4250 
4251 	ixgbevf_maybe_stop_tx(tx_ring, DESC_NEEDED);
4252 
4253 	return NETDEV_TX_OK;
4254 
4255 out_drop:
4256 	dev_kfree_skb_any(first->skb);
4257 	first->skb = NULL;
4258 
4259 	return NETDEV_TX_OK;
4260 }
4261 
4262 static netdev_tx_t ixgbevf_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
4263 {
4264 	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
4265 	struct ixgbevf_ring *tx_ring;
4266 
4267 	if (skb->len <= 0) {
4268 		dev_kfree_skb_any(skb);
4269 		return NETDEV_TX_OK;
4270 	}
4271 
4272 	/* The minimum packet size for olinfo paylen is 17 so pad the skb
4273 	 * in order to meet this minimum size requirement.
4274 	 */
4275 	if (skb->len < 17) {
4276 		if (skb_padto(skb, 17))
4277 			return NETDEV_TX_OK;
4278 		skb->len = 17;
4279 	}
4280 
4281 	tx_ring = adapter->tx_ring[skb->queue_mapping];
4282 	return ixgbevf_xmit_frame_ring(skb, tx_ring);
4283 }
4284 
4285 /**
4286  * ixgbevf_set_mac - Change the Ethernet Address of the NIC
4287  * @netdev: network interface device structure
4288  * @p: pointer to an address structure
4289  *
4290  * Returns 0 on success, negative on failure
4291  **/
4292 static int ixgbevf_set_mac(struct net_device *netdev, void *p)
4293 {
4294 	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
4295 	struct ixgbe_hw *hw = &adapter->hw;
4296 	struct sockaddr *addr = p;
4297 	int err;
4298 
4299 	if (!is_valid_ether_addr(addr->sa_data))
4300 		return -EADDRNOTAVAIL;
4301 
4302 	spin_lock_bh(&adapter->mbx_lock);
4303 
4304 	err = hw->mac.ops.set_rar(hw, 0, addr->sa_data, 0);
4305 
4306 	spin_unlock_bh(&adapter->mbx_lock);
4307 
4308 	if (err)
4309 		return -EPERM;
4310 
4311 	ether_addr_copy(hw->mac.addr, addr->sa_data);
4312 	ether_addr_copy(hw->mac.perm_addr, addr->sa_data);
4313 	eth_hw_addr_set(netdev, addr->sa_data);
4314 
4315 	return 0;
4316 }
4317 
4318 /**
4319  * ixgbevf_change_mtu - Change the Maximum Transfer Unit
4320  * @netdev: network interface device structure
4321  * @new_mtu: new value for maximum frame size
4322  *
4323  * Returns 0 on success, negative on failure
4324  **/
4325 static int ixgbevf_change_mtu(struct net_device *netdev, int new_mtu)
4326 {
4327 	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
4328 	struct ixgbe_hw *hw = &adapter->hw;
4329 	int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN;
4330 	int ret;
4331 
4332 	/* prevent MTU being changed to a size unsupported by XDP */
4333 	if (adapter->xdp_prog) {
4334 		dev_warn(&adapter->pdev->dev, "MTU cannot be changed while XDP program is loaded\n");
4335 		return -EPERM;
4336 	}
4337 
4338 	spin_lock_bh(&adapter->mbx_lock);
4339 	/* notify the PF of our intent to use this size of frame */
4340 	ret = hw->mac.ops.set_rlpml(hw, max_frame);
4341 	spin_unlock_bh(&adapter->mbx_lock);
4342 	if (ret)
4343 		return -EINVAL;
4344 
4345 	hw_dbg(hw, "changing MTU from %d to %d\n",
4346 	       netdev->mtu, new_mtu);
4347 
4348 	/* must set new MTU before calling down or up */
4349 	WRITE_ONCE(netdev->mtu, new_mtu);
4350 
4351 	if (netif_running(netdev))
4352 		ixgbevf_reinit_locked(adapter);
4353 
4354 	return 0;
4355 }
4356 
4357 static int ixgbevf_suspend(struct device *dev_d)
4358 {
4359 	struct net_device *netdev = dev_get_drvdata(dev_d);
4360 	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
4361 
4362 	rtnl_lock();
4363 	netif_device_detach(netdev);
4364 
4365 	if (netif_running(netdev))
4366 		ixgbevf_close_suspend(adapter);
4367 
4368 	ixgbevf_clear_interrupt_scheme(adapter);
4369 	rtnl_unlock();
4370 
4371 	return 0;
4372 }
4373 
4374 static int ixgbevf_resume(struct device *dev_d)
4375 {
4376 	struct pci_dev *pdev = to_pci_dev(dev_d);
4377 	struct net_device *netdev = pci_get_drvdata(pdev);
4378 	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
4379 	int err;
4380 
4381 	adapter->hw.hw_addr = adapter->io_addr;
4382 	smp_mb__before_atomic();
4383 	clear_bit(__IXGBEVF_DISABLED, &adapter->state);
4384 	pci_set_master(pdev);
4385 
4386 	ixgbevf_reset(adapter);
4387 
4388 	rtnl_lock();
4389 	err = ixgbevf_init_interrupt_scheme(adapter);
4390 	if (!err && netif_running(netdev))
4391 		err = ixgbevf_open(netdev);
4392 	rtnl_unlock();
4393 	if (err)
4394 		return err;
4395 
4396 	netif_device_attach(netdev);
4397 
4398 	return err;
4399 }
4400 
4401 static void ixgbevf_shutdown(struct pci_dev *pdev)
4402 {
4403 	ixgbevf_suspend(&pdev->dev);
4404 }
4405 
4406 static void ixgbevf_get_tx_ring_stats(struct rtnl_link_stats64 *stats,
4407 				      const struct ixgbevf_ring *ring)
4408 {
4409 	u64 bytes, packets;
4410 	unsigned int start;
4411 
4412 	if (ring) {
4413 		do {
4414 			start = u64_stats_fetch_begin(&ring->syncp);
4415 			bytes = ring->stats.bytes;
4416 			packets = ring->stats.packets;
4417 		} while (u64_stats_fetch_retry(&ring->syncp, start));
4418 		stats->tx_bytes += bytes;
4419 		stats->tx_packets += packets;
4420 	}
4421 }
4422 
4423 static void ixgbevf_get_stats(struct net_device *netdev,
4424 			      struct rtnl_link_stats64 *stats)
4425 {
4426 	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
4427 	unsigned int start;
4428 	u64 bytes, packets;
4429 	const struct ixgbevf_ring *ring;
4430 	int i;
4431 
4432 	ixgbevf_update_stats(adapter);
4433 
4434 	stats->multicast = adapter->stats.vfmprc - adapter->stats.base_vfmprc;
4435 
4436 	rcu_read_lock();
4437 	for (i = 0; i < adapter->num_rx_queues; i++) {
4438 		ring = adapter->rx_ring[i];
4439 		do {
4440 			start = u64_stats_fetch_begin(&ring->syncp);
4441 			bytes = ring->stats.bytes;
4442 			packets = ring->stats.packets;
4443 		} while (u64_stats_fetch_retry(&ring->syncp, start));
4444 		stats->rx_bytes += bytes;
4445 		stats->rx_packets += packets;
4446 	}
4447 
4448 	for (i = 0; i < adapter->num_tx_queues; i++) {
4449 		ring = adapter->tx_ring[i];
4450 		ixgbevf_get_tx_ring_stats(stats, ring);
4451 	}
4452 
4453 	for (i = 0; i < adapter->num_xdp_queues; i++) {
4454 		ring = adapter->xdp_ring[i];
4455 		ixgbevf_get_tx_ring_stats(stats, ring);
4456 	}
4457 	rcu_read_unlock();
4458 }
4459 
4460 #define IXGBEVF_MAX_MAC_HDR_LEN		127
4461 #define IXGBEVF_MAX_NETWORK_HDR_LEN	511
4462 
4463 static netdev_features_t
4464 ixgbevf_features_check(struct sk_buff *skb, struct net_device *dev,
4465 		       netdev_features_t features)
4466 {
4467 	unsigned int network_hdr_len, mac_hdr_len;
4468 
4469 	/* Make certain the headers can be described by a context descriptor */
4470 	mac_hdr_len = skb_network_offset(skb);
4471 	if (unlikely(mac_hdr_len > IXGBEVF_MAX_MAC_HDR_LEN))
4472 		return features & ~(NETIF_F_HW_CSUM |
4473 				    NETIF_F_SCTP_CRC |
4474 				    NETIF_F_HW_VLAN_CTAG_TX |
4475 				    NETIF_F_TSO |
4476 				    NETIF_F_TSO6);
4477 
4478 	network_hdr_len = skb_checksum_start(skb) - skb_network_header(skb);
4479 	if (unlikely(network_hdr_len >  IXGBEVF_MAX_NETWORK_HDR_LEN))
4480 		return features & ~(NETIF_F_HW_CSUM |
4481 				    NETIF_F_SCTP_CRC |
4482 				    NETIF_F_TSO |
4483 				    NETIF_F_TSO6);
4484 
4485 	/* We can only support IPV4 TSO in tunnels if we can mangle the
4486 	 * inner IP ID field, so strip TSO if MANGLEID is not supported.
4487 	 */
4488 	if (skb->encapsulation && !(features & NETIF_F_TSO_MANGLEID))
4489 		features &= ~NETIF_F_TSO;
4490 
4491 	return features;
4492 }
4493 
4494 static int ixgbevf_xdp_setup(struct net_device *dev, struct bpf_prog *prog)
4495 {
4496 	int i, frame_size = dev->mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN;
4497 	struct ixgbevf_adapter *adapter = netdev_priv(dev);
4498 	struct bpf_prog *old_prog;
4499 
4500 	/* verify ixgbevf ring attributes are sufficient for XDP */
4501 	for (i = 0; i < adapter->num_rx_queues; i++) {
4502 		struct ixgbevf_ring *ring = adapter->rx_ring[i];
4503 
4504 		if (frame_size > ixgbevf_rx_bufsz(ring))
4505 			return -EINVAL;
4506 	}
4507 
4508 	old_prog = xchg(&adapter->xdp_prog, prog);
4509 
4510 	/* If transitioning XDP modes reconfigure rings */
4511 	if (!!prog != !!old_prog) {
4512 		/* Hardware has to reinitialize queues and interrupts to
4513 		 * match packet buffer alignment. Unfortunately, the
4514 		 * hardware is not flexible enough to do this dynamically.
4515 		 */
4516 		if (netif_running(dev))
4517 			ixgbevf_close(dev);
4518 
4519 		ixgbevf_clear_interrupt_scheme(adapter);
4520 		ixgbevf_init_interrupt_scheme(adapter);
4521 
4522 		if (netif_running(dev))
4523 			ixgbevf_open(dev);
4524 	} else {
4525 		for (i = 0; i < adapter->num_rx_queues; i++)
4526 			xchg(&adapter->rx_ring[i]->xdp_prog, adapter->xdp_prog);
4527 	}
4528 
4529 	if (old_prog)
4530 		bpf_prog_put(old_prog);
4531 
4532 	return 0;
4533 }
4534 
4535 static int ixgbevf_xdp(struct net_device *dev, struct netdev_bpf *xdp)
4536 {
4537 	switch (xdp->command) {
4538 	case XDP_SETUP_PROG:
4539 		return ixgbevf_xdp_setup(dev, xdp->prog);
4540 	default:
4541 		return -EINVAL;
4542 	}
4543 }
4544 
4545 static const struct net_device_ops ixgbevf_netdev_ops = {
4546 	.ndo_open		= ixgbevf_open,
4547 	.ndo_stop		= ixgbevf_close,
4548 	.ndo_start_xmit		= ixgbevf_xmit_frame,
4549 	.ndo_set_rx_mode	= ixgbevf_set_rx_mode,
4550 	.ndo_get_stats64	= ixgbevf_get_stats,
4551 	.ndo_validate_addr	= eth_validate_addr,
4552 	.ndo_set_mac_address	= ixgbevf_set_mac,
4553 	.ndo_change_mtu		= ixgbevf_change_mtu,
4554 	.ndo_tx_timeout		= ixgbevf_tx_timeout,
4555 	.ndo_vlan_rx_add_vid	= ixgbevf_vlan_rx_add_vid,
4556 	.ndo_vlan_rx_kill_vid	= ixgbevf_vlan_rx_kill_vid,
4557 	.ndo_features_check	= ixgbevf_features_check,
4558 	.ndo_bpf		= ixgbevf_xdp,
4559 };
4560 
4561 static void ixgbevf_assign_netdev_ops(struct net_device *dev)
4562 {
4563 	dev->netdev_ops = &ixgbevf_netdev_ops;
4564 	ixgbevf_set_ethtool_ops(dev);
4565 	dev->watchdog_timeo = 5 * HZ;
4566 }
4567 
4568 /**
4569  * ixgbevf_probe - Device Initialization Routine
4570  * @pdev: PCI device information struct
4571  * @ent: entry in ixgbevf_pci_tbl
4572  *
4573  * Returns 0 on success, negative on failure
4574  *
4575  * ixgbevf_probe initializes an adapter identified by a pci_dev structure.
4576  * The OS initialization, configuring of the adapter private structure,
4577  * and a hardware reset occur.
4578  **/
4579 static int ixgbevf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
4580 {
4581 	struct net_device *netdev;
4582 	struct ixgbevf_adapter *adapter = NULL;
4583 	struct ixgbe_hw *hw = NULL;
4584 	const struct ixgbevf_info *ii = ixgbevf_info_tbl[ent->driver_data];
4585 	bool disable_dev = false;
4586 	int err;
4587 
4588 	err = pci_enable_device(pdev);
4589 	if (err)
4590 		return err;
4591 
4592 	err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
4593 	if (err) {
4594 		dev_err(&pdev->dev, "No usable DMA configuration, aborting\n");
4595 		goto err_dma;
4596 	}
4597 
4598 	err = pci_request_regions(pdev, ixgbevf_driver_name);
4599 	if (err) {
4600 		dev_err(&pdev->dev, "pci_request_regions failed 0x%x\n", err);
4601 		goto err_pci_reg;
4602 	}
4603 
4604 	pci_set_master(pdev);
4605 
4606 	netdev = alloc_etherdev_mq(sizeof(struct ixgbevf_adapter),
4607 				   MAX_TX_QUEUES);
4608 	if (!netdev) {
4609 		err = -ENOMEM;
4610 		goto err_alloc_etherdev;
4611 	}
4612 
4613 	SET_NETDEV_DEV(netdev, &pdev->dev);
4614 
4615 	adapter = netdev_priv(netdev);
4616 
4617 	adapter->netdev = netdev;
4618 	adapter->pdev = pdev;
4619 	hw = &adapter->hw;
4620 	hw->back = adapter;
4621 	adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE);
4622 
4623 	/* call save state here in standalone driver because it relies on
4624 	 * adapter struct to exist, and needs to call netdev_priv
4625 	 */
4626 	pci_save_state(pdev);
4627 
4628 	hw->hw_addr = ioremap(pci_resource_start(pdev, 0),
4629 			      pci_resource_len(pdev, 0));
4630 	adapter->io_addr = hw->hw_addr;
4631 	if (!hw->hw_addr) {
4632 		err = -EIO;
4633 		goto err_ioremap;
4634 	}
4635 
4636 	ixgbevf_assign_netdev_ops(netdev);
4637 
4638 	/* Setup HW API */
4639 	memcpy(&hw->mac.ops, ii->mac_ops, sizeof(hw->mac.ops));
4640 	hw->mac.type  = ii->mac;
4641 
4642 	memcpy(&hw->mbx.ops, &ixgbevf_mbx_ops_legacy,
4643 	       sizeof(struct ixgbe_mbx_operations));
4644 
4645 	/* setup the private structure */
4646 	err = ixgbevf_sw_init(adapter);
4647 	if (err)
4648 		goto err_sw_init;
4649 
4650 	/* The HW MAC address was set and/or determined in sw_init */
4651 	if (!is_valid_ether_addr(netdev->dev_addr)) {
4652 		pr_err("invalid MAC address\n");
4653 		err = -EIO;
4654 		goto err_sw_init;
4655 	}
4656 
4657 	netdev->hw_features = NETIF_F_SG |
4658 			      NETIF_F_TSO |
4659 			      NETIF_F_TSO6 |
4660 			      NETIF_F_RXCSUM |
4661 			      NETIF_F_HW_CSUM |
4662 			      NETIF_F_SCTP_CRC;
4663 
4664 #define IXGBEVF_GSO_PARTIAL_FEATURES (NETIF_F_GSO_GRE | \
4665 				      NETIF_F_GSO_GRE_CSUM | \
4666 				      NETIF_F_GSO_IPXIP4 | \
4667 				      NETIF_F_GSO_IPXIP6 | \
4668 				      NETIF_F_GSO_UDP_TUNNEL | \
4669 				      NETIF_F_GSO_UDP_TUNNEL_CSUM)
4670 
4671 	netdev->gso_partial_features = IXGBEVF_GSO_PARTIAL_FEATURES;
4672 	netdev->hw_features |= NETIF_F_GSO_PARTIAL |
4673 			       IXGBEVF_GSO_PARTIAL_FEATURES;
4674 
4675 	netdev->features = netdev->hw_features | NETIF_F_HIGHDMA;
4676 
4677 	netdev->vlan_features |= netdev->features | NETIF_F_TSO_MANGLEID;
4678 	netdev->mpls_features |= NETIF_F_SG |
4679 				 NETIF_F_TSO |
4680 				 NETIF_F_TSO6 |
4681 				 NETIF_F_HW_CSUM;
4682 	netdev->mpls_features |= IXGBEVF_GSO_PARTIAL_FEATURES;
4683 	netdev->hw_enc_features |= netdev->vlan_features;
4684 
4685 	/* set this bit last since it cannot be part of vlan_features */
4686 	netdev->features |= NETIF_F_HW_VLAN_CTAG_FILTER |
4687 			    NETIF_F_HW_VLAN_CTAG_RX |
4688 			    NETIF_F_HW_VLAN_CTAG_TX;
4689 
4690 	netdev->priv_flags |= IFF_UNICAST_FLT;
4691 	netdev->xdp_features = NETDEV_XDP_ACT_BASIC;
4692 
4693 	/* MTU range: 68 - 1504 or 9710 */
4694 	netdev->min_mtu = ETH_MIN_MTU;
4695 	switch (adapter->hw.api_version) {
4696 	case ixgbe_mbox_api_11:
4697 	case ixgbe_mbox_api_12:
4698 	case ixgbe_mbox_api_13:
4699 	case ixgbe_mbox_api_14:
4700 	case ixgbe_mbox_api_15:
4701 	case ixgbe_mbox_api_16:
4702 	case ixgbe_mbox_api_17:
4703 		netdev->max_mtu = IXGBE_MAX_JUMBO_FRAME_SIZE -
4704 				  (ETH_HLEN + ETH_FCS_LEN);
4705 		break;
4706 	default:
4707 		if (adapter->hw.mac.type != ixgbe_mac_82599_vf)
4708 			netdev->max_mtu = IXGBE_MAX_JUMBO_FRAME_SIZE -
4709 					  (ETH_HLEN + ETH_FCS_LEN);
4710 		else
4711 			netdev->max_mtu = ETH_DATA_LEN + ETH_FCS_LEN;
4712 		break;
4713 	}
4714 
4715 	if (IXGBE_REMOVED(hw->hw_addr)) {
4716 		err = -EIO;
4717 		goto err_sw_init;
4718 	}
4719 
4720 	timer_setup(&adapter->service_timer, ixgbevf_service_timer, 0);
4721 
4722 	INIT_WORK(&adapter->service_task, ixgbevf_service_task);
4723 	set_bit(__IXGBEVF_SERVICE_INITED, &adapter->state);
4724 	clear_bit(__IXGBEVF_SERVICE_SCHED, &adapter->state);
4725 
4726 	err = ixgbevf_init_interrupt_scheme(adapter);
4727 	if (err)
4728 		goto err_sw_init;
4729 
4730 	strcpy(netdev->name, "eth%d");
4731 
4732 	err = register_netdev(netdev);
4733 	if (err)
4734 		goto err_register;
4735 
4736 	pci_set_drvdata(pdev, netdev);
4737 	netif_carrier_off(netdev);
4738 	ixgbevf_init_ipsec_offload(adapter);
4739 
4740 	ixgbevf_init_last_counter_stats(adapter);
4741 
4742 	/* print the VF info */
4743 	dev_info(&pdev->dev, "%pM\n", netdev->dev_addr);
4744 	dev_info(&pdev->dev, "MAC: %d\n", hw->mac.type);
4745 
4746 	switch (hw->mac.type) {
4747 	case ixgbe_mac_X550_vf:
4748 		dev_info(&pdev->dev, "Intel(R) X550 Virtual Function\n");
4749 		break;
4750 	case ixgbe_mac_X540_vf:
4751 		dev_info(&pdev->dev, "Intel(R) X540 Virtual Function\n");
4752 		break;
4753 	case ixgbe_mac_e610_vf:
4754 		dev_info(&pdev->dev, "Intel(R) E610 Virtual Function\n");
4755 		break;
4756 	case ixgbe_mac_82599_vf:
4757 	default:
4758 		dev_info(&pdev->dev, "Intel(R) 82599 Virtual Function\n");
4759 		break;
4760 	}
4761 
4762 	return 0;
4763 
4764 err_register:
4765 	ixgbevf_clear_interrupt_scheme(adapter);
4766 err_sw_init:
4767 	ixgbevf_reset_interrupt_capability(adapter);
4768 	iounmap(adapter->io_addr);
4769 	kfree(adapter->rss_key);
4770 err_ioremap:
4771 	disable_dev = !test_and_set_bit(__IXGBEVF_DISABLED, &adapter->state);
4772 	free_netdev(netdev);
4773 err_alloc_etherdev:
4774 	pci_release_regions(pdev);
4775 err_pci_reg:
4776 err_dma:
4777 	if (!adapter || disable_dev)
4778 		pci_disable_device(pdev);
4779 	return err;
4780 }
4781 
4782 /**
4783  * ixgbevf_remove - Device Removal Routine
4784  * @pdev: PCI device information struct
4785  *
4786  * ixgbevf_remove is called by the PCI subsystem to alert the driver
4787  * that it should release a PCI device.  The could be caused by a
4788  * Hot-Plug event, or because the driver is going to be removed from
4789  * memory.
4790  **/
4791 static void ixgbevf_remove(struct pci_dev *pdev)
4792 {
4793 	struct net_device *netdev = pci_get_drvdata(pdev);
4794 	struct ixgbevf_adapter *adapter;
4795 	bool disable_dev;
4796 
4797 	if (!netdev)
4798 		return;
4799 
4800 	adapter = netdev_priv(netdev);
4801 
4802 	set_bit(__IXGBEVF_REMOVING, &adapter->state);
4803 	cancel_work_sync(&adapter->service_task);
4804 
4805 	if (netdev->reg_state == NETREG_REGISTERED)
4806 		unregister_netdev(netdev);
4807 
4808 	ixgbevf_stop_ipsec_offload(adapter);
4809 	ixgbevf_clear_interrupt_scheme(adapter);
4810 	ixgbevf_reset_interrupt_capability(adapter);
4811 
4812 	iounmap(adapter->io_addr);
4813 	pci_release_regions(pdev);
4814 
4815 	hw_dbg(&adapter->hw, "Remove complete\n");
4816 
4817 	kfree(adapter->rss_key);
4818 	disable_dev = !test_and_set_bit(__IXGBEVF_DISABLED, &adapter->state);
4819 	free_netdev(netdev);
4820 
4821 	if (disable_dev)
4822 		pci_disable_device(pdev);
4823 }
4824 
4825 /**
4826  * ixgbevf_io_error_detected - called when PCI error is detected
4827  * @pdev: Pointer to PCI device
4828  * @state: The current pci connection state
4829  *
4830  * This function is called after a PCI bus error affecting
4831  * this device has been detected.
4832  **/
4833 static pci_ers_result_t ixgbevf_io_error_detected(struct pci_dev *pdev,
4834 						  pci_channel_state_t state)
4835 {
4836 	struct net_device *netdev = pci_get_drvdata(pdev);
4837 	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
4838 
4839 	if (!test_bit(__IXGBEVF_SERVICE_INITED, &adapter->state))
4840 		return PCI_ERS_RESULT_DISCONNECT;
4841 
4842 	rtnl_lock();
4843 	netif_device_detach(netdev);
4844 
4845 	if (netif_running(netdev))
4846 		ixgbevf_close_suspend(adapter);
4847 
4848 	if (state == pci_channel_io_perm_failure) {
4849 		rtnl_unlock();
4850 		return PCI_ERS_RESULT_DISCONNECT;
4851 	}
4852 
4853 	if (!test_and_set_bit(__IXGBEVF_DISABLED, &adapter->state))
4854 		pci_disable_device(pdev);
4855 	rtnl_unlock();
4856 
4857 	/* Request a slot reset. */
4858 	return PCI_ERS_RESULT_NEED_RESET;
4859 }
4860 
4861 /**
4862  * ixgbevf_io_slot_reset - called after the pci bus has been reset.
4863  * @pdev: Pointer to PCI device
4864  *
4865  * Restart the card from scratch, as if from a cold-boot. Implementation
4866  * resembles the first-half of the ixgbevf_resume routine.
4867  **/
4868 static pci_ers_result_t ixgbevf_io_slot_reset(struct pci_dev *pdev)
4869 {
4870 	struct net_device *netdev = pci_get_drvdata(pdev);
4871 	struct ixgbevf_adapter *adapter = netdev_priv(netdev);
4872 
4873 	if (pci_enable_device_mem(pdev)) {
4874 		dev_err(&pdev->dev,
4875 			"Cannot re-enable PCI device after reset.\n");
4876 		return PCI_ERS_RESULT_DISCONNECT;
4877 	}
4878 
4879 	adapter->hw.hw_addr = adapter->io_addr;
4880 	smp_mb__before_atomic();
4881 	clear_bit(__IXGBEVF_DISABLED, &adapter->state);
4882 	pci_set_master(pdev);
4883 
4884 	ixgbevf_reset(adapter);
4885 
4886 	return PCI_ERS_RESULT_RECOVERED;
4887 }
4888 
4889 /**
4890  * ixgbevf_io_resume - called when traffic can start flowing again.
4891  * @pdev: Pointer to PCI device
4892  *
4893  * This callback is called when the error recovery driver tells us that
4894  * its OK to resume normal operation. Implementation resembles the
4895  * second-half of the ixgbevf_resume routine.
4896  **/
4897 static void ixgbevf_io_resume(struct pci_dev *pdev)
4898 {
4899 	struct net_device *netdev = pci_get_drvdata(pdev);
4900 
4901 	rtnl_lock();
4902 	if (netif_running(netdev))
4903 		ixgbevf_open(netdev);
4904 
4905 	netif_device_attach(netdev);
4906 	rtnl_unlock();
4907 }
4908 
4909 /* PCI Error Recovery (ERS) */
4910 static const struct pci_error_handlers ixgbevf_err_handler = {
4911 	.error_detected = ixgbevf_io_error_detected,
4912 	.slot_reset = ixgbevf_io_slot_reset,
4913 	.resume = ixgbevf_io_resume,
4914 };
4915 
4916 static DEFINE_SIMPLE_DEV_PM_OPS(ixgbevf_pm_ops, ixgbevf_suspend, ixgbevf_resume);
4917 
4918 static struct pci_driver ixgbevf_driver = {
4919 	.name		= ixgbevf_driver_name,
4920 	.id_table	= ixgbevf_pci_tbl,
4921 	.probe		= ixgbevf_probe,
4922 	.remove		= ixgbevf_remove,
4923 
4924 	/* Power Management Hooks */
4925 	.driver.pm	= pm_sleep_ptr(&ixgbevf_pm_ops),
4926 
4927 	.shutdown	= ixgbevf_shutdown,
4928 	.err_handler	= &ixgbevf_err_handler
4929 };
4930 
4931 /**
4932  * ixgbevf_init_module - Driver Registration Routine
4933  *
4934  * ixgbevf_init_module is the first routine called when the driver is
4935  * loaded. All it does is register with the PCI subsystem.
4936  **/
4937 static int __init ixgbevf_init_module(void)
4938 {
4939 	int err;
4940 
4941 	pr_info("%s\n", ixgbevf_driver_string);
4942 	pr_info("%s\n", ixgbevf_copyright);
4943 	ixgbevf_wq = create_singlethread_workqueue(ixgbevf_driver_name);
4944 	if (!ixgbevf_wq) {
4945 		pr_err("%s: Failed to create workqueue\n", ixgbevf_driver_name);
4946 		return -ENOMEM;
4947 	}
4948 
4949 	err = pci_register_driver(&ixgbevf_driver);
4950 	if (err) {
4951 		destroy_workqueue(ixgbevf_wq);
4952 		return err;
4953 	}
4954 
4955 	return 0;
4956 }
4957 
4958 module_init(ixgbevf_init_module);
4959 
4960 /**
4961  * ixgbevf_exit_module - Driver Exit Cleanup Routine
4962  *
4963  * ixgbevf_exit_module is called just before the driver is removed
4964  * from memory.
4965  **/
4966 static void __exit ixgbevf_exit_module(void)
4967 {
4968 	pci_unregister_driver(&ixgbevf_driver);
4969 	if (ixgbevf_wq) {
4970 		destroy_workqueue(ixgbevf_wq);
4971 		ixgbevf_wq = NULL;
4972 	}
4973 }
4974 
4975 #ifdef DEBUG
4976 /**
4977  * ixgbevf_get_hw_dev_name - return device name string
4978  * used by hardware layer to print debugging information
4979  * @hw: pointer to private hardware struct
4980  **/
4981 char *ixgbevf_get_hw_dev_name(struct ixgbe_hw *hw)
4982 {
4983 	struct ixgbevf_adapter *adapter = hw->back;
4984 
4985 	return adapter->netdev->name;
4986 }
4987 
4988 #endif
4989 module_exit(ixgbevf_exit_module);
4990 
4991 /* ixgbevf_main.c */
4992