vmbus_chan.c (307466) | vmbus_chan.c (307471) |
---|---|
1/*- 2 * Copyright (c) 2009-2012,2016 Microsoft Corp. 3 * Copyright (c) 2012 NetApp Inc. 4 * Copyright (c) 2012 Citrix Inc. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 13 unchanged lines hidden (view full) --- 22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2009-2012,2016 Microsoft Corp. 3 * Copyright (c) 2012 NetApp Inc. 4 * Copyright (c) 2012 Citrix Inc. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 13 unchanged lines hidden (view full) --- 22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29#include <sys/cdefs.h> |
30__FBSDID("$FreeBSD: stable/11/sys/dev/hyperv/vmbus/vmbus_chan.c 307466 2016-10-17 03:48:22Z sephe $"); | 30__FBSDID("$FreeBSD: stable/11/sys/dev/hyperv/vmbus/vmbus_chan.c 307471 2016-10-17 05:28:06Z sephe $"); |
31 32#include <sys/param.h> 33#include <sys/kernel.h> 34#include <sys/lock.h> 35#include <sys/malloc.h> 36#include <sys/mutex.h> 37#include <sys/smp.h> 38#include <sys/sysctl.h> --- 566 unchanged lines hidden (view full) --- 605 int pktlen, pad_pktlen, hlen, error; 606 uint64_t pad = 0; 607 struct iovec iov[3]; 608 boolean_t send_evt; 609 610 hlen = sizeof(pkt); 611 pktlen = hlen + dlen; 612 pad_pktlen = VMBUS_CHANPKT_TOTLEN(pktlen); | 31 32#include <sys/param.h> 33#include <sys/kernel.h> 34#include <sys/lock.h> 35#include <sys/malloc.h> 36#include <sys/mutex.h> 37#include <sys/smp.h> 38#include <sys/sysctl.h> --- 566 unchanged lines hidden (view full) --- 605 int pktlen, pad_pktlen, hlen, error; 606 uint64_t pad = 0; 607 struct iovec iov[3]; 608 boolean_t send_evt; 609 610 hlen = sizeof(pkt); 611 pktlen = hlen + dlen; 612 pad_pktlen = VMBUS_CHANPKT_TOTLEN(pktlen); |
613 KASSERT(pad_pktlen <= vmbus_txbr_maxpktsz(&chan->ch_txbr), 614 ("invalid packet size %d", pad_pktlen)); |
|
613 614 pkt.cp_hdr.cph_type = type; 615 pkt.cp_hdr.cph_flags = flags; 616 VMBUS_CHANPKT_SETLEN(pkt.cp_hdr.cph_hlen, hlen); 617 VMBUS_CHANPKT_SETLEN(pkt.cp_hdr.cph_tlen, pad_pktlen); 618 pkt.cp_hdr.cph_xactid = xactid; 619 620 iov[0].iov_base = &pkt; --- 14 unchanged lines hidden (view full) --- 635 struct vmbus_gpa sg[], int sglen, void *data, int dlen, uint64_t xactid) 636{ 637 struct vmbus_chanpkt_sglist pkt; 638 int pktlen, pad_pktlen, hlen, error; 639 struct iovec iov[4]; 640 boolean_t send_evt; 641 uint64_t pad = 0; 642 | 615 616 pkt.cp_hdr.cph_type = type; 617 pkt.cp_hdr.cph_flags = flags; 618 VMBUS_CHANPKT_SETLEN(pkt.cp_hdr.cph_hlen, hlen); 619 VMBUS_CHANPKT_SETLEN(pkt.cp_hdr.cph_tlen, pad_pktlen); 620 pkt.cp_hdr.cph_xactid = xactid; 621 622 iov[0].iov_base = &pkt; --- 14 unchanged lines hidden (view full) --- 637 struct vmbus_gpa sg[], int sglen, void *data, int dlen, uint64_t xactid) 638{ 639 struct vmbus_chanpkt_sglist pkt; 640 int pktlen, pad_pktlen, hlen, error; 641 struct iovec iov[4]; 642 boolean_t send_evt; 643 uint64_t pad = 0; 644 |
643 KASSERT(sglen < VMBUS_CHAN_SGLIST_MAX, 644 ("invalid sglist len %d", sglen)); 645 | |
646 hlen = __offsetof(struct vmbus_chanpkt_sglist, cp_gpa[sglen]); 647 pktlen = hlen + dlen; 648 pad_pktlen = VMBUS_CHANPKT_TOTLEN(pktlen); | 645 hlen = __offsetof(struct vmbus_chanpkt_sglist, cp_gpa[sglen]); 646 pktlen = hlen + dlen; 647 pad_pktlen = VMBUS_CHANPKT_TOTLEN(pktlen); |
648 KASSERT(pad_pktlen <= vmbus_txbr_maxpktsz(&chan->ch_txbr), 649 ("invalid packet size %d", pad_pktlen)); |
|
649 650 pkt.cp_hdr.cph_type = VMBUS_CHANPKT_TYPE_GPA; 651 pkt.cp_hdr.cph_flags = VMBUS_CHANPKT_FLAG_RC; 652 VMBUS_CHANPKT_SETLEN(pkt.cp_hdr.cph_hlen, hlen); 653 VMBUS_CHANPKT_SETLEN(pkt.cp_hdr.cph_tlen, pad_pktlen); 654 pkt.cp_hdr.cph_xactid = xactid; 655 pkt.cp_rsvd = 0; 656 pkt.cp_gpa_cnt = sglen; --- 19 unchanged lines hidden (view full) --- 676 uint64_t xactid) 677{ 678 struct vmbus_chanpkt_prplist pkt; 679 int pktlen, pad_pktlen, hlen, error; 680 struct iovec iov[4]; 681 boolean_t send_evt; 682 uint64_t pad = 0; 683 | 650 651 pkt.cp_hdr.cph_type = VMBUS_CHANPKT_TYPE_GPA; 652 pkt.cp_hdr.cph_flags = VMBUS_CHANPKT_FLAG_RC; 653 VMBUS_CHANPKT_SETLEN(pkt.cp_hdr.cph_hlen, hlen); 654 VMBUS_CHANPKT_SETLEN(pkt.cp_hdr.cph_tlen, pad_pktlen); 655 pkt.cp_hdr.cph_xactid = xactid; 656 pkt.cp_rsvd = 0; 657 pkt.cp_gpa_cnt = sglen; --- 19 unchanged lines hidden (view full) --- 677 uint64_t xactid) 678{ 679 struct vmbus_chanpkt_prplist pkt; 680 int pktlen, pad_pktlen, hlen, error; 681 struct iovec iov[4]; 682 boolean_t send_evt; 683 uint64_t pad = 0; 684 |
684 KASSERT(prp_cnt < VMBUS_CHAN_PRPLIST_MAX, 685 ("invalid prplist entry count %d", prp_cnt)); 686 | |
687 hlen = __offsetof(struct vmbus_chanpkt_prplist, 688 cp_range[0].gpa_page[prp_cnt]); 689 pktlen = hlen + dlen; 690 pad_pktlen = VMBUS_CHANPKT_TOTLEN(pktlen); | 685 hlen = __offsetof(struct vmbus_chanpkt_prplist, 686 cp_range[0].gpa_page[prp_cnt]); 687 pktlen = hlen + dlen; 688 pad_pktlen = VMBUS_CHANPKT_TOTLEN(pktlen); |
689 KASSERT(pad_pktlen <= vmbus_txbr_maxpktsz(&chan->ch_txbr), 690 ("invalid packet size %d", pad_pktlen)); |
|
691 692 pkt.cp_hdr.cph_type = VMBUS_CHANPKT_TYPE_GPA; 693 pkt.cp_hdr.cph_flags = VMBUS_CHANPKT_FLAG_RC; 694 VMBUS_CHANPKT_SETLEN(pkt.cp_hdr.cph_hlen, hlen); 695 VMBUS_CHANPKT_SETLEN(pkt.cp_hdr.cph_tlen, pad_pktlen); 696 pkt.cp_hdr.cph_xactid = xactid; 697 pkt.cp_rsvd = 0; 698 pkt.cp_range_cnt = 1; --- 715 unchanged lines hidden --- | 691 692 pkt.cp_hdr.cph_type = VMBUS_CHANPKT_TYPE_GPA; 693 pkt.cp_hdr.cph_flags = VMBUS_CHANPKT_FLAG_RC; 694 VMBUS_CHANPKT_SETLEN(pkt.cp_hdr.cph_hlen, hlen); 695 VMBUS_CHANPKT_SETLEN(pkt.cp_hdr.cph_tlen, pad_pktlen); 696 pkt.cp_hdr.cph_xactid = xactid; 697 pkt.cp_rsvd = 0; 698 pkt.cp_range_cnt = 1; --- 715 unchanged lines hidden --- |