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