xref: /openbmc/linux/drivers/net/virtio_net.c (revision d24bae32fa9b541eb87edf1b3439f590c3b2dda5)
1 /* A network driver using virtio.
2  *
3  * Copyright 2007 Rusty Russell <rusty@rustcorp.com.au> IBM Corporation
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, see <http://www.gnu.org/licenses/>.
17  */
18 //#define DEBUG
19 #include <linux/netdevice.h>
20 #include <linux/etherdevice.h>
21 #include <linux/ethtool.h>
22 #include <linux/module.h>
23 #include <linux/virtio.h>
24 #include <linux/virtio_net.h>
25 #include <linux/scatterlist.h>
26 #include <linux/if_vlan.h>
27 #include <linux/slab.h>
28 #include <linux/cpu.h>
29 
30 static int napi_weight = NAPI_POLL_WEIGHT;
31 module_param(napi_weight, int, 0444);
32 
33 static bool csum = true, gso = true;
34 module_param(csum, bool, 0444);
35 module_param(gso, bool, 0444);
36 
37 /* FIXME: MTU in config. */
38 #define GOOD_PACKET_LEN (ETH_HLEN + VLAN_HLEN + ETH_DATA_LEN)
39 #define MERGE_BUFFER_LEN (ALIGN(GOOD_PACKET_LEN + \
40                                 sizeof(struct virtio_net_hdr_mrg_rxbuf), \
41                                 L1_CACHE_BYTES))
42 #define GOOD_COPY_LEN	128
43 
44 #define VIRTNET_DRIVER_VERSION "1.0.0"
45 
46 struct virtnet_stats {
47 	struct u64_stats_sync tx_syncp;
48 	struct u64_stats_sync rx_syncp;
49 	u64 tx_bytes;
50 	u64 tx_packets;
51 
52 	u64 rx_bytes;
53 	u64 rx_packets;
54 };
55 
56 /* Internal representation of a send virtqueue */
57 struct send_queue {
58 	/* Virtqueue associated with this send _queue */
59 	struct virtqueue *vq;
60 
61 	/* TX: fragments + linear part + virtio header */
62 	struct scatterlist sg[MAX_SKB_FRAGS + 2];
63 
64 	/* Name of the send queue: output.$index */
65 	char name[40];
66 };
67 
68 /* Internal representation of a receive virtqueue */
69 struct receive_queue {
70 	/* Virtqueue associated with this receive_queue */
71 	struct virtqueue *vq;
72 
73 	struct napi_struct napi;
74 
75 	/* Number of input buffers, and max we've ever had. */
76 	unsigned int num, max;
77 
78 	/* Chain pages by the private ptr. */
79 	struct page *pages;
80 
81 	/* RX: fragments + linear part + virtio header */
82 	struct scatterlist sg[MAX_SKB_FRAGS + 2];
83 
84 	/* Name of this receive queue: input.$index */
85 	char name[40];
86 };
87 
88 struct virtnet_info {
89 	struct virtio_device *vdev;
90 	struct virtqueue *cvq;
91 	struct net_device *dev;
92 	struct send_queue *sq;
93 	struct receive_queue *rq;
94 	unsigned int status;
95 
96 	/* Max # of queue pairs supported by the device */
97 	u16 max_queue_pairs;
98 
99 	/* # of queue pairs currently used by the driver */
100 	u16 curr_queue_pairs;
101 
102 	/* I like... big packets and I cannot lie! */
103 	bool big_packets;
104 
105 	/* Host will merge rx buffers for big packets (shake it! shake it!) */
106 	bool mergeable_rx_bufs;
107 
108 	/* Has control virtqueue */
109 	bool has_cvq;
110 
111 	/* Host can handle any s/g split between our header and packet data */
112 	bool any_header_sg;
113 
114 	/* enable config space updates */
115 	bool config_enable;
116 
117 	/* Active statistics */
118 	struct virtnet_stats __percpu *stats;
119 
120 	/* Work struct for refilling if we run low on memory. */
121 	struct delayed_work refill;
122 
123 	/* Work struct for config space updates */
124 	struct work_struct config_work;
125 
126 	/* Lock for config space updates */
127 	struct mutex config_lock;
128 
129 	/* Page_frag for GFP_KERNEL packet buffer allocation when we run
130 	 * low on memory.
131 	 */
132 	struct page_frag alloc_frag;
133 
134 	/* Does the affinity hint is set for virtqueues? */
135 	bool affinity_hint_set;
136 
137 	/* CPU hot plug notifier */
138 	struct notifier_block nb;
139 };
140 
141 struct skb_vnet_hdr {
142 	union {
143 		struct virtio_net_hdr hdr;
144 		struct virtio_net_hdr_mrg_rxbuf mhdr;
145 	};
146 };
147 
148 struct padded_vnet_hdr {
149 	struct virtio_net_hdr hdr;
150 	/*
151 	 * virtio_net_hdr should be in a separated sg buffer because of a
152 	 * QEMU bug, and data sg buffer shares same page with this header sg.
153 	 * This padding makes next sg 16 byte aligned after virtio_net_hdr.
154 	 */
155 	char padding[6];
156 };
157 
158 /* Converting between virtqueue no. and kernel tx/rx queue no.
159  * 0:rx0 1:tx0 2:rx1 3:tx1 ... 2N:rxN 2N+1:txN 2N+2:cvq
160  */
161 static int vq2txq(struct virtqueue *vq)
162 {
163 	return (vq->index - 1) / 2;
164 }
165 
166 static int txq2vq(int txq)
167 {
168 	return txq * 2 + 1;
169 }
170 
171 static int vq2rxq(struct virtqueue *vq)
172 {
173 	return vq->index / 2;
174 }
175 
176 static int rxq2vq(int rxq)
177 {
178 	return rxq * 2;
179 }
180 
181 static inline struct skb_vnet_hdr *skb_vnet_hdr(struct sk_buff *skb)
182 {
183 	return (struct skb_vnet_hdr *)skb->cb;
184 }
185 
186 /*
187  * private is used to chain pages for big packets, put the whole
188  * most recent used list in the beginning for reuse
189  */
190 static void give_pages(struct receive_queue *rq, struct page *page)
191 {
192 	struct page *end;
193 
194 	/* Find end of list, sew whole thing into vi->rq.pages. */
195 	for (end = page; end->private; end = (struct page *)end->private);
196 	end->private = (unsigned long)rq->pages;
197 	rq->pages = page;
198 }
199 
200 static struct page *get_a_page(struct receive_queue *rq, gfp_t gfp_mask)
201 {
202 	struct page *p = rq->pages;
203 
204 	if (p) {
205 		rq->pages = (struct page *)p->private;
206 		/* clear private here, it is used to chain pages */
207 		p->private = 0;
208 	} else
209 		p = alloc_page(gfp_mask);
210 	return p;
211 }
212 
213 static void skb_xmit_done(struct virtqueue *vq)
214 {
215 	struct virtnet_info *vi = vq->vdev->priv;
216 
217 	/* Suppress further interrupts. */
218 	virtqueue_disable_cb(vq);
219 
220 	/* We were probably waiting for more output buffers. */
221 	netif_wake_subqueue(vi->dev, vq2txq(vq));
222 }
223 
224 /* Called from bottom half context */
225 static struct sk_buff *page_to_skb(struct receive_queue *rq,
226 				   struct page *page, unsigned int offset,
227 				   unsigned int len, unsigned int truesize)
228 {
229 	struct virtnet_info *vi = rq->vq->vdev->priv;
230 	struct sk_buff *skb;
231 	struct skb_vnet_hdr *hdr;
232 	unsigned int copy, hdr_len, hdr_padded_len;
233 	char *p;
234 
235 	p = page_address(page) + offset;
236 
237 	/* copy small packet so we can reuse these pages for small data */
238 	skb = netdev_alloc_skb_ip_align(vi->dev, GOOD_COPY_LEN);
239 	if (unlikely(!skb))
240 		return NULL;
241 
242 	hdr = skb_vnet_hdr(skb);
243 
244 	if (vi->mergeable_rx_bufs) {
245 		hdr_len = sizeof hdr->mhdr;
246 		hdr_padded_len = sizeof hdr->mhdr;
247 	} else {
248 		hdr_len = sizeof hdr->hdr;
249 		hdr_padded_len = sizeof(struct padded_vnet_hdr);
250 	}
251 
252 	memcpy(hdr, p, hdr_len);
253 
254 	len -= hdr_len;
255 	offset += hdr_padded_len;
256 	p += hdr_padded_len;
257 
258 	copy = len;
259 	if (copy > skb_tailroom(skb))
260 		copy = skb_tailroom(skb);
261 	memcpy(skb_put(skb, copy), p, copy);
262 
263 	len -= copy;
264 	offset += copy;
265 
266 	if (vi->mergeable_rx_bufs) {
267 		if (len)
268 			skb_add_rx_frag(skb, 0, page, offset, len, truesize);
269 		else
270 			put_page(page);
271 		return skb;
272 	}
273 
274 	/*
275 	 * Verify that we can indeed put this data into a skb.
276 	 * This is here to handle cases when the device erroneously
277 	 * tries to receive more than is possible. This is usually
278 	 * the case of a broken device.
279 	 */
280 	if (unlikely(len > MAX_SKB_FRAGS * PAGE_SIZE)) {
281 		net_dbg_ratelimited("%s: too much data\n", skb->dev->name);
282 		dev_kfree_skb(skb);
283 		return NULL;
284 	}
285 	BUG_ON(offset >= PAGE_SIZE);
286 	while (len) {
287 		unsigned int frag_size = min((unsigned)PAGE_SIZE - offset, len);
288 		skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, page, offset,
289 				frag_size, truesize);
290 		len -= frag_size;
291 		page = (struct page *)page->private;
292 		offset = 0;
293 	}
294 
295 	if (page)
296 		give_pages(rq, page);
297 
298 	return skb;
299 }
300 
301 static struct sk_buff *receive_small(void *buf, unsigned int len)
302 {
303 	struct sk_buff * skb = buf;
304 
305 	len -= sizeof(struct virtio_net_hdr);
306 	skb_trim(skb, len);
307 
308 	return skb;
309 }
310 
311 static struct sk_buff *receive_big(struct net_device *dev,
312 				   struct receive_queue *rq,
313 				   void *buf,
314 				   unsigned int len)
315 {
316 	struct page *page = buf;
317 	struct sk_buff *skb = page_to_skb(rq, page, 0, len, PAGE_SIZE);
318 
319 	if (unlikely(!skb))
320 		goto err;
321 
322 	return skb;
323 
324 err:
325 	dev->stats.rx_dropped++;
326 	give_pages(rq, page);
327 	return NULL;
328 }
329 
330 static struct sk_buff *receive_mergeable(struct net_device *dev,
331 					 struct receive_queue *rq,
332 					 void *buf,
333 					 unsigned int len)
334 {
335 	struct skb_vnet_hdr *hdr = buf;
336 	int num_buf = hdr->mhdr.num_buffers;
337 	struct page *page = virt_to_head_page(buf);
338 	int offset = buf - page_address(page);
339 	struct sk_buff *head_skb = page_to_skb(rq, page, offset, len,
340 					       MERGE_BUFFER_LEN);
341 	struct sk_buff *curr_skb = head_skb;
342 
343 	if (unlikely(!curr_skb))
344 		goto err_skb;
345 
346 	while (--num_buf) {
347 		int num_skb_frags;
348 
349 		buf = virtqueue_get_buf(rq->vq, &len);
350 		if (unlikely(!buf)) {
351 			pr_debug("%s: rx error: %d buffers out of %d missing\n",
352 				 dev->name, num_buf, hdr->mhdr.num_buffers);
353 			dev->stats.rx_length_errors++;
354 			goto err_buf;
355 		}
356 		if (unlikely(len > MERGE_BUFFER_LEN)) {
357 			pr_debug("%s: rx error: merge buffer too long\n",
358 				 dev->name);
359 			len = MERGE_BUFFER_LEN;
360 		}
361 
362 		page = virt_to_head_page(buf);
363 		--rq->num;
364 
365 		num_skb_frags = skb_shinfo(curr_skb)->nr_frags;
366 		if (unlikely(num_skb_frags == MAX_SKB_FRAGS)) {
367 			struct sk_buff *nskb = alloc_skb(0, GFP_ATOMIC);
368 
369 			if (unlikely(!nskb))
370 				goto err_skb;
371 			if (curr_skb == head_skb)
372 				skb_shinfo(curr_skb)->frag_list = nskb;
373 			else
374 				curr_skb->next = nskb;
375 			curr_skb = nskb;
376 			head_skb->truesize += nskb->truesize;
377 			num_skb_frags = 0;
378 		}
379 		if (curr_skb != head_skb) {
380 			head_skb->data_len += len;
381 			head_skb->len += len;
382 			head_skb->truesize += MERGE_BUFFER_LEN;
383 		}
384 		offset = buf - page_address(page);
385 		if (skb_can_coalesce(curr_skb, num_skb_frags, page, offset)) {
386 			put_page(page);
387 			skb_coalesce_rx_frag(curr_skb, num_skb_frags - 1,
388 					     len, MERGE_BUFFER_LEN);
389 		} else {
390 			skb_add_rx_frag(curr_skb, num_skb_frags, page,
391 					offset, len, MERGE_BUFFER_LEN);
392 		}
393 	}
394 
395 	return head_skb;
396 
397 err_skb:
398 	put_page(page);
399 	while (--num_buf) {
400 		buf = virtqueue_get_buf(rq->vq, &len);
401 		if (unlikely(!buf)) {
402 			pr_debug("%s: rx error: %d buffers missing\n",
403 				 dev->name, num_buf);
404 			dev->stats.rx_length_errors++;
405 			break;
406 		}
407 		page = virt_to_head_page(buf);
408 		put_page(page);
409 		--rq->num;
410 	}
411 err_buf:
412 	dev->stats.rx_dropped++;
413 	dev_kfree_skb(head_skb);
414 	return NULL;
415 }
416 
417 static void receive_buf(struct receive_queue *rq, void *buf, unsigned int len)
418 {
419 	struct virtnet_info *vi = rq->vq->vdev->priv;
420 	struct net_device *dev = vi->dev;
421 	struct virtnet_stats *stats = this_cpu_ptr(vi->stats);
422 	struct sk_buff *skb;
423 	struct skb_vnet_hdr *hdr;
424 
425 	if (unlikely(len < sizeof(struct virtio_net_hdr) + ETH_HLEN)) {
426 		pr_debug("%s: short packet %i\n", dev->name, len);
427 		dev->stats.rx_length_errors++;
428 		if (vi->mergeable_rx_bufs)
429 			put_page(virt_to_head_page(buf));
430 		else if (vi->big_packets)
431 			give_pages(rq, buf);
432 		else
433 			dev_kfree_skb(buf);
434 		return;
435 	}
436 
437 	if (vi->mergeable_rx_bufs)
438 		skb = receive_mergeable(dev, rq, buf, len);
439 	else if (vi->big_packets)
440 		skb = receive_big(dev, rq, buf, len);
441 	else
442 		skb = receive_small(buf, len);
443 
444 	if (unlikely(!skb))
445 		return;
446 
447 	hdr = skb_vnet_hdr(skb);
448 
449 	u64_stats_update_begin(&stats->rx_syncp);
450 	stats->rx_bytes += skb->len;
451 	stats->rx_packets++;
452 	u64_stats_update_end(&stats->rx_syncp);
453 
454 	if (hdr->hdr.flags & VIRTIO_NET_HDR_F_NEEDS_CSUM) {
455 		pr_debug("Needs csum!\n");
456 		if (!skb_partial_csum_set(skb,
457 					  hdr->hdr.csum_start,
458 					  hdr->hdr.csum_offset))
459 			goto frame_err;
460 	} else if (hdr->hdr.flags & VIRTIO_NET_HDR_F_DATA_VALID) {
461 		skb->ip_summed = CHECKSUM_UNNECESSARY;
462 	}
463 
464 	skb->protocol = eth_type_trans(skb, dev);
465 	pr_debug("Receiving skb proto 0x%04x len %i type %i\n",
466 		 ntohs(skb->protocol), skb->len, skb->pkt_type);
467 
468 	if (hdr->hdr.gso_type != VIRTIO_NET_HDR_GSO_NONE) {
469 		pr_debug("GSO!\n");
470 		switch (hdr->hdr.gso_type & ~VIRTIO_NET_HDR_GSO_ECN) {
471 		case VIRTIO_NET_HDR_GSO_TCPV4:
472 			skb_shinfo(skb)->gso_type = SKB_GSO_TCPV4;
473 			break;
474 		case VIRTIO_NET_HDR_GSO_UDP:
475 			skb_shinfo(skb)->gso_type = SKB_GSO_UDP;
476 			break;
477 		case VIRTIO_NET_HDR_GSO_TCPV6:
478 			skb_shinfo(skb)->gso_type = SKB_GSO_TCPV6;
479 			break;
480 		default:
481 			net_warn_ratelimited("%s: bad gso type %u.\n",
482 					     dev->name, hdr->hdr.gso_type);
483 			goto frame_err;
484 		}
485 
486 		if (hdr->hdr.gso_type & VIRTIO_NET_HDR_GSO_ECN)
487 			skb_shinfo(skb)->gso_type |= SKB_GSO_TCP_ECN;
488 
489 		skb_shinfo(skb)->gso_size = hdr->hdr.gso_size;
490 		if (skb_shinfo(skb)->gso_size == 0) {
491 			net_warn_ratelimited("%s: zero gso size.\n", dev->name);
492 			goto frame_err;
493 		}
494 
495 		/* Header must be checked, and gso_segs computed. */
496 		skb_shinfo(skb)->gso_type |= SKB_GSO_DODGY;
497 		skb_shinfo(skb)->gso_segs = 0;
498 	}
499 
500 	netif_receive_skb(skb);
501 	return;
502 
503 frame_err:
504 	dev->stats.rx_frame_errors++;
505 	dev_kfree_skb(skb);
506 }
507 
508 static int add_recvbuf_small(struct receive_queue *rq, gfp_t gfp)
509 {
510 	struct virtnet_info *vi = rq->vq->vdev->priv;
511 	struct sk_buff *skb;
512 	struct skb_vnet_hdr *hdr;
513 	int err;
514 
515 	skb = __netdev_alloc_skb_ip_align(vi->dev, GOOD_PACKET_LEN, gfp);
516 	if (unlikely(!skb))
517 		return -ENOMEM;
518 
519 	skb_put(skb, GOOD_PACKET_LEN);
520 
521 	hdr = skb_vnet_hdr(skb);
522 	sg_set_buf(rq->sg, &hdr->hdr, sizeof hdr->hdr);
523 
524 	skb_to_sgvec(skb, rq->sg + 1, 0, skb->len);
525 
526 	err = virtqueue_add_inbuf(rq->vq, rq->sg, 2, skb, gfp);
527 	if (err < 0)
528 		dev_kfree_skb(skb);
529 
530 	return err;
531 }
532 
533 static int add_recvbuf_big(struct receive_queue *rq, gfp_t gfp)
534 {
535 	struct page *first, *list = NULL;
536 	char *p;
537 	int i, err, offset;
538 
539 	/* page in rq->sg[MAX_SKB_FRAGS + 1] is list tail */
540 	for (i = MAX_SKB_FRAGS + 1; i > 1; --i) {
541 		first = get_a_page(rq, gfp);
542 		if (!first) {
543 			if (list)
544 				give_pages(rq, list);
545 			return -ENOMEM;
546 		}
547 		sg_set_buf(&rq->sg[i], page_address(first), PAGE_SIZE);
548 
549 		/* chain new page in list head to match sg */
550 		first->private = (unsigned long)list;
551 		list = first;
552 	}
553 
554 	first = get_a_page(rq, gfp);
555 	if (!first) {
556 		give_pages(rq, list);
557 		return -ENOMEM;
558 	}
559 	p = page_address(first);
560 
561 	/* rq->sg[0], rq->sg[1] share the same page */
562 	/* a separated rq->sg[0] for virtio_net_hdr only due to QEMU bug */
563 	sg_set_buf(&rq->sg[0], p, sizeof(struct virtio_net_hdr));
564 
565 	/* rq->sg[1] for data packet, from offset */
566 	offset = sizeof(struct padded_vnet_hdr);
567 	sg_set_buf(&rq->sg[1], p + offset, PAGE_SIZE - offset);
568 
569 	/* chain first in list head */
570 	first->private = (unsigned long)list;
571 	err = virtqueue_add_inbuf(rq->vq, rq->sg, MAX_SKB_FRAGS + 2,
572 				  first, gfp);
573 	if (err < 0)
574 		give_pages(rq, first);
575 
576 	return err;
577 }
578 
579 static int add_recvbuf_mergeable(struct receive_queue *rq, gfp_t gfp)
580 {
581 	struct virtnet_info *vi = rq->vq->vdev->priv;
582 	char *buf = NULL;
583 	int err;
584 
585 	if (gfp & __GFP_WAIT) {
586 		if (skb_page_frag_refill(MERGE_BUFFER_LEN, &vi->alloc_frag,
587 					 gfp)) {
588 			buf = (char *)page_address(vi->alloc_frag.page) +
589 			      vi->alloc_frag.offset;
590 			get_page(vi->alloc_frag.page);
591 			vi->alloc_frag.offset += MERGE_BUFFER_LEN;
592 		}
593 	} else {
594 		buf = netdev_alloc_frag(MERGE_BUFFER_LEN);
595 	}
596 	if (!buf)
597 		return -ENOMEM;
598 
599 	sg_init_one(rq->sg, buf, MERGE_BUFFER_LEN);
600 	err = virtqueue_add_inbuf(rq->vq, rq->sg, 1, buf, gfp);
601 	if (err < 0)
602 		put_page(virt_to_head_page(buf));
603 
604 	return err;
605 }
606 
607 /*
608  * Returns false if we couldn't fill entirely (OOM).
609  *
610  * Normally run in the receive path, but can also be run from ndo_open
611  * before we're receiving packets, or from refill_work which is
612  * careful to disable receiving (using napi_disable).
613  */
614 static bool try_fill_recv(struct receive_queue *rq, gfp_t gfp)
615 {
616 	struct virtnet_info *vi = rq->vq->vdev->priv;
617 	int err;
618 	bool oom;
619 
620 	do {
621 		if (vi->mergeable_rx_bufs)
622 			err = add_recvbuf_mergeable(rq, gfp);
623 		else if (vi->big_packets)
624 			err = add_recvbuf_big(rq, gfp);
625 		else
626 			err = add_recvbuf_small(rq, gfp);
627 
628 		oom = err == -ENOMEM;
629 		if (err)
630 			break;
631 		++rq->num;
632 	} while (rq->vq->num_free);
633 	if (unlikely(rq->num > rq->max))
634 		rq->max = rq->num;
635 	if (unlikely(!virtqueue_kick(rq->vq)))
636 		return false;
637 	return !oom;
638 }
639 
640 static void skb_recv_done(struct virtqueue *rvq)
641 {
642 	struct virtnet_info *vi = rvq->vdev->priv;
643 	struct receive_queue *rq = &vi->rq[vq2rxq(rvq)];
644 
645 	/* Schedule NAPI, Suppress further interrupts if successful. */
646 	if (napi_schedule_prep(&rq->napi)) {
647 		virtqueue_disable_cb(rvq);
648 		__napi_schedule(&rq->napi);
649 	}
650 }
651 
652 static void virtnet_napi_enable(struct receive_queue *rq)
653 {
654 	napi_enable(&rq->napi);
655 
656 	/* If all buffers were filled by other side before we napi_enabled, we
657 	 * won't get another interrupt, so process any outstanding packets
658 	 * now.  virtnet_poll wants re-enable the queue, so we disable here.
659 	 * We synchronize against interrupts via NAPI_STATE_SCHED */
660 	if (napi_schedule_prep(&rq->napi)) {
661 		virtqueue_disable_cb(rq->vq);
662 		local_bh_disable();
663 		__napi_schedule(&rq->napi);
664 		local_bh_enable();
665 	}
666 }
667 
668 static void refill_work(struct work_struct *work)
669 {
670 	struct virtnet_info *vi =
671 		container_of(work, struct virtnet_info, refill.work);
672 	bool still_empty;
673 	int i;
674 
675 	for (i = 0; i < vi->curr_queue_pairs; i++) {
676 		struct receive_queue *rq = &vi->rq[i];
677 
678 		napi_disable(&rq->napi);
679 		still_empty = !try_fill_recv(rq, GFP_KERNEL);
680 		virtnet_napi_enable(rq);
681 
682 		/* In theory, this can happen: if we don't get any buffers in
683 		 * we will *never* try to fill again.
684 		 */
685 		if (still_empty)
686 			schedule_delayed_work(&vi->refill, HZ/2);
687 	}
688 }
689 
690 static int virtnet_poll(struct napi_struct *napi, int budget)
691 {
692 	struct receive_queue *rq =
693 		container_of(napi, struct receive_queue, napi);
694 	struct virtnet_info *vi = rq->vq->vdev->priv;
695 	void *buf;
696 	unsigned int r, len, received = 0;
697 
698 again:
699 	while (received < budget &&
700 	       (buf = virtqueue_get_buf(rq->vq, &len)) != NULL) {
701 		receive_buf(rq, buf, len);
702 		--rq->num;
703 		received++;
704 	}
705 
706 	if (rq->num < rq->max / 2) {
707 		if (!try_fill_recv(rq, GFP_ATOMIC))
708 			schedule_delayed_work(&vi->refill, 0);
709 	}
710 
711 	/* Out of packets? */
712 	if (received < budget) {
713 		r = virtqueue_enable_cb_prepare(rq->vq);
714 		napi_complete(napi);
715 		if (unlikely(virtqueue_poll(rq->vq, r)) &&
716 		    napi_schedule_prep(napi)) {
717 			virtqueue_disable_cb(rq->vq);
718 			__napi_schedule(napi);
719 			goto again;
720 		}
721 	}
722 
723 	return received;
724 }
725 
726 static int virtnet_open(struct net_device *dev)
727 {
728 	struct virtnet_info *vi = netdev_priv(dev);
729 	int i;
730 
731 	for (i = 0; i < vi->max_queue_pairs; i++) {
732 		if (i < vi->curr_queue_pairs)
733 			/* Make sure we have some buffers: if oom use wq. */
734 			if (!try_fill_recv(&vi->rq[i], GFP_KERNEL))
735 				schedule_delayed_work(&vi->refill, 0);
736 		virtnet_napi_enable(&vi->rq[i]);
737 	}
738 
739 	return 0;
740 }
741 
742 static void free_old_xmit_skbs(struct send_queue *sq)
743 {
744 	struct sk_buff *skb;
745 	unsigned int len;
746 	struct virtnet_info *vi = sq->vq->vdev->priv;
747 	struct virtnet_stats *stats = this_cpu_ptr(vi->stats);
748 
749 	while ((skb = virtqueue_get_buf(sq->vq, &len)) != NULL) {
750 		pr_debug("Sent skb %p\n", skb);
751 
752 		u64_stats_update_begin(&stats->tx_syncp);
753 		stats->tx_bytes += skb->len;
754 		stats->tx_packets++;
755 		u64_stats_update_end(&stats->tx_syncp);
756 
757 		dev_kfree_skb_any(skb);
758 	}
759 }
760 
761 static int xmit_skb(struct send_queue *sq, struct sk_buff *skb)
762 {
763 	struct skb_vnet_hdr *hdr;
764 	const unsigned char *dest = ((struct ethhdr *)skb->data)->h_dest;
765 	struct virtnet_info *vi = sq->vq->vdev->priv;
766 	unsigned num_sg;
767 	unsigned hdr_len;
768 	bool can_push;
769 
770 	pr_debug("%s: xmit %p %pM\n", vi->dev->name, skb, dest);
771 	if (vi->mergeable_rx_bufs)
772 		hdr_len = sizeof hdr->mhdr;
773 	else
774 		hdr_len = sizeof hdr->hdr;
775 
776 	can_push = vi->any_header_sg &&
777 		!((unsigned long)skb->data & (__alignof__(*hdr) - 1)) &&
778 		!skb_header_cloned(skb) && skb_headroom(skb) >= hdr_len;
779 	/* Even if we can, don't push here yet as this would skew
780 	 * csum_start offset below. */
781 	if (can_push)
782 		hdr = (struct skb_vnet_hdr *)(skb->data - hdr_len);
783 	else
784 		hdr = skb_vnet_hdr(skb);
785 
786 	if (skb->ip_summed == CHECKSUM_PARTIAL) {
787 		hdr->hdr.flags = VIRTIO_NET_HDR_F_NEEDS_CSUM;
788 		hdr->hdr.csum_start = skb_checksum_start_offset(skb);
789 		hdr->hdr.csum_offset = skb->csum_offset;
790 	} else {
791 		hdr->hdr.flags = 0;
792 		hdr->hdr.csum_offset = hdr->hdr.csum_start = 0;
793 	}
794 
795 	if (skb_is_gso(skb)) {
796 		hdr->hdr.hdr_len = skb_headlen(skb);
797 		hdr->hdr.gso_size = skb_shinfo(skb)->gso_size;
798 		if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV4)
799 			hdr->hdr.gso_type = VIRTIO_NET_HDR_GSO_TCPV4;
800 		else if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV6)
801 			hdr->hdr.gso_type = VIRTIO_NET_HDR_GSO_TCPV6;
802 		else if (skb_shinfo(skb)->gso_type & SKB_GSO_UDP)
803 			hdr->hdr.gso_type = VIRTIO_NET_HDR_GSO_UDP;
804 		else
805 			BUG();
806 		if (skb_shinfo(skb)->gso_type & SKB_GSO_TCP_ECN)
807 			hdr->hdr.gso_type |= VIRTIO_NET_HDR_GSO_ECN;
808 	} else {
809 		hdr->hdr.gso_type = VIRTIO_NET_HDR_GSO_NONE;
810 		hdr->hdr.gso_size = hdr->hdr.hdr_len = 0;
811 	}
812 
813 	if (vi->mergeable_rx_bufs)
814 		hdr->mhdr.num_buffers = 0;
815 
816 	if (can_push) {
817 		__skb_push(skb, hdr_len);
818 		num_sg = skb_to_sgvec(skb, sq->sg, 0, skb->len);
819 		/* Pull header back to avoid skew in tx bytes calculations. */
820 		__skb_pull(skb, hdr_len);
821 	} else {
822 		sg_set_buf(sq->sg, hdr, hdr_len);
823 		num_sg = skb_to_sgvec(skb, sq->sg + 1, 0, skb->len) + 1;
824 	}
825 	return virtqueue_add_outbuf(sq->vq, sq->sg, num_sg, skb, GFP_ATOMIC);
826 }
827 
828 static netdev_tx_t start_xmit(struct sk_buff *skb, struct net_device *dev)
829 {
830 	struct virtnet_info *vi = netdev_priv(dev);
831 	int qnum = skb_get_queue_mapping(skb);
832 	struct send_queue *sq = &vi->sq[qnum];
833 	int err;
834 
835 	/* Free up any pending old buffers before queueing new ones. */
836 	free_old_xmit_skbs(sq);
837 
838 	/* Try to transmit */
839 	err = xmit_skb(sq, skb);
840 
841 	/* This should not happen! */
842 	if (unlikely(err) || unlikely(!virtqueue_kick(sq->vq))) {
843 		dev->stats.tx_fifo_errors++;
844 		if (net_ratelimit())
845 			dev_warn(&dev->dev,
846 				 "Unexpected TXQ (%d) queue failure: %d\n", qnum, err);
847 		dev->stats.tx_dropped++;
848 		kfree_skb(skb);
849 		return NETDEV_TX_OK;
850 	}
851 
852 	/* Don't wait up for transmitted skbs to be freed. */
853 	skb_orphan(skb);
854 	nf_reset(skb);
855 
856 	/* Apparently nice girls don't return TX_BUSY; stop the queue
857 	 * before it gets out of hand.  Naturally, this wastes entries. */
858 	if (sq->vq->num_free < 2+MAX_SKB_FRAGS) {
859 		netif_stop_subqueue(dev, qnum);
860 		if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) {
861 			/* More just got used, free them then recheck. */
862 			free_old_xmit_skbs(sq);
863 			if (sq->vq->num_free >= 2+MAX_SKB_FRAGS) {
864 				netif_start_subqueue(dev, qnum);
865 				virtqueue_disable_cb(sq->vq);
866 			}
867 		}
868 	}
869 
870 	return NETDEV_TX_OK;
871 }
872 
873 /*
874  * Send command via the control virtqueue and check status.  Commands
875  * supported by the hypervisor, as indicated by feature bits, should
876  * never fail unless improperly formated.
877  */
878 static bool virtnet_send_command(struct virtnet_info *vi, u8 class, u8 cmd,
879 				 struct scatterlist *out)
880 {
881 	struct scatterlist *sgs[4], hdr, stat;
882 	struct virtio_net_ctrl_hdr ctrl;
883 	virtio_net_ctrl_ack status = ~0;
884 	unsigned out_num = 0, tmp;
885 
886 	/* Caller should know better */
887 	BUG_ON(!virtio_has_feature(vi->vdev, VIRTIO_NET_F_CTRL_VQ));
888 
889 	ctrl.class = class;
890 	ctrl.cmd = cmd;
891 	/* Add header */
892 	sg_init_one(&hdr, &ctrl, sizeof(ctrl));
893 	sgs[out_num++] = &hdr;
894 
895 	if (out)
896 		sgs[out_num++] = out;
897 
898 	/* Add return status. */
899 	sg_init_one(&stat, &status, sizeof(status));
900 	sgs[out_num] = &stat;
901 
902 	BUG_ON(out_num + 1 > ARRAY_SIZE(sgs));
903 	BUG_ON(virtqueue_add_sgs(vi->cvq, sgs, out_num, 1, vi, GFP_ATOMIC) < 0);
904 
905 	if (unlikely(!virtqueue_kick(vi->cvq)))
906 		return status == VIRTIO_NET_OK;
907 
908 	/* Spin for a response, the kick causes an ioport write, trapping
909 	 * into the hypervisor, so the request should be handled immediately.
910 	 */
911 	while (!virtqueue_get_buf(vi->cvq, &tmp) &&
912 	       !virtqueue_is_broken(vi->cvq))
913 		cpu_relax();
914 
915 	return status == VIRTIO_NET_OK;
916 }
917 
918 static int virtnet_set_mac_address(struct net_device *dev, void *p)
919 {
920 	struct virtnet_info *vi = netdev_priv(dev);
921 	struct virtio_device *vdev = vi->vdev;
922 	int ret;
923 	struct sockaddr *addr = p;
924 	struct scatterlist sg;
925 
926 	ret = eth_prepare_mac_addr_change(dev, p);
927 	if (ret)
928 		return ret;
929 
930 	if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_MAC_ADDR)) {
931 		sg_init_one(&sg, addr->sa_data, dev->addr_len);
932 		if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_MAC,
933 					  VIRTIO_NET_CTRL_MAC_ADDR_SET, &sg)) {
934 			dev_warn(&vdev->dev,
935 				 "Failed to set mac address by vq command.\n");
936 			return -EINVAL;
937 		}
938 	} else if (virtio_has_feature(vdev, VIRTIO_NET_F_MAC)) {
939 		unsigned int i;
940 
941 		/* Naturally, this has an atomicity problem. */
942 		for (i = 0; i < dev->addr_len; i++)
943 			virtio_cwrite8(vdev,
944 				       offsetof(struct virtio_net_config, mac) +
945 				       i, addr->sa_data[i]);
946 	}
947 
948 	eth_commit_mac_addr_change(dev, p);
949 
950 	return 0;
951 }
952 
953 static struct rtnl_link_stats64 *virtnet_stats(struct net_device *dev,
954 					       struct rtnl_link_stats64 *tot)
955 {
956 	struct virtnet_info *vi = netdev_priv(dev);
957 	int cpu;
958 	unsigned int start;
959 
960 	for_each_possible_cpu(cpu) {
961 		struct virtnet_stats *stats = per_cpu_ptr(vi->stats, cpu);
962 		u64 tpackets, tbytes, rpackets, rbytes;
963 
964 		do {
965 			start = u64_stats_fetch_begin_bh(&stats->tx_syncp);
966 			tpackets = stats->tx_packets;
967 			tbytes   = stats->tx_bytes;
968 		} while (u64_stats_fetch_retry_bh(&stats->tx_syncp, start));
969 
970 		do {
971 			start = u64_stats_fetch_begin_bh(&stats->rx_syncp);
972 			rpackets = stats->rx_packets;
973 			rbytes   = stats->rx_bytes;
974 		} while (u64_stats_fetch_retry_bh(&stats->rx_syncp, start));
975 
976 		tot->rx_packets += rpackets;
977 		tot->tx_packets += tpackets;
978 		tot->rx_bytes   += rbytes;
979 		tot->tx_bytes   += tbytes;
980 	}
981 
982 	tot->tx_dropped = dev->stats.tx_dropped;
983 	tot->tx_fifo_errors = dev->stats.tx_fifo_errors;
984 	tot->rx_dropped = dev->stats.rx_dropped;
985 	tot->rx_length_errors = dev->stats.rx_length_errors;
986 	tot->rx_frame_errors = dev->stats.rx_frame_errors;
987 
988 	return tot;
989 }
990 
991 #ifdef CONFIG_NET_POLL_CONTROLLER
992 static void virtnet_netpoll(struct net_device *dev)
993 {
994 	struct virtnet_info *vi = netdev_priv(dev);
995 	int i;
996 
997 	for (i = 0; i < vi->curr_queue_pairs; i++)
998 		napi_schedule(&vi->rq[i].napi);
999 }
1000 #endif
1001 
1002 static void virtnet_ack_link_announce(struct virtnet_info *vi)
1003 {
1004 	rtnl_lock();
1005 	if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_ANNOUNCE,
1006 				  VIRTIO_NET_CTRL_ANNOUNCE_ACK, NULL))
1007 		dev_warn(&vi->dev->dev, "Failed to ack link announce.\n");
1008 	rtnl_unlock();
1009 }
1010 
1011 static int virtnet_set_queues(struct virtnet_info *vi, u16 queue_pairs)
1012 {
1013 	struct scatterlist sg;
1014 	struct virtio_net_ctrl_mq s;
1015 	struct net_device *dev = vi->dev;
1016 
1017 	if (!vi->has_cvq || !virtio_has_feature(vi->vdev, VIRTIO_NET_F_MQ))
1018 		return 0;
1019 
1020 	s.virtqueue_pairs = queue_pairs;
1021 	sg_init_one(&sg, &s, sizeof(s));
1022 
1023 	if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_MQ,
1024 				  VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET, &sg)) {
1025 		dev_warn(&dev->dev, "Fail to set num of queue pairs to %d\n",
1026 			 queue_pairs);
1027 		return -EINVAL;
1028 	} else {
1029 		vi->curr_queue_pairs = queue_pairs;
1030 		/* virtnet_open() will refill when device is going to up. */
1031 		if (dev->flags & IFF_UP)
1032 			schedule_delayed_work(&vi->refill, 0);
1033 	}
1034 
1035 	return 0;
1036 }
1037 
1038 static int virtnet_close(struct net_device *dev)
1039 {
1040 	struct virtnet_info *vi = netdev_priv(dev);
1041 	int i;
1042 
1043 	/* Make sure refill_work doesn't re-enable napi! */
1044 	cancel_delayed_work_sync(&vi->refill);
1045 
1046 	for (i = 0; i < vi->max_queue_pairs; i++)
1047 		napi_disable(&vi->rq[i].napi);
1048 
1049 	return 0;
1050 }
1051 
1052 static void virtnet_set_rx_mode(struct net_device *dev)
1053 {
1054 	struct virtnet_info *vi = netdev_priv(dev);
1055 	struct scatterlist sg[2];
1056 	u8 promisc, allmulti;
1057 	struct virtio_net_ctrl_mac *mac_data;
1058 	struct netdev_hw_addr *ha;
1059 	int uc_count;
1060 	int mc_count;
1061 	void *buf;
1062 	int i;
1063 
1064 	/* We can't dynamicaly set ndo_set_rx_mode, so return gracefully */
1065 	if (!virtio_has_feature(vi->vdev, VIRTIO_NET_F_CTRL_RX))
1066 		return;
1067 
1068 	promisc = ((dev->flags & IFF_PROMISC) != 0);
1069 	allmulti = ((dev->flags & IFF_ALLMULTI) != 0);
1070 
1071 	sg_init_one(sg, &promisc, sizeof(promisc));
1072 
1073 	if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_RX,
1074 				  VIRTIO_NET_CTRL_RX_PROMISC, sg))
1075 		dev_warn(&dev->dev, "Failed to %sable promisc mode.\n",
1076 			 promisc ? "en" : "dis");
1077 
1078 	sg_init_one(sg, &allmulti, sizeof(allmulti));
1079 
1080 	if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_RX,
1081 				  VIRTIO_NET_CTRL_RX_ALLMULTI, sg))
1082 		dev_warn(&dev->dev, "Failed to %sable allmulti mode.\n",
1083 			 allmulti ? "en" : "dis");
1084 
1085 	uc_count = netdev_uc_count(dev);
1086 	mc_count = netdev_mc_count(dev);
1087 	/* MAC filter - use one buffer for both lists */
1088 	buf = kzalloc(((uc_count + mc_count) * ETH_ALEN) +
1089 		      (2 * sizeof(mac_data->entries)), GFP_ATOMIC);
1090 	mac_data = buf;
1091 	if (!buf)
1092 		return;
1093 
1094 	sg_init_table(sg, 2);
1095 
1096 	/* Store the unicast list and count in the front of the buffer */
1097 	mac_data->entries = uc_count;
1098 	i = 0;
1099 	netdev_for_each_uc_addr(ha, dev)
1100 		memcpy(&mac_data->macs[i++][0], ha->addr, ETH_ALEN);
1101 
1102 	sg_set_buf(&sg[0], mac_data,
1103 		   sizeof(mac_data->entries) + (uc_count * ETH_ALEN));
1104 
1105 	/* multicast list and count fill the end */
1106 	mac_data = (void *)&mac_data->macs[uc_count][0];
1107 
1108 	mac_data->entries = mc_count;
1109 	i = 0;
1110 	netdev_for_each_mc_addr(ha, dev)
1111 		memcpy(&mac_data->macs[i++][0], ha->addr, ETH_ALEN);
1112 
1113 	sg_set_buf(&sg[1], mac_data,
1114 		   sizeof(mac_data->entries) + (mc_count * ETH_ALEN));
1115 
1116 	if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_MAC,
1117 				  VIRTIO_NET_CTRL_MAC_TABLE_SET, sg))
1118 		dev_warn(&dev->dev, "Failed to set MAC filter table.\n");
1119 
1120 	kfree(buf);
1121 }
1122 
1123 static int virtnet_vlan_rx_add_vid(struct net_device *dev,
1124 				   __be16 proto, u16 vid)
1125 {
1126 	struct virtnet_info *vi = netdev_priv(dev);
1127 	struct scatterlist sg;
1128 
1129 	sg_init_one(&sg, &vid, sizeof(vid));
1130 
1131 	if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_VLAN,
1132 				  VIRTIO_NET_CTRL_VLAN_ADD, &sg))
1133 		dev_warn(&dev->dev, "Failed to add VLAN ID %d.\n", vid);
1134 	return 0;
1135 }
1136 
1137 static int virtnet_vlan_rx_kill_vid(struct net_device *dev,
1138 				    __be16 proto, u16 vid)
1139 {
1140 	struct virtnet_info *vi = netdev_priv(dev);
1141 	struct scatterlist sg;
1142 
1143 	sg_init_one(&sg, &vid, sizeof(vid));
1144 
1145 	if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_VLAN,
1146 				  VIRTIO_NET_CTRL_VLAN_DEL, &sg))
1147 		dev_warn(&dev->dev, "Failed to kill VLAN ID %d.\n", vid);
1148 	return 0;
1149 }
1150 
1151 static void virtnet_clean_affinity(struct virtnet_info *vi, long hcpu)
1152 {
1153 	int i;
1154 
1155 	if (vi->affinity_hint_set) {
1156 		for (i = 0; i < vi->max_queue_pairs; i++) {
1157 			virtqueue_set_affinity(vi->rq[i].vq, -1);
1158 			virtqueue_set_affinity(vi->sq[i].vq, -1);
1159 		}
1160 
1161 		vi->affinity_hint_set = false;
1162 	}
1163 }
1164 
1165 static void virtnet_set_affinity(struct virtnet_info *vi)
1166 {
1167 	int i;
1168 	int cpu;
1169 
1170 	/* In multiqueue mode, when the number of cpu is equal to the number of
1171 	 * queue pairs, we let the queue pairs to be private to one cpu by
1172 	 * setting the affinity hint to eliminate the contention.
1173 	 */
1174 	if (vi->curr_queue_pairs == 1 ||
1175 	    vi->max_queue_pairs != num_online_cpus()) {
1176 		virtnet_clean_affinity(vi, -1);
1177 		return;
1178 	}
1179 
1180 	i = 0;
1181 	for_each_online_cpu(cpu) {
1182 		virtqueue_set_affinity(vi->rq[i].vq, cpu);
1183 		virtqueue_set_affinity(vi->sq[i].vq, cpu);
1184 		netif_set_xps_queue(vi->dev, cpumask_of(cpu), i);
1185 		i++;
1186 	}
1187 
1188 	vi->affinity_hint_set = true;
1189 }
1190 
1191 static int virtnet_cpu_callback(struct notifier_block *nfb,
1192 			        unsigned long action, void *hcpu)
1193 {
1194 	struct virtnet_info *vi = container_of(nfb, struct virtnet_info, nb);
1195 
1196 	switch(action & ~CPU_TASKS_FROZEN) {
1197 	case CPU_ONLINE:
1198 	case CPU_DOWN_FAILED:
1199 	case CPU_DEAD:
1200 		virtnet_set_affinity(vi);
1201 		break;
1202 	case CPU_DOWN_PREPARE:
1203 		virtnet_clean_affinity(vi, (long)hcpu);
1204 		break;
1205 	default:
1206 		break;
1207 	}
1208 
1209 	return NOTIFY_OK;
1210 }
1211 
1212 static void virtnet_get_ringparam(struct net_device *dev,
1213 				struct ethtool_ringparam *ring)
1214 {
1215 	struct virtnet_info *vi = netdev_priv(dev);
1216 
1217 	ring->rx_max_pending = virtqueue_get_vring_size(vi->rq[0].vq);
1218 	ring->tx_max_pending = virtqueue_get_vring_size(vi->sq[0].vq);
1219 	ring->rx_pending = ring->rx_max_pending;
1220 	ring->tx_pending = ring->tx_max_pending;
1221 }
1222 
1223 
1224 static void virtnet_get_drvinfo(struct net_device *dev,
1225 				struct ethtool_drvinfo *info)
1226 {
1227 	struct virtnet_info *vi = netdev_priv(dev);
1228 	struct virtio_device *vdev = vi->vdev;
1229 
1230 	strlcpy(info->driver, KBUILD_MODNAME, sizeof(info->driver));
1231 	strlcpy(info->version, VIRTNET_DRIVER_VERSION, sizeof(info->version));
1232 	strlcpy(info->bus_info, virtio_bus_name(vdev), sizeof(info->bus_info));
1233 
1234 }
1235 
1236 /* TODO: Eliminate OOO packets during switching */
1237 static int virtnet_set_channels(struct net_device *dev,
1238 				struct ethtool_channels *channels)
1239 {
1240 	struct virtnet_info *vi = netdev_priv(dev);
1241 	u16 queue_pairs = channels->combined_count;
1242 	int err;
1243 
1244 	/* We don't support separate rx/tx channels.
1245 	 * We don't allow setting 'other' channels.
1246 	 */
1247 	if (channels->rx_count || channels->tx_count || channels->other_count)
1248 		return -EINVAL;
1249 
1250 	if (queue_pairs > vi->max_queue_pairs)
1251 		return -EINVAL;
1252 
1253 	get_online_cpus();
1254 	err = virtnet_set_queues(vi, queue_pairs);
1255 	if (!err) {
1256 		netif_set_real_num_tx_queues(dev, queue_pairs);
1257 		netif_set_real_num_rx_queues(dev, queue_pairs);
1258 
1259 		virtnet_set_affinity(vi);
1260 	}
1261 	put_online_cpus();
1262 
1263 	return err;
1264 }
1265 
1266 static void virtnet_get_channels(struct net_device *dev,
1267 				 struct ethtool_channels *channels)
1268 {
1269 	struct virtnet_info *vi = netdev_priv(dev);
1270 
1271 	channels->combined_count = vi->curr_queue_pairs;
1272 	channels->max_combined = vi->max_queue_pairs;
1273 	channels->max_other = 0;
1274 	channels->rx_count = 0;
1275 	channels->tx_count = 0;
1276 	channels->other_count = 0;
1277 }
1278 
1279 static const struct ethtool_ops virtnet_ethtool_ops = {
1280 	.get_drvinfo = virtnet_get_drvinfo,
1281 	.get_link = ethtool_op_get_link,
1282 	.get_ringparam = virtnet_get_ringparam,
1283 	.set_channels = virtnet_set_channels,
1284 	.get_channels = virtnet_get_channels,
1285 };
1286 
1287 #define MIN_MTU 68
1288 #define MAX_MTU 65535
1289 
1290 static int virtnet_change_mtu(struct net_device *dev, int new_mtu)
1291 {
1292 	if (new_mtu < MIN_MTU || new_mtu > MAX_MTU)
1293 		return -EINVAL;
1294 	dev->mtu = new_mtu;
1295 	return 0;
1296 }
1297 
1298 static const struct net_device_ops virtnet_netdev = {
1299 	.ndo_open            = virtnet_open,
1300 	.ndo_stop   	     = virtnet_close,
1301 	.ndo_start_xmit      = start_xmit,
1302 	.ndo_validate_addr   = eth_validate_addr,
1303 	.ndo_set_mac_address = virtnet_set_mac_address,
1304 	.ndo_set_rx_mode     = virtnet_set_rx_mode,
1305 	.ndo_change_mtu	     = virtnet_change_mtu,
1306 	.ndo_get_stats64     = virtnet_stats,
1307 	.ndo_vlan_rx_add_vid = virtnet_vlan_rx_add_vid,
1308 	.ndo_vlan_rx_kill_vid = virtnet_vlan_rx_kill_vid,
1309 #ifdef CONFIG_NET_POLL_CONTROLLER
1310 	.ndo_poll_controller = virtnet_netpoll,
1311 #endif
1312 };
1313 
1314 static void virtnet_config_changed_work(struct work_struct *work)
1315 {
1316 	struct virtnet_info *vi =
1317 		container_of(work, struct virtnet_info, config_work);
1318 	u16 v;
1319 
1320 	mutex_lock(&vi->config_lock);
1321 	if (!vi->config_enable)
1322 		goto done;
1323 
1324 	if (virtio_cread_feature(vi->vdev, VIRTIO_NET_F_STATUS,
1325 				 struct virtio_net_config, status, &v) < 0)
1326 		goto done;
1327 
1328 	if (v & VIRTIO_NET_S_ANNOUNCE) {
1329 		netdev_notify_peers(vi->dev);
1330 		virtnet_ack_link_announce(vi);
1331 	}
1332 
1333 	/* Ignore unknown (future) status bits */
1334 	v &= VIRTIO_NET_S_LINK_UP;
1335 
1336 	if (vi->status == v)
1337 		goto done;
1338 
1339 	vi->status = v;
1340 
1341 	if (vi->status & VIRTIO_NET_S_LINK_UP) {
1342 		netif_carrier_on(vi->dev);
1343 		netif_tx_wake_all_queues(vi->dev);
1344 	} else {
1345 		netif_carrier_off(vi->dev);
1346 		netif_tx_stop_all_queues(vi->dev);
1347 	}
1348 done:
1349 	mutex_unlock(&vi->config_lock);
1350 }
1351 
1352 static void virtnet_config_changed(struct virtio_device *vdev)
1353 {
1354 	struct virtnet_info *vi = vdev->priv;
1355 
1356 	schedule_work(&vi->config_work);
1357 }
1358 
1359 static void virtnet_free_queues(struct virtnet_info *vi)
1360 {
1361 	int i;
1362 
1363 	for (i = 0; i < vi->max_queue_pairs; i++)
1364 		netif_napi_del(&vi->rq[i].napi);
1365 
1366 	kfree(vi->rq);
1367 	kfree(vi->sq);
1368 }
1369 
1370 static void free_receive_bufs(struct virtnet_info *vi)
1371 {
1372 	int i;
1373 
1374 	for (i = 0; i < vi->max_queue_pairs; i++) {
1375 		while (vi->rq[i].pages)
1376 			__free_pages(get_a_page(&vi->rq[i], GFP_KERNEL), 0);
1377 	}
1378 }
1379 
1380 static void free_unused_bufs(struct virtnet_info *vi)
1381 {
1382 	void *buf;
1383 	int i;
1384 
1385 	for (i = 0; i < vi->max_queue_pairs; i++) {
1386 		struct virtqueue *vq = vi->sq[i].vq;
1387 		while ((buf = virtqueue_detach_unused_buf(vq)) != NULL)
1388 			dev_kfree_skb(buf);
1389 	}
1390 
1391 	for (i = 0; i < vi->max_queue_pairs; i++) {
1392 		struct virtqueue *vq = vi->rq[i].vq;
1393 
1394 		while ((buf = virtqueue_detach_unused_buf(vq)) != NULL) {
1395 			if (vi->mergeable_rx_bufs)
1396 				put_page(virt_to_head_page(buf));
1397 			else if (vi->big_packets)
1398 				give_pages(&vi->rq[i], buf);
1399 			else
1400 				dev_kfree_skb(buf);
1401 			--vi->rq[i].num;
1402 		}
1403 		BUG_ON(vi->rq[i].num != 0);
1404 	}
1405 }
1406 
1407 static void virtnet_del_vqs(struct virtnet_info *vi)
1408 {
1409 	struct virtio_device *vdev = vi->vdev;
1410 
1411 	virtnet_clean_affinity(vi, -1);
1412 
1413 	vdev->config->del_vqs(vdev);
1414 
1415 	virtnet_free_queues(vi);
1416 }
1417 
1418 static int virtnet_find_vqs(struct virtnet_info *vi)
1419 {
1420 	vq_callback_t **callbacks;
1421 	struct virtqueue **vqs;
1422 	int ret = -ENOMEM;
1423 	int i, total_vqs;
1424 	const char **names;
1425 
1426 	/* We expect 1 RX virtqueue followed by 1 TX virtqueue, followed by
1427 	 * possible N-1 RX/TX queue pairs used in multiqueue mode, followed by
1428 	 * possible control vq.
1429 	 */
1430 	total_vqs = vi->max_queue_pairs * 2 +
1431 		    virtio_has_feature(vi->vdev, VIRTIO_NET_F_CTRL_VQ);
1432 
1433 	/* Allocate space for find_vqs parameters */
1434 	vqs = kzalloc(total_vqs * sizeof(*vqs), GFP_KERNEL);
1435 	if (!vqs)
1436 		goto err_vq;
1437 	callbacks = kmalloc(total_vqs * sizeof(*callbacks), GFP_KERNEL);
1438 	if (!callbacks)
1439 		goto err_callback;
1440 	names = kmalloc(total_vqs * sizeof(*names), GFP_KERNEL);
1441 	if (!names)
1442 		goto err_names;
1443 
1444 	/* Parameters for control virtqueue, if any */
1445 	if (vi->has_cvq) {
1446 		callbacks[total_vqs - 1] = NULL;
1447 		names[total_vqs - 1] = "control";
1448 	}
1449 
1450 	/* Allocate/initialize parameters for send/receive virtqueues */
1451 	for (i = 0; i < vi->max_queue_pairs; i++) {
1452 		callbacks[rxq2vq(i)] = skb_recv_done;
1453 		callbacks[txq2vq(i)] = skb_xmit_done;
1454 		sprintf(vi->rq[i].name, "input.%d", i);
1455 		sprintf(vi->sq[i].name, "output.%d", i);
1456 		names[rxq2vq(i)] = vi->rq[i].name;
1457 		names[txq2vq(i)] = vi->sq[i].name;
1458 	}
1459 
1460 	ret = vi->vdev->config->find_vqs(vi->vdev, total_vqs, vqs, callbacks,
1461 					 names);
1462 	if (ret)
1463 		goto err_find;
1464 
1465 	if (vi->has_cvq) {
1466 		vi->cvq = vqs[total_vqs - 1];
1467 		if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_CTRL_VLAN))
1468 			vi->dev->features |= NETIF_F_HW_VLAN_CTAG_FILTER;
1469 	}
1470 
1471 	for (i = 0; i < vi->max_queue_pairs; i++) {
1472 		vi->rq[i].vq = vqs[rxq2vq(i)];
1473 		vi->sq[i].vq = vqs[txq2vq(i)];
1474 	}
1475 
1476 	kfree(names);
1477 	kfree(callbacks);
1478 	kfree(vqs);
1479 
1480 	return 0;
1481 
1482 err_find:
1483 	kfree(names);
1484 err_names:
1485 	kfree(callbacks);
1486 err_callback:
1487 	kfree(vqs);
1488 err_vq:
1489 	return ret;
1490 }
1491 
1492 static int virtnet_alloc_queues(struct virtnet_info *vi)
1493 {
1494 	int i;
1495 
1496 	vi->sq = kzalloc(sizeof(*vi->sq) * vi->max_queue_pairs, GFP_KERNEL);
1497 	if (!vi->sq)
1498 		goto err_sq;
1499 	vi->rq = kzalloc(sizeof(*vi->rq) * vi->max_queue_pairs, GFP_KERNEL);
1500 	if (!vi->rq)
1501 		goto err_rq;
1502 
1503 	INIT_DELAYED_WORK(&vi->refill, refill_work);
1504 	for (i = 0; i < vi->max_queue_pairs; i++) {
1505 		vi->rq[i].pages = NULL;
1506 		netif_napi_add(vi->dev, &vi->rq[i].napi, virtnet_poll,
1507 			       napi_weight);
1508 
1509 		sg_init_table(vi->rq[i].sg, ARRAY_SIZE(vi->rq[i].sg));
1510 		sg_init_table(vi->sq[i].sg, ARRAY_SIZE(vi->sq[i].sg));
1511 	}
1512 
1513 	return 0;
1514 
1515 err_rq:
1516 	kfree(vi->sq);
1517 err_sq:
1518 	return -ENOMEM;
1519 }
1520 
1521 static int init_vqs(struct virtnet_info *vi)
1522 {
1523 	int ret;
1524 
1525 	/* Allocate send & receive queues */
1526 	ret = virtnet_alloc_queues(vi);
1527 	if (ret)
1528 		goto err;
1529 
1530 	ret = virtnet_find_vqs(vi);
1531 	if (ret)
1532 		goto err_free;
1533 
1534 	get_online_cpus();
1535 	virtnet_set_affinity(vi);
1536 	put_online_cpus();
1537 
1538 	return 0;
1539 
1540 err_free:
1541 	virtnet_free_queues(vi);
1542 err:
1543 	return ret;
1544 }
1545 
1546 static int virtnet_probe(struct virtio_device *vdev)
1547 {
1548 	int i, err;
1549 	struct net_device *dev;
1550 	struct virtnet_info *vi;
1551 	u16 max_queue_pairs;
1552 
1553 	/* Find if host supports multiqueue virtio_net device */
1554 	err = virtio_cread_feature(vdev, VIRTIO_NET_F_MQ,
1555 				   struct virtio_net_config,
1556 				   max_virtqueue_pairs, &max_queue_pairs);
1557 
1558 	/* We need at least 2 queue's */
1559 	if (err || max_queue_pairs < VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN ||
1560 	    max_queue_pairs > VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX ||
1561 	    !virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_VQ))
1562 		max_queue_pairs = 1;
1563 
1564 	/* Allocate ourselves a network device with room for our info */
1565 	dev = alloc_etherdev_mq(sizeof(struct virtnet_info), max_queue_pairs);
1566 	if (!dev)
1567 		return -ENOMEM;
1568 
1569 	/* Set up network device as normal. */
1570 	dev->priv_flags |= IFF_UNICAST_FLT | IFF_LIVE_ADDR_CHANGE;
1571 	dev->netdev_ops = &virtnet_netdev;
1572 	dev->features = NETIF_F_HIGHDMA;
1573 
1574 	SET_ETHTOOL_OPS(dev, &virtnet_ethtool_ops);
1575 	SET_NETDEV_DEV(dev, &vdev->dev);
1576 
1577 	/* Do we support "hardware" checksums? */
1578 	if (virtio_has_feature(vdev, VIRTIO_NET_F_CSUM)) {
1579 		/* This opens up the world of extra features. */
1580 		dev->hw_features |= NETIF_F_HW_CSUM|NETIF_F_SG|NETIF_F_FRAGLIST;
1581 		if (csum)
1582 			dev->features |= NETIF_F_HW_CSUM|NETIF_F_SG|NETIF_F_FRAGLIST;
1583 
1584 		if (virtio_has_feature(vdev, VIRTIO_NET_F_GSO)) {
1585 			dev->hw_features |= NETIF_F_TSO | NETIF_F_UFO
1586 				| NETIF_F_TSO_ECN | NETIF_F_TSO6;
1587 		}
1588 		/* Individual feature bits: what can host handle? */
1589 		if (virtio_has_feature(vdev, VIRTIO_NET_F_HOST_TSO4))
1590 			dev->hw_features |= NETIF_F_TSO;
1591 		if (virtio_has_feature(vdev, VIRTIO_NET_F_HOST_TSO6))
1592 			dev->hw_features |= NETIF_F_TSO6;
1593 		if (virtio_has_feature(vdev, VIRTIO_NET_F_HOST_ECN))
1594 			dev->hw_features |= NETIF_F_TSO_ECN;
1595 		if (virtio_has_feature(vdev, VIRTIO_NET_F_HOST_UFO))
1596 			dev->hw_features |= NETIF_F_UFO;
1597 
1598 		if (gso)
1599 			dev->features |= dev->hw_features & (NETIF_F_ALL_TSO|NETIF_F_UFO);
1600 		/* (!csum && gso) case will be fixed by register_netdev() */
1601 	}
1602 	if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_CSUM))
1603 		dev->features |= NETIF_F_RXCSUM;
1604 
1605 	dev->vlan_features = dev->features;
1606 
1607 	/* Configuration may specify what MAC to use.  Otherwise random. */
1608 	if (virtio_has_feature(vdev, VIRTIO_NET_F_MAC))
1609 		virtio_cread_bytes(vdev,
1610 				   offsetof(struct virtio_net_config, mac),
1611 				   dev->dev_addr, dev->addr_len);
1612 	else
1613 		eth_hw_addr_random(dev);
1614 
1615 	/* Set up our device-specific information */
1616 	vi = netdev_priv(dev);
1617 	vi->dev = dev;
1618 	vi->vdev = vdev;
1619 	vdev->priv = vi;
1620 	vi->stats = alloc_percpu(struct virtnet_stats);
1621 	err = -ENOMEM;
1622 	if (vi->stats == NULL)
1623 		goto free;
1624 
1625 	for_each_possible_cpu(i) {
1626 		struct virtnet_stats *virtnet_stats;
1627 		virtnet_stats = per_cpu_ptr(vi->stats, i);
1628 		u64_stats_init(&virtnet_stats->tx_syncp);
1629 		u64_stats_init(&virtnet_stats->rx_syncp);
1630 	}
1631 
1632 	mutex_init(&vi->config_lock);
1633 	vi->config_enable = true;
1634 	INIT_WORK(&vi->config_work, virtnet_config_changed_work);
1635 
1636 	/* If we can receive ANY GSO packets, we must allocate large ones. */
1637 	if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO4) ||
1638 	    virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO6) ||
1639 	    virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_ECN))
1640 		vi->big_packets = true;
1641 
1642 	if (virtio_has_feature(vdev, VIRTIO_NET_F_MRG_RXBUF))
1643 		vi->mergeable_rx_bufs = true;
1644 
1645 	if (virtio_has_feature(vdev, VIRTIO_F_ANY_LAYOUT))
1646 		vi->any_header_sg = true;
1647 
1648 	if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_VQ))
1649 		vi->has_cvq = true;
1650 
1651 	/* Use single tx/rx queue pair as default */
1652 	vi->curr_queue_pairs = 1;
1653 	vi->max_queue_pairs = max_queue_pairs;
1654 
1655 	/* Allocate/initialize the rx/tx queues, and invoke find_vqs */
1656 	err = init_vqs(vi);
1657 	if (err)
1658 		goto free_stats;
1659 
1660 	netif_set_real_num_tx_queues(dev, vi->curr_queue_pairs);
1661 	netif_set_real_num_rx_queues(dev, vi->curr_queue_pairs);
1662 
1663 	err = register_netdev(dev);
1664 	if (err) {
1665 		pr_debug("virtio_net: registering device failed\n");
1666 		goto free_vqs;
1667 	}
1668 
1669 	/* Last of all, set up some receive buffers. */
1670 	for (i = 0; i < vi->curr_queue_pairs; i++) {
1671 		try_fill_recv(&vi->rq[i], GFP_KERNEL);
1672 
1673 		/* If we didn't even get one input buffer, we're useless. */
1674 		if (vi->rq[i].num == 0) {
1675 			free_unused_bufs(vi);
1676 			err = -ENOMEM;
1677 			goto free_recv_bufs;
1678 		}
1679 	}
1680 
1681 	vi->nb.notifier_call = &virtnet_cpu_callback;
1682 	err = register_hotcpu_notifier(&vi->nb);
1683 	if (err) {
1684 		pr_debug("virtio_net: registering cpu notifier failed\n");
1685 		goto free_recv_bufs;
1686 	}
1687 
1688 	/* Assume link up if device can't report link status,
1689 	   otherwise get link status from config. */
1690 	if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_STATUS)) {
1691 		netif_carrier_off(dev);
1692 		schedule_work(&vi->config_work);
1693 	} else {
1694 		vi->status = VIRTIO_NET_S_LINK_UP;
1695 		netif_carrier_on(dev);
1696 	}
1697 
1698 	pr_debug("virtnet: registered device %s with %d RX and TX vq's\n",
1699 		 dev->name, max_queue_pairs);
1700 
1701 	return 0;
1702 
1703 free_recv_bufs:
1704 	free_receive_bufs(vi);
1705 	unregister_netdev(dev);
1706 free_vqs:
1707 	cancel_delayed_work_sync(&vi->refill);
1708 	virtnet_del_vqs(vi);
1709 	if (vi->alloc_frag.page)
1710 		put_page(vi->alloc_frag.page);
1711 free_stats:
1712 	free_percpu(vi->stats);
1713 free:
1714 	free_netdev(dev);
1715 	return err;
1716 }
1717 
1718 static void remove_vq_common(struct virtnet_info *vi)
1719 {
1720 	vi->vdev->config->reset(vi->vdev);
1721 
1722 	/* Free unused buffers in both send and recv, if any. */
1723 	free_unused_bufs(vi);
1724 
1725 	free_receive_bufs(vi);
1726 
1727 	virtnet_del_vqs(vi);
1728 }
1729 
1730 static void virtnet_remove(struct virtio_device *vdev)
1731 {
1732 	struct virtnet_info *vi = vdev->priv;
1733 
1734 	unregister_hotcpu_notifier(&vi->nb);
1735 
1736 	/* Prevent config work handler from accessing the device. */
1737 	mutex_lock(&vi->config_lock);
1738 	vi->config_enable = false;
1739 	mutex_unlock(&vi->config_lock);
1740 
1741 	unregister_netdev(vi->dev);
1742 
1743 	remove_vq_common(vi);
1744 	if (vi->alloc_frag.page)
1745 		put_page(vi->alloc_frag.page);
1746 
1747 	flush_work(&vi->config_work);
1748 
1749 	free_percpu(vi->stats);
1750 	free_netdev(vi->dev);
1751 }
1752 
1753 #ifdef CONFIG_PM_SLEEP
1754 static int virtnet_freeze(struct virtio_device *vdev)
1755 {
1756 	struct virtnet_info *vi = vdev->priv;
1757 	int i;
1758 
1759 	unregister_hotcpu_notifier(&vi->nb);
1760 
1761 	/* Prevent config work handler from accessing the device */
1762 	mutex_lock(&vi->config_lock);
1763 	vi->config_enable = false;
1764 	mutex_unlock(&vi->config_lock);
1765 
1766 	netif_device_detach(vi->dev);
1767 	cancel_delayed_work_sync(&vi->refill);
1768 
1769 	if (netif_running(vi->dev))
1770 		for (i = 0; i < vi->max_queue_pairs; i++) {
1771 			napi_disable(&vi->rq[i].napi);
1772 			netif_napi_del(&vi->rq[i].napi);
1773 		}
1774 
1775 	remove_vq_common(vi);
1776 
1777 	flush_work(&vi->config_work);
1778 
1779 	return 0;
1780 }
1781 
1782 static int virtnet_restore(struct virtio_device *vdev)
1783 {
1784 	struct virtnet_info *vi = vdev->priv;
1785 	int err, i;
1786 
1787 	err = init_vqs(vi);
1788 	if (err)
1789 		return err;
1790 
1791 	if (netif_running(vi->dev))
1792 		for (i = 0; i < vi->max_queue_pairs; i++)
1793 			virtnet_napi_enable(&vi->rq[i]);
1794 
1795 	netif_device_attach(vi->dev);
1796 
1797 	for (i = 0; i < vi->curr_queue_pairs; i++)
1798 		if (!try_fill_recv(&vi->rq[i], GFP_KERNEL))
1799 			schedule_delayed_work(&vi->refill, 0);
1800 
1801 	mutex_lock(&vi->config_lock);
1802 	vi->config_enable = true;
1803 	mutex_unlock(&vi->config_lock);
1804 
1805 	rtnl_lock();
1806 	virtnet_set_queues(vi, vi->curr_queue_pairs);
1807 	rtnl_unlock();
1808 
1809 	err = register_hotcpu_notifier(&vi->nb);
1810 	if (err)
1811 		return err;
1812 
1813 	return 0;
1814 }
1815 #endif
1816 
1817 static struct virtio_device_id id_table[] = {
1818 	{ VIRTIO_ID_NET, VIRTIO_DEV_ANY_ID },
1819 	{ 0 },
1820 };
1821 
1822 static unsigned int features[] = {
1823 	VIRTIO_NET_F_CSUM, VIRTIO_NET_F_GUEST_CSUM,
1824 	VIRTIO_NET_F_GSO, VIRTIO_NET_F_MAC,
1825 	VIRTIO_NET_F_HOST_TSO4, VIRTIO_NET_F_HOST_UFO, VIRTIO_NET_F_HOST_TSO6,
1826 	VIRTIO_NET_F_HOST_ECN, VIRTIO_NET_F_GUEST_TSO4, VIRTIO_NET_F_GUEST_TSO6,
1827 	VIRTIO_NET_F_GUEST_ECN, VIRTIO_NET_F_GUEST_UFO,
1828 	VIRTIO_NET_F_MRG_RXBUF, VIRTIO_NET_F_STATUS, VIRTIO_NET_F_CTRL_VQ,
1829 	VIRTIO_NET_F_CTRL_RX, VIRTIO_NET_F_CTRL_VLAN,
1830 	VIRTIO_NET_F_GUEST_ANNOUNCE, VIRTIO_NET_F_MQ,
1831 	VIRTIO_NET_F_CTRL_MAC_ADDR,
1832 	VIRTIO_F_ANY_LAYOUT,
1833 };
1834 
1835 static struct virtio_driver virtio_net_driver = {
1836 	.feature_table = features,
1837 	.feature_table_size = ARRAY_SIZE(features),
1838 	.driver.name =	KBUILD_MODNAME,
1839 	.driver.owner =	THIS_MODULE,
1840 	.id_table =	id_table,
1841 	.probe =	virtnet_probe,
1842 	.remove =	virtnet_remove,
1843 	.config_changed = virtnet_config_changed,
1844 #ifdef CONFIG_PM_SLEEP
1845 	.freeze =	virtnet_freeze,
1846 	.restore =	virtnet_restore,
1847 #endif
1848 };
1849 
1850 module_virtio_driver(virtio_net_driver);
1851 
1852 MODULE_DEVICE_TABLE(virtio, id_table);
1853 MODULE_DESCRIPTION("Virtio network driver");
1854 MODULE_LICENSE("GPL");
1855