1/*******************************************************************************
2
3  Intel(R) 82576 Virtual Function Linux driver
4  Copyright(c) 2009 - 2012 Intel Corporation.
5
6  This program is free software; you can redistribute it and/or modify it
7  under the terms and conditions of the GNU General Public License,
8  version 2, as published by the Free Software Foundation.
9
10  This program is distributed in the hope it will be useful, but WITHOUT
11  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
13  more details.
14
15  You should have received a copy of the GNU General Public License along with
16  this program; if not, see <http://www.gnu.org/licenses/>.
17
18  The full GNU General Public License is included in this distribution in
19  the file called "COPYING".
20
21  Contact Information:
22  e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
23  Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
24
25*******************************************************************************/
26
27#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
28
29#include <linux/module.h>
30#include <linux/types.h>
31#include <linux/init.h>
32#include <linux/pci.h>
33#include <linux/vmalloc.h>
34#include <linux/pagemap.h>
35#include <linux/delay.h>
36#include <linux/netdevice.h>
37#include <linux/tcp.h>
38#include <linux/ipv6.h>
39#include <linux/slab.h>
40#include <net/checksum.h>
41#include <net/ip6_checksum.h>
42#include <linux/mii.h>
43#include <linux/ethtool.h>
44#include <linux/if_vlan.h>
45#include <linux/prefetch.h>
46
47#include "igbvf.h"
48
49#define DRV_VERSION "2.0.2-k"
50char igbvf_driver_name[] = "igbvf";
51const char igbvf_driver_version[] = DRV_VERSION;
52static const char igbvf_driver_string[] =
53		  "Intel(R) Gigabit Virtual Function Network Driver";
54static const char igbvf_copyright[] =
55		  "Copyright (c) 2009 - 2012 Intel Corporation.";
56
57#define DEFAULT_MSG_ENABLE (NETIF_MSG_DRV|NETIF_MSG_PROBE|NETIF_MSG_LINK)
58static int debug = -1;
59module_param(debug, int, 0);
60MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
61
62static int igbvf_poll(struct napi_struct *napi, int budget);
63static void igbvf_reset(struct igbvf_adapter *);
64static void igbvf_set_interrupt_capability(struct igbvf_adapter *);
65static void igbvf_reset_interrupt_capability(struct igbvf_adapter *);
66
67static struct igbvf_info igbvf_vf_info = {
68	.mac		= e1000_vfadapt,
69	.flags		= 0,
70	.pba		= 10,
71	.init_ops	= e1000_init_function_pointers_vf,
72};
73
74static struct igbvf_info igbvf_i350_vf_info = {
75	.mac		= e1000_vfadapt_i350,
76	.flags		= 0,
77	.pba		= 10,
78	.init_ops	= e1000_init_function_pointers_vf,
79};
80
81static const struct igbvf_info *igbvf_info_tbl[] = {
82	[board_vf]	= &igbvf_vf_info,
83	[board_i350_vf]	= &igbvf_i350_vf_info,
84};
85
86/**
87 * igbvf_desc_unused - calculate if we have unused descriptors
88 * @rx_ring: address of receive ring structure
89 **/
90static int igbvf_desc_unused(struct igbvf_ring *ring)
91{
92	if (ring->next_to_clean > ring->next_to_use)
93		return ring->next_to_clean - ring->next_to_use - 1;
94
95	return ring->count + ring->next_to_clean - ring->next_to_use - 1;
96}
97
98/**
99 * igbvf_receive_skb - helper function to handle Rx indications
100 * @adapter: board private structure
101 * @status: descriptor status field as written by hardware
102 * @vlan: descriptor vlan field as written by hardware (no le/be conversion)
103 * @skb: pointer to sk_buff to be indicated to stack
104 **/
105static void igbvf_receive_skb(struct igbvf_adapter *adapter,
106			      struct net_device *netdev,
107			      struct sk_buff *skb,
108			      u32 status, u16 vlan)
109{
110	u16 vid;
111
112	if (status & E1000_RXD_STAT_VP) {
113		if ((adapter->flags & IGBVF_FLAG_RX_LB_VLAN_BSWAP) &&
114		    (status & E1000_RXDEXT_STATERR_LB))
115			vid = be16_to_cpu(vlan) & E1000_RXD_SPC_VLAN_MASK;
116		else
117			vid = le16_to_cpu(vlan) & E1000_RXD_SPC_VLAN_MASK;
118		if (test_bit(vid, adapter->active_vlans))
119			__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), vid);
120	}
121
122	napi_gro_receive(&adapter->rx_ring->napi, skb);
123}
124
125static inline void igbvf_rx_checksum_adv(struct igbvf_adapter *adapter,
126					 u32 status_err, struct sk_buff *skb)
127{
128	skb_checksum_none_assert(skb);
129
130	/* Ignore Checksum bit is set or checksum is disabled through ethtool */
131	if ((status_err & E1000_RXD_STAT_IXSM) ||
132	    (adapter->flags & IGBVF_FLAG_RX_CSUM_DISABLED))
133		return;
134
135	/* TCP/UDP checksum error bit is set */
136	if (status_err &
137	    (E1000_RXDEXT_STATERR_TCPE | E1000_RXDEXT_STATERR_IPE)) {
138		/* let the stack verify checksum errors */
139		adapter->hw_csum_err++;
140		return;
141	}
142
143	/* It must be a TCP or UDP packet with a valid checksum */
144	if (status_err & (E1000_RXD_STAT_TCPCS | E1000_RXD_STAT_UDPCS))
145		skb->ip_summed = CHECKSUM_UNNECESSARY;
146
147	adapter->hw_csum_good++;
148}
149
150/**
151 * igbvf_alloc_rx_buffers - Replace used receive buffers; packet split
152 * @rx_ring: address of ring structure to repopulate
153 * @cleaned_count: number of buffers to repopulate
154 **/
155static void igbvf_alloc_rx_buffers(struct igbvf_ring *rx_ring,
156				   int cleaned_count)
157{
158	struct igbvf_adapter *adapter = rx_ring->adapter;
159	struct net_device *netdev = adapter->netdev;
160	struct pci_dev *pdev = adapter->pdev;
161	union e1000_adv_rx_desc *rx_desc;
162	struct igbvf_buffer *buffer_info;
163	struct sk_buff *skb;
164	unsigned int i;
165	int bufsz;
166
167	i = rx_ring->next_to_use;
168	buffer_info = &rx_ring->buffer_info[i];
169
170	if (adapter->rx_ps_hdr_size)
171		bufsz = adapter->rx_ps_hdr_size;
172	else
173		bufsz = adapter->rx_buffer_len;
174
175	while (cleaned_count--) {
176		rx_desc = IGBVF_RX_DESC_ADV(*rx_ring, i);
177
178		if (adapter->rx_ps_hdr_size && !buffer_info->page_dma) {
179			if (!buffer_info->page) {
180				buffer_info->page = alloc_page(GFP_ATOMIC);
181				if (!buffer_info->page) {
182					adapter->alloc_rx_buff_failed++;
183					goto no_buffers;
184				}
185				buffer_info->page_offset = 0;
186			} else {
187				buffer_info->page_offset ^= PAGE_SIZE / 2;
188			}
189			buffer_info->page_dma =
190				dma_map_page(&pdev->dev, buffer_info->page,
191					     buffer_info->page_offset,
192					     PAGE_SIZE / 2,
193					     DMA_FROM_DEVICE);
194			if (dma_mapping_error(&pdev->dev,
195					      buffer_info->page_dma)) {
196				__free_page(buffer_info->page);
197				buffer_info->page = NULL;
198				dev_err(&pdev->dev, "RX DMA map failed\n");
199				break;
200			}
201		}
202
203		if (!buffer_info->skb) {
204			skb = netdev_alloc_skb_ip_align(netdev, bufsz);
205			if (!skb) {
206				adapter->alloc_rx_buff_failed++;
207				goto no_buffers;
208			}
209
210			buffer_info->skb = skb;
211			buffer_info->dma = dma_map_single(&pdev->dev, skb->data,
212							  bufsz,
213							  DMA_FROM_DEVICE);
214			if (dma_mapping_error(&pdev->dev, buffer_info->dma)) {
215				dev_kfree_skb(buffer_info->skb);
216				buffer_info->skb = NULL;
217				dev_err(&pdev->dev, "RX DMA map failed\n");
218				goto no_buffers;
219			}
220		}
221		/* Refresh the desc even if buffer_addrs didn't change because
222		 * each write-back erases this info.
223		 */
224		if (adapter->rx_ps_hdr_size) {
225			rx_desc->read.pkt_addr =
226			     cpu_to_le64(buffer_info->page_dma);
227			rx_desc->read.hdr_addr = cpu_to_le64(buffer_info->dma);
228		} else {
229			rx_desc->read.pkt_addr = cpu_to_le64(buffer_info->dma);
230			rx_desc->read.hdr_addr = 0;
231		}
232
233		i++;
234		if (i == rx_ring->count)
235			i = 0;
236		buffer_info = &rx_ring->buffer_info[i];
237	}
238
239no_buffers:
240	if (rx_ring->next_to_use != i) {
241		rx_ring->next_to_use = i;
242		if (i == 0)
243			i = (rx_ring->count - 1);
244		else
245			i--;
246
247		/* Force memory writes to complete before letting h/w
248		 * know there are new descriptors to fetch.  (Only
249		 * applicable for weak-ordered memory model archs,
250		 * such as IA-64).
251		*/
252		wmb();
253		writel(i, adapter->hw.hw_addr + rx_ring->tail);
254	}
255}
256
257/**
258 * igbvf_clean_rx_irq - Send received data up the network stack; legacy
259 * @adapter: board private structure
260 *
261 * the return value indicates whether actual cleaning was done, there
262 * is no guarantee that everything was cleaned
263 **/
264static bool igbvf_clean_rx_irq(struct igbvf_adapter *adapter,
265			       int *work_done, int work_to_do)
266{
267	struct igbvf_ring *rx_ring = adapter->rx_ring;
268	struct net_device *netdev = adapter->netdev;
269	struct pci_dev *pdev = adapter->pdev;
270	union e1000_adv_rx_desc *rx_desc, *next_rxd;
271	struct igbvf_buffer *buffer_info, *next_buffer;
272	struct sk_buff *skb;
273	bool cleaned = false;
274	int cleaned_count = 0;
275	unsigned int total_bytes = 0, total_packets = 0;
276	unsigned int i;
277	u32 length, hlen, staterr;
278
279	i = rx_ring->next_to_clean;
280	rx_desc = IGBVF_RX_DESC_ADV(*rx_ring, i);
281	staterr = le32_to_cpu(rx_desc->wb.upper.status_error);
282
283	while (staterr & E1000_RXD_STAT_DD) {
284		if (*work_done >= work_to_do)
285			break;
286		(*work_done)++;
287		rmb(); /* read descriptor and rx_buffer_info after status DD */
288
289		buffer_info = &rx_ring->buffer_info[i];
290
291		/* HW will not DMA in data larger than the given buffer, even
292		 * if it parses the (NFS, of course) header to be larger.  In
293		 * that case, it fills the header buffer and spills the rest
294		 * into the page.
295		 */
296		hlen = (le16_to_cpu(rx_desc->wb.lower.lo_dword.hs_rss.hdr_info)
297		       & E1000_RXDADV_HDRBUFLEN_MASK) >>
298		       E1000_RXDADV_HDRBUFLEN_SHIFT;
299		if (hlen > adapter->rx_ps_hdr_size)
300			hlen = adapter->rx_ps_hdr_size;
301
302		length = le16_to_cpu(rx_desc->wb.upper.length);
303		cleaned = true;
304		cleaned_count++;
305
306		skb = buffer_info->skb;
307		prefetch(skb->data - NET_IP_ALIGN);
308		buffer_info->skb = NULL;
309		if (!adapter->rx_ps_hdr_size) {
310			dma_unmap_single(&pdev->dev, buffer_info->dma,
311					 adapter->rx_buffer_len,
312					 DMA_FROM_DEVICE);
313			buffer_info->dma = 0;
314			skb_put(skb, length);
315			goto send_up;
316		}
317
318		if (!skb_shinfo(skb)->nr_frags) {
319			dma_unmap_single(&pdev->dev, buffer_info->dma,
320					 adapter->rx_ps_hdr_size,
321					 DMA_FROM_DEVICE);
322			buffer_info->dma = 0;
323			skb_put(skb, hlen);
324		}
325
326		if (length) {
327			dma_unmap_page(&pdev->dev, buffer_info->page_dma,
328				       PAGE_SIZE / 2,
329				       DMA_FROM_DEVICE);
330			buffer_info->page_dma = 0;
331
332			skb_fill_page_desc(skb, skb_shinfo(skb)->nr_frags,
333					   buffer_info->page,
334					   buffer_info->page_offset,
335					   length);
336
337			if ((adapter->rx_buffer_len > (PAGE_SIZE / 2)) ||
338			    (page_count(buffer_info->page) != 1))
339				buffer_info->page = NULL;
340			else
341				get_page(buffer_info->page);
342
343			skb->len += length;
344			skb->data_len += length;
345			skb->truesize += PAGE_SIZE / 2;
346		}
347send_up:
348		i++;
349		if (i == rx_ring->count)
350			i = 0;
351		next_rxd = IGBVF_RX_DESC_ADV(*rx_ring, i);
352		prefetch(next_rxd);
353		next_buffer = &rx_ring->buffer_info[i];
354
355		if (!(staterr & E1000_RXD_STAT_EOP)) {
356			buffer_info->skb = next_buffer->skb;
357			buffer_info->dma = next_buffer->dma;
358			next_buffer->skb = skb;
359			next_buffer->dma = 0;
360			goto next_desc;
361		}
362
363		if (staterr & E1000_RXDEXT_ERR_FRAME_ERR_MASK) {
364			dev_kfree_skb_irq(skb);
365			goto next_desc;
366		}
367
368		total_bytes += skb->len;
369		total_packets++;
370
371		igbvf_rx_checksum_adv(adapter, staterr, skb);
372
373		skb->protocol = eth_type_trans(skb, netdev);
374
375		igbvf_receive_skb(adapter, netdev, skb, staterr,
376				  rx_desc->wb.upper.vlan);
377
378next_desc:
379		rx_desc->wb.upper.status_error = 0;
380
381		/* return some buffers to hardware, one at a time is too slow */
382		if (cleaned_count >= IGBVF_RX_BUFFER_WRITE) {
383			igbvf_alloc_rx_buffers(rx_ring, cleaned_count);
384			cleaned_count = 0;
385		}
386
387		/* use prefetched values */
388		rx_desc = next_rxd;
389		buffer_info = next_buffer;
390
391		staterr = le32_to_cpu(rx_desc->wb.upper.status_error);
392	}
393
394	rx_ring->next_to_clean = i;
395	cleaned_count = igbvf_desc_unused(rx_ring);
396
397	if (cleaned_count)
398		igbvf_alloc_rx_buffers(rx_ring, cleaned_count);
399
400	adapter->total_rx_packets += total_packets;
401	adapter->total_rx_bytes += total_bytes;
402	adapter->net_stats.rx_bytes += total_bytes;
403	adapter->net_stats.rx_packets += total_packets;
404	return cleaned;
405}
406
407static void igbvf_put_txbuf(struct igbvf_adapter *adapter,
408			    struct igbvf_buffer *buffer_info)
409{
410	if (buffer_info->dma) {
411		if (buffer_info->mapped_as_page)
412			dma_unmap_page(&adapter->pdev->dev,
413				       buffer_info->dma,
414				       buffer_info->length,
415				       DMA_TO_DEVICE);
416		else
417			dma_unmap_single(&adapter->pdev->dev,
418					 buffer_info->dma,
419					 buffer_info->length,
420					 DMA_TO_DEVICE);
421		buffer_info->dma = 0;
422	}
423	if (buffer_info->skb) {
424		dev_kfree_skb_any(buffer_info->skb);
425		buffer_info->skb = NULL;
426	}
427	buffer_info->time_stamp = 0;
428}
429
430/**
431 * igbvf_setup_tx_resources - allocate Tx resources (Descriptors)
432 * @adapter: board private structure
433 *
434 * Return 0 on success, negative on failure
435 **/
436int igbvf_setup_tx_resources(struct igbvf_adapter *adapter,
437			     struct igbvf_ring *tx_ring)
438{
439	struct pci_dev *pdev = adapter->pdev;
440	int size;
441
442	size = sizeof(struct igbvf_buffer) * tx_ring->count;
443	tx_ring->buffer_info = vzalloc(size);
444	if (!tx_ring->buffer_info)
445		goto err;
446
447	/* round up to nearest 4K */
448	tx_ring->size = tx_ring->count * sizeof(union e1000_adv_tx_desc);
449	tx_ring->size = ALIGN(tx_ring->size, 4096);
450
451	tx_ring->desc = dma_alloc_coherent(&pdev->dev, tx_ring->size,
452					   &tx_ring->dma, GFP_KERNEL);
453	if (!tx_ring->desc)
454		goto err;
455
456	tx_ring->adapter = adapter;
457	tx_ring->next_to_use = 0;
458	tx_ring->next_to_clean = 0;
459
460	return 0;
461err:
462	vfree(tx_ring->buffer_info);
463	dev_err(&adapter->pdev->dev,
464		"Unable to allocate memory for the transmit descriptor ring\n");
465	return -ENOMEM;
466}
467
468/**
469 * igbvf_setup_rx_resources - allocate Rx resources (Descriptors)
470 * @adapter: board private structure
471 *
472 * Returns 0 on success, negative on failure
473 **/
474int igbvf_setup_rx_resources(struct igbvf_adapter *adapter,
475			     struct igbvf_ring *rx_ring)
476{
477	struct pci_dev *pdev = adapter->pdev;
478	int size, desc_len;
479
480	size = sizeof(struct igbvf_buffer) * rx_ring->count;
481	rx_ring->buffer_info = vzalloc(size);
482	if (!rx_ring->buffer_info)
483		goto err;
484
485	desc_len = sizeof(union e1000_adv_rx_desc);
486
487	/* Round up to nearest 4K */
488	rx_ring->size = rx_ring->count * desc_len;
489	rx_ring->size = ALIGN(rx_ring->size, 4096);
490
491	rx_ring->desc = dma_alloc_coherent(&pdev->dev, rx_ring->size,
492					   &rx_ring->dma, GFP_KERNEL);
493	if (!rx_ring->desc)
494		goto err;
495
496	rx_ring->next_to_clean = 0;
497	rx_ring->next_to_use = 0;
498
499	rx_ring->adapter = adapter;
500
501	return 0;
502
503err:
504	vfree(rx_ring->buffer_info);
505	rx_ring->buffer_info = NULL;
506	dev_err(&adapter->pdev->dev,
507		"Unable to allocate memory for the receive descriptor ring\n");
508	return -ENOMEM;
509}
510
511/**
512 * igbvf_clean_tx_ring - Free Tx Buffers
513 * @tx_ring: ring to be cleaned
514 **/
515static void igbvf_clean_tx_ring(struct igbvf_ring *tx_ring)
516{
517	struct igbvf_adapter *adapter = tx_ring->adapter;
518	struct igbvf_buffer *buffer_info;
519	unsigned long size;
520	unsigned int i;
521
522	if (!tx_ring->buffer_info)
523		return;
524
525	/* Free all the Tx ring sk_buffs */
526	for (i = 0; i < tx_ring->count; i++) {
527		buffer_info = &tx_ring->buffer_info[i];
528		igbvf_put_txbuf(adapter, buffer_info);
529	}
530
531	size = sizeof(struct igbvf_buffer) * tx_ring->count;
532	memset(tx_ring->buffer_info, 0, size);
533
534	/* Zero out the descriptor ring */
535	memset(tx_ring->desc, 0, tx_ring->size);
536
537	tx_ring->next_to_use = 0;
538	tx_ring->next_to_clean = 0;
539
540	writel(0, adapter->hw.hw_addr + tx_ring->head);
541	writel(0, adapter->hw.hw_addr + tx_ring->tail);
542}
543
544/**
545 * igbvf_free_tx_resources - Free Tx Resources per Queue
546 * @tx_ring: ring to free resources from
547 *
548 * Free all transmit software resources
549 **/
550void igbvf_free_tx_resources(struct igbvf_ring *tx_ring)
551{
552	struct pci_dev *pdev = tx_ring->adapter->pdev;
553
554	igbvf_clean_tx_ring(tx_ring);
555
556	vfree(tx_ring->buffer_info);
557	tx_ring->buffer_info = NULL;
558
559	dma_free_coherent(&pdev->dev, tx_ring->size, tx_ring->desc,
560			  tx_ring->dma);
561
562	tx_ring->desc = NULL;
563}
564
565/**
566 * igbvf_clean_rx_ring - Free Rx Buffers per Queue
567 * @adapter: board private structure
568 **/
569static void igbvf_clean_rx_ring(struct igbvf_ring *rx_ring)
570{
571	struct igbvf_adapter *adapter = rx_ring->adapter;
572	struct igbvf_buffer *buffer_info;
573	struct pci_dev *pdev = adapter->pdev;
574	unsigned long size;
575	unsigned int i;
576
577	if (!rx_ring->buffer_info)
578		return;
579
580	/* Free all the Rx ring sk_buffs */
581	for (i = 0; i < rx_ring->count; i++) {
582		buffer_info = &rx_ring->buffer_info[i];
583		if (buffer_info->dma) {
584			if (adapter->rx_ps_hdr_size) {
585				dma_unmap_single(&pdev->dev, buffer_info->dma,
586						 adapter->rx_ps_hdr_size,
587						 DMA_FROM_DEVICE);
588			} else {
589				dma_unmap_single(&pdev->dev, buffer_info->dma,
590						 adapter->rx_buffer_len,
591						 DMA_FROM_DEVICE);
592			}
593			buffer_info->dma = 0;
594		}
595
596		if (buffer_info->skb) {
597			dev_kfree_skb(buffer_info->skb);
598			buffer_info->skb = NULL;
599		}
600
601		if (buffer_info->page) {
602			if (buffer_info->page_dma)
603				dma_unmap_page(&pdev->dev,
604					       buffer_info->page_dma,
605					       PAGE_SIZE / 2,
606					       DMA_FROM_DEVICE);
607			put_page(buffer_info->page);
608			buffer_info->page = NULL;
609			buffer_info->page_dma = 0;
610			buffer_info->page_offset = 0;
611		}
612	}
613
614	size = sizeof(struct igbvf_buffer) * rx_ring->count;
615	memset(rx_ring->buffer_info, 0, size);
616
617	/* Zero out the descriptor ring */
618	memset(rx_ring->desc, 0, rx_ring->size);
619
620	rx_ring->next_to_clean = 0;
621	rx_ring->next_to_use = 0;
622
623	writel(0, adapter->hw.hw_addr + rx_ring->head);
624	writel(0, adapter->hw.hw_addr + rx_ring->tail);
625}
626
627/**
628 * igbvf_free_rx_resources - Free Rx Resources
629 * @rx_ring: ring to clean the resources from
630 *
631 * Free all receive software resources
632 **/
633
634void igbvf_free_rx_resources(struct igbvf_ring *rx_ring)
635{
636	struct pci_dev *pdev = rx_ring->adapter->pdev;
637
638	igbvf_clean_rx_ring(rx_ring);
639
640	vfree(rx_ring->buffer_info);
641	rx_ring->buffer_info = NULL;
642
643	dma_free_coherent(&pdev->dev, rx_ring->size, rx_ring->desc,
644			  rx_ring->dma);
645	rx_ring->desc = NULL;
646}
647
648/**
649 * igbvf_update_itr - update the dynamic ITR value based on statistics
650 * @adapter: pointer to adapter
651 * @itr_setting: current adapter->itr
652 * @packets: the number of packets during this measurement interval
653 * @bytes: the number of bytes during this measurement interval
654 *
655 * Stores a new ITR value based on packets and byte counts during the last
656 * interrupt.  The advantage of per interrupt computation is faster updates
657 * and more accurate ITR for the current traffic pattern.  Constants in this
658 * function were computed based on theoretical maximum wire speed and thresholds
659 * were set based on testing data as well as attempting to minimize response
660 * time while increasing bulk throughput.
661 **/
662static enum latency_range igbvf_update_itr(struct igbvf_adapter *adapter,
663					   enum latency_range itr_setting,
664					   int packets, int bytes)
665{
666	enum latency_range retval = itr_setting;
667
668	if (packets == 0)
669		goto update_itr_done;
670
671	switch (itr_setting) {
672	case lowest_latency:
673		/* handle TSO and jumbo frames */
674		if (bytes/packets > 8000)
675			retval = bulk_latency;
676		else if ((packets < 5) && (bytes > 512))
677			retval = low_latency;
678		break;
679	case low_latency:  /* 50 usec aka 20000 ints/s */
680		if (bytes > 10000) {
681			/* this if handles the TSO accounting */
682			if (bytes/packets > 8000)
683				retval = bulk_latency;
684			else if ((packets < 10) || ((bytes/packets) > 1200))
685				retval = bulk_latency;
686			else if ((packets > 35))
687				retval = lowest_latency;
688		} else if (bytes/packets > 2000) {
689			retval = bulk_latency;
690		} else if (packets <= 2 && bytes < 512) {
691			retval = lowest_latency;
692		}
693		break;
694	case bulk_latency: /* 250 usec aka 4000 ints/s */
695		if (bytes > 25000) {
696			if (packets > 35)
697				retval = low_latency;
698		} else if (bytes < 6000) {
699			retval = low_latency;
700		}
701		break;
702	default:
703		break;
704	}
705
706update_itr_done:
707	return retval;
708}
709
710static int igbvf_range_to_itr(enum latency_range current_range)
711{
712	int new_itr;
713
714	switch (current_range) {
715	/* counts and packets in update_itr are dependent on these numbers */
716	case lowest_latency:
717		new_itr = IGBVF_70K_ITR;
718		break;
719	case low_latency:
720		new_itr = IGBVF_20K_ITR;
721		break;
722	case bulk_latency:
723		new_itr = IGBVF_4K_ITR;
724		break;
725	default:
726		new_itr = IGBVF_START_ITR;
727		break;
728	}
729	return new_itr;
730}
731
732static void igbvf_set_itr(struct igbvf_adapter *adapter)
733{
734	u32 new_itr;
735
736	adapter->tx_ring->itr_range =
737			igbvf_update_itr(adapter,
738					 adapter->tx_ring->itr_val,
739					 adapter->total_tx_packets,
740					 adapter->total_tx_bytes);
741
742	/* conservative mode (itr 3) eliminates the lowest_latency setting */
743	if (adapter->requested_itr == 3 &&
744	    adapter->tx_ring->itr_range == lowest_latency)
745		adapter->tx_ring->itr_range = low_latency;
746
747	new_itr = igbvf_range_to_itr(adapter->tx_ring->itr_range);
748
749	if (new_itr != adapter->tx_ring->itr_val) {
750		u32 current_itr = adapter->tx_ring->itr_val;
751		/* this attempts to bias the interrupt rate towards Bulk
752		 * by adding intermediate steps when interrupt rate is
753		 * increasing
754		 */
755		new_itr = new_itr > current_itr ?
756			  min(current_itr + (new_itr >> 2), new_itr) :
757			  new_itr;
758		adapter->tx_ring->itr_val = new_itr;
759
760		adapter->tx_ring->set_itr = 1;
761	}
762
763	adapter->rx_ring->itr_range =
764			igbvf_update_itr(adapter, adapter->rx_ring->itr_val,
765					 adapter->total_rx_packets,
766					 adapter->total_rx_bytes);
767	if (adapter->requested_itr == 3 &&
768	    adapter->rx_ring->itr_range == lowest_latency)
769		adapter->rx_ring->itr_range = low_latency;
770
771	new_itr = igbvf_range_to_itr(adapter->rx_ring->itr_range);
772
773	if (new_itr != adapter->rx_ring->itr_val) {
774		u32 current_itr = adapter->rx_ring->itr_val;
775
776		new_itr = new_itr > current_itr ?
777			  min(current_itr + (new_itr >> 2), new_itr) :
778			  new_itr;
779		adapter->rx_ring->itr_val = new_itr;
780
781		adapter->rx_ring->set_itr = 1;
782	}
783}
784
785/**
786 * igbvf_clean_tx_irq - Reclaim resources after transmit completes
787 * @adapter: board private structure
788 *
789 * returns true if ring is completely cleaned
790 **/
791static bool igbvf_clean_tx_irq(struct igbvf_ring *tx_ring)
792{
793	struct igbvf_adapter *adapter = tx_ring->adapter;
794	struct net_device *netdev = adapter->netdev;
795	struct igbvf_buffer *buffer_info;
796	struct sk_buff *skb;
797	union e1000_adv_tx_desc *tx_desc, *eop_desc;
798	unsigned int total_bytes = 0, total_packets = 0;
799	unsigned int i, count = 0;
800	bool cleaned = false;
801
802	i = tx_ring->next_to_clean;
803	buffer_info = &tx_ring->buffer_info[i];
804	eop_desc = buffer_info->next_to_watch;
805
806	do {
807		/* if next_to_watch is not set then there is no work pending */
808		if (!eop_desc)
809			break;
810
811		/* prevent any other reads prior to eop_desc */
812		read_barrier_depends();
813
814		/* if DD is not set pending work has not been completed */
815		if (!(eop_desc->wb.status & cpu_to_le32(E1000_TXD_STAT_DD)))
816			break;
817
818		/* clear next_to_watch to prevent false hangs */
819		buffer_info->next_to_watch = NULL;
820
821		for (cleaned = false; !cleaned; count++) {
822			tx_desc = IGBVF_TX_DESC_ADV(*tx_ring, i);
823			cleaned = (tx_desc == eop_desc);
824			skb = buffer_info->skb;
825
826			if (skb) {
827				unsigned int segs, bytecount;
828
829				/* gso_segs is currently only valid for tcp */
830				segs = skb_shinfo(skb)->gso_segs ?: 1;
831				/* multiply data chunks by size of headers */
832				bytecount = ((segs - 1) * skb_headlen(skb)) +
833					    skb->len;
834				total_packets += segs;
835				total_bytes += bytecount;
836			}
837
838			igbvf_put_txbuf(adapter, buffer_info);
839			tx_desc->wb.status = 0;
840
841			i++;
842			if (i == tx_ring->count)
843				i = 0;
844
845			buffer_info = &tx_ring->buffer_info[i];
846		}
847
848		eop_desc = buffer_info->next_to_watch;
849	} while (count < tx_ring->count);
850
851	tx_ring->next_to_clean = i;
852
853	if (unlikely(count && netif_carrier_ok(netdev) &&
854	    igbvf_desc_unused(tx_ring) >= IGBVF_TX_QUEUE_WAKE)) {
855		/* Make sure that anybody stopping the queue after this
856		 * sees the new next_to_clean.
857		 */
858		smp_mb();
859		if (netif_queue_stopped(netdev) &&
860		    !(test_bit(__IGBVF_DOWN, &adapter->state))) {
861			netif_wake_queue(netdev);
862			++adapter->restart_queue;
863		}
864	}
865
866	adapter->net_stats.tx_bytes += total_bytes;
867	adapter->net_stats.tx_packets += total_packets;
868	return count < tx_ring->count;
869}
870
871static irqreturn_t igbvf_msix_other(int irq, void *data)
872{
873	struct net_device *netdev = data;
874	struct igbvf_adapter *adapter = netdev_priv(netdev);
875	struct e1000_hw *hw = &adapter->hw;
876
877	adapter->int_counter1++;
878
879	netif_carrier_off(netdev);
880	hw->mac.get_link_status = 1;
881	if (!test_bit(__IGBVF_DOWN, &adapter->state))
882		mod_timer(&adapter->watchdog_timer, jiffies + 1);
883
884	ew32(EIMS, adapter->eims_other);
885
886	return IRQ_HANDLED;
887}
888
889static irqreturn_t igbvf_intr_msix_tx(int irq, void *data)
890{
891	struct net_device *netdev = data;
892	struct igbvf_adapter *adapter = netdev_priv(netdev);
893	struct e1000_hw *hw = &adapter->hw;
894	struct igbvf_ring *tx_ring = adapter->tx_ring;
895
896	if (tx_ring->set_itr) {
897		writel(tx_ring->itr_val,
898		       adapter->hw.hw_addr + tx_ring->itr_register);
899		adapter->tx_ring->set_itr = 0;
900	}
901
902	adapter->total_tx_bytes = 0;
903	adapter->total_tx_packets = 0;
904
905	/* auto mask will automatically re-enable the interrupt when we write
906	 * EICS
907	 */
908	if (!igbvf_clean_tx_irq(tx_ring))
909		/* Ring was not completely cleaned, so fire another interrupt */
910		ew32(EICS, tx_ring->eims_value);
911	else
912		ew32(EIMS, tx_ring->eims_value);
913
914	return IRQ_HANDLED;
915}
916
917static irqreturn_t igbvf_intr_msix_rx(int irq, void *data)
918{
919	struct net_device *netdev = data;
920	struct igbvf_adapter *adapter = netdev_priv(netdev);
921
922	adapter->int_counter0++;
923
924	/* Write the ITR value calculated at the end of the
925	 * previous interrupt.
926	 */
927	if (adapter->rx_ring->set_itr) {
928		writel(adapter->rx_ring->itr_val,
929		       adapter->hw.hw_addr + adapter->rx_ring->itr_register);
930		adapter->rx_ring->set_itr = 0;
931	}
932
933	if (napi_schedule_prep(&adapter->rx_ring->napi)) {
934		adapter->total_rx_bytes = 0;
935		adapter->total_rx_packets = 0;
936		__napi_schedule(&adapter->rx_ring->napi);
937	}
938
939	return IRQ_HANDLED;
940}
941
942#define IGBVF_NO_QUEUE -1
943
944static void igbvf_assign_vector(struct igbvf_adapter *adapter, int rx_queue,
945				int tx_queue, int msix_vector)
946{
947	struct e1000_hw *hw = &adapter->hw;
948	u32 ivar, index;
949
950	/* 82576 uses a table-based method for assigning vectors.
951	 * Each queue has a single entry in the table to which we write
952	 * a vector number along with a "valid" bit.  Sadly, the layout
953	 * of the table is somewhat counterintuitive.
954	 */
955	if (rx_queue > IGBVF_NO_QUEUE) {
956		index = (rx_queue >> 1);
957		ivar = array_er32(IVAR0, index);
958		if (rx_queue & 0x1) {
959			/* vector goes into third byte of register */
960			ivar = ivar & 0xFF00FFFF;
961			ivar |= (msix_vector | E1000_IVAR_VALID) << 16;
962		} else {
963			/* vector goes into low byte of register */
964			ivar = ivar & 0xFFFFFF00;
965			ivar |= msix_vector | E1000_IVAR_VALID;
966		}
967		adapter->rx_ring[rx_queue].eims_value = 1 << msix_vector;
968		array_ew32(IVAR0, index, ivar);
969	}
970	if (tx_queue > IGBVF_NO_QUEUE) {
971		index = (tx_queue >> 1);
972		ivar = array_er32(IVAR0, index);
973		if (tx_queue & 0x1) {
974			/* vector goes into high byte of register */
975			ivar = ivar & 0x00FFFFFF;
976			ivar |= (msix_vector | E1000_IVAR_VALID) << 24;
977		} else {
978			/* vector goes into second byte of register */
979			ivar = ivar & 0xFFFF00FF;
980			ivar |= (msix_vector | E1000_IVAR_VALID) << 8;
981		}
982		adapter->tx_ring[tx_queue].eims_value = 1 << msix_vector;
983		array_ew32(IVAR0, index, ivar);
984	}
985}
986
987/**
988 * igbvf_configure_msix - Configure MSI-X hardware
989 * @adapter: board private structure
990 *
991 * igbvf_configure_msix sets up the hardware to properly
992 * generate MSI-X interrupts.
993 **/
994static void igbvf_configure_msix(struct igbvf_adapter *adapter)
995{
996	u32 tmp;
997	struct e1000_hw *hw = &adapter->hw;
998	struct igbvf_ring *tx_ring = adapter->tx_ring;
999	struct igbvf_ring *rx_ring = adapter->rx_ring;
1000	int vector = 0;
1001
1002	adapter->eims_enable_mask = 0;
1003
1004	igbvf_assign_vector(adapter, IGBVF_NO_QUEUE, 0, vector++);
1005	adapter->eims_enable_mask |= tx_ring->eims_value;
1006	writel(tx_ring->itr_val, hw->hw_addr + tx_ring->itr_register);
1007	igbvf_assign_vector(adapter, 0, IGBVF_NO_QUEUE, vector++);
1008	adapter->eims_enable_mask |= rx_ring->eims_value;
1009	writel(rx_ring->itr_val, hw->hw_addr + rx_ring->itr_register);
1010
1011	/* set vector for other causes, i.e. link changes */
1012
1013	tmp = (vector++ | E1000_IVAR_VALID);
1014
1015	ew32(IVAR_MISC, tmp);
1016
1017	adapter->eims_enable_mask = (1 << (vector)) - 1;
1018	adapter->eims_other = 1 << (vector - 1);
1019	e1e_flush();
1020}
1021
1022static void igbvf_reset_interrupt_capability(struct igbvf_adapter *adapter)
1023{
1024	if (adapter->msix_entries) {
1025		pci_disable_msix(adapter->pdev);
1026		kfree(adapter->msix_entries);
1027		adapter->msix_entries = NULL;
1028	}
1029}
1030
1031/**
1032 * igbvf_set_interrupt_capability - set MSI or MSI-X if supported
1033 * @adapter: board private structure
1034 *
1035 * Attempt to configure interrupts using the best available
1036 * capabilities of the hardware and kernel.
1037 **/
1038static void igbvf_set_interrupt_capability(struct igbvf_adapter *adapter)
1039{
1040	int err = -ENOMEM;
1041	int i;
1042
1043	/* we allocate 3 vectors, 1 for Tx, 1 for Rx, one for PF messages */
1044	adapter->msix_entries = kcalloc(3, sizeof(struct msix_entry),
1045					GFP_KERNEL);
1046	if (adapter->msix_entries) {
1047		for (i = 0; i < 3; i++)
1048			adapter->msix_entries[i].entry = i;
1049
1050		err = pci_enable_msix_range(adapter->pdev,
1051					    adapter->msix_entries, 3, 3);
1052	}
1053
1054	if (err < 0) {
1055		/* MSI-X failed */
1056		dev_err(&adapter->pdev->dev,
1057			"Failed to initialize MSI-X interrupts.\n");
1058		igbvf_reset_interrupt_capability(adapter);
1059	}
1060}
1061
1062/**
1063 * igbvf_request_msix - Initialize MSI-X interrupts
1064 * @adapter: board private structure
1065 *
1066 * igbvf_request_msix allocates MSI-X vectors and requests interrupts from the
1067 * kernel.
1068 **/
1069static int igbvf_request_msix(struct igbvf_adapter *adapter)
1070{
1071	struct net_device *netdev = adapter->netdev;
1072	int err = 0, vector = 0;
1073
1074	if (strlen(netdev->name) < (IFNAMSIZ - 5)) {
1075		sprintf(adapter->tx_ring->name, "%s-tx-0", netdev->name);
1076		sprintf(adapter->rx_ring->name, "%s-rx-0", netdev->name);
1077	} else {
1078		memcpy(adapter->tx_ring->name, netdev->name, IFNAMSIZ);
1079		memcpy(adapter->rx_ring->name, netdev->name, IFNAMSIZ);
1080	}
1081
1082	err = request_irq(adapter->msix_entries[vector].vector,
1083			  igbvf_intr_msix_tx, 0, adapter->tx_ring->name,
1084			  netdev);
1085	if (err)
1086		goto out;
1087
1088	adapter->tx_ring->itr_register = E1000_EITR(vector);
1089	adapter->tx_ring->itr_val = adapter->current_itr;
1090	vector++;
1091
1092	err = request_irq(adapter->msix_entries[vector].vector,
1093			  igbvf_intr_msix_rx, 0, adapter->rx_ring->name,
1094			  netdev);
1095	if (err)
1096		goto out;
1097
1098	adapter->rx_ring->itr_register = E1000_EITR(vector);
1099	adapter->rx_ring->itr_val = adapter->current_itr;
1100	vector++;
1101
1102	err = request_irq(adapter->msix_entries[vector].vector,
1103			  igbvf_msix_other, 0, netdev->name, netdev);
1104	if (err)
1105		goto out;
1106
1107	igbvf_configure_msix(adapter);
1108	return 0;
1109out:
1110	return err;
1111}
1112
1113/**
1114 * igbvf_alloc_queues - Allocate memory for all rings
1115 * @adapter: board private structure to initialize
1116 **/
1117static int igbvf_alloc_queues(struct igbvf_adapter *adapter)
1118{
1119	struct net_device *netdev = adapter->netdev;
1120
1121	adapter->tx_ring = kzalloc(sizeof(struct igbvf_ring), GFP_KERNEL);
1122	if (!adapter->tx_ring)
1123		return -ENOMEM;
1124
1125	adapter->rx_ring = kzalloc(sizeof(struct igbvf_ring), GFP_KERNEL);
1126	if (!adapter->rx_ring) {
1127		kfree(adapter->tx_ring);
1128		return -ENOMEM;
1129	}
1130
1131	netif_napi_add(netdev, &adapter->rx_ring->napi, igbvf_poll, 64);
1132
1133	return 0;
1134}
1135
1136/**
1137 * igbvf_request_irq - initialize interrupts
1138 * @adapter: board private structure
1139 *
1140 * Attempts to configure interrupts using the best available
1141 * capabilities of the hardware and kernel.
1142 **/
1143static int igbvf_request_irq(struct igbvf_adapter *adapter)
1144{
1145	int err = -1;
1146
1147	/* igbvf supports msi-x only */
1148	if (adapter->msix_entries)
1149		err = igbvf_request_msix(adapter);
1150
1151	if (!err)
1152		return err;
1153
1154	dev_err(&adapter->pdev->dev,
1155		"Unable to allocate interrupt, Error: %d\n", err);
1156
1157	return err;
1158}
1159
1160static void igbvf_free_irq(struct igbvf_adapter *adapter)
1161{
1162	struct net_device *netdev = adapter->netdev;
1163	int vector;
1164
1165	if (adapter->msix_entries) {
1166		for (vector = 0; vector < 3; vector++)
1167			free_irq(adapter->msix_entries[vector].vector, netdev);
1168	}
1169}
1170
1171/**
1172 * igbvf_irq_disable - Mask off interrupt generation on the NIC
1173 * @adapter: board private structure
1174 **/
1175static void igbvf_irq_disable(struct igbvf_adapter *adapter)
1176{
1177	struct e1000_hw *hw = &adapter->hw;
1178
1179	ew32(EIMC, ~0);
1180
1181	if (adapter->msix_entries)
1182		ew32(EIAC, 0);
1183}
1184
1185/**
1186 * igbvf_irq_enable - Enable default interrupt generation settings
1187 * @adapter: board private structure
1188 **/
1189static void igbvf_irq_enable(struct igbvf_adapter *adapter)
1190{
1191	struct e1000_hw *hw = &adapter->hw;
1192
1193	ew32(EIAC, adapter->eims_enable_mask);
1194	ew32(EIAM, adapter->eims_enable_mask);
1195	ew32(EIMS, adapter->eims_enable_mask);
1196}
1197
1198/**
1199 * igbvf_poll - NAPI Rx polling callback
1200 * @napi: struct associated with this polling callback
1201 * @budget: amount of packets driver is allowed to process this poll
1202 **/
1203static int igbvf_poll(struct napi_struct *napi, int budget)
1204{
1205	struct igbvf_ring *rx_ring = container_of(napi, struct igbvf_ring, napi);
1206	struct igbvf_adapter *adapter = rx_ring->adapter;
1207	struct e1000_hw *hw = &adapter->hw;
1208	int work_done = 0;
1209
1210	igbvf_clean_rx_irq(adapter, &work_done, budget);
1211
1212	/* If not enough Rx work done, exit the polling mode */
1213	if (work_done < budget) {
1214		napi_complete_done(napi, work_done);
1215
1216		if (adapter->requested_itr & 3)
1217			igbvf_set_itr(adapter);
1218
1219		if (!test_bit(__IGBVF_DOWN, &adapter->state))
1220			ew32(EIMS, adapter->rx_ring->eims_value);
1221	}
1222
1223	return work_done;
1224}
1225
1226/**
1227 * igbvf_set_rlpml - set receive large packet maximum length
1228 * @adapter: board private structure
1229 *
1230 * Configure the maximum size of packets that will be received
1231 */
1232static void igbvf_set_rlpml(struct igbvf_adapter *adapter)
1233{
1234	int max_frame_size;
1235	struct e1000_hw *hw = &adapter->hw;
1236
1237	max_frame_size = adapter->max_frame_size + VLAN_TAG_SIZE;
1238	e1000_rlpml_set_vf(hw, max_frame_size);
1239}
1240
1241static int igbvf_vlan_rx_add_vid(struct net_device *netdev,
1242				 __be16 proto, u16 vid)
1243{
1244	struct igbvf_adapter *adapter = netdev_priv(netdev);
1245	struct e1000_hw *hw = &adapter->hw;
1246
1247	if (hw->mac.ops.set_vfta(hw, vid, true)) {
1248		dev_err(&adapter->pdev->dev, "Failed to add vlan id %d\n", vid);
1249		return -EINVAL;
1250	}
1251	set_bit(vid, adapter->active_vlans);
1252	return 0;
1253}
1254
1255static int igbvf_vlan_rx_kill_vid(struct net_device *netdev,
1256				  __be16 proto, u16 vid)
1257{
1258	struct igbvf_adapter *adapter = netdev_priv(netdev);
1259	struct e1000_hw *hw = &adapter->hw;
1260
1261	if (hw->mac.ops.set_vfta(hw, vid, false)) {
1262		dev_err(&adapter->pdev->dev,
1263			"Failed to remove vlan id %d\n", vid);
1264		return -EINVAL;
1265	}
1266	clear_bit(vid, adapter->active_vlans);
1267	return 0;
1268}
1269
1270static void igbvf_restore_vlan(struct igbvf_adapter *adapter)
1271{
1272	u16 vid;
1273
1274	for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID)
1275		igbvf_vlan_rx_add_vid(adapter->netdev, htons(ETH_P_8021Q), vid);
1276}
1277
1278/**
1279 * igbvf_configure_tx - Configure Transmit Unit after Reset
1280 * @adapter: board private structure
1281 *
1282 * Configure the Tx unit of the MAC after a reset.
1283 **/
1284static void igbvf_configure_tx(struct igbvf_adapter *adapter)
1285{
1286	struct e1000_hw *hw = &adapter->hw;
1287	struct igbvf_ring *tx_ring = adapter->tx_ring;
1288	u64 tdba;
1289	u32 txdctl, dca_txctrl;
1290
1291	/* disable transmits */
1292	txdctl = er32(TXDCTL(0));
1293	ew32(TXDCTL(0), txdctl & ~E1000_TXDCTL_QUEUE_ENABLE);
1294	e1e_flush();
1295	msleep(10);
1296
1297	/* Setup the HW Tx Head and Tail descriptor pointers */
1298	ew32(TDLEN(0), tx_ring->count * sizeof(union e1000_adv_tx_desc));
1299	tdba = tx_ring->dma;
1300	ew32(TDBAL(0), (tdba & DMA_BIT_MASK(32)));
1301	ew32(TDBAH(0), (tdba >> 32));
1302	ew32(TDH(0), 0);
1303	ew32(TDT(0), 0);
1304	tx_ring->head = E1000_TDH(0);
1305	tx_ring->tail = E1000_TDT(0);
1306
1307	/* Turn off Relaxed Ordering on head write-backs.  The writebacks
1308	 * MUST be delivered in order or it will completely screw up
1309	 * our bookkeeping.
1310	 */
1311	dca_txctrl = er32(DCA_TXCTRL(0));
1312	dca_txctrl &= ~E1000_DCA_TXCTRL_TX_WB_RO_EN;
1313	ew32(DCA_TXCTRL(0), dca_txctrl);
1314
1315	/* enable transmits */
1316	txdctl |= E1000_TXDCTL_QUEUE_ENABLE;
1317	ew32(TXDCTL(0), txdctl);
1318
1319	/* Setup Transmit Descriptor Settings for eop descriptor */
1320	adapter->txd_cmd = E1000_ADVTXD_DCMD_EOP | E1000_ADVTXD_DCMD_IFCS;
1321
1322	/* enable Report Status bit */
1323	adapter->txd_cmd |= E1000_ADVTXD_DCMD_RS;
1324}
1325
1326/**
1327 * igbvf_setup_srrctl - configure the receive control registers
1328 * @adapter: Board private structure
1329 **/
1330static void igbvf_setup_srrctl(struct igbvf_adapter *adapter)
1331{
1332	struct e1000_hw *hw = &adapter->hw;
1333	u32 srrctl = 0;
1334
1335	srrctl &= ~(E1000_SRRCTL_DESCTYPE_MASK |
1336		    E1000_SRRCTL_BSIZEHDR_MASK |
1337		    E1000_SRRCTL_BSIZEPKT_MASK);
1338
1339	/* Enable queue drop to avoid head of line blocking */
1340	srrctl |= E1000_SRRCTL_DROP_EN;
1341
1342	/* Setup buffer sizes */
1343	srrctl |= ALIGN(adapter->rx_buffer_len, 1024) >>
1344		  E1000_SRRCTL_BSIZEPKT_SHIFT;
1345
1346	if (adapter->rx_buffer_len < 2048) {
1347		adapter->rx_ps_hdr_size = 0;
1348		srrctl |= E1000_SRRCTL_DESCTYPE_ADV_ONEBUF;
1349	} else {
1350		adapter->rx_ps_hdr_size = 128;
1351		srrctl |= adapter->rx_ps_hdr_size <<
1352			  E1000_SRRCTL_BSIZEHDRSIZE_SHIFT;
1353		srrctl |= E1000_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS;
1354	}
1355
1356	ew32(SRRCTL(0), srrctl);
1357}
1358
1359/**
1360 * igbvf_configure_rx - Configure Receive Unit after Reset
1361 * @adapter: board private structure
1362 *
1363 * Configure the Rx unit of the MAC after a reset.
1364 **/
1365static void igbvf_configure_rx(struct igbvf_adapter *adapter)
1366{
1367	struct e1000_hw *hw = &adapter->hw;
1368	struct igbvf_ring *rx_ring = adapter->rx_ring;
1369	u64 rdba;
1370	u32 rdlen, rxdctl;
1371
1372	/* disable receives */
1373	rxdctl = er32(RXDCTL(0));
1374	ew32(RXDCTL(0), rxdctl & ~E1000_RXDCTL_QUEUE_ENABLE);
1375	e1e_flush();
1376	msleep(10);
1377
1378	rdlen = rx_ring->count * sizeof(union e1000_adv_rx_desc);
1379
1380	/* Setup the HW Rx Head and Tail Descriptor Pointers and
1381	 * the Base and Length of the Rx Descriptor Ring
1382	 */
1383	rdba = rx_ring->dma;
1384	ew32(RDBAL(0), (rdba & DMA_BIT_MASK(32)));
1385	ew32(RDBAH(0), (rdba >> 32));
1386	ew32(RDLEN(0), rx_ring->count * sizeof(union e1000_adv_rx_desc));
1387	rx_ring->head = E1000_RDH(0);
1388	rx_ring->tail = E1000_RDT(0);
1389	ew32(RDH(0), 0);
1390	ew32(RDT(0), 0);
1391
1392	rxdctl |= E1000_RXDCTL_QUEUE_ENABLE;
1393	rxdctl &= 0xFFF00000;
1394	rxdctl |= IGBVF_RX_PTHRESH;
1395	rxdctl |= IGBVF_RX_HTHRESH << 8;
1396	rxdctl |= IGBVF_RX_WTHRESH << 16;
1397
1398	igbvf_set_rlpml(adapter);
1399
1400	/* enable receives */
1401	ew32(RXDCTL(0), rxdctl);
1402}
1403
1404/**
1405 * igbvf_set_multi - Multicast and Promiscuous mode set
1406 * @netdev: network interface device structure
1407 *
1408 * The set_multi entry point is called whenever the multicast address
1409 * list or the network interface flags are updated.  This routine is
1410 * responsible for configuring the hardware for proper multicast,
1411 * promiscuous mode, and all-multi behavior.
1412 **/
1413static void igbvf_set_multi(struct net_device *netdev)
1414{
1415	struct igbvf_adapter *adapter = netdev_priv(netdev);
1416	struct e1000_hw *hw = &adapter->hw;
1417	struct netdev_hw_addr *ha;
1418	u8  *mta_list = NULL;
1419	int i;
1420
1421	if (!netdev_mc_empty(netdev)) {
1422		mta_list = kmalloc_array(netdev_mc_count(netdev), ETH_ALEN,
1423					 GFP_ATOMIC);
1424		if (!mta_list)
1425			return;
1426	}
1427
1428	/* prepare a packed array of only addresses. */
1429	i = 0;
1430	netdev_for_each_mc_addr(ha, netdev)
1431		memcpy(mta_list + (i++ * ETH_ALEN), ha->addr, ETH_ALEN);
1432
1433	hw->mac.ops.update_mc_addr_list(hw, mta_list, i, 0, 0);
1434	kfree(mta_list);
1435}
1436
1437/**
1438 * igbvf_configure - configure the hardware for Rx and Tx
1439 * @adapter: private board structure
1440 **/
1441static void igbvf_configure(struct igbvf_adapter *adapter)
1442{
1443	igbvf_set_multi(adapter->netdev);
1444
1445	igbvf_restore_vlan(adapter);
1446
1447	igbvf_configure_tx(adapter);
1448	igbvf_setup_srrctl(adapter);
1449	igbvf_configure_rx(adapter);
1450	igbvf_alloc_rx_buffers(adapter->rx_ring,
1451			       igbvf_desc_unused(adapter->rx_ring));
1452}
1453
1454/* igbvf_reset - bring the hardware into a known good state
1455 * @adapter: private board structure
1456 *
1457 * This function boots the hardware and enables some settings that
1458 * require a configuration cycle of the hardware - those cannot be
1459 * set/changed during runtime. After reset the device needs to be
1460 * properly configured for Rx, Tx etc.
1461 */
1462static void igbvf_reset(struct igbvf_adapter *adapter)
1463{
1464	struct e1000_mac_info *mac = &adapter->hw.mac;
1465	struct net_device *netdev = adapter->netdev;
1466	struct e1000_hw *hw = &adapter->hw;
1467
1468	/* Allow time for pending master requests to run */
1469	if (mac->ops.reset_hw(hw))
1470		dev_err(&adapter->pdev->dev, "PF still resetting\n");
1471
1472	mac->ops.init_hw(hw);
1473
1474	if (is_valid_ether_addr(adapter->hw.mac.addr)) {
1475		memcpy(netdev->dev_addr, adapter->hw.mac.addr,
1476		       netdev->addr_len);
1477		memcpy(netdev->perm_addr, adapter->hw.mac.addr,
1478		       netdev->addr_len);
1479	}
1480
1481	adapter->last_reset = jiffies;
1482}
1483
1484int igbvf_up(struct igbvf_adapter *adapter)
1485{
1486	struct e1000_hw *hw = &adapter->hw;
1487
1488	/* hardware has been reset, we need to reload some things */
1489	igbvf_configure(adapter);
1490
1491	clear_bit(__IGBVF_DOWN, &adapter->state);
1492
1493	napi_enable(&adapter->rx_ring->napi);
1494	if (adapter->msix_entries)
1495		igbvf_configure_msix(adapter);
1496
1497	/* Clear any pending interrupts. */
1498	er32(EICR);
1499	igbvf_irq_enable(adapter);
1500
1501	/* start the watchdog */
1502	hw->mac.get_link_status = 1;
1503	mod_timer(&adapter->watchdog_timer, jiffies + 1);
1504
1505	return 0;
1506}
1507
1508void igbvf_down(struct igbvf_adapter *adapter)
1509{
1510	struct net_device *netdev = adapter->netdev;
1511	struct e1000_hw *hw = &adapter->hw;
1512	u32 rxdctl, txdctl;
1513
1514	/* signal that we're down so the interrupt handler does not
1515	 * reschedule our watchdog timer
1516	 */
1517	set_bit(__IGBVF_DOWN, &adapter->state);
1518
1519	/* disable receives in the hardware */
1520	rxdctl = er32(RXDCTL(0));
1521	ew32(RXDCTL(0), rxdctl & ~E1000_RXDCTL_QUEUE_ENABLE);
1522
1523	netif_carrier_off(netdev);
1524	netif_stop_queue(netdev);
1525
1526	/* disable transmits in the hardware */
1527	txdctl = er32(TXDCTL(0));
1528	ew32(TXDCTL(0), txdctl & ~E1000_TXDCTL_QUEUE_ENABLE);
1529
1530	/* flush both disables and wait for them to finish */
1531	e1e_flush();
1532	msleep(10);
1533
1534	napi_disable(&adapter->rx_ring->napi);
1535
1536	igbvf_irq_disable(adapter);
1537
1538	del_timer_sync(&adapter->watchdog_timer);
1539
1540	/* record the stats before reset*/
1541	igbvf_update_stats(adapter);
1542
1543	adapter->link_speed = 0;
1544	adapter->link_duplex = 0;
1545
1546	igbvf_reset(adapter);
1547	igbvf_clean_tx_ring(adapter->tx_ring);
1548	igbvf_clean_rx_ring(adapter->rx_ring);
1549}
1550
1551void igbvf_reinit_locked(struct igbvf_adapter *adapter)
1552{
1553	might_sleep();
1554	while (test_and_set_bit(__IGBVF_RESETTING, &adapter->state))
1555		usleep_range(1000, 2000);
1556	igbvf_down(adapter);
1557	igbvf_up(adapter);
1558	clear_bit(__IGBVF_RESETTING, &adapter->state);
1559}
1560
1561/**
1562 * igbvf_sw_init - Initialize general software structures (struct igbvf_adapter)
1563 * @adapter: board private structure to initialize
1564 *
1565 * igbvf_sw_init initializes the Adapter private data structure.
1566 * Fields are initialized based on PCI device information and
1567 * OS network device settings (MTU size).
1568 **/
1569static int igbvf_sw_init(struct igbvf_adapter *adapter)
1570{
1571	struct net_device *netdev = adapter->netdev;
1572	s32 rc;
1573
1574	adapter->rx_buffer_len = ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN;
1575	adapter->rx_ps_hdr_size = 0;
1576	adapter->max_frame_size = netdev->mtu + ETH_HLEN + ETH_FCS_LEN;
1577	adapter->min_frame_size = ETH_ZLEN + ETH_FCS_LEN;
1578
1579	adapter->tx_int_delay = 8;
1580	adapter->tx_abs_int_delay = 32;
1581	adapter->rx_int_delay = 0;
1582	adapter->rx_abs_int_delay = 8;
1583	adapter->requested_itr = 3;
1584	adapter->current_itr = IGBVF_START_ITR;
1585
1586	/* Set various function pointers */
1587	adapter->ei->init_ops(&adapter->hw);
1588
1589	rc = adapter->hw.mac.ops.init_params(&adapter->hw);
1590	if (rc)
1591		return rc;
1592
1593	rc = adapter->hw.mbx.ops.init_params(&adapter->hw);
1594	if (rc)
1595		return rc;
1596
1597	igbvf_set_interrupt_capability(adapter);
1598
1599	if (igbvf_alloc_queues(adapter))
1600		return -ENOMEM;
1601
1602	spin_lock_init(&adapter->tx_queue_lock);
1603
1604	/* Explicitly disable IRQ since the NIC can be in any state. */
1605	igbvf_irq_disable(adapter);
1606
1607	spin_lock_init(&adapter->stats_lock);
1608
1609	set_bit(__IGBVF_DOWN, &adapter->state);
1610	return 0;
1611}
1612
1613static void igbvf_initialize_last_counter_stats(struct igbvf_adapter *adapter)
1614{
1615	struct e1000_hw *hw = &adapter->hw;
1616
1617	adapter->stats.last_gprc = er32(VFGPRC);
1618	adapter->stats.last_gorc = er32(VFGORC);
1619	adapter->stats.last_gptc = er32(VFGPTC);
1620	adapter->stats.last_gotc = er32(VFGOTC);
1621	adapter->stats.last_mprc = er32(VFMPRC);
1622	adapter->stats.last_gotlbc = er32(VFGOTLBC);
1623	adapter->stats.last_gptlbc = er32(VFGPTLBC);
1624	adapter->stats.last_gorlbc = er32(VFGORLBC);
1625	adapter->stats.last_gprlbc = er32(VFGPRLBC);
1626
1627	adapter->stats.base_gprc = er32(VFGPRC);
1628	adapter->stats.base_gorc = er32(VFGORC);
1629	adapter->stats.base_gptc = er32(VFGPTC);
1630	adapter->stats.base_gotc = er32(VFGOTC);
1631	adapter->stats.base_mprc = er32(VFMPRC);
1632	adapter->stats.base_gotlbc = er32(VFGOTLBC);
1633	adapter->stats.base_gptlbc = er32(VFGPTLBC);
1634	adapter->stats.base_gorlbc = er32(VFGORLBC);
1635	adapter->stats.base_gprlbc = er32(VFGPRLBC);
1636}
1637
1638/**
1639 * igbvf_open - Called when a network interface is made active
1640 * @netdev: network interface device structure
1641 *
1642 * Returns 0 on success, negative value on failure
1643 *
1644 * The open entry point is called when a network interface is made
1645 * active by the system (IFF_UP).  At this point all resources needed
1646 * for transmit and receive operations are allocated, the interrupt
1647 * handler is registered with the OS, the watchdog timer is started,
1648 * and the stack is notified that the interface is ready.
1649 **/
1650static int igbvf_open(struct net_device *netdev)
1651{
1652	struct igbvf_adapter *adapter = netdev_priv(netdev);
1653	struct e1000_hw *hw = &adapter->hw;
1654	int err;
1655
1656	/* disallow open during test */
1657	if (test_bit(__IGBVF_TESTING, &adapter->state))
1658		return -EBUSY;
1659
1660	/* allocate transmit descriptors */
1661	err = igbvf_setup_tx_resources(adapter, adapter->tx_ring);
1662	if (err)
1663		goto err_setup_tx;
1664
1665	/* allocate receive descriptors */
1666	err = igbvf_setup_rx_resources(adapter, adapter->rx_ring);
1667	if (err)
1668		goto err_setup_rx;
1669
1670	/* before we allocate an interrupt, we must be ready to handle it.
1671	 * Setting DEBUG_SHIRQ in the kernel makes it fire an interrupt
1672	 * as soon as we call pci_request_irq, so we have to setup our
1673	 * clean_rx handler before we do so.
1674	 */
1675	igbvf_configure(adapter);
1676
1677	err = igbvf_request_irq(adapter);
1678	if (err)
1679		goto err_req_irq;
1680
1681	/* From here on the code is the same as igbvf_up() */
1682	clear_bit(__IGBVF_DOWN, &adapter->state);
1683
1684	napi_enable(&adapter->rx_ring->napi);
1685
1686	/* clear any pending interrupts */
1687	er32(EICR);
1688
1689	igbvf_irq_enable(adapter);
1690
1691	/* start the watchdog */
1692	hw->mac.get_link_status = 1;
1693	mod_timer(&adapter->watchdog_timer, jiffies + 1);
1694
1695	return 0;
1696
1697err_req_irq:
1698	igbvf_free_rx_resources(adapter->rx_ring);
1699err_setup_rx:
1700	igbvf_free_tx_resources(adapter->tx_ring);
1701err_setup_tx:
1702	igbvf_reset(adapter);
1703
1704	return err;
1705}
1706
1707/**
1708 * igbvf_close - Disables a network interface
1709 * @netdev: network interface device structure
1710 *
1711 * Returns 0, this is not allowed to fail
1712 *
1713 * The close entry point is called when an interface is de-activated
1714 * by the OS.  The hardware is still under the drivers control, but
1715 * needs to be disabled.  A global MAC reset is issued to stop the
1716 * hardware, and all transmit and receive resources are freed.
1717 **/
1718static int igbvf_close(struct net_device *netdev)
1719{
1720	struct igbvf_adapter *adapter = netdev_priv(netdev);
1721
1722	WARN_ON(test_bit(__IGBVF_RESETTING, &adapter->state));
1723	igbvf_down(adapter);
1724
1725	igbvf_free_irq(adapter);
1726
1727	igbvf_free_tx_resources(adapter->tx_ring);
1728	igbvf_free_rx_resources(adapter->rx_ring);
1729
1730	return 0;
1731}
1732
1733/**
1734 * igbvf_set_mac - Change the Ethernet Address of the NIC
1735 * @netdev: network interface device structure
1736 * @p: pointer to an address structure
1737 *
1738 * Returns 0 on success, negative on failure
1739 **/
1740static int igbvf_set_mac(struct net_device *netdev, void *p)
1741{
1742	struct igbvf_adapter *adapter = netdev_priv(netdev);
1743	struct e1000_hw *hw = &adapter->hw;
1744	struct sockaddr *addr = p;
1745
1746	if (!is_valid_ether_addr(addr->sa_data))
1747		return -EADDRNOTAVAIL;
1748
1749	memcpy(hw->mac.addr, addr->sa_data, netdev->addr_len);
1750
1751	hw->mac.ops.rar_set(hw, hw->mac.addr, 0);
1752
1753	if (!ether_addr_equal(addr->sa_data, hw->mac.addr))
1754		return -EADDRNOTAVAIL;
1755
1756	memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
1757
1758	return 0;
1759}
1760
1761#define UPDATE_VF_COUNTER(reg, name) \
1762{ \
1763	u32 current_counter = er32(reg); \
1764	if (current_counter < adapter->stats.last_##name) \
1765		adapter->stats.name += 0x100000000LL; \
1766	adapter->stats.last_##name = current_counter; \
1767	adapter->stats.name &= 0xFFFFFFFF00000000LL; \
1768	adapter->stats.name |= current_counter; \
1769}
1770
1771/**
1772 * igbvf_update_stats - Update the board statistics counters
1773 * @adapter: board private structure
1774**/
1775void igbvf_update_stats(struct igbvf_adapter *adapter)
1776{
1777	struct e1000_hw *hw = &adapter->hw;
1778	struct pci_dev *pdev = adapter->pdev;
1779
1780	/* Prevent stats update while adapter is being reset, link is down
1781	 * or if the pci connection is down.
1782	 */
1783	if (adapter->link_speed == 0)
1784		return;
1785
1786	if (test_bit(__IGBVF_RESETTING, &adapter->state))
1787		return;
1788
1789	if (pci_channel_offline(pdev))
1790		return;
1791
1792	UPDATE_VF_COUNTER(VFGPRC, gprc);
1793	UPDATE_VF_COUNTER(VFGORC, gorc);
1794	UPDATE_VF_COUNTER(VFGPTC, gptc);
1795	UPDATE_VF_COUNTER(VFGOTC, gotc);
1796	UPDATE_VF_COUNTER(VFMPRC, mprc);
1797	UPDATE_VF_COUNTER(VFGOTLBC, gotlbc);
1798	UPDATE_VF_COUNTER(VFGPTLBC, gptlbc);
1799	UPDATE_VF_COUNTER(VFGORLBC, gorlbc);
1800	UPDATE_VF_COUNTER(VFGPRLBC, gprlbc);
1801
1802	/* Fill out the OS statistics structure */
1803	adapter->net_stats.multicast = adapter->stats.mprc;
1804}
1805
1806static void igbvf_print_link_info(struct igbvf_adapter *adapter)
1807{
1808	dev_info(&adapter->pdev->dev, "Link is Up %d Mbps %s Duplex\n",
1809		 adapter->link_speed,
1810		 adapter->link_duplex == FULL_DUPLEX ? "Full" : "Half");
1811}
1812
1813static bool igbvf_has_link(struct igbvf_adapter *adapter)
1814{
1815	struct e1000_hw *hw = &adapter->hw;
1816	s32 ret_val = E1000_SUCCESS;
1817	bool link_active;
1818
1819	/* If interface is down, stay link down */
1820	if (test_bit(__IGBVF_DOWN, &adapter->state))
1821		return false;
1822
1823	ret_val = hw->mac.ops.check_for_link(hw);
1824	link_active = !hw->mac.get_link_status;
1825
1826	/* if check for link returns error we will need to reset */
1827	if (ret_val && time_after(jiffies, adapter->last_reset + (10 * HZ)))
1828		schedule_work(&adapter->reset_task);
1829
1830	return link_active;
1831}
1832
1833/**
1834 * igbvf_watchdog - Timer Call-back
1835 * @data: pointer to adapter cast into an unsigned long
1836 **/
1837static void igbvf_watchdog(unsigned long data)
1838{
1839	struct igbvf_adapter *adapter = (struct igbvf_adapter *)data;
1840
1841	/* Do the rest outside of interrupt context */
1842	schedule_work(&adapter->watchdog_task);
1843}
1844
1845static void igbvf_watchdog_task(struct work_struct *work)
1846{
1847	struct igbvf_adapter *adapter = container_of(work,
1848						     struct igbvf_adapter,
1849						     watchdog_task);
1850	struct net_device *netdev = adapter->netdev;
1851	struct e1000_mac_info *mac = &adapter->hw.mac;
1852	struct igbvf_ring *tx_ring = adapter->tx_ring;
1853	struct e1000_hw *hw = &adapter->hw;
1854	u32 link;
1855	int tx_pending = 0;
1856
1857	link = igbvf_has_link(adapter);
1858
1859	if (link) {
1860		if (!netif_carrier_ok(netdev)) {
1861			mac->ops.get_link_up_info(&adapter->hw,
1862						  &adapter->link_speed,
1863						  &adapter->link_duplex);
1864			igbvf_print_link_info(adapter);
1865
1866			netif_carrier_on(netdev);
1867			netif_wake_queue(netdev);
1868		}
1869	} else {
1870		if (netif_carrier_ok(netdev)) {
1871			adapter->link_speed = 0;
1872			adapter->link_duplex = 0;
1873			dev_info(&adapter->pdev->dev, "Link is Down\n");
1874			netif_carrier_off(netdev);
1875			netif_stop_queue(netdev);
1876		}
1877	}
1878
1879	if (netif_carrier_ok(netdev)) {
1880		igbvf_update_stats(adapter);
1881	} else {
1882		tx_pending = (igbvf_desc_unused(tx_ring) + 1 <
1883			      tx_ring->count);
1884		if (tx_pending) {
1885			/* We've lost link, so the controller stops DMA,
1886			 * but we've got queued Tx work that's never going
1887			 * to get done, so reset controller to flush Tx.
1888			 * (Do the reset outside of interrupt context).
1889			 */
1890			adapter->tx_timeout_count++;
1891			schedule_work(&adapter->reset_task);
1892		}
1893	}
1894
1895	/* Cause software interrupt to ensure Rx ring is cleaned */
1896	ew32(EICS, adapter->rx_ring->eims_value);
1897
1898	/* Reset the timer */
1899	if (!test_bit(__IGBVF_DOWN, &adapter->state))
1900		mod_timer(&adapter->watchdog_timer,
1901			  round_jiffies(jiffies + (2 * HZ)));
1902}
1903
1904#define IGBVF_TX_FLAGS_CSUM		0x00000001
1905#define IGBVF_TX_FLAGS_VLAN		0x00000002
1906#define IGBVF_TX_FLAGS_TSO		0x00000004
1907#define IGBVF_TX_FLAGS_IPV4		0x00000008
1908#define IGBVF_TX_FLAGS_VLAN_MASK	0xffff0000
1909#define IGBVF_TX_FLAGS_VLAN_SHIFT	16
1910
1911static int igbvf_tso(struct igbvf_adapter *adapter,
1912		     struct igbvf_ring *tx_ring,
1913		     struct sk_buff *skb, u32 tx_flags, u8 *hdr_len,
1914		     __be16 protocol)
1915{
1916	struct e1000_adv_tx_context_desc *context_desc;
1917	struct igbvf_buffer *buffer_info;
1918	u32 info = 0, tu_cmd = 0;
1919	u32 mss_l4len_idx, l4len;
1920	unsigned int i;
1921	int err;
1922
1923	*hdr_len = 0;
1924
1925	err = skb_cow_head(skb, 0);
1926	if (err < 0) {
1927		dev_err(&adapter->pdev->dev, "igbvf_tso returning an error\n");
1928		return err;
1929	}
1930
1931	l4len = tcp_hdrlen(skb);
1932	*hdr_len += l4len;
1933
1934	if (protocol == htons(ETH_P_IP)) {
1935		struct iphdr *iph = ip_hdr(skb);
1936
1937		iph->tot_len = 0;
1938		iph->check = 0;
1939		tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr,
1940							 iph->daddr, 0,
1941							 IPPROTO_TCP,
1942							 0);
1943	} else if (skb_is_gso_v6(skb)) {
1944		ipv6_hdr(skb)->payload_len = 0;
1945		tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
1946						       &ipv6_hdr(skb)->daddr,
1947						       0, IPPROTO_TCP, 0);
1948	}
1949
1950	i = tx_ring->next_to_use;
1951
1952	buffer_info = &tx_ring->buffer_info[i];
1953	context_desc = IGBVF_TX_CTXTDESC_ADV(*tx_ring, i);
1954	/* VLAN MACLEN IPLEN */
1955	if (tx_flags & IGBVF_TX_FLAGS_VLAN)
1956		info |= (tx_flags & IGBVF_TX_FLAGS_VLAN_MASK);
1957	info |= (skb_network_offset(skb) << E1000_ADVTXD_MACLEN_SHIFT);
1958	*hdr_len += skb_network_offset(skb);
1959	info |= (skb_transport_header(skb) - skb_network_header(skb));
1960	*hdr_len += (skb_transport_header(skb) - skb_network_header(skb));
1961	context_desc->vlan_macip_lens = cpu_to_le32(info);
1962
1963	/* ADV DTYP TUCMD MKRLOC/ISCSIHEDLEN */
1964	tu_cmd |= (E1000_TXD_CMD_DEXT | E1000_ADVTXD_DTYP_CTXT);
1965
1966	if (protocol == htons(ETH_P_IP))
1967		tu_cmd |= E1000_ADVTXD_TUCMD_IPV4;
1968	tu_cmd |= E1000_ADVTXD_TUCMD_L4T_TCP;
1969
1970	context_desc->type_tucmd_mlhl = cpu_to_le32(tu_cmd);
1971
1972	/* MSS L4LEN IDX */
1973	mss_l4len_idx = (skb_shinfo(skb)->gso_size << E1000_ADVTXD_MSS_SHIFT);
1974	mss_l4len_idx |= (l4len << E1000_ADVTXD_L4LEN_SHIFT);
1975
1976	context_desc->mss_l4len_idx = cpu_to_le32(mss_l4len_idx);
1977	context_desc->seqnum_seed = 0;
1978
1979	buffer_info->time_stamp = jiffies;
1980	buffer_info->dma = 0;
1981	i++;
1982	if (i == tx_ring->count)
1983		i = 0;
1984
1985	tx_ring->next_to_use = i;
1986
1987	return true;
1988}
1989
1990static inline bool igbvf_tx_csum(struct igbvf_adapter *adapter,
1991				 struct igbvf_ring *tx_ring,
1992				 struct sk_buff *skb, u32 tx_flags,
1993				 __be16 protocol)
1994{
1995	struct e1000_adv_tx_context_desc *context_desc;
1996	unsigned int i;
1997	struct igbvf_buffer *buffer_info;
1998	u32 info = 0, tu_cmd = 0;
1999
2000	if ((skb->ip_summed == CHECKSUM_PARTIAL) ||
2001	    (tx_flags & IGBVF_TX_FLAGS_VLAN)) {
2002		i = tx_ring->next_to_use;
2003		buffer_info = &tx_ring->buffer_info[i];
2004		context_desc = IGBVF_TX_CTXTDESC_ADV(*tx_ring, i);
2005
2006		if (tx_flags & IGBVF_TX_FLAGS_VLAN)
2007			info |= (tx_flags & IGBVF_TX_FLAGS_VLAN_MASK);
2008
2009		info |= (skb_network_offset(skb) << E1000_ADVTXD_MACLEN_SHIFT);
2010		if (skb->ip_summed == CHECKSUM_PARTIAL)
2011			info |= (skb_transport_header(skb) -
2012				 skb_network_header(skb));
2013
2014		context_desc->vlan_macip_lens = cpu_to_le32(info);
2015
2016		tu_cmd |= (E1000_TXD_CMD_DEXT | E1000_ADVTXD_DTYP_CTXT);
2017
2018		if (skb->ip_summed == CHECKSUM_PARTIAL) {
2019			switch (protocol) {
2020			case htons(ETH_P_IP):
2021				tu_cmd |= E1000_ADVTXD_TUCMD_IPV4;
2022				if (ip_hdr(skb)->protocol == IPPROTO_TCP)
2023					tu_cmd |= E1000_ADVTXD_TUCMD_L4T_TCP;
2024				break;
2025			case htons(ETH_P_IPV6):
2026				if (ipv6_hdr(skb)->nexthdr == IPPROTO_TCP)
2027					tu_cmd |= E1000_ADVTXD_TUCMD_L4T_TCP;
2028				break;
2029			default:
2030				break;
2031			}
2032		}
2033
2034		context_desc->type_tucmd_mlhl = cpu_to_le32(tu_cmd);
2035		context_desc->seqnum_seed = 0;
2036		context_desc->mss_l4len_idx = 0;
2037
2038		buffer_info->time_stamp = jiffies;
2039		buffer_info->dma = 0;
2040		i++;
2041		if (i == tx_ring->count)
2042			i = 0;
2043		tx_ring->next_to_use = i;
2044
2045		return true;
2046	}
2047
2048	return false;
2049}
2050
2051static int igbvf_maybe_stop_tx(struct net_device *netdev, int size)
2052{
2053	struct igbvf_adapter *adapter = netdev_priv(netdev);
2054
2055	/* there is enough descriptors then we don't need to worry  */
2056	if (igbvf_desc_unused(adapter->tx_ring) >= size)
2057		return 0;
2058
2059	netif_stop_queue(netdev);
2060
2061	/* Herbert's original patch had:
2062	 *  smp_mb__after_netif_stop_queue();
2063	 * but since that doesn't exist yet, just open code it.
2064	 */
2065	smp_mb();
2066
2067	/* We need to check again just in case room has been made available */
2068	if (igbvf_desc_unused(adapter->tx_ring) < size)
2069		return -EBUSY;
2070
2071	netif_wake_queue(netdev);
2072
2073	++adapter->restart_queue;
2074	return 0;
2075}
2076
2077#define IGBVF_MAX_TXD_PWR	16
2078#define IGBVF_MAX_DATA_PER_TXD	(1 << IGBVF_MAX_TXD_PWR)
2079
2080static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter,
2081				   struct igbvf_ring *tx_ring,
2082				   struct sk_buff *skb)
2083{
2084	struct igbvf_buffer *buffer_info;
2085	struct pci_dev *pdev = adapter->pdev;
2086	unsigned int len = skb_headlen(skb);
2087	unsigned int count = 0, i;
2088	unsigned int f;
2089
2090	i = tx_ring->next_to_use;
2091
2092	buffer_info = &tx_ring->buffer_info[i];
2093	BUG_ON(len >= IGBVF_MAX_DATA_PER_TXD);
2094	buffer_info->length = len;
2095	/* set time_stamp *before* dma to help avoid a possible race */
2096	buffer_info->time_stamp = jiffies;
2097	buffer_info->mapped_as_page = false;
2098	buffer_info->dma = dma_map_single(&pdev->dev, skb->data, len,
2099					  DMA_TO_DEVICE);
2100	if (dma_mapping_error(&pdev->dev, buffer_info->dma))
2101		goto dma_error;
2102
2103	for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) {
2104		const struct skb_frag_struct *frag;
2105
2106		count++;
2107		i++;
2108		if (i == tx_ring->count)
2109			i = 0;
2110
2111		frag = &skb_shinfo(skb)->frags[f];
2112		len = skb_frag_size(frag);
2113
2114		buffer_info = &tx_ring->buffer_info[i];
2115		BUG_ON(len >= IGBVF_MAX_DATA_PER_TXD);
2116		buffer_info->length = len;
2117		buffer_info->time_stamp = jiffies;
2118		buffer_info->mapped_as_page = true;
2119		buffer_info->dma = skb_frag_dma_map(&pdev->dev, frag, 0, len,
2120						    DMA_TO_DEVICE);
2121		if (dma_mapping_error(&pdev->dev, buffer_info->dma))
2122			goto dma_error;
2123	}
2124
2125	tx_ring->buffer_info[i].skb = skb;
2126
2127	return ++count;
2128
2129dma_error:
2130	dev_err(&pdev->dev, "TX DMA map failed\n");
2131
2132	/* clear timestamp and dma mappings for failed buffer_info mapping */
2133	buffer_info->dma = 0;
2134	buffer_info->time_stamp = 0;
2135	buffer_info->length = 0;
2136	buffer_info->mapped_as_page = false;
2137	if (count)
2138		count--;
2139
2140	/* clear timestamp and dma mappings for remaining portion of packet */
2141	while (count--) {
2142		if (i == 0)
2143			i += tx_ring->count;
2144		i--;
2145		buffer_info = &tx_ring->buffer_info[i];
2146		igbvf_put_txbuf(adapter, buffer_info);
2147	}
2148
2149	return 0;
2150}
2151
2152static inline void igbvf_tx_queue_adv(struct igbvf_adapter *adapter,
2153				      struct igbvf_ring *tx_ring,
2154				      int tx_flags, int count,
2155				      unsigned int first, u32 paylen,
2156				      u8 hdr_len)
2157{
2158	union e1000_adv_tx_desc *tx_desc = NULL;
2159	struct igbvf_buffer *buffer_info;
2160	u32 olinfo_status = 0, cmd_type_len;
2161	unsigned int i;
2162
2163	cmd_type_len = (E1000_ADVTXD_DTYP_DATA | E1000_ADVTXD_DCMD_IFCS |
2164			E1000_ADVTXD_DCMD_DEXT);
2165
2166	if (tx_flags & IGBVF_TX_FLAGS_VLAN)
2167		cmd_type_len |= E1000_ADVTXD_DCMD_VLE;
2168
2169	if (tx_flags & IGBVF_TX_FLAGS_TSO) {
2170		cmd_type_len |= E1000_ADVTXD_DCMD_TSE;
2171
2172		/* insert tcp checksum */
2173		olinfo_status |= E1000_TXD_POPTS_TXSM << 8;
2174
2175		/* insert ip checksum */
2176		if (tx_flags & IGBVF_TX_FLAGS_IPV4)
2177			olinfo_status |= E1000_TXD_POPTS_IXSM << 8;
2178
2179	} else if (tx_flags & IGBVF_TX_FLAGS_CSUM) {
2180		olinfo_status |= E1000_TXD_POPTS_TXSM << 8;
2181	}
2182
2183	olinfo_status |= ((paylen - hdr_len) << E1000_ADVTXD_PAYLEN_SHIFT);
2184
2185	i = tx_ring->next_to_use;
2186	while (count--) {
2187		buffer_info = &tx_ring->buffer_info[i];
2188		tx_desc = IGBVF_TX_DESC_ADV(*tx_ring, i);
2189		tx_desc->read.buffer_addr = cpu_to_le64(buffer_info->dma);
2190		tx_desc->read.cmd_type_len =
2191			 cpu_to_le32(cmd_type_len | buffer_info->length);
2192		tx_desc->read.olinfo_status = cpu_to_le32(olinfo_status);
2193		i++;
2194		if (i == tx_ring->count)
2195			i = 0;
2196	}
2197
2198	tx_desc->read.cmd_type_len |= cpu_to_le32(adapter->txd_cmd);
2199	/* Force memory writes to complete before letting h/w
2200	 * know there are new descriptors to fetch.  (Only
2201	 * applicable for weak-ordered memory model archs,
2202	 * such as IA-64).
2203	 */
2204	wmb();
2205
2206	tx_ring->buffer_info[first].next_to_watch = tx_desc;
2207	tx_ring->next_to_use = i;
2208	writel(i, adapter->hw.hw_addr + tx_ring->tail);
2209	/* we need this if more than one processor can write to our tail
2210	 * at a time, it synchronizes IO on IA64/Altix systems
2211	 */
2212	mmiowb();
2213}
2214
2215static netdev_tx_t igbvf_xmit_frame_ring_adv(struct sk_buff *skb,
2216					     struct net_device *netdev,
2217					     struct igbvf_ring *tx_ring)
2218{
2219	struct igbvf_adapter *adapter = netdev_priv(netdev);
2220	unsigned int first, tx_flags = 0;
2221	u8 hdr_len = 0;
2222	int count = 0;
2223	int tso = 0;
2224	__be16 protocol = vlan_get_protocol(skb);
2225
2226	if (test_bit(__IGBVF_DOWN, &adapter->state)) {
2227		dev_kfree_skb_any(skb);
2228		return NETDEV_TX_OK;
2229	}
2230
2231	if (skb->len <= 0) {
2232		dev_kfree_skb_any(skb);
2233		return NETDEV_TX_OK;
2234	}
2235
2236	/* need: count + 4 desc gap to keep tail from touching
2237	 *       + 2 desc gap to keep tail from touching head,
2238	 *       + 1 desc for skb->data,
2239	 *       + 1 desc for context descriptor,
2240	 * head, otherwise try next time
2241	 */
2242	if (igbvf_maybe_stop_tx(netdev, skb_shinfo(skb)->nr_frags + 4)) {
2243		/* this is a hard error */
2244		return NETDEV_TX_BUSY;
2245	}
2246
2247	if (skb_vlan_tag_present(skb)) {
2248		tx_flags |= IGBVF_TX_FLAGS_VLAN;
2249		tx_flags |= (skb_vlan_tag_get(skb) <<
2250			     IGBVF_TX_FLAGS_VLAN_SHIFT);
2251	}
2252
2253	if (protocol == htons(ETH_P_IP))
2254		tx_flags |= IGBVF_TX_FLAGS_IPV4;
2255
2256	first = tx_ring->next_to_use;
2257
2258	tso = skb_is_gso(skb) ?
2259		igbvf_tso(adapter, tx_ring, skb, tx_flags, &hdr_len, protocol) : 0;
2260	if (unlikely(tso < 0)) {
2261		dev_kfree_skb_any(skb);
2262		return NETDEV_TX_OK;
2263	}
2264
2265	if (tso)
2266		tx_flags |= IGBVF_TX_FLAGS_TSO;
2267	else if (igbvf_tx_csum(adapter, tx_ring, skb, tx_flags, protocol) &&
2268		 (skb->ip_summed == CHECKSUM_PARTIAL))
2269		tx_flags |= IGBVF_TX_FLAGS_CSUM;
2270
2271	/* count reflects descriptors mapped, if 0 then mapping error
2272	 * has occurred and we need to rewind the descriptor queue
2273	 */
2274	count = igbvf_tx_map_adv(adapter, tx_ring, skb);
2275
2276	if (count) {
2277		igbvf_tx_queue_adv(adapter, tx_ring, tx_flags, count,
2278				   first, skb->len, hdr_len);
2279		/* Make sure there is space in the ring for the next send. */
2280		igbvf_maybe_stop_tx(netdev, MAX_SKB_FRAGS + 4);
2281	} else {
2282		dev_kfree_skb_any(skb);
2283		tx_ring->buffer_info[first].time_stamp = 0;
2284		tx_ring->next_to_use = first;
2285	}
2286
2287	return NETDEV_TX_OK;
2288}
2289
2290static netdev_tx_t igbvf_xmit_frame(struct sk_buff *skb,
2291				    struct net_device *netdev)
2292{
2293	struct igbvf_adapter *adapter = netdev_priv(netdev);
2294	struct igbvf_ring *tx_ring;
2295
2296	if (test_bit(__IGBVF_DOWN, &adapter->state)) {
2297		dev_kfree_skb_any(skb);
2298		return NETDEV_TX_OK;
2299	}
2300
2301	tx_ring = &adapter->tx_ring[0];
2302
2303	return igbvf_xmit_frame_ring_adv(skb, netdev, tx_ring);
2304}
2305
2306/**
2307 * igbvf_tx_timeout - Respond to a Tx Hang
2308 * @netdev: network interface device structure
2309 **/
2310static void igbvf_tx_timeout(struct net_device *netdev)
2311{
2312	struct igbvf_adapter *adapter = netdev_priv(netdev);
2313
2314	/* Do the reset outside of interrupt context */
2315	adapter->tx_timeout_count++;
2316	schedule_work(&adapter->reset_task);
2317}
2318
2319static void igbvf_reset_task(struct work_struct *work)
2320{
2321	struct igbvf_adapter *adapter;
2322
2323	adapter = container_of(work, struct igbvf_adapter, reset_task);
2324
2325	igbvf_reinit_locked(adapter);
2326}
2327
2328/**
2329 * igbvf_get_stats - Get System Network Statistics
2330 * @netdev: network interface device structure
2331 *
2332 * Returns the address of the device statistics structure.
2333 * The statistics are actually updated from the timer callback.
2334 **/
2335static struct net_device_stats *igbvf_get_stats(struct net_device *netdev)
2336{
2337	struct igbvf_adapter *adapter = netdev_priv(netdev);
2338
2339	/* only return the current stats */
2340	return &adapter->net_stats;
2341}
2342
2343/**
2344 * igbvf_change_mtu - Change the Maximum Transfer Unit
2345 * @netdev: network interface device structure
2346 * @new_mtu: new value for maximum frame size
2347 *
2348 * Returns 0 on success, negative on failure
2349 **/
2350static int igbvf_change_mtu(struct net_device *netdev, int new_mtu)
2351{
2352	struct igbvf_adapter *adapter = netdev_priv(netdev);
2353	int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN;
2354
2355	if (new_mtu < 68 || new_mtu > INT_MAX - ETH_HLEN - ETH_FCS_LEN ||
2356	    max_frame > MAX_JUMBO_FRAME_SIZE)
2357		return -EINVAL;
2358
2359#define MAX_STD_JUMBO_FRAME_SIZE 9234
2360	if (max_frame > MAX_STD_JUMBO_FRAME_SIZE) {
2361		dev_err(&adapter->pdev->dev, "MTU > 9216 not supported.\n");
2362		return -EINVAL;
2363	}
2364
2365	while (test_and_set_bit(__IGBVF_RESETTING, &adapter->state))
2366		usleep_range(1000, 2000);
2367	/* igbvf_down has a dependency on max_frame_size */
2368	adapter->max_frame_size = max_frame;
2369	if (netif_running(netdev))
2370		igbvf_down(adapter);
2371
2372	/* NOTE: netdev_alloc_skb reserves 16 bytes, and typically NET_IP_ALIGN
2373	 * means we reserve 2 more, this pushes us to allocate from the next
2374	 * larger slab size.
2375	 * i.e. RXBUFFER_2048 --> size-4096 slab
2376	 * However with the new *_jumbo_rx* routines, jumbo receives will use
2377	 * fragmented skbs
2378	 */
2379
2380	if (max_frame <= 1024)
2381		adapter->rx_buffer_len = 1024;
2382	else if (max_frame <= 2048)
2383		adapter->rx_buffer_len = 2048;
2384	else
2385#if (PAGE_SIZE / 2) > 16384
2386		adapter->rx_buffer_len = 16384;
2387#else
2388		adapter->rx_buffer_len = PAGE_SIZE / 2;
2389#endif
2390
2391	/* adjust allocation if LPE protects us, and we aren't using SBP */
2392	if ((max_frame == ETH_FRAME_LEN + ETH_FCS_LEN) ||
2393	    (max_frame == ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN))
2394		adapter->rx_buffer_len = ETH_FRAME_LEN + VLAN_HLEN +
2395					 ETH_FCS_LEN;
2396
2397	dev_info(&adapter->pdev->dev, "changing MTU from %d to %d\n",
2398		 netdev->mtu, new_mtu);
2399	netdev->mtu = new_mtu;
2400
2401	if (netif_running(netdev))
2402		igbvf_up(adapter);
2403	else
2404		igbvf_reset(adapter);
2405
2406	clear_bit(__IGBVF_RESETTING, &adapter->state);
2407
2408	return 0;
2409}
2410
2411static int igbvf_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
2412{
2413	switch (cmd) {
2414	default:
2415		return -EOPNOTSUPP;
2416	}
2417}
2418
2419static int igbvf_suspend(struct pci_dev *pdev, pm_message_t state)
2420{
2421	struct net_device *netdev = pci_get_drvdata(pdev);
2422	struct igbvf_adapter *adapter = netdev_priv(netdev);
2423#ifdef CONFIG_PM
2424	int retval = 0;
2425#endif
2426
2427	netif_device_detach(netdev);
2428
2429	if (netif_running(netdev)) {
2430		WARN_ON(test_bit(__IGBVF_RESETTING, &adapter->state));
2431		igbvf_down(adapter);
2432		igbvf_free_irq(adapter);
2433	}
2434
2435#ifdef CONFIG_PM
2436	retval = pci_save_state(pdev);
2437	if (retval)
2438		return retval;
2439#endif
2440
2441	pci_disable_device(pdev);
2442
2443	return 0;
2444}
2445
2446#ifdef CONFIG_PM
2447static int igbvf_resume(struct pci_dev *pdev)
2448{
2449	struct net_device *netdev = pci_get_drvdata(pdev);
2450	struct igbvf_adapter *adapter = netdev_priv(netdev);
2451	u32 err;
2452
2453	pci_restore_state(pdev);
2454	err = pci_enable_device_mem(pdev);
2455	if (err) {
2456		dev_err(&pdev->dev, "Cannot enable PCI device from suspend\n");
2457		return err;
2458	}
2459
2460	pci_set_master(pdev);
2461
2462	if (netif_running(netdev)) {
2463		err = igbvf_request_irq(adapter);
2464		if (err)
2465			return err;
2466	}
2467
2468	igbvf_reset(adapter);
2469
2470	if (netif_running(netdev))
2471		igbvf_up(adapter);
2472
2473	netif_device_attach(netdev);
2474
2475	return 0;
2476}
2477#endif
2478
2479static void igbvf_shutdown(struct pci_dev *pdev)
2480{
2481	igbvf_suspend(pdev, PMSG_SUSPEND);
2482}
2483
2484#ifdef CONFIG_NET_POLL_CONTROLLER
2485/* Polling 'interrupt' - used by things like netconsole to send skbs
2486 * without having to re-enable interrupts. It's not called while
2487 * the interrupt routine is executing.
2488 */
2489static void igbvf_netpoll(struct net_device *netdev)
2490{
2491	struct igbvf_adapter *adapter = netdev_priv(netdev);
2492
2493	disable_irq(adapter->pdev->irq);
2494
2495	igbvf_clean_tx_irq(adapter->tx_ring);
2496
2497	enable_irq(adapter->pdev->irq);
2498}
2499#endif
2500
2501/**
2502 * igbvf_io_error_detected - called when PCI error is detected
2503 * @pdev: Pointer to PCI device
2504 * @state: The current pci connection state
2505 *
2506 * This function is called after a PCI bus error affecting
2507 * this device has been detected.
2508 */
2509static pci_ers_result_t igbvf_io_error_detected(struct pci_dev *pdev,
2510						pci_channel_state_t state)
2511{
2512	struct net_device *netdev = pci_get_drvdata(pdev);
2513	struct igbvf_adapter *adapter = netdev_priv(netdev);
2514
2515	netif_device_detach(netdev);
2516
2517	if (state == pci_channel_io_perm_failure)
2518		return PCI_ERS_RESULT_DISCONNECT;
2519
2520	if (netif_running(netdev))
2521		igbvf_down(adapter);
2522	pci_disable_device(pdev);
2523
2524	/* Request a slot slot reset. */
2525	return PCI_ERS_RESULT_NEED_RESET;
2526}
2527
2528/**
2529 * igbvf_io_slot_reset - called after the pci bus has been reset.
2530 * @pdev: Pointer to PCI device
2531 *
2532 * Restart the card from scratch, as if from a cold-boot. Implementation
2533 * resembles the first-half of the igbvf_resume routine.
2534 */
2535static pci_ers_result_t igbvf_io_slot_reset(struct pci_dev *pdev)
2536{
2537	struct net_device *netdev = pci_get_drvdata(pdev);
2538	struct igbvf_adapter *adapter = netdev_priv(netdev);
2539
2540	if (pci_enable_device_mem(pdev)) {
2541		dev_err(&pdev->dev,
2542			"Cannot re-enable PCI device after reset.\n");
2543		return PCI_ERS_RESULT_DISCONNECT;
2544	}
2545	pci_set_master(pdev);
2546
2547	igbvf_reset(adapter);
2548
2549	return PCI_ERS_RESULT_RECOVERED;
2550}
2551
2552/**
2553 * igbvf_io_resume - called when traffic can start flowing again.
2554 * @pdev: Pointer to PCI device
2555 *
2556 * This callback is called when the error recovery driver tells us that
2557 * its OK to resume normal operation. Implementation resembles the
2558 * second-half of the igbvf_resume routine.
2559 */
2560static void igbvf_io_resume(struct pci_dev *pdev)
2561{
2562	struct net_device *netdev = pci_get_drvdata(pdev);
2563	struct igbvf_adapter *adapter = netdev_priv(netdev);
2564
2565	if (netif_running(netdev)) {
2566		if (igbvf_up(adapter)) {
2567			dev_err(&pdev->dev,
2568				"can't bring device back up after reset\n");
2569			return;
2570		}
2571	}
2572
2573	netif_device_attach(netdev);
2574}
2575
2576static void igbvf_print_device_info(struct igbvf_adapter *adapter)
2577{
2578	struct e1000_hw *hw = &adapter->hw;
2579	struct net_device *netdev = adapter->netdev;
2580	struct pci_dev *pdev = adapter->pdev;
2581
2582	if (hw->mac.type == e1000_vfadapt_i350)
2583		dev_info(&pdev->dev, "Intel(R) I350 Virtual Function\n");
2584	else
2585		dev_info(&pdev->dev, "Intel(R) 82576 Virtual Function\n");
2586	dev_info(&pdev->dev, "Address: %pM\n", netdev->dev_addr);
2587}
2588
2589static int igbvf_set_features(struct net_device *netdev,
2590			      netdev_features_t features)
2591{
2592	struct igbvf_adapter *adapter = netdev_priv(netdev);
2593
2594	if (features & NETIF_F_RXCSUM)
2595		adapter->flags &= ~IGBVF_FLAG_RX_CSUM_DISABLED;
2596	else
2597		adapter->flags |= IGBVF_FLAG_RX_CSUM_DISABLED;
2598
2599	return 0;
2600}
2601
2602static const struct net_device_ops igbvf_netdev_ops = {
2603	.ndo_open		= igbvf_open,
2604	.ndo_stop		= igbvf_close,
2605	.ndo_start_xmit		= igbvf_xmit_frame,
2606	.ndo_get_stats		= igbvf_get_stats,
2607	.ndo_set_rx_mode	= igbvf_set_multi,
2608	.ndo_set_mac_address	= igbvf_set_mac,
2609	.ndo_change_mtu		= igbvf_change_mtu,
2610	.ndo_do_ioctl		= igbvf_ioctl,
2611	.ndo_tx_timeout		= igbvf_tx_timeout,
2612	.ndo_vlan_rx_add_vid	= igbvf_vlan_rx_add_vid,
2613	.ndo_vlan_rx_kill_vid	= igbvf_vlan_rx_kill_vid,
2614#ifdef CONFIG_NET_POLL_CONTROLLER
2615	.ndo_poll_controller	= igbvf_netpoll,
2616#endif
2617	.ndo_set_features	= igbvf_set_features,
2618	.ndo_features_check	= passthru_features_check,
2619};
2620
2621/**
2622 * igbvf_probe - Device Initialization Routine
2623 * @pdev: PCI device information struct
2624 * @ent: entry in igbvf_pci_tbl
2625 *
2626 * Returns 0 on success, negative on failure
2627 *
2628 * igbvf_probe initializes an adapter identified by a pci_dev structure.
2629 * The OS initialization, configuring of the adapter private structure,
2630 * and a hardware reset occur.
2631 **/
2632static int igbvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2633{
2634	struct net_device *netdev;
2635	struct igbvf_adapter *adapter;
2636	struct e1000_hw *hw;
2637	const struct igbvf_info *ei = igbvf_info_tbl[ent->driver_data];
2638
2639	static int cards_found;
2640	int err, pci_using_dac;
2641
2642	err = pci_enable_device_mem(pdev);
2643	if (err)
2644		return err;
2645
2646	pci_using_dac = 0;
2647	err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
2648	if (!err) {
2649		pci_using_dac = 1;
2650	} else {
2651		err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
2652		if (err) {
2653			dev_err(&pdev->dev,
2654				"No usable DMA configuration, aborting\n");
2655			goto err_dma;
2656		}
2657	}
2658
2659	err = pci_request_regions(pdev, igbvf_driver_name);
2660	if (err)
2661		goto err_pci_reg;
2662
2663	pci_set_master(pdev);
2664
2665	err = -ENOMEM;
2666	netdev = alloc_etherdev(sizeof(struct igbvf_adapter));
2667	if (!netdev)
2668		goto err_alloc_etherdev;
2669
2670	SET_NETDEV_DEV(netdev, &pdev->dev);
2671
2672	pci_set_drvdata(pdev, netdev);
2673	adapter = netdev_priv(netdev);
2674	hw = &adapter->hw;
2675	adapter->netdev = netdev;
2676	adapter->pdev = pdev;
2677	adapter->ei = ei;
2678	adapter->pba = ei->pba;
2679	adapter->flags = ei->flags;
2680	adapter->hw.back = adapter;
2681	adapter->hw.mac.type = ei->mac;
2682	adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE);
2683
2684	/* PCI config space info */
2685
2686	hw->vendor_id = pdev->vendor;
2687	hw->device_id = pdev->device;
2688	hw->subsystem_vendor_id = pdev->subsystem_vendor;
2689	hw->subsystem_device_id = pdev->subsystem_device;
2690	hw->revision_id = pdev->revision;
2691
2692	err = -EIO;
2693	adapter->hw.hw_addr = ioremap(pci_resource_start(pdev, 0),
2694				      pci_resource_len(pdev, 0));
2695
2696	if (!adapter->hw.hw_addr)
2697		goto err_ioremap;
2698
2699	if (ei->get_variants) {
2700		err = ei->get_variants(adapter);
2701		if (err)
2702			goto err_get_variants;
2703	}
2704
2705	/* setup adapter struct */
2706	err = igbvf_sw_init(adapter);
2707	if (err)
2708		goto err_sw_init;
2709
2710	/* construct the net_device struct */
2711	netdev->netdev_ops = &igbvf_netdev_ops;
2712
2713	igbvf_set_ethtool_ops(netdev);
2714	netdev->watchdog_timeo = 5 * HZ;
2715	strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1);
2716
2717	adapter->bd_number = cards_found++;
2718
2719	netdev->hw_features = NETIF_F_SG |
2720			   NETIF_F_IP_CSUM |
2721			   NETIF_F_IPV6_CSUM |
2722			   NETIF_F_TSO |
2723			   NETIF_F_TSO6 |
2724			   NETIF_F_RXCSUM;
2725
2726	netdev->features = netdev->hw_features |
2727			   NETIF_F_HW_VLAN_CTAG_TX |
2728			   NETIF_F_HW_VLAN_CTAG_RX |
2729			   NETIF_F_HW_VLAN_CTAG_FILTER;
2730
2731	if (pci_using_dac)
2732		netdev->features |= NETIF_F_HIGHDMA;
2733
2734	netdev->vlan_features |= NETIF_F_TSO;
2735	netdev->vlan_features |= NETIF_F_TSO6;
2736	netdev->vlan_features |= NETIF_F_IP_CSUM;
2737	netdev->vlan_features |= NETIF_F_IPV6_CSUM;
2738	netdev->vlan_features |= NETIF_F_SG;
2739
2740	/*reset the controller to put the device in a known good state */
2741	err = hw->mac.ops.reset_hw(hw);
2742	if (err) {
2743		dev_info(&pdev->dev,
2744			 "PF still in reset state. Is the PF interface up?\n");
2745	} else {
2746		err = hw->mac.ops.read_mac_addr(hw);
2747		if (err)
2748			dev_info(&pdev->dev, "Error reading MAC address.\n");
2749		else if (is_zero_ether_addr(adapter->hw.mac.addr))
2750			dev_info(&pdev->dev,
2751				 "MAC address not assigned by administrator.\n");
2752		memcpy(netdev->dev_addr, adapter->hw.mac.addr,
2753		       netdev->addr_len);
2754	}
2755
2756	if (!is_valid_ether_addr(netdev->dev_addr)) {
2757		dev_info(&pdev->dev, "Assigning random MAC address.\n");
2758		eth_hw_addr_random(netdev);
2759		memcpy(adapter->hw.mac.addr, netdev->dev_addr,
2760		       netdev->addr_len);
2761	}
2762
2763	setup_timer(&adapter->watchdog_timer, &igbvf_watchdog,
2764		    (unsigned long)adapter);
2765
2766	INIT_WORK(&adapter->reset_task, igbvf_reset_task);
2767	INIT_WORK(&adapter->watchdog_task, igbvf_watchdog_task);
2768
2769	/* ring size defaults */
2770	adapter->rx_ring->count = 1024;
2771	adapter->tx_ring->count = 1024;
2772
2773	/* reset the hardware with the new settings */
2774	igbvf_reset(adapter);
2775
2776	/* set hardware-specific flags */
2777	if (adapter->hw.mac.type == e1000_vfadapt_i350)
2778		adapter->flags |= IGBVF_FLAG_RX_LB_VLAN_BSWAP;
2779
2780	strcpy(netdev->name, "eth%d");
2781	err = register_netdev(netdev);
2782	if (err)
2783		goto err_hw_init;
2784
2785	/* tell the stack to leave us alone until igbvf_open() is called */
2786	netif_carrier_off(netdev);
2787	netif_stop_queue(netdev);
2788
2789	igbvf_print_device_info(adapter);
2790
2791	igbvf_initialize_last_counter_stats(adapter);
2792
2793	return 0;
2794
2795err_hw_init:
2796	kfree(adapter->tx_ring);
2797	kfree(adapter->rx_ring);
2798err_sw_init:
2799	igbvf_reset_interrupt_capability(adapter);
2800err_get_variants:
2801	iounmap(adapter->hw.hw_addr);
2802err_ioremap:
2803	free_netdev(netdev);
2804err_alloc_etherdev:
2805	pci_release_regions(pdev);
2806err_pci_reg:
2807err_dma:
2808	pci_disable_device(pdev);
2809	return err;
2810}
2811
2812/**
2813 * igbvf_remove - Device Removal Routine
2814 * @pdev: PCI device information struct
2815 *
2816 * igbvf_remove is called by the PCI subsystem to alert the driver
2817 * that it should release a PCI device.  The could be caused by a
2818 * Hot-Plug event, or because the driver is going to be removed from
2819 * memory.
2820 **/
2821static void igbvf_remove(struct pci_dev *pdev)
2822{
2823	struct net_device *netdev = pci_get_drvdata(pdev);
2824	struct igbvf_adapter *adapter = netdev_priv(netdev);
2825	struct e1000_hw *hw = &adapter->hw;
2826
2827	/* The watchdog timer may be rescheduled, so explicitly
2828	 * disable it from being rescheduled.
2829	 */
2830	set_bit(__IGBVF_DOWN, &adapter->state);
2831	del_timer_sync(&adapter->watchdog_timer);
2832
2833	cancel_work_sync(&adapter->reset_task);
2834	cancel_work_sync(&adapter->watchdog_task);
2835
2836	unregister_netdev(netdev);
2837
2838	igbvf_reset_interrupt_capability(adapter);
2839
2840	/* it is important to delete the NAPI struct prior to freeing the
2841	 * Rx ring so that you do not end up with null pointer refs
2842	 */
2843	netif_napi_del(&adapter->rx_ring->napi);
2844	kfree(adapter->tx_ring);
2845	kfree(adapter->rx_ring);
2846
2847	iounmap(hw->hw_addr);
2848	if (hw->flash_address)
2849		iounmap(hw->flash_address);
2850	pci_release_regions(pdev);
2851
2852	free_netdev(netdev);
2853
2854	pci_disable_device(pdev);
2855}
2856
2857/* PCI Error Recovery (ERS) */
2858static const struct pci_error_handlers igbvf_err_handler = {
2859	.error_detected = igbvf_io_error_detected,
2860	.slot_reset = igbvf_io_slot_reset,
2861	.resume = igbvf_io_resume,
2862};
2863
2864static const struct pci_device_id igbvf_pci_tbl[] = {
2865	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_VF), board_vf },
2866	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_I350_VF), board_i350_vf },
2867	{ } /* terminate list */
2868};
2869MODULE_DEVICE_TABLE(pci, igbvf_pci_tbl);
2870
2871/* PCI Device API Driver */
2872static struct pci_driver igbvf_driver = {
2873	.name		= igbvf_driver_name,
2874	.id_table	= igbvf_pci_tbl,
2875	.probe		= igbvf_probe,
2876	.remove		= igbvf_remove,
2877#ifdef CONFIG_PM
2878	/* Power Management Hooks */
2879	.suspend	= igbvf_suspend,
2880	.resume		= igbvf_resume,
2881#endif
2882	.shutdown	= igbvf_shutdown,
2883	.err_handler	= &igbvf_err_handler
2884};
2885
2886/**
2887 * igbvf_init_module - Driver Registration Routine
2888 *
2889 * igbvf_init_module is the first routine called when the driver is
2890 * loaded. All it does is register with the PCI subsystem.
2891 **/
2892static int __init igbvf_init_module(void)
2893{
2894	int ret;
2895
2896	pr_info("%s - version %s\n", igbvf_driver_string, igbvf_driver_version);
2897	pr_info("%s\n", igbvf_copyright);
2898
2899	ret = pci_register_driver(&igbvf_driver);
2900
2901	return ret;
2902}
2903module_init(igbvf_init_module);
2904
2905/**
2906 * igbvf_exit_module - Driver Exit Cleanup Routine
2907 *
2908 * igbvf_exit_module is called just before the driver is removed
2909 * from memory.
2910 **/
2911static void __exit igbvf_exit_module(void)
2912{
2913	pci_unregister_driver(&igbvf_driver);
2914}
2915module_exit(igbvf_exit_module);
2916
2917MODULE_AUTHOR("Intel Corporation, <e1000-devel@lists.sourceforge.net>");
2918MODULE_DESCRIPTION("Intel(R) Gigabit Virtual Function Network Driver");
2919MODULE_LICENSE("GPL");
2920MODULE_VERSION(DRV_VERSION);
2921
2922/* netdev.c */
2923