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/bpf.h> 26 #include <linux/scatterlist.h> 27 #include <linux/if_vlan.h> 28 #include <linux/slab.h> 29 #include <linux/cpu.h> 30 #include <linux/average.h> 31 #include <net/busy_poll.h> 32 33 static int napi_weight = NAPI_POLL_WEIGHT; 34 module_param(napi_weight, int, 0444); 35 36 static bool csum = true, gso = true; 37 module_param(csum, bool, 0444); 38 module_param(gso, bool, 0444); 39 40 /* FIXME: MTU in config. */ 41 #define GOOD_PACKET_LEN (ETH_HLEN + VLAN_HLEN + ETH_DATA_LEN) 42 #define GOOD_COPY_LEN 128 43 44 /* RX packet size EWMA. The average packet size is used to determine the packet 45 * buffer size when refilling RX rings. As the entire RX ring may be refilled 46 * at once, the weight is chosen so that the EWMA will be insensitive to short- 47 * term, transient changes in packet size. 48 */ 49 DECLARE_EWMA(pkt_len, 1, 64) 50 51 /* Minimum alignment for mergeable packet buffers. */ 52 #define MERGEABLE_BUFFER_ALIGN max(L1_CACHE_BYTES, 256) 53 54 #define VIRTNET_DRIVER_VERSION "1.0.0" 55 56 struct virtnet_stats { 57 struct u64_stats_sync tx_syncp; 58 struct u64_stats_sync rx_syncp; 59 u64 tx_bytes; 60 u64 tx_packets; 61 62 u64 rx_bytes; 63 u64 rx_packets; 64 }; 65 66 /* Internal representation of a send virtqueue */ 67 struct send_queue { 68 /* Virtqueue associated with this send _queue */ 69 struct virtqueue *vq; 70 71 /* TX: fragments + linear part + virtio header */ 72 struct scatterlist sg[MAX_SKB_FRAGS + 2]; 73 74 /* Name of the send queue: output.$index */ 75 char name[40]; 76 }; 77 78 /* Internal representation of a receive virtqueue */ 79 struct receive_queue { 80 /* Virtqueue associated with this receive_queue */ 81 struct virtqueue *vq; 82 83 struct napi_struct napi; 84 85 struct bpf_prog __rcu *xdp_prog; 86 87 /* Chain pages by the private ptr. */ 88 struct page *pages; 89 90 /* Average packet length for mergeable receive buffers. */ 91 struct ewma_pkt_len mrg_avg_pkt_len; 92 93 /* Page frag for packet buffer allocation. */ 94 struct page_frag alloc_frag; 95 96 /* RX: fragments + linear part + virtio header */ 97 struct scatterlist sg[MAX_SKB_FRAGS + 2]; 98 99 /* Name of this receive queue: input.$index */ 100 char name[40]; 101 }; 102 103 struct virtnet_info { 104 struct virtio_device *vdev; 105 struct virtqueue *cvq; 106 struct net_device *dev; 107 struct send_queue *sq; 108 struct receive_queue *rq; 109 unsigned int status; 110 111 /* Max # of queue pairs supported by the device */ 112 u16 max_queue_pairs; 113 114 /* # of queue pairs currently used by the driver */ 115 u16 curr_queue_pairs; 116 117 /* # of XDP queue pairs currently used by the driver */ 118 u16 xdp_queue_pairs; 119 120 /* I like... big packets and I cannot lie! */ 121 bool big_packets; 122 123 /* Host will merge rx buffers for big packets (shake it! shake it!) */ 124 bool mergeable_rx_bufs; 125 126 /* Has control virtqueue */ 127 bool has_cvq; 128 129 /* Host can handle any s/g split between our header and packet data */ 130 bool any_header_sg; 131 132 /* Packet virtio header size */ 133 u8 hdr_len; 134 135 /* Active statistics */ 136 struct virtnet_stats __percpu *stats; 137 138 /* Work struct for refilling if we run low on memory. */ 139 struct delayed_work refill; 140 141 /* Work struct for config space updates */ 142 struct work_struct config_work; 143 144 /* Does the affinity hint is set for virtqueues? */ 145 bool affinity_hint_set; 146 147 /* CPU hotplug instances for online & dead */ 148 struct hlist_node node; 149 struct hlist_node node_dead; 150 151 /* Control VQ buffers: protected by the rtnl lock */ 152 struct virtio_net_ctrl_hdr ctrl_hdr; 153 virtio_net_ctrl_ack ctrl_status; 154 struct virtio_net_ctrl_mq ctrl_mq; 155 u8 ctrl_promisc; 156 u8 ctrl_allmulti; 157 u16 ctrl_vid; 158 159 /* Ethtool settings */ 160 u8 duplex; 161 u32 speed; 162 }; 163 164 struct padded_vnet_hdr { 165 struct virtio_net_hdr_mrg_rxbuf hdr; 166 /* 167 * hdr is in a separate sg buffer, and data sg buffer shares same page 168 * with this header sg. This padding makes next sg 16 byte aligned 169 * after the header. 170 */ 171 char padding[4]; 172 }; 173 174 /* Converting between virtqueue no. and kernel tx/rx queue no. 175 * 0:rx0 1:tx0 2:rx1 3:tx1 ... 2N:rxN 2N+1:txN 2N+2:cvq 176 */ 177 static int vq2txq(struct virtqueue *vq) 178 { 179 return (vq->index - 1) / 2; 180 } 181 182 static int txq2vq(int txq) 183 { 184 return txq * 2 + 1; 185 } 186 187 static int vq2rxq(struct virtqueue *vq) 188 { 189 return vq->index / 2; 190 } 191 192 static int rxq2vq(int rxq) 193 { 194 return rxq * 2; 195 } 196 197 static inline struct virtio_net_hdr_mrg_rxbuf *skb_vnet_hdr(struct sk_buff *skb) 198 { 199 return (struct virtio_net_hdr_mrg_rxbuf *)skb->cb; 200 } 201 202 /* 203 * private is used to chain pages for big packets, put the whole 204 * most recent used list in the beginning for reuse 205 */ 206 static void give_pages(struct receive_queue *rq, struct page *page) 207 { 208 struct page *end; 209 210 /* Find end of list, sew whole thing into vi->rq.pages. */ 211 for (end = page; end->private; end = (struct page *)end->private); 212 end->private = (unsigned long)rq->pages; 213 rq->pages = page; 214 } 215 216 static struct page *get_a_page(struct receive_queue *rq, gfp_t gfp_mask) 217 { 218 struct page *p = rq->pages; 219 220 if (p) { 221 rq->pages = (struct page *)p->private; 222 /* clear private here, it is used to chain pages */ 223 p->private = 0; 224 } else 225 p = alloc_page(gfp_mask); 226 return p; 227 } 228 229 static void skb_xmit_done(struct virtqueue *vq) 230 { 231 struct virtnet_info *vi = vq->vdev->priv; 232 233 /* Suppress further interrupts. */ 234 virtqueue_disable_cb(vq); 235 236 /* We were probably waiting for more output buffers. */ 237 netif_wake_subqueue(vi->dev, vq2txq(vq)); 238 } 239 240 static unsigned int mergeable_ctx_to_buf_truesize(unsigned long mrg_ctx) 241 { 242 unsigned int truesize = mrg_ctx & (MERGEABLE_BUFFER_ALIGN - 1); 243 return (truesize + 1) * MERGEABLE_BUFFER_ALIGN; 244 } 245 246 static void *mergeable_ctx_to_buf_address(unsigned long mrg_ctx) 247 { 248 return (void *)(mrg_ctx & -MERGEABLE_BUFFER_ALIGN); 249 250 } 251 252 static unsigned long mergeable_buf_to_ctx(void *buf, unsigned int truesize) 253 { 254 unsigned int size = truesize / MERGEABLE_BUFFER_ALIGN; 255 return (unsigned long)buf | (size - 1); 256 } 257 258 /* Called from bottom half context */ 259 static struct sk_buff *page_to_skb(struct virtnet_info *vi, 260 struct receive_queue *rq, 261 struct page *page, unsigned int offset, 262 unsigned int len, unsigned int truesize) 263 { 264 struct sk_buff *skb; 265 struct virtio_net_hdr_mrg_rxbuf *hdr; 266 unsigned int copy, hdr_len, hdr_padded_len; 267 char *p; 268 269 p = page_address(page) + offset; 270 271 /* copy small packet so we can reuse these pages for small data */ 272 skb = napi_alloc_skb(&rq->napi, GOOD_COPY_LEN); 273 if (unlikely(!skb)) 274 return NULL; 275 276 hdr = skb_vnet_hdr(skb); 277 278 hdr_len = vi->hdr_len; 279 if (vi->mergeable_rx_bufs) 280 hdr_padded_len = sizeof *hdr; 281 else 282 hdr_padded_len = sizeof(struct padded_vnet_hdr); 283 284 memcpy(hdr, p, hdr_len); 285 286 len -= hdr_len; 287 offset += hdr_padded_len; 288 p += hdr_padded_len; 289 290 copy = len; 291 if (copy > skb_tailroom(skb)) 292 copy = skb_tailroom(skb); 293 memcpy(skb_put(skb, copy), p, copy); 294 295 len -= copy; 296 offset += copy; 297 298 if (vi->mergeable_rx_bufs) { 299 if (len) 300 skb_add_rx_frag(skb, 0, page, offset, len, truesize); 301 else 302 put_page(page); 303 return skb; 304 } 305 306 /* 307 * Verify that we can indeed put this data into a skb. 308 * This is here to handle cases when the device erroneously 309 * tries to receive more than is possible. This is usually 310 * the case of a broken device. 311 */ 312 if (unlikely(len > MAX_SKB_FRAGS * PAGE_SIZE)) { 313 net_dbg_ratelimited("%s: too much data\n", skb->dev->name); 314 dev_kfree_skb(skb); 315 return NULL; 316 } 317 BUG_ON(offset >= PAGE_SIZE); 318 while (len) { 319 unsigned int frag_size = min((unsigned)PAGE_SIZE - offset, len); 320 skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, page, offset, 321 frag_size, truesize); 322 len -= frag_size; 323 page = (struct page *)page->private; 324 offset = 0; 325 } 326 327 if (page) 328 give_pages(rq, page); 329 330 return skb; 331 } 332 333 static void virtnet_xdp_xmit(struct virtnet_info *vi, 334 struct receive_queue *rq, 335 struct send_queue *sq, 336 struct xdp_buff *xdp) 337 { 338 struct page *page = virt_to_head_page(xdp->data); 339 struct virtio_net_hdr_mrg_rxbuf *hdr; 340 unsigned int num_sg, len; 341 void *xdp_sent; 342 int err; 343 344 /* Free up any pending old buffers before queueing new ones. */ 345 while ((xdp_sent = virtqueue_get_buf(sq->vq, &len)) != NULL) { 346 struct page *sent_page = virt_to_head_page(xdp_sent); 347 348 if (vi->mergeable_rx_bufs) 349 put_page(sent_page); 350 else 351 give_pages(rq, sent_page); 352 } 353 354 /* Zero header and leave csum up to XDP layers */ 355 hdr = xdp->data; 356 memset(hdr, 0, vi->hdr_len); 357 358 num_sg = 1; 359 sg_init_one(sq->sg, xdp->data, xdp->data_end - xdp->data); 360 err = virtqueue_add_outbuf(sq->vq, sq->sg, num_sg, 361 xdp->data, GFP_ATOMIC); 362 if (unlikely(err)) { 363 if (vi->mergeable_rx_bufs) 364 put_page(page); 365 else 366 give_pages(rq, page); 367 return; // On error abort to avoid unnecessary kick 368 } else if (!vi->mergeable_rx_bufs) { 369 /* If not mergeable bufs must be big packets so cleanup pages */ 370 give_pages(rq, (struct page *)page->private); 371 page->private = 0; 372 } 373 374 virtqueue_kick(sq->vq); 375 } 376 377 static u32 do_xdp_prog(struct virtnet_info *vi, 378 struct receive_queue *rq, 379 struct bpf_prog *xdp_prog, 380 struct page *page, int offset, int len) 381 { 382 int hdr_padded_len; 383 struct xdp_buff xdp; 384 unsigned int qp; 385 u32 act; 386 u8 *buf; 387 388 buf = page_address(page) + offset; 389 390 if (vi->mergeable_rx_bufs) 391 hdr_padded_len = sizeof(struct virtio_net_hdr_mrg_rxbuf); 392 else 393 hdr_padded_len = sizeof(struct padded_vnet_hdr); 394 395 xdp.data = buf + hdr_padded_len; 396 xdp.data_end = xdp.data + (len - vi->hdr_len); 397 398 act = bpf_prog_run_xdp(xdp_prog, &xdp); 399 switch (act) { 400 case XDP_PASS: 401 return XDP_PASS; 402 case XDP_TX: 403 qp = vi->curr_queue_pairs - 404 vi->xdp_queue_pairs + 405 smp_processor_id(); 406 xdp.data = buf + (vi->mergeable_rx_bufs ? 0 : 4); 407 virtnet_xdp_xmit(vi, rq, &vi->sq[qp], &xdp); 408 return XDP_TX; 409 default: 410 bpf_warn_invalid_xdp_action(act); 411 case XDP_ABORTED: 412 case XDP_DROP: 413 return XDP_DROP; 414 } 415 } 416 417 static struct sk_buff *receive_small(struct virtnet_info *vi, void *buf, unsigned int len) 418 { 419 struct sk_buff * skb = buf; 420 421 len -= vi->hdr_len; 422 skb_trim(skb, len); 423 424 return skb; 425 } 426 427 static struct sk_buff *receive_big(struct net_device *dev, 428 struct virtnet_info *vi, 429 struct receive_queue *rq, 430 void *buf, 431 unsigned int len) 432 { 433 struct bpf_prog *xdp_prog; 434 struct page *page = buf; 435 struct sk_buff *skb; 436 437 rcu_read_lock(); 438 xdp_prog = rcu_dereference(rq->xdp_prog); 439 if (xdp_prog) { 440 struct virtio_net_hdr_mrg_rxbuf *hdr = buf; 441 u32 act; 442 443 if (unlikely(hdr->hdr.gso_type || hdr->hdr.flags)) 444 goto err_xdp; 445 act = do_xdp_prog(vi, rq, xdp_prog, page, 0, len); 446 switch (act) { 447 case XDP_PASS: 448 break; 449 case XDP_TX: 450 rcu_read_unlock(); 451 goto xdp_xmit; 452 case XDP_DROP: 453 default: 454 goto err_xdp; 455 } 456 } 457 rcu_read_unlock(); 458 459 skb = page_to_skb(vi, rq, page, 0, len, PAGE_SIZE); 460 if (unlikely(!skb)) 461 goto err; 462 463 return skb; 464 465 err_xdp: 466 rcu_read_unlock(); 467 err: 468 dev->stats.rx_dropped++; 469 give_pages(rq, page); 470 xdp_xmit: 471 return NULL; 472 } 473 474 /* The conditions to enable XDP should preclude the underlying device from 475 * sending packets across multiple buffers (num_buf > 1). However per spec 476 * it does not appear to be illegal to do so but rather just against convention. 477 * So in order to avoid making a system unresponsive the packets are pushed 478 * into a page and the XDP program is run. This will be extremely slow and we 479 * push a warning to the user to fix this as soon as possible. Fixing this may 480 * require resolving the underlying hardware to determine why multiple buffers 481 * are being received or simply loading the XDP program in the ingress stack 482 * after the skb is built because there is no advantage to running it here 483 * anymore. 484 */ 485 static struct page *xdp_linearize_page(struct receive_queue *rq, 486 u16 *num_buf, 487 struct page *p, 488 int offset, 489 unsigned int *len) 490 { 491 struct page *page = alloc_page(GFP_ATOMIC); 492 unsigned int page_off = 0; 493 494 if (!page) 495 return NULL; 496 497 memcpy(page_address(page) + page_off, page_address(p) + offset, *len); 498 page_off += *len; 499 500 while (--*num_buf) { 501 unsigned int buflen; 502 unsigned long ctx; 503 void *buf; 504 int off; 505 506 ctx = (unsigned long)virtqueue_get_buf(rq->vq, &buflen); 507 if (unlikely(!ctx)) 508 goto err_buf; 509 510 buf = mergeable_ctx_to_buf_address(ctx); 511 p = virt_to_head_page(buf); 512 off = buf - page_address(p); 513 514 /* guard against a misconfigured or uncooperative backend that 515 * is sending packet larger than the MTU. 516 */ 517 if ((page_off + buflen) > PAGE_SIZE) { 518 put_page(p); 519 goto err_buf; 520 } 521 522 memcpy(page_address(page) + page_off, 523 page_address(p) + off, buflen); 524 page_off += buflen; 525 put_page(p); 526 } 527 528 *len = page_off; 529 return page; 530 err_buf: 531 __free_pages(page, 0); 532 return NULL; 533 } 534 535 static struct sk_buff *receive_mergeable(struct net_device *dev, 536 struct virtnet_info *vi, 537 struct receive_queue *rq, 538 unsigned long ctx, 539 unsigned int len) 540 { 541 void *buf = mergeable_ctx_to_buf_address(ctx); 542 struct virtio_net_hdr_mrg_rxbuf *hdr = buf; 543 u16 num_buf = virtio16_to_cpu(vi->vdev, hdr->num_buffers); 544 struct page *page = virt_to_head_page(buf); 545 int offset = buf - page_address(page); 546 struct sk_buff *head_skb, *curr_skb; 547 struct bpf_prog *xdp_prog; 548 unsigned int truesize; 549 550 head_skb = NULL; 551 552 rcu_read_lock(); 553 xdp_prog = rcu_dereference(rq->xdp_prog); 554 if (xdp_prog) { 555 struct page *xdp_page; 556 u32 act; 557 558 /* This happens when rx buffer size is underestimated */ 559 if (unlikely(num_buf > 1)) { 560 /* linearize data for XDP */ 561 xdp_page = xdp_linearize_page(rq, &num_buf, 562 page, offset, &len); 563 if (!xdp_page) 564 goto err_xdp; 565 offset = 0; 566 } else { 567 xdp_page = page; 568 } 569 570 /* Transient failure which in theory could occur if 571 * in-flight packets from before XDP was enabled reach 572 * the receive path after XDP is loaded. In practice I 573 * was not able to create this condition. 574 */ 575 if (unlikely(hdr->hdr.gso_type || hdr->hdr.flags)) 576 goto err_xdp; 577 578 act = do_xdp_prog(vi, rq, xdp_prog, xdp_page, offset, len); 579 switch (act) { 580 case XDP_PASS: 581 if (unlikely(xdp_page != page)) 582 __free_pages(xdp_page, 0); 583 break; 584 case XDP_TX: 585 if (unlikely(xdp_page != page)) 586 goto err_xdp; 587 rcu_read_unlock(); 588 goto xdp_xmit; 589 case XDP_DROP: 590 default: 591 if (unlikely(xdp_page != page)) 592 __free_pages(xdp_page, 0); 593 goto err_xdp; 594 } 595 } 596 rcu_read_unlock(); 597 598 truesize = max(len, mergeable_ctx_to_buf_truesize(ctx)); 599 head_skb = page_to_skb(vi, rq, page, offset, len, truesize); 600 curr_skb = head_skb; 601 602 if (unlikely(!curr_skb)) 603 goto err_skb; 604 while (--num_buf) { 605 int num_skb_frags; 606 607 ctx = (unsigned long)virtqueue_get_buf(rq->vq, &len); 608 if (unlikely(!ctx)) { 609 pr_debug("%s: rx error: %d buffers out of %d missing\n", 610 dev->name, num_buf, 611 virtio16_to_cpu(vi->vdev, 612 hdr->num_buffers)); 613 dev->stats.rx_length_errors++; 614 goto err_buf; 615 } 616 617 buf = mergeable_ctx_to_buf_address(ctx); 618 page = virt_to_head_page(buf); 619 620 num_skb_frags = skb_shinfo(curr_skb)->nr_frags; 621 if (unlikely(num_skb_frags == MAX_SKB_FRAGS)) { 622 struct sk_buff *nskb = alloc_skb(0, GFP_ATOMIC); 623 624 if (unlikely(!nskb)) 625 goto err_skb; 626 if (curr_skb == head_skb) 627 skb_shinfo(curr_skb)->frag_list = nskb; 628 else 629 curr_skb->next = nskb; 630 curr_skb = nskb; 631 head_skb->truesize += nskb->truesize; 632 num_skb_frags = 0; 633 } 634 truesize = max(len, mergeable_ctx_to_buf_truesize(ctx)); 635 if (curr_skb != head_skb) { 636 head_skb->data_len += len; 637 head_skb->len += len; 638 head_skb->truesize += truesize; 639 } 640 offset = buf - page_address(page); 641 if (skb_can_coalesce(curr_skb, num_skb_frags, page, offset)) { 642 put_page(page); 643 skb_coalesce_rx_frag(curr_skb, num_skb_frags - 1, 644 len, truesize); 645 } else { 646 skb_add_rx_frag(curr_skb, num_skb_frags, page, 647 offset, len, truesize); 648 } 649 } 650 651 ewma_pkt_len_add(&rq->mrg_avg_pkt_len, head_skb->len); 652 return head_skb; 653 654 err_xdp: 655 rcu_read_unlock(); 656 err_skb: 657 put_page(page); 658 while (--num_buf) { 659 ctx = (unsigned long)virtqueue_get_buf(rq->vq, &len); 660 if (unlikely(!ctx)) { 661 pr_debug("%s: rx error: %d buffers missing\n", 662 dev->name, num_buf); 663 dev->stats.rx_length_errors++; 664 break; 665 } 666 page = virt_to_head_page(mergeable_ctx_to_buf_address(ctx)); 667 put_page(page); 668 } 669 err_buf: 670 dev->stats.rx_dropped++; 671 dev_kfree_skb(head_skb); 672 xdp_xmit: 673 return NULL; 674 } 675 676 static void receive_buf(struct virtnet_info *vi, struct receive_queue *rq, 677 void *buf, unsigned int len) 678 { 679 struct net_device *dev = vi->dev; 680 struct virtnet_stats *stats = this_cpu_ptr(vi->stats); 681 struct sk_buff *skb; 682 struct virtio_net_hdr_mrg_rxbuf *hdr; 683 684 if (unlikely(len < vi->hdr_len + ETH_HLEN)) { 685 pr_debug("%s: short packet %i\n", dev->name, len); 686 dev->stats.rx_length_errors++; 687 if (vi->mergeable_rx_bufs) { 688 unsigned long ctx = (unsigned long)buf; 689 void *base = mergeable_ctx_to_buf_address(ctx); 690 put_page(virt_to_head_page(base)); 691 } else if (vi->big_packets) { 692 give_pages(rq, buf); 693 } else { 694 dev_kfree_skb(buf); 695 } 696 return; 697 } 698 699 if (vi->mergeable_rx_bufs) 700 skb = receive_mergeable(dev, vi, rq, (unsigned long)buf, len); 701 else if (vi->big_packets) 702 skb = receive_big(dev, vi, rq, buf, len); 703 else 704 skb = receive_small(vi, buf, len); 705 706 if (unlikely(!skb)) 707 return; 708 709 hdr = skb_vnet_hdr(skb); 710 711 u64_stats_update_begin(&stats->rx_syncp); 712 stats->rx_bytes += skb->len; 713 stats->rx_packets++; 714 u64_stats_update_end(&stats->rx_syncp); 715 716 if (hdr->hdr.flags & VIRTIO_NET_HDR_F_DATA_VALID) 717 skb->ip_summed = CHECKSUM_UNNECESSARY; 718 719 if (virtio_net_hdr_to_skb(skb, &hdr->hdr, 720 virtio_is_little_endian(vi->vdev))) { 721 net_warn_ratelimited("%s: bad gso: type: %u, size: %u\n", 722 dev->name, hdr->hdr.gso_type, 723 hdr->hdr.gso_size); 724 goto frame_err; 725 } 726 727 skb->protocol = eth_type_trans(skb, dev); 728 pr_debug("Receiving skb proto 0x%04x len %i type %i\n", 729 ntohs(skb->protocol), skb->len, skb->pkt_type); 730 731 napi_gro_receive(&rq->napi, skb); 732 return; 733 734 frame_err: 735 dev->stats.rx_frame_errors++; 736 dev_kfree_skb(skb); 737 } 738 739 static int add_recvbuf_small(struct virtnet_info *vi, struct receive_queue *rq, 740 gfp_t gfp) 741 { 742 struct sk_buff *skb; 743 struct virtio_net_hdr_mrg_rxbuf *hdr; 744 int err; 745 746 skb = __netdev_alloc_skb_ip_align(vi->dev, GOOD_PACKET_LEN, gfp); 747 if (unlikely(!skb)) 748 return -ENOMEM; 749 750 skb_put(skb, GOOD_PACKET_LEN); 751 752 hdr = skb_vnet_hdr(skb); 753 sg_init_table(rq->sg, 2); 754 sg_set_buf(rq->sg, hdr, vi->hdr_len); 755 skb_to_sgvec(skb, rq->sg + 1, 0, skb->len); 756 757 err = virtqueue_add_inbuf(rq->vq, rq->sg, 2, skb, gfp); 758 if (err < 0) 759 dev_kfree_skb(skb); 760 761 return err; 762 } 763 764 static int add_recvbuf_big(struct virtnet_info *vi, struct receive_queue *rq, 765 gfp_t gfp) 766 { 767 struct page *first, *list = NULL; 768 char *p; 769 int i, err, offset; 770 771 sg_init_table(rq->sg, MAX_SKB_FRAGS + 2); 772 773 /* page in rq->sg[MAX_SKB_FRAGS + 1] is list tail */ 774 for (i = MAX_SKB_FRAGS + 1; i > 1; --i) { 775 first = get_a_page(rq, gfp); 776 if (!first) { 777 if (list) 778 give_pages(rq, list); 779 return -ENOMEM; 780 } 781 sg_set_buf(&rq->sg[i], page_address(first), PAGE_SIZE); 782 783 /* chain new page in list head to match sg */ 784 first->private = (unsigned long)list; 785 list = first; 786 } 787 788 first = get_a_page(rq, gfp); 789 if (!first) { 790 give_pages(rq, list); 791 return -ENOMEM; 792 } 793 p = page_address(first); 794 795 /* rq->sg[0], rq->sg[1] share the same page */ 796 /* a separated rq->sg[0] for header - required in case !any_header_sg */ 797 sg_set_buf(&rq->sg[0], p, vi->hdr_len); 798 799 /* rq->sg[1] for data packet, from offset */ 800 offset = sizeof(struct padded_vnet_hdr); 801 sg_set_buf(&rq->sg[1], p + offset, PAGE_SIZE - offset); 802 803 /* chain first in list head */ 804 first->private = (unsigned long)list; 805 err = virtqueue_add_inbuf(rq->vq, rq->sg, MAX_SKB_FRAGS + 2, 806 first, gfp); 807 if (err < 0) 808 give_pages(rq, first); 809 810 return err; 811 } 812 813 static unsigned int get_mergeable_buf_len(struct ewma_pkt_len *avg_pkt_len) 814 { 815 const size_t hdr_len = sizeof(struct virtio_net_hdr_mrg_rxbuf); 816 unsigned int len; 817 818 len = hdr_len + clamp_t(unsigned int, ewma_pkt_len_read(avg_pkt_len), 819 GOOD_PACKET_LEN, PAGE_SIZE - hdr_len); 820 return ALIGN(len, MERGEABLE_BUFFER_ALIGN); 821 } 822 823 static int add_recvbuf_mergeable(struct receive_queue *rq, gfp_t gfp) 824 { 825 struct page_frag *alloc_frag = &rq->alloc_frag; 826 char *buf; 827 unsigned long ctx; 828 int err; 829 unsigned int len, hole; 830 831 len = get_mergeable_buf_len(&rq->mrg_avg_pkt_len); 832 if (unlikely(!skb_page_frag_refill(len, alloc_frag, gfp))) 833 return -ENOMEM; 834 835 buf = (char *)page_address(alloc_frag->page) + alloc_frag->offset; 836 ctx = mergeable_buf_to_ctx(buf, len); 837 get_page(alloc_frag->page); 838 alloc_frag->offset += len; 839 hole = alloc_frag->size - alloc_frag->offset; 840 if (hole < len) { 841 /* To avoid internal fragmentation, if there is very likely not 842 * enough space for another buffer, add the remaining space to 843 * the current buffer. This extra space is not included in 844 * the truesize stored in ctx. 845 */ 846 len += hole; 847 alloc_frag->offset += hole; 848 } 849 850 sg_init_one(rq->sg, buf, len); 851 err = virtqueue_add_inbuf(rq->vq, rq->sg, 1, (void *)ctx, gfp); 852 if (err < 0) 853 put_page(virt_to_head_page(buf)); 854 855 return err; 856 } 857 858 /* 859 * Returns false if we couldn't fill entirely (OOM). 860 * 861 * Normally run in the receive path, but can also be run from ndo_open 862 * before we're receiving packets, or from refill_work which is 863 * careful to disable receiving (using napi_disable). 864 */ 865 static bool try_fill_recv(struct virtnet_info *vi, struct receive_queue *rq, 866 gfp_t gfp) 867 { 868 int err; 869 bool oom; 870 871 gfp |= __GFP_COLD; 872 do { 873 if (vi->mergeable_rx_bufs) 874 err = add_recvbuf_mergeable(rq, gfp); 875 else if (vi->big_packets) 876 err = add_recvbuf_big(vi, rq, gfp); 877 else 878 err = add_recvbuf_small(vi, rq, gfp); 879 880 oom = err == -ENOMEM; 881 if (err) 882 break; 883 } while (rq->vq->num_free); 884 virtqueue_kick(rq->vq); 885 return !oom; 886 } 887 888 static void skb_recv_done(struct virtqueue *rvq) 889 { 890 struct virtnet_info *vi = rvq->vdev->priv; 891 struct receive_queue *rq = &vi->rq[vq2rxq(rvq)]; 892 893 /* Schedule NAPI, Suppress further interrupts if successful. */ 894 if (napi_schedule_prep(&rq->napi)) { 895 virtqueue_disable_cb(rvq); 896 __napi_schedule(&rq->napi); 897 } 898 } 899 900 static void virtnet_napi_enable(struct receive_queue *rq) 901 { 902 napi_enable(&rq->napi); 903 904 /* If all buffers were filled by other side before we napi_enabled, we 905 * won't get another interrupt, so process any outstanding packets 906 * now. virtnet_poll wants re-enable the queue, so we disable here. 907 * We synchronize against interrupts via NAPI_STATE_SCHED */ 908 if (napi_schedule_prep(&rq->napi)) { 909 virtqueue_disable_cb(rq->vq); 910 local_bh_disable(); 911 __napi_schedule(&rq->napi); 912 local_bh_enable(); 913 } 914 } 915 916 static void refill_work(struct work_struct *work) 917 { 918 struct virtnet_info *vi = 919 container_of(work, struct virtnet_info, refill.work); 920 bool still_empty; 921 int i; 922 923 for (i = 0; i < vi->curr_queue_pairs; i++) { 924 struct receive_queue *rq = &vi->rq[i]; 925 926 napi_disable(&rq->napi); 927 still_empty = !try_fill_recv(vi, rq, GFP_KERNEL); 928 virtnet_napi_enable(rq); 929 930 /* In theory, this can happen: if we don't get any buffers in 931 * we will *never* try to fill again. 932 */ 933 if (still_empty) 934 schedule_delayed_work(&vi->refill, HZ/2); 935 } 936 } 937 938 static int virtnet_receive(struct receive_queue *rq, int budget) 939 { 940 struct virtnet_info *vi = rq->vq->vdev->priv; 941 unsigned int len, received = 0; 942 void *buf; 943 944 while (received < budget && 945 (buf = virtqueue_get_buf(rq->vq, &len)) != NULL) { 946 receive_buf(vi, rq, buf, len); 947 received++; 948 } 949 950 if (rq->vq->num_free > virtqueue_get_vring_size(rq->vq) / 2) { 951 if (!try_fill_recv(vi, rq, GFP_ATOMIC)) 952 schedule_delayed_work(&vi->refill, 0); 953 } 954 955 return received; 956 } 957 958 static int virtnet_poll(struct napi_struct *napi, int budget) 959 { 960 struct receive_queue *rq = 961 container_of(napi, struct receive_queue, napi); 962 unsigned int r, received; 963 964 received = virtnet_receive(rq, budget); 965 966 /* Out of packets? */ 967 if (received < budget) { 968 r = virtqueue_enable_cb_prepare(rq->vq); 969 napi_complete_done(napi, received); 970 if (unlikely(virtqueue_poll(rq->vq, r)) && 971 napi_schedule_prep(napi)) { 972 virtqueue_disable_cb(rq->vq); 973 __napi_schedule(napi); 974 } 975 } 976 977 return received; 978 } 979 980 #ifdef CONFIG_NET_RX_BUSY_POLL 981 /* must be called with local_bh_disable()d */ 982 static int virtnet_busy_poll(struct napi_struct *napi) 983 { 984 struct receive_queue *rq = 985 container_of(napi, struct receive_queue, napi); 986 struct virtnet_info *vi = rq->vq->vdev->priv; 987 int r, received = 0, budget = 4; 988 989 if (!(vi->status & VIRTIO_NET_S_LINK_UP)) 990 return LL_FLUSH_FAILED; 991 992 if (!napi_schedule_prep(napi)) 993 return LL_FLUSH_BUSY; 994 995 virtqueue_disable_cb(rq->vq); 996 997 again: 998 received += virtnet_receive(rq, budget); 999 1000 r = virtqueue_enable_cb_prepare(rq->vq); 1001 clear_bit(NAPI_STATE_SCHED, &napi->state); 1002 if (unlikely(virtqueue_poll(rq->vq, r)) && 1003 napi_schedule_prep(napi)) { 1004 virtqueue_disable_cb(rq->vq); 1005 if (received < budget) { 1006 budget -= received; 1007 goto again; 1008 } else { 1009 __napi_schedule(napi); 1010 } 1011 } 1012 1013 return received; 1014 } 1015 #endif /* CONFIG_NET_RX_BUSY_POLL */ 1016 1017 static int virtnet_open(struct net_device *dev) 1018 { 1019 struct virtnet_info *vi = netdev_priv(dev); 1020 int i; 1021 1022 for (i = 0; i < vi->max_queue_pairs; i++) { 1023 if (i < vi->curr_queue_pairs) 1024 /* Make sure we have some buffers: if oom use wq. */ 1025 if (!try_fill_recv(vi, &vi->rq[i], GFP_KERNEL)) 1026 schedule_delayed_work(&vi->refill, 0); 1027 virtnet_napi_enable(&vi->rq[i]); 1028 } 1029 1030 return 0; 1031 } 1032 1033 static void free_old_xmit_skbs(struct send_queue *sq) 1034 { 1035 struct sk_buff *skb; 1036 unsigned int len; 1037 struct virtnet_info *vi = sq->vq->vdev->priv; 1038 struct virtnet_stats *stats = this_cpu_ptr(vi->stats); 1039 1040 while ((skb = virtqueue_get_buf(sq->vq, &len)) != NULL) { 1041 pr_debug("Sent skb %p\n", skb); 1042 1043 u64_stats_update_begin(&stats->tx_syncp); 1044 stats->tx_bytes += skb->len; 1045 stats->tx_packets++; 1046 u64_stats_update_end(&stats->tx_syncp); 1047 1048 dev_kfree_skb_any(skb); 1049 } 1050 } 1051 1052 static int xmit_skb(struct send_queue *sq, struct sk_buff *skb) 1053 { 1054 struct virtio_net_hdr_mrg_rxbuf *hdr; 1055 const unsigned char *dest = ((struct ethhdr *)skb->data)->h_dest; 1056 struct virtnet_info *vi = sq->vq->vdev->priv; 1057 unsigned num_sg; 1058 unsigned hdr_len = vi->hdr_len; 1059 bool can_push; 1060 1061 pr_debug("%s: xmit %p %pM\n", vi->dev->name, skb, dest); 1062 1063 can_push = vi->any_header_sg && 1064 !((unsigned long)skb->data & (__alignof__(*hdr) - 1)) && 1065 !skb_header_cloned(skb) && skb_headroom(skb) >= hdr_len; 1066 /* Even if we can, don't push here yet as this would skew 1067 * csum_start offset below. */ 1068 if (can_push) 1069 hdr = (struct virtio_net_hdr_mrg_rxbuf *)(skb->data - hdr_len); 1070 else 1071 hdr = skb_vnet_hdr(skb); 1072 1073 if (virtio_net_hdr_from_skb(skb, &hdr->hdr, 1074 virtio_is_little_endian(vi->vdev))) 1075 BUG(); 1076 1077 if (vi->mergeable_rx_bufs) 1078 hdr->num_buffers = 0; 1079 1080 sg_init_table(sq->sg, skb_shinfo(skb)->nr_frags + (can_push ? 1 : 2)); 1081 if (can_push) { 1082 __skb_push(skb, hdr_len); 1083 num_sg = skb_to_sgvec(skb, sq->sg, 0, skb->len); 1084 /* Pull header back to avoid skew in tx bytes calculations. */ 1085 __skb_pull(skb, hdr_len); 1086 } else { 1087 sg_set_buf(sq->sg, hdr, hdr_len); 1088 num_sg = skb_to_sgvec(skb, sq->sg + 1, 0, skb->len) + 1; 1089 } 1090 return virtqueue_add_outbuf(sq->vq, sq->sg, num_sg, skb, GFP_ATOMIC); 1091 } 1092 1093 static netdev_tx_t start_xmit(struct sk_buff *skb, struct net_device *dev) 1094 { 1095 struct virtnet_info *vi = netdev_priv(dev); 1096 int qnum = skb_get_queue_mapping(skb); 1097 struct send_queue *sq = &vi->sq[qnum]; 1098 int err; 1099 struct netdev_queue *txq = netdev_get_tx_queue(dev, qnum); 1100 bool kick = !skb->xmit_more; 1101 1102 /* Free up any pending old buffers before queueing new ones. */ 1103 free_old_xmit_skbs(sq); 1104 1105 /* timestamp packet in software */ 1106 skb_tx_timestamp(skb); 1107 1108 /* Try to transmit */ 1109 err = xmit_skb(sq, skb); 1110 1111 /* This should not happen! */ 1112 if (unlikely(err)) { 1113 dev->stats.tx_fifo_errors++; 1114 if (net_ratelimit()) 1115 dev_warn(&dev->dev, 1116 "Unexpected TXQ (%d) queue failure: %d\n", qnum, err); 1117 dev->stats.tx_dropped++; 1118 dev_kfree_skb_any(skb); 1119 return NETDEV_TX_OK; 1120 } 1121 1122 /* Don't wait up for transmitted skbs to be freed. */ 1123 skb_orphan(skb); 1124 nf_reset(skb); 1125 1126 /* If running out of space, stop queue to avoid getting packets that we 1127 * are then unable to transmit. 1128 * An alternative would be to force queuing layer to requeue the skb by 1129 * returning NETDEV_TX_BUSY. However, NETDEV_TX_BUSY should not be 1130 * returned in a normal path of operation: it means that driver is not 1131 * maintaining the TX queue stop/start state properly, and causes 1132 * the stack to do a non-trivial amount of useless work. 1133 * Since most packets only take 1 or 2 ring slots, stopping the queue 1134 * early means 16 slots are typically wasted. 1135 */ 1136 if (sq->vq->num_free < 2+MAX_SKB_FRAGS) { 1137 netif_stop_subqueue(dev, qnum); 1138 if (unlikely(!virtqueue_enable_cb_delayed(sq->vq))) { 1139 /* More just got used, free them then recheck. */ 1140 free_old_xmit_skbs(sq); 1141 if (sq->vq->num_free >= 2+MAX_SKB_FRAGS) { 1142 netif_start_subqueue(dev, qnum); 1143 virtqueue_disable_cb(sq->vq); 1144 } 1145 } 1146 } 1147 1148 if (kick || netif_xmit_stopped(txq)) 1149 virtqueue_kick(sq->vq); 1150 1151 return NETDEV_TX_OK; 1152 } 1153 1154 /* 1155 * Send command via the control virtqueue and check status. Commands 1156 * supported by the hypervisor, as indicated by feature bits, should 1157 * never fail unless improperly formatted. 1158 */ 1159 static bool virtnet_send_command(struct virtnet_info *vi, u8 class, u8 cmd, 1160 struct scatterlist *out) 1161 { 1162 struct scatterlist *sgs[4], hdr, stat; 1163 unsigned out_num = 0, tmp; 1164 1165 /* Caller should know better */ 1166 BUG_ON(!virtio_has_feature(vi->vdev, VIRTIO_NET_F_CTRL_VQ)); 1167 1168 vi->ctrl_status = ~0; 1169 vi->ctrl_hdr.class = class; 1170 vi->ctrl_hdr.cmd = cmd; 1171 /* Add header */ 1172 sg_init_one(&hdr, &vi->ctrl_hdr, sizeof(vi->ctrl_hdr)); 1173 sgs[out_num++] = &hdr; 1174 1175 if (out) 1176 sgs[out_num++] = out; 1177 1178 /* Add return status. */ 1179 sg_init_one(&stat, &vi->ctrl_status, sizeof(vi->ctrl_status)); 1180 sgs[out_num] = &stat; 1181 1182 BUG_ON(out_num + 1 > ARRAY_SIZE(sgs)); 1183 virtqueue_add_sgs(vi->cvq, sgs, out_num, 1, vi, GFP_ATOMIC); 1184 1185 if (unlikely(!virtqueue_kick(vi->cvq))) 1186 return vi->ctrl_status == VIRTIO_NET_OK; 1187 1188 /* Spin for a response, the kick causes an ioport write, trapping 1189 * into the hypervisor, so the request should be handled immediately. 1190 */ 1191 while (!virtqueue_get_buf(vi->cvq, &tmp) && 1192 !virtqueue_is_broken(vi->cvq)) 1193 cpu_relax(); 1194 1195 return vi->ctrl_status == VIRTIO_NET_OK; 1196 } 1197 1198 static int virtnet_set_mac_address(struct net_device *dev, void *p) 1199 { 1200 struct virtnet_info *vi = netdev_priv(dev); 1201 struct virtio_device *vdev = vi->vdev; 1202 int ret; 1203 struct sockaddr *addr; 1204 struct scatterlist sg; 1205 1206 addr = kmalloc(sizeof(*addr), GFP_KERNEL); 1207 if (!addr) 1208 return -ENOMEM; 1209 memcpy(addr, p, sizeof(*addr)); 1210 1211 ret = eth_prepare_mac_addr_change(dev, addr); 1212 if (ret) 1213 goto out; 1214 1215 if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_MAC_ADDR)) { 1216 sg_init_one(&sg, addr->sa_data, dev->addr_len); 1217 if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_MAC, 1218 VIRTIO_NET_CTRL_MAC_ADDR_SET, &sg)) { 1219 dev_warn(&vdev->dev, 1220 "Failed to set mac address by vq command.\n"); 1221 ret = -EINVAL; 1222 goto out; 1223 } 1224 } else if (virtio_has_feature(vdev, VIRTIO_NET_F_MAC) && 1225 !virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) { 1226 unsigned int i; 1227 1228 /* Naturally, this has an atomicity problem. */ 1229 for (i = 0; i < dev->addr_len; i++) 1230 virtio_cwrite8(vdev, 1231 offsetof(struct virtio_net_config, mac) + 1232 i, addr->sa_data[i]); 1233 } 1234 1235 eth_commit_mac_addr_change(dev, p); 1236 ret = 0; 1237 1238 out: 1239 kfree(addr); 1240 return ret; 1241 } 1242 1243 static struct rtnl_link_stats64 *virtnet_stats(struct net_device *dev, 1244 struct rtnl_link_stats64 *tot) 1245 { 1246 struct virtnet_info *vi = netdev_priv(dev); 1247 int cpu; 1248 unsigned int start; 1249 1250 for_each_possible_cpu(cpu) { 1251 struct virtnet_stats *stats = per_cpu_ptr(vi->stats, cpu); 1252 u64 tpackets, tbytes, rpackets, rbytes; 1253 1254 do { 1255 start = u64_stats_fetch_begin_irq(&stats->tx_syncp); 1256 tpackets = stats->tx_packets; 1257 tbytes = stats->tx_bytes; 1258 } while (u64_stats_fetch_retry_irq(&stats->tx_syncp, start)); 1259 1260 do { 1261 start = u64_stats_fetch_begin_irq(&stats->rx_syncp); 1262 rpackets = stats->rx_packets; 1263 rbytes = stats->rx_bytes; 1264 } while (u64_stats_fetch_retry_irq(&stats->rx_syncp, start)); 1265 1266 tot->rx_packets += rpackets; 1267 tot->tx_packets += tpackets; 1268 tot->rx_bytes += rbytes; 1269 tot->tx_bytes += tbytes; 1270 } 1271 1272 tot->tx_dropped = dev->stats.tx_dropped; 1273 tot->tx_fifo_errors = dev->stats.tx_fifo_errors; 1274 tot->rx_dropped = dev->stats.rx_dropped; 1275 tot->rx_length_errors = dev->stats.rx_length_errors; 1276 tot->rx_frame_errors = dev->stats.rx_frame_errors; 1277 1278 return tot; 1279 } 1280 1281 #ifdef CONFIG_NET_POLL_CONTROLLER 1282 static void virtnet_netpoll(struct net_device *dev) 1283 { 1284 struct virtnet_info *vi = netdev_priv(dev); 1285 int i; 1286 1287 for (i = 0; i < vi->curr_queue_pairs; i++) 1288 napi_schedule(&vi->rq[i].napi); 1289 } 1290 #endif 1291 1292 static void virtnet_ack_link_announce(struct virtnet_info *vi) 1293 { 1294 rtnl_lock(); 1295 if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_ANNOUNCE, 1296 VIRTIO_NET_CTRL_ANNOUNCE_ACK, NULL)) 1297 dev_warn(&vi->dev->dev, "Failed to ack link announce.\n"); 1298 rtnl_unlock(); 1299 } 1300 1301 static int virtnet_set_queues(struct virtnet_info *vi, u16 queue_pairs) 1302 { 1303 struct scatterlist sg; 1304 struct net_device *dev = vi->dev; 1305 1306 if (!vi->has_cvq || !virtio_has_feature(vi->vdev, VIRTIO_NET_F_MQ)) 1307 return 0; 1308 1309 vi->ctrl_mq.virtqueue_pairs = cpu_to_virtio16(vi->vdev, queue_pairs); 1310 sg_init_one(&sg, &vi->ctrl_mq, sizeof(vi->ctrl_mq)); 1311 1312 if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_MQ, 1313 VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET, &sg)) { 1314 dev_warn(&dev->dev, "Fail to set num of queue pairs to %d\n", 1315 queue_pairs); 1316 return -EINVAL; 1317 } else { 1318 vi->curr_queue_pairs = queue_pairs; 1319 /* virtnet_open() will refill when device is going to up. */ 1320 if (dev->flags & IFF_UP) 1321 schedule_delayed_work(&vi->refill, 0); 1322 } 1323 1324 return 0; 1325 } 1326 1327 static int virtnet_close(struct net_device *dev) 1328 { 1329 struct virtnet_info *vi = netdev_priv(dev); 1330 int i; 1331 1332 /* Make sure refill_work doesn't re-enable napi! */ 1333 cancel_delayed_work_sync(&vi->refill); 1334 1335 for (i = 0; i < vi->max_queue_pairs; i++) 1336 napi_disable(&vi->rq[i].napi); 1337 1338 return 0; 1339 } 1340 1341 static void virtnet_set_rx_mode(struct net_device *dev) 1342 { 1343 struct virtnet_info *vi = netdev_priv(dev); 1344 struct scatterlist sg[2]; 1345 struct virtio_net_ctrl_mac *mac_data; 1346 struct netdev_hw_addr *ha; 1347 int uc_count; 1348 int mc_count; 1349 void *buf; 1350 int i; 1351 1352 /* We can't dynamically set ndo_set_rx_mode, so return gracefully */ 1353 if (!virtio_has_feature(vi->vdev, VIRTIO_NET_F_CTRL_RX)) 1354 return; 1355 1356 vi->ctrl_promisc = ((dev->flags & IFF_PROMISC) != 0); 1357 vi->ctrl_allmulti = ((dev->flags & IFF_ALLMULTI) != 0); 1358 1359 sg_init_one(sg, &vi->ctrl_promisc, sizeof(vi->ctrl_promisc)); 1360 1361 if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_RX, 1362 VIRTIO_NET_CTRL_RX_PROMISC, sg)) 1363 dev_warn(&dev->dev, "Failed to %sable promisc mode.\n", 1364 vi->ctrl_promisc ? "en" : "dis"); 1365 1366 sg_init_one(sg, &vi->ctrl_allmulti, sizeof(vi->ctrl_allmulti)); 1367 1368 if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_RX, 1369 VIRTIO_NET_CTRL_RX_ALLMULTI, sg)) 1370 dev_warn(&dev->dev, "Failed to %sable allmulti mode.\n", 1371 vi->ctrl_allmulti ? "en" : "dis"); 1372 1373 uc_count = netdev_uc_count(dev); 1374 mc_count = netdev_mc_count(dev); 1375 /* MAC filter - use one buffer for both lists */ 1376 buf = kzalloc(((uc_count + mc_count) * ETH_ALEN) + 1377 (2 * sizeof(mac_data->entries)), GFP_ATOMIC); 1378 mac_data = buf; 1379 if (!buf) 1380 return; 1381 1382 sg_init_table(sg, 2); 1383 1384 /* Store the unicast list and count in the front of the buffer */ 1385 mac_data->entries = cpu_to_virtio32(vi->vdev, uc_count); 1386 i = 0; 1387 netdev_for_each_uc_addr(ha, dev) 1388 memcpy(&mac_data->macs[i++][0], ha->addr, ETH_ALEN); 1389 1390 sg_set_buf(&sg[0], mac_data, 1391 sizeof(mac_data->entries) + (uc_count * ETH_ALEN)); 1392 1393 /* multicast list and count fill the end */ 1394 mac_data = (void *)&mac_data->macs[uc_count][0]; 1395 1396 mac_data->entries = cpu_to_virtio32(vi->vdev, mc_count); 1397 i = 0; 1398 netdev_for_each_mc_addr(ha, dev) 1399 memcpy(&mac_data->macs[i++][0], ha->addr, ETH_ALEN); 1400 1401 sg_set_buf(&sg[1], mac_data, 1402 sizeof(mac_data->entries) + (mc_count * ETH_ALEN)); 1403 1404 if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_MAC, 1405 VIRTIO_NET_CTRL_MAC_TABLE_SET, sg)) 1406 dev_warn(&dev->dev, "Failed to set MAC filter table.\n"); 1407 1408 kfree(buf); 1409 } 1410 1411 static int virtnet_vlan_rx_add_vid(struct net_device *dev, 1412 __be16 proto, u16 vid) 1413 { 1414 struct virtnet_info *vi = netdev_priv(dev); 1415 struct scatterlist sg; 1416 1417 vi->ctrl_vid = vid; 1418 sg_init_one(&sg, &vi->ctrl_vid, sizeof(vi->ctrl_vid)); 1419 1420 if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_VLAN, 1421 VIRTIO_NET_CTRL_VLAN_ADD, &sg)) 1422 dev_warn(&dev->dev, "Failed to add VLAN ID %d.\n", vid); 1423 return 0; 1424 } 1425 1426 static int virtnet_vlan_rx_kill_vid(struct net_device *dev, 1427 __be16 proto, u16 vid) 1428 { 1429 struct virtnet_info *vi = netdev_priv(dev); 1430 struct scatterlist sg; 1431 1432 vi->ctrl_vid = vid; 1433 sg_init_one(&sg, &vi->ctrl_vid, sizeof(vi->ctrl_vid)); 1434 1435 if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_VLAN, 1436 VIRTIO_NET_CTRL_VLAN_DEL, &sg)) 1437 dev_warn(&dev->dev, "Failed to kill VLAN ID %d.\n", vid); 1438 return 0; 1439 } 1440 1441 static void virtnet_clean_affinity(struct virtnet_info *vi, long hcpu) 1442 { 1443 int i; 1444 1445 if (vi->affinity_hint_set) { 1446 for (i = 0; i < vi->max_queue_pairs; i++) { 1447 virtqueue_set_affinity(vi->rq[i].vq, -1); 1448 virtqueue_set_affinity(vi->sq[i].vq, -1); 1449 } 1450 1451 vi->affinity_hint_set = false; 1452 } 1453 } 1454 1455 static void virtnet_set_affinity(struct virtnet_info *vi) 1456 { 1457 int i; 1458 int cpu; 1459 1460 /* In multiqueue mode, when the number of cpu is equal to the number of 1461 * queue pairs, we let the queue pairs to be private to one cpu by 1462 * setting the affinity hint to eliminate the contention. 1463 */ 1464 if (vi->curr_queue_pairs == 1 || 1465 vi->max_queue_pairs != num_online_cpus()) { 1466 virtnet_clean_affinity(vi, -1); 1467 return; 1468 } 1469 1470 i = 0; 1471 for_each_online_cpu(cpu) { 1472 virtqueue_set_affinity(vi->rq[i].vq, cpu); 1473 virtqueue_set_affinity(vi->sq[i].vq, cpu); 1474 netif_set_xps_queue(vi->dev, cpumask_of(cpu), i); 1475 i++; 1476 } 1477 1478 vi->affinity_hint_set = true; 1479 } 1480 1481 static int virtnet_cpu_online(unsigned int cpu, struct hlist_node *node) 1482 { 1483 struct virtnet_info *vi = hlist_entry_safe(node, struct virtnet_info, 1484 node); 1485 virtnet_set_affinity(vi); 1486 return 0; 1487 } 1488 1489 static int virtnet_cpu_dead(unsigned int cpu, struct hlist_node *node) 1490 { 1491 struct virtnet_info *vi = hlist_entry_safe(node, struct virtnet_info, 1492 node_dead); 1493 virtnet_set_affinity(vi); 1494 return 0; 1495 } 1496 1497 static int virtnet_cpu_down_prep(unsigned int cpu, struct hlist_node *node) 1498 { 1499 struct virtnet_info *vi = hlist_entry_safe(node, struct virtnet_info, 1500 node); 1501 1502 virtnet_clean_affinity(vi, cpu); 1503 return 0; 1504 } 1505 1506 static enum cpuhp_state virtionet_online; 1507 1508 static int virtnet_cpu_notif_add(struct virtnet_info *vi) 1509 { 1510 int ret; 1511 1512 ret = cpuhp_state_add_instance_nocalls(virtionet_online, &vi->node); 1513 if (ret) 1514 return ret; 1515 ret = cpuhp_state_add_instance_nocalls(CPUHP_VIRT_NET_DEAD, 1516 &vi->node_dead); 1517 if (!ret) 1518 return ret; 1519 cpuhp_state_remove_instance_nocalls(virtionet_online, &vi->node); 1520 return ret; 1521 } 1522 1523 static void virtnet_cpu_notif_remove(struct virtnet_info *vi) 1524 { 1525 cpuhp_state_remove_instance_nocalls(virtionet_online, &vi->node); 1526 cpuhp_state_remove_instance_nocalls(CPUHP_VIRT_NET_DEAD, 1527 &vi->node_dead); 1528 } 1529 1530 static void virtnet_get_ringparam(struct net_device *dev, 1531 struct ethtool_ringparam *ring) 1532 { 1533 struct virtnet_info *vi = netdev_priv(dev); 1534 1535 ring->rx_max_pending = virtqueue_get_vring_size(vi->rq[0].vq); 1536 ring->tx_max_pending = virtqueue_get_vring_size(vi->sq[0].vq); 1537 ring->rx_pending = ring->rx_max_pending; 1538 ring->tx_pending = ring->tx_max_pending; 1539 } 1540 1541 1542 static void virtnet_get_drvinfo(struct net_device *dev, 1543 struct ethtool_drvinfo *info) 1544 { 1545 struct virtnet_info *vi = netdev_priv(dev); 1546 struct virtio_device *vdev = vi->vdev; 1547 1548 strlcpy(info->driver, KBUILD_MODNAME, sizeof(info->driver)); 1549 strlcpy(info->version, VIRTNET_DRIVER_VERSION, sizeof(info->version)); 1550 strlcpy(info->bus_info, virtio_bus_name(vdev), sizeof(info->bus_info)); 1551 1552 } 1553 1554 /* TODO: Eliminate OOO packets during switching */ 1555 static int virtnet_set_channels(struct net_device *dev, 1556 struct ethtool_channels *channels) 1557 { 1558 struct virtnet_info *vi = netdev_priv(dev); 1559 u16 queue_pairs = channels->combined_count; 1560 int err; 1561 1562 /* We don't support separate rx/tx channels. 1563 * We don't allow setting 'other' channels. 1564 */ 1565 if (channels->rx_count || channels->tx_count || channels->other_count) 1566 return -EINVAL; 1567 1568 if (queue_pairs > vi->max_queue_pairs || queue_pairs == 0) 1569 return -EINVAL; 1570 1571 /* For now we don't support modifying channels while XDP is loaded 1572 * also when XDP is loaded all RX queues have XDP programs so we only 1573 * need to check a single RX queue. 1574 */ 1575 if (vi->rq[0].xdp_prog) 1576 return -EINVAL; 1577 1578 get_online_cpus(); 1579 err = virtnet_set_queues(vi, queue_pairs); 1580 if (!err) { 1581 netif_set_real_num_tx_queues(dev, queue_pairs); 1582 netif_set_real_num_rx_queues(dev, queue_pairs); 1583 1584 virtnet_set_affinity(vi); 1585 } 1586 put_online_cpus(); 1587 1588 return err; 1589 } 1590 1591 static void virtnet_get_channels(struct net_device *dev, 1592 struct ethtool_channels *channels) 1593 { 1594 struct virtnet_info *vi = netdev_priv(dev); 1595 1596 channels->combined_count = vi->curr_queue_pairs; 1597 channels->max_combined = vi->max_queue_pairs; 1598 channels->max_other = 0; 1599 channels->rx_count = 0; 1600 channels->tx_count = 0; 1601 channels->other_count = 0; 1602 } 1603 1604 /* Check if the user is trying to change anything besides speed/duplex */ 1605 static bool virtnet_validate_ethtool_cmd(const struct ethtool_cmd *cmd) 1606 { 1607 struct ethtool_cmd diff1 = *cmd; 1608 struct ethtool_cmd diff2 = {}; 1609 1610 /* cmd is always set so we need to clear it, validate the port type 1611 * and also without autonegotiation we can ignore advertising 1612 */ 1613 ethtool_cmd_speed_set(&diff1, 0); 1614 diff2.port = PORT_OTHER; 1615 diff1.advertising = 0; 1616 diff1.duplex = 0; 1617 diff1.cmd = 0; 1618 1619 return !memcmp(&diff1, &diff2, sizeof(diff1)); 1620 } 1621 1622 static int virtnet_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) 1623 { 1624 struct virtnet_info *vi = netdev_priv(dev); 1625 u32 speed; 1626 1627 speed = ethtool_cmd_speed(cmd); 1628 /* don't allow custom speed and duplex */ 1629 if (!ethtool_validate_speed(speed) || 1630 !ethtool_validate_duplex(cmd->duplex) || 1631 !virtnet_validate_ethtool_cmd(cmd)) 1632 return -EINVAL; 1633 vi->speed = speed; 1634 vi->duplex = cmd->duplex; 1635 1636 return 0; 1637 } 1638 1639 static int virtnet_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) 1640 { 1641 struct virtnet_info *vi = netdev_priv(dev); 1642 1643 ethtool_cmd_speed_set(cmd, vi->speed); 1644 cmd->duplex = vi->duplex; 1645 cmd->port = PORT_OTHER; 1646 1647 return 0; 1648 } 1649 1650 static void virtnet_init_settings(struct net_device *dev) 1651 { 1652 struct virtnet_info *vi = netdev_priv(dev); 1653 1654 vi->speed = SPEED_UNKNOWN; 1655 vi->duplex = DUPLEX_UNKNOWN; 1656 } 1657 1658 static const struct ethtool_ops virtnet_ethtool_ops = { 1659 .get_drvinfo = virtnet_get_drvinfo, 1660 .get_link = ethtool_op_get_link, 1661 .get_ringparam = virtnet_get_ringparam, 1662 .set_channels = virtnet_set_channels, 1663 .get_channels = virtnet_get_channels, 1664 .get_ts_info = ethtool_op_get_ts_info, 1665 .get_settings = virtnet_get_settings, 1666 .set_settings = virtnet_set_settings, 1667 }; 1668 1669 static int virtnet_xdp_set(struct net_device *dev, struct bpf_prog *prog) 1670 { 1671 unsigned long int max_sz = PAGE_SIZE - sizeof(struct padded_vnet_hdr); 1672 struct virtnet_info *vi = netdev_priv(dev); 1673 struct bpf_prog *old_prog; 1674 u16 xdp_qp = 0, curr_qp; 1675 int i, err; 1676 1677 if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_TSO4) || 1678 virtio_has_feature(vi->vdev, VIRTIO_NET_F_GUEST_TSO6)) { 1679 netdev_warn(dev, "can't set XDP while host is implementing LRO, disable LRO first\n"); 1680 return -EOPNOTSUPP; 1681 } 1682 1683 if (vi->mergeable_rx_bufs && !vi->any_header_sg) { 1684 netdev_warn(dev, "XDP expects header/data in single page, any_header_sg required\n"); 1685 return -EINVAL; 1686 } 1687 1688 if (dev->mtu > max_sz) { 1689 netdev_warn(dev, "XDP requires MTU less than %lu\n", max_sz); 1690 return -EINVAL; 1691 } 1692 1693 curr_qp = vi->curr_queue_pairs - vi->xdp_queue_pairs; 1694 if (prog) 1695 xdp_qp = nr_cpu_ids; 1696 1697 /* XDP requires extra queues for XDP_TX */ 1698 if (curr_qp + xdp_qp > vi->max_queue_pairs) { 1699 netdev_warn(dev, "request %i queues but max is %i\n", 1700 curr_qp + xdp_qp, vi->max_queue_pairs); 1701 return -ENOMEM; 1702 } 1703 1704 err = virtnet_set_queues(vi, curr_qp + xdp_qp); 1705 if (err) { 1706 dev_warn(&dev->dev, "XDP Device queue allocation failure.\n"); 1707 return err; 1708 } 1709 1710 if (prog) { 1711 prog = bpf_prog_add(prog, vi->max_queue_pairs - 1); 1712 if (IS_ERR(prog)) { 1713 virtnet_set_queues(vi, curr_qp); 1714 return PTR_ERR(prog); 1715 } 1716 } 1717 1718 vi->xdp_queue_pairs = xdp_qp; 1719 netif_set_real_num_rx_queues(dev, curr_qp + xdp_qp); 1720 1721 for (i = 0; i < vi->max_queue_pairs; i++) { 1722 old_prog = rtnl_dereference(vi->rq[i].xdp_prog); 1723 rcu_assign_pointer(vi->rq[i].xdp_prog, prog); 1724 if (old_prog) 1725 bpf_prog_put(old_prog); 1726 } 1727 1728 return 0; 1729 } 1730 1731 static bool virtnet_xdp_query(struct net_device *dev) 1732 { 1733 struct virtnet_info *vi = netdev_priv(dev); 1734 int i; 1735 1736 for (i = 0; i < vi->max_queue_pairs; i++) { 1737 if (vi->rq[i].xdp_prog) 1738 return true; 1739 } 1740 return false; 1741 } 1742 1743 static int virtnet_xdp(struct net_device *dev, struct netdev_xdp *xdp) 1744 { 1745 switch (xdp->command) { 1746 case XDP_SETUP_PROG: 1747 return virtnet_xdp_set(dev, xdp->prog); 1748 case XDP_QUERY_PROG: 1749 xdp->prog_attached = virtnet_xdp_query(dev); 1750 return 0; 1751 default: 1752 return -EINVAL; 1753 } 1754 } 1755 1756 static const struct net_device_ops virtnet_netdev = { 1757 .ndo_open = virtnet_open, 1758 .ndo_stop = virtnet_close, 1759 .ndo_start_xmit = start_xmit, 1760 .ndo_validate_addr = eth_validate_addr, 1761 .ndo_set_mac_address = virtnet_set_mac_address, 1762 .ndo_set_rx_mode = virtnet_set_rx_mode, 1763 .ndo_get_stats64 = virtnet_stats, 1764 .ndo_vlan_rx_add_vid = virtnet_vlan_rx_add_vid, 1765 .ndo_vlan_rx_kill_vid = virtnet_vlan_rx_kill_vid, 1766 #ifdef CONFIG_NET_POLL_CONTROLLER 1767 .ndo_poll_controller = virtnet_netpoll, 1768 #endif 1769 #ifdef CONFIG_NET_RX_BUSY_POLL 1770 .ndo_busy_poll = virtnet_busy_poll, 1771 #endif 1772 .ndo_xdp = virtnet_xdp, 1773 }; 1774 1775 static void virtnet_config_changed_work(struct work_struct *work) 1776 { 1777 struct virtnet_info *vi = 1778 container_of(work, struct virtnet_info, config_work); 1779 u16 v; 1780 1781 if (virtio_cread_feature(vi->vdev, VIRTIO_NET_F_STATUS, 1782 struct virtio_net_config, status, &v) < 0) 1783 return; 1784 1785 if (v & VIRTIO_NET_S_ANNOUNCE) { 1786 netdev_notify_peers(vi->dev); 1787 virtnet_ack_link_announce(vi); 1788 } 1789 1790 /* Ignore unknown (future) status bits */ 1791 v &= VIRTIO_NET_S_LINK_UP; 1792 1793 if (vi->status == v) 1794 return; 1795 1796 vi->status = v; 1797 1798 if (vi->status & VIRTIO_NET_S_LINK_UP) { 1799 netif_carrier_on(vi->dev); 1800 netif_tx_wake_all_queues(vi->dev); 1801 } else { 1802 netif_carrier_off(vi->dev); 1803 netif_tx_stop_all_queues(vi->dev); 1804 } 1805 } 1806 1807 static void virtnet_config_changed(struct virtio_device *vdev) 1808 { 1809 struct virtnet_info *vi = vdev->priv; 1810 1811 schedule_work(&vi->config_work); 1812 } 1813 1814 static void virtnet_free_queues(struct virtnet_info *vi) 1815 { 1816 int i; 1817 1818 for (i = 0; i < vi->max_queue_pairs; i++) { 1819 napi_hash_del(&vi->rq[i].napi); 1820 netif_napi_del(&vi->rq[i].napi); 1821 } 1822 1823 /* We called napi_hash_del() before netif_napi_del(), 1824 * we need to respect an RCU grace period before freeing vi->rq 1825 */ 1826 synchronize_net(); 1827 1828 kfree(vi->rq); 1829 kfree(vi->sq); 1830 } 1831 1832 static void free_receive_bufs(struct virtnet_info *vi) 1833 { 1834 struct bpf_prog *old_prog; 1835 int i; 1836 1837 rtnl_lock(); 1838 for (i = 0; i < vi->max_queue_pairs; i++) { 1839 while (vi->rq[i].pages) 1840 __free_pages(get_a_page(&vi->rq[i], GFP_KERNEL), 0); 1841 1842 old_prog = rtnl_dereference(vi->rq[i].xdp_prog); 1843 RCU_INIT_POINTER(vi->rq[i].xdp_prog, NULL); 1844 if (old_prog) 1845 bpf_prog_put(old_prog); 1846 } 1847 rtnl_unlock(); 1848 } 1849 1850 static void free_receive_page_frags(struct virtnet_info *vi) 1851 { 1852 int i; 1853 for (i = 0; i < vi->max_queue_pairs; i++) 1854 if (vi->rq[i].alloc_frag.page) 1855 put_page(vi->rq[i].alloc_frag.page); 1856 } 1857 1858 static bool is_xdp_queue(struct virtnet_info *vi, int q) 1859 { 1860 if (q < (vi->curr_queue_pairs - vi->xdp_queue_pairs)) 1861 return false; 1862 else if (q < vi->curr_queue_pairs) 1863 return true; 1864 else 1865 return false; 1866 } 1867 1868 static void free_unused_bufs(struct virtnet_info *vi) 1869 { 1870 void *buf; 1871 int i; 1872 1873 for (i = 0; i < vi->max_queue_pairs; i++) { 1874 struct virtqueue *vq = vi->sq[i].vq; 1875 while ((buf = virtqueue_detach_unused_buf(vq)) != NULL) { 1876 if (!is_xdp_queue(vi, i)) 1877 dev_kfree_skb(buf); 1878 else 1879 put_page(virt_to_head_page(buf)); 1880 } 1881 } 1882 1883 for (i = 0; i < vi->max_queue_pairs; i++) { 1884 struct virtqueue *vq = vi->rq[i].vq; 1885 1886 while ((buf = virtqueue_detach_unused_buf(vq)) != NULL) { 1887 if (vi->mergeable_rx_bufs) { 1888 unsigned long ctx = (unsigned long)buf; 1889 void *base = mergeable_ctx_to_buf_address(ctx); 1890 put_page(virt_to_head_page(base)); 1891 } else if (vi->big_packets) { 1892 give_pages(&vi->rq[i], buf); 1893 } else { 1894 dev_kfree_skb(buf); 1895 } 1896 } 1897 } 1898 } 1899 1900 static void virtnet_del_vqs(struct virtnet_info *vi) 1901 { 1902 struct virtio_device *vdev = vi->vdev; 1903 1904 virtnet_clean_affinity(vi, -1); 1905 1906 vdev->config->del_vqs(vdev); 1907 1908 virtnet_free_queues(vi); 1909 } 1910 1911 static int virtnet_find_vqs(struct virtnet_info *vi) 1912 { 1913 vq_callback_t **callbacks; 1914 struct virtqueue **vqs; 1915 int ret = -ENOMEM; 1916 int i, total_vqs; 1917 const char **names; 1918 1919 /* We expect 1 RX virtqueue followed by 1 TX virtqueue, followed by 1920 * possible N-1 RX/TX queue pairs used in multiqueue mode, followed by 1921 * possible control vq. 1922 */ 1923 total_vqs = vi->max_queue_pairs * 2 + 1924 virtio_has_feature(vi->vdev, VIRTIO_NET_F_CTRL_VQ); 1925 1926 /* Allocate space for find_vqs parameters */ 1927 vqs = kzalloc(total_vqs * sizeof(*vqs), GFP_KERNEL); 1928 if (!vqs) 1929 goto err_vq; 1930 callbacks = kmalloc(total_vqs * sizeof(*callbacks), GFP_KERNEL); 1931 if (!callbacks) 1932 goto err_callback; 1933 names = kmalloc(total_vqs * sizeof(*names), GFP_KERNEL); 1934 if (!names) 1935 goto err_names; 1936 1937 /* Parameters for control virtqueue, if any */ 1938 if (vi->has_cvq) { 1939 callbacks[total_vqs - 1] = NULL; 1940 names[total_vqs - 1] = "control"; 1941 } 1942 1943 /* Allocate/initialize parameters for send/receive virtqueues */ 1944 for (i = 0; i < vi->max_queue_pairs; i++) { 1945 callbacks[rxq2vq(i)] = skb_recv_done; 1946 callbacks[txq2vq(i)] = skb_xmit_done; 1947 sprintf(vi->rq[i].name, "input.%d", i); 1948 sprintf(vi->sq[i].name, "output.%d", i); 1949 names[rxq2vq(i)] = vi->rq[i].name; 1950 names[txq2vq(i)] = vi->sq[i].name; 1951 } 1952 1953 ret = vi->vdev->config->find_vqs(vi->vdev, total_vqs, vqs, callbacks, 1954 names); 1955 if (ret) 1956 goto err_find; 1957 1958 if (vi->has_cvq) { 1959 vi->cvq = vqs[total_vqs - 1]; 1960 if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_CTRL_VLAN)) 1961 vi->dev->features |= NETIF_F_HW_VLAN_CTAG_FILTER; 1962 } 1963 1964 for (i = 0; i < vi->max_queue_pairs; i++) { 1965 vi->rq[i].vq = vqs[rxq2vq(i)]; 1966 vi->sq[i].vq = vqs[txq2vq(i)]; 1967 } 1968 1969 kfree(names); 1970 kfree(callbacks); 1971 kfree(vqs); 1972 1973 return 0; 1974 1975 err_find: 1976 kfree(names); 1977 err_names: 1978 kfree(callbacks); 1979 err_callback: 1980 kfree(vqs); 1981 err_vq: 1982 return ret; 1983 } 1984 1985 static int virtnet_alloc_queues(struct virtnet_info *vi) 1986 { 1987 int i; 1988 1989 vi->sq = kzalloc(sizeof(*vi->sq) * vi->max_queue_pairs, GFP_KERNEL); 1990 if (!vi->sq) 1991 goto err_sq; 1992 vi->rq = kzalloc(sizeof(*vi->rq) * vi->max_queue_pairs, GFP_KERNEL); 1993 if (!vi->rq) 1994 goto err_rq; 1995 1996 INIT_DELAYED_WORK(&vi->refill, refill_work); 1997 for (i = 0; i < vi->max_queue_pairs; i++) { 1998 vi->rq[i].pages = NULL; 1999 netif_napi_add(vi->dev, &vi->rq[i].napi, virtnet_poll, 2000 napi_weight); 2001 2002 sg_init_table(vi->rq[i].sg, ARRAY_SIZE(vi->rq[i].sg)); 2003 ewma_pkt_len_init(&vi->rq[i].mrg_avg_pkt_len); 2004 sg_init_table(vi->sq[i].sg, ARRAY_SIZE(vi->sq[i].sg)); 2005 } 2006 2007 return 0; 2008 2009 err_rq: 2010 kfree(vi->sq); 2011 err_sq: 2012 return -ENOMEM; 2013 } 2014 2015 static int init_vqs(struct virtnet_info *vi) 2016 { 2017 int ret; 2018 2019 /* Allocate send & receive queues */ 2020 ret = virtnet_alloc_queues(vi); 2021 if (ret) 2022 goto err; 2023 2024 ret = virtnet_find_vqs(vi); 2025 if (ret) 2026 goto err_free; 2027 2028 get_online_cpus(); 2029 virtnet_set_affinity(vi); 2030 put_online_cpus(); 2031 2032 return 0; 2033 2034 err_free: 2035 virtnet_free_queues(vi); 2036 err: 2037 return ret; 2038 } 2039 2040 #ifdef CONFIG_SYSFS 2041 static ssize_t mergeable_rx_buffer_size_show(struct netdev_rx_queue *queue, 2042 struct rx_queue_attribute *attribute, char *buf) 2043 { 2044 struct virtnet_info *vi = netdev_priv(queue->dev); 2045 unsigned int queue_index = get_netdev_rx_queue_index(queue); 2046 struct ewma_pkt_len *avg; 2047 2048 BUG_ON(queue_index >= vi->max_queue_pairs); 2049 avg = &vi->rq[queue_index].mrg_avg_pkt_len; 2050 return sprintf(buf, "%u\n", get_mergeable_buf_len(avg)); 2051 } 2052 2053 static struct rx_queue_attribute mergeable_rx_buffer_size_attribute = 2054 __ATTR_RO(mergeable_rx_buffer_size); 2055 2056 static struct attribute *virtio_net_mrg_rx_attrs[] = { 2057 &mergeable_rx_buffer_size_attribute.attr, 2058 NULL 2059 }; 2060 2061 static const struct attribute_group virtio_net_mrg_rx_group = { 2062 .name = "virtio_net", 2063 .attrs = virtio_net_mrg_rx_attrs 2064 }; 2065 #endif 2066 2067 static bool virtnet_fail_on_feature(struct virtio_device *vdev, 2068 unsigned int fbit, 2069 const char *fname, const char *dname) 2070 { 2071 if (!virtio_has_feature(vdev, fbit)) 2072 return false; 2073 2074 dev_err(&vdev->dev, "device advertises feature %s but not %s", 2075 fname, dname); 2076 2077 return true; 2078 } 2079 2080 #define VIRTNET_FAIL_ON(vdev, fbit, dbit) \ 2081 virtnet_fail_on_feature(vdev, fbit, #fbit, dbit) 2082 2083 static bool virtnet_validate_features(struct virtio_device *vdev) 2084 { 2085 if (!virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_VQ) && 2086 (VIRTNET_FAIL_ON(vdev, VIRTIO_NET_F_CTRL_RX, 2087 "VIRTIO_NET_F_CTRL_VQ") || 2088 VIRTNET_FAIL_ON(vdev, VIRTIO_NET_F_CTRL_VLAN, 2089 "VIRTIO_NET_F_CTRL_VQ") || 2090 VIRTNET_FAIL_ON(vdev, VIRTIO_NET_F_GUEST_ANNOUNCE, 2091 "VIRTIO_NET_F_CTRL_VQ") || 2092 VIRTNET_FAIL_ON(vdev, VIRTIO_NET_F_MQ, "VIRTIO_NET_F_CTRL_VQ") || 2093 VIRTNET_FAIL_ON(vdev, VIRTIO_NET_F_CTRL_MAC_ADDR, 2094 "VIRTIO_NET_F_CTRL_VQ"))) { 2095 return false; 2096 } 2097 2098 return true; 2099 } 2100 2101 #define MIN_MTU ETH_MIN_MTU 2102 #define MAX_MTU ETH_MAX_MTU 2103 2104 static int virtnet_probe(struct virtio_device *vdev) 2105 { 2106 int i, err; 2107 struct net_device *dev; 2108 struct virtnet_info *vi; 2109 u16 max_queue_pairs; 2110 int mtu; 2111 2112 if (!vdev->config->get) { 2113 dev_err(&vdev->dev, "%s failure: config access disabled\n", 2114 __func__); 2115 return -EINVAL; 2116 } 2117 2118 if (!virtnet_validate_features(vdev)) 2119 return -EINVAL; 2120 2121 /* Find if host supports multiqueue virtio_net device */ 2122 err = virtio_cread_feature(vdev, VIRTIO_NET_F_MQ, 2123 struct virtio_net_config, 2124 max_virtqueue_pairs, &max_queue_pairs); 2125 2126 /* We need at least 2 queue's */ 2127 if (err || max_queue_pairs < VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN || 2128 max_queue_pairs > VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX || 2129 !virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_VQ)) 2130 max_queue_pairs = 1; 2131 2132 /* Allocate ourselves a network device with room for our info */ 2133 dev = alloc_etherdev_mq(sizeof(struct virtnet_info), max_queue_pairs); 2134 if (!dev) 2135 return -ENOMEM; 2136 2137 /* Set up network device as normal. */ 2138 dev->priv_flags |= IFF_UNICAST_FLT | IFF_LIVE_ADDR_CHANGE; 2139 dev->netdev_ops = &virtnet_netdev; 2140 dev->features = NETIF_F_HIGHDMA; 2141 2142 dev->ethtool_ops = &virtnet_ethtool_ops; 2143 SET_NETDEV_DEV(dev, &vdev->dev); 2144 2145 /* Do we support "hardware" checksums? */ 2146 if (virtio_has_feature(vdev, VIRTIO_NET_F_CSUM)) { 2147 /* This opens up the world of extra features. */ 2148 dev->hw_features |= NETIF_F_HW_CSUM | NETIF_F_SG; 2149 if (csum) 2150 dev->features |= NETIF_F_HW_CSUM | NETIF_F_SG; 2151 2152 if (virtio_has_feature(vdev, VIRTIO_NET_F_GSO)) { 2153 dev->hw_features |= NETIF_F_TSO | NETIF_F_UFO 2154 | NETIF_F_TSO_ECN | NETIF_F_TSO6; 2155 } 2156 /* Individual feature bits: what can host handle? */ 2157 if (virtio_has_feature(vdev, VIRTIO_NET_F_HOST_TSO4)) 2158 dev->hw_features |= NETIF_F_TSO; 2159 if (virtio_has_feature(vdev, VIRTIO_NET_F_HOST_TSO6)) 2160 dev->hw_features |= NETIF_F_TSO6; 2161 if (virtio_has_feature(vdev, VIRTIO_NET_F_HOST_ECN)) 2162 dev->hw_features |= NETIF_F_TSO_ECN; 2163 if (virtio_has_feature(vdev, VIRTIO_NET_F_HOST_UFO)) 2164 dev->hw_features |= NETIF_F_UFO; 2165 2166 dev->features |= NETIF_F_GSO_ROBUST; 2167 2168 if (gso) 2169 dev->features |= dev->hw_features & (NETIF_F_ALL_TSO|NETIF_F_UFO); 2170 /* (!csum && gso) case will be fixed by register_netdev() */ 2171 } 2172 if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_CSUM)) 2173 dev->features |= NETIF_F_RXCSUM; 2174 2175 dev->vlan_features = dev->features; 2176 2177 /* MTU range: 68 - 65535 */ 2178 dev->min_mtu = MIN_MTU; 2179 dev->max_mtu = MAX_MTU; 2180 2181 /* Configuration may specify what MAC to use. Otherwise random. */ 2182 if (virtio_has_feature(vdev, VIRTIO_NET_F_MAC)) 2183 virtio_cread_bytes(vdev, 2184 offsetof(struct virtio_net_config, mac), 2185 dev->dev_addr, dev->addr_len); 2186 else 2187 eth_hw_addr_random(dev); 2188 2189 /* Set up our device-specific information */ 2190 vi = netdev_priv(dev); 2191 vi->dev = dev; 2192 vi->vdev = vdev; 2193 vdev->priv = vi; 2194 vi->stats = alloc_percpu(struct virtnet_stats); 2195 err = -ENOMEM; 2196 if (vi->stats == NULL) 2197 goto free; 2198 2199 for_each_possible_cpu(i) { 2200 struct virtnet_stats *virtnet_stats; 2201 virtnet_stats = per_cpu_ptr(vi->stats, i); 2202 u64_stats_init(&virtnet_stats->tx_syncp); 2203 u64_stats_init(&virtnet_stats->rx_syncp); 2204 } 2205 2206 INIT_WORK(&vi->config_work, virtnet_config_changed_work); 2207 2208 /* If we can receive ANY GSO packets, we must allocate large ones. */ 2209 if (virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO4) || 2210 virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_TSO6) || 2211 virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_ECN) || 2212 virtio_has_feature(vdev, VIRTIO_NET_F_GUEST_UFO)) 2213 vi->big_packets = true; 2214 2215 if (virtio_has_feature(vdev, VIRTIO_NET_F_MRG_RXBUF)) 2216 vi->mergeable_rx_bufs = true; 2217 2218 if (virtio_has_feature(vdev, VIRTIO_NET_F_MRG_RXBUF) || 2219 virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) 2220 vi->hdr_len = sizeof(struct virtio_net_hdr_mrg_rxbuf); 2221 else 2222 vi->hdr_len = sizeof(struct virtio_net_hdr); 2223 2224 if (virtio_has_feature(vdev, VIRTIO_F_ANY_LAYOUT) || 2225 virtio_has_feature(vdev, VIRTIO_F_VERSION_1)) 2226 vi->any_header_sg = true; 2227 2228 if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_VQ)) 2229 vi->has_cvq = true; 2230 2231 if (virtio_has_feature(vdev, VIRTIO_NET_F_MTU)) { 2232 mtu = virtio_cread16(vdev, 2233 offsetof(struct virtio_net_config, 2234 mtu)); 2235 if (mtu < dev->min_mtu) { 2236 __virtio_clear_bit(vdev, VIRTIO_NET_F_MTU); 2237 } else { 2238 dev->mtu = mtu; 2239 dev->max_mtu = mtu; 2240 } 2241 } 2242 2243 if (vi->any_header_sg) 2244 dev->needed_headroom = vi->hdr_len; 2245 2246 /* Enable multiqueue by default */ 2247 if (num_online_cpus() >= max_queue_pairs) 2248 vi->curr_queue_pairs = max_queue_pairs; 2249 else 2250 vi->curr_queue_pairs = num_online_cpus(); 2251 vi->max_queue_pairs = max_queue_pairs; 2252 2253 /* Allocate/initialize the rx/tx queues, and invoke find_vqs */ 2254 err = init_vqs(vi); 2255 if (err) 2256 goto free_stats; 2257 2258 #ifdef CONFIG_SYSFS 2259 if (vi->mergeable_rx_bufs) 2260 dev->sysfs_rx_queue_group = &virtio_net_mrg_rx_group; 2261 #endif 2262 netif_set_real_num_tx_queues(dev, vi->curr_queue_pairs); 2263 netif_set_real_num_rx_queues(dev, vi->curr_queue_pairs); 2264 2265 virtnet_init_settings(dev); 2266 2267 err = register_netdev(dev); 2268 if (err) { 2269 pr_debug("virtio_net: registering device failed\n"); 2270 goto free_vqs; 2271 } 2272 2273 virtio_device_ready(vdev); 2274 2275 err = virtnet_cpu_notif_add(vi); 2276 if (err) { 2277 pr_debug("virtio_net: registering cpu notifier failed\n"); 2278 goto free_unregister_netdev; 2279 } 2280 2281 rtnl_lock(); 2282 virtnet_set_queues(vi, vi->curr_queue_pairs); 2283 rtnl_unlock(); 2284 2285 /* Assume link up if device can't report link status, 2286 otherwise get link status from config. */ 2287 if (virtio_has_feature(vi->vdev, VIRTIO_NET_F_STATUS)) { 2288 netif_carrier_off(dev); 2289 schedule_work(&vi->config_work); 2290 } else { 2291 vi->status = VIRTIO_NET_S_LINK_UP; 2292 netif_carrier_on(dev); 2293 } 2294 2295 pr_debug("virtnet: registered device %s with %d RX and TX vq's\n", 2296 dev->name, max_queue_pairs); 2297 2298 return 0; 2299 2300 free_unregister_netdev: 2301 vi->vdev->config->reset(vdev); 2302 2303 unregister_netdev(dev); 2304 free_vqs: 2305 cancel_delayed_work_sync(&vi->refill); 2306 free_receive_page_frags(vi); 2307 virtnet_del_vqs(vi); 2308 free_stats: 2309 free_percpu(vi->stats); 2310 free: 2311 free_netdev(dev); 2312 return err; 2313 } 2314 2315 static void remove_vq_common(struct virtnet_info *vi) 2316 { 2317 vi->vdev->config->reset(vi->vdev); 2318 2319 /* Free unused buffers in both send and recv, if any. */ 2320 free_unused_bufs(vi); 2321 2322 free_receive_bufs(vi); 2323 2324 free_receive_page_frags(vi); 2325 2326 virtnet_del_vqs(vi); 2327 } 2328 2329 static void virtnet_remove(struct virtio_device *vdev) 2330 { 2331 struct virtnet_info *vi = vdev->priv; 2332 2333 virtnet_cpu_notif_remove(vi); 2334 2335 /* Make sure no work handler is accessing the device. */ 2336 flush_work(&vi->config_work); 2337 2338 unregister_netdev(vi->dev); 2339 2340 remove_vq_common(vi); 2341 2342 free_percpu(vi->stats); 2343 free_netdev(vi->dev); 2344 } 2345 2346 #ifdef CONFIG_PM_SLEEP 2347 static int virtnet_freeze(struct virtio_device *vdev) 2348 { 2349 struct virtnet_info *vi = vdev->priv; 2350 int i; 2351 2352 virtnet_cpu_notif_remove(vi); 2353 2354 /* Make sure no work handler is accessing the device */ 2355 flush_work(&vi->config_work); 2356 2357 netif_device_detach(vi->dev); 2358 cancel_delayed_work_sync(&vi->refill); 2359 2360 if (netif_running(vi->dev)) { 2361 for (i = 0; i < vi->max_queue_pairs; i++) 2362 napi_disable(&vi->rq[i].napi); 2363 } 2364 2365 remove_vq_common(vi); 2366 2367 return 0; 2368 } 2369 2370 static int virtnet_restore(struct virtio_device *vdev) 2371 { 2372 struct virtnet_info *vi = vdev->priv; 2373 int err, i; 2374 2375 err = init_vqs(vi); 2376 if (err) 2377 return err; 2378 2379 virtio_device_ready(vdev); 2380 2381 if (netif_running(vi->dev)) { 2382 for (i = 0; i < vi->curr_queue_pairs; i++) 2383 if (!try_fill_recv(vi, &vi->rq[i], GFP_KERNEL)) 2384 schedule_delayed_work(&vi->refill, 0); 2385 2386 for (i = 0; i < vi->max_queue_pairs; i++) 2387 virtnet_napi_enable(&vi->rq[i]); 2388 } 2389 2390 netif_device_attach(vi->dev); 2391 2392 rtnl_lock(); 2393 virtnet_set_queues(vi, vi->curr_queue_pairs); 2394 rtnl_unlock(); 2395 2396 err = virtnet_cpu_notif_add(vi); 2397 if (err) 2398 return err; 2399 2400 return 0; 2401 } 2402 #endif 2403 2404 static struct virtio_device_id id_table[] = { 2405 { VIRTIO_ID_NET, VIRTIO_DEV_ANY_ID }, 2406 { 0 }, 2407 }; 2408 2409 #define VIRTNET_FEATURES \ 2410 VIRTIO_NET_F_CSUM, VIRTIO_NET_F_GUEST_CSUM, \ 2411 VIRTIO_NET_F_MAC, \ 2412 VIRTIO_NET_F_HOST_TSO4, VIRTIO_NET_F_HOST_UFO, VIRTIO_NET_F_HOST_TSO6, \ 2413 VIRTIO_NET_F_HOST_ECN, VIRTIO_NET_F_GUEST_TSO4, VIRTIO_NET_F_GUEST_TSO6, \ 2414 VIRTIO_NET_F_GUEST_ECN, VIRTIO_NET_F_GUEST_UFO, \ 2415 VIRTIO_NET_F_MRG_RXBUF, VIRTIO_NET_F_STATUS, VIRTIO_NET_F_CTRL_VQ, \ 2416 VIRTIO_NET_F_CTRL_RX, VIRTIO_NET_F_CTRL_VLAN, \ 2417 VIRTIO_NET_F_GUEST_ANNOUNCE, VIRTIO_NET_F_MQ, \ 2418 VIRTIO_NET_F_CTRL_MAC_ADDR, \ 2419 VIRTIO_NET_F_MTU 2420 2421 static unsigned int features[] = { 2422 VIRTNET_FEATURES, 2423 }; 2424 2425 static unsigned int features_legacy[] = { 2426 VIRTNET_FEATURES, 2427 VIRTIO_NET_F_GSO, 2428 VIRTIO_F_ANY_LAYOUT, 2429 }; 2430 2431 static struct virtio_driver virtio_net_driver = { 2432 .feature_table = features, 2433 .feature_table_size = ARRAY_SIZE(features), 2434 .feature_table_legacy = features_legacy, 2435 .feature_table_size_legacy = ARRAY_SIZE(features_legacy), 2436 .driver.name = KBUILD_MODNAME, 2437 .driver.owner = THIS_MODULE, 2438 .id_table = id_table, 2439 .probe = virtnet_probe, 2440 .remove = virtnet_remove, 2441 .config_changed = virtnet_config_changed, 2442 #ifdef CONFIG_PM_SLEEP 2443 .freeze = virtnet_freeze, 2444 .restore = virtnet_restore, 2445 #endif 2446 }; 2447 2448 static __init int virtio_net_driver_init(void) 2449 { 2450 int ret; 2451 2452 ret = cpuhp_setup_state_multi(CPUHP_AP_ONLINE_DYN, "AP_VIRT_NET_ONLINE", 2453 virtnet_cpu_online, 2454 virtnet_cpu_down_prep); 2455 if (ret < 0) 2456 goto out; 2457 virtionet_online = ret; 2458 ret = cpuhp_setup_state_multi(CPUHP_VIRT_NET_DEAD, "VIRT_NET_DEAD", 2459 NULL, virtnet_cpu_dead); 2460 if (ret) 2461 goto err_dead; 2462 2463 ret = register_virtio_driver(&virtio_net_driver); 2464 if (ret) 2465 goto err_virtio; 2466 return 0; 2467 err_virtio: 2468 cpuhp_remove_multi_state(CPUHP_VIRT_NET_DEAD); 2469 err_dead: 2470 cpuhp_remove_multi_state(virtionet_online); 2471 out: 2472 return ret; 2473 } 2474 module_init(virtio_net_driver_init); 2475 2476 static __exit void virtio_net_driver_exit(void) 2477 { 2478 cpuhp_remove_multi_state(CPUHP_VIRT_NET_DEAD); 2479 cpuhp_remove_multi_state(virtionet_online); 2480 unregister_virtio_driver(&virtio_net_driver); 2481 } 2482 module_exit(virtio_net_driver_exit); 2483 2484 MODULE_DEVICE_TABLE(virtio, id_table); 2485 MODULE_DESCRIPTION("Virtio network driver"); 2486 MODULE_LICENSE("GPL"); 2487