Deleted Added
full compact
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 ---