Page MenuHomeFreeBSD

D7194.id18316.diff
No OneTemporary

D7194.id18316.diff

Index: sys/dev/hyperv/vmbus/hv_channel.c
===================================================================
--- sys/dev/hyperv/vmbus/hv_channel.c
+++ sys/dev/hyperv/vmbus/hv_channel.c
@@ -633,12 +633,12 @@
hlen = sizeof(pkt);
pktlen = hlen + dlen;
- pad_pktlen = roundup2(pktlen, VMBUS_CHANPKT_SIZE_ALIGN);
+ pad_pktlen = VMBUS_CHANPKT_TOTLEN(pktlen);
pkt.cp_hdr.cph_type = type;
pkt.cp_hdr.cph_flags = flags;
- pkt.cp_hdr.cph_hlen = hlen >> VMBUS_CHANPKT_SIZE_SHIFT;
- pkt.cp_hdr.cph_tlen = pad_pktlen >> VMBUS_CHANPKT_SIZE_SHIFT;
+ VMBUS_CHANPKT_SETLEN(pkt.cp_hdr.cph_hlen, hlen);
+ VMBUS_CHANPKT_SETLEN(pkt.cp_hdr.cph_tlen, pad_pktlen);
pkt.cp_hdr.cph_xactid = xactid;
iov[0].iov_base = &pkt;
@@ -669,12 +669,12 @@
hlen = __offsetof(struct vmbus_chanpkt_sglist, cp_gpa[sglen]);
pktlen = hlen + dlen;
- pad_pktlen = roundup2(pktlen, VMBUS_CHANPKT_SIZE_ALIGN);
+ pad_pktlen = VMBUS_CHANPKT_TOTLEN(pktlen);
pkt.cp_hdr.cph_type = VMBUS_CHANPKT_TYPE_GPA;
pkt.cp_hdr.cph_flags = VMBUS_CHANPKT_FLAG_RC;
- pkt.cp_hdr.cph_hlen = hlen >> VMBUS_CHANPKT_SIZE_SHIFT;
- pkt.cp_hdr.cph_tlen = pad_pktlen >> VMBUS_CHANPKT_SIZE_SHIFT;
+ VMBUS_CHANPKT_SETLEN(pkt.cp_hdr.cph_hlen, hlen);
+ VMBUS_CHANPKT_SETLEN(pkt.cp_hdr.cph_tlen, pad_pktlen);
pkt.cp_hdr.cph_xactid = xactid;
pkt.cp_rsvd = 0;
pkt.cp_gpa_cnt = sglen;
@@ -711,12 +711,12 @@
hlen = __offsetof(struct vmbus_chanpkt_prplist,
cp_range[0].gpa_page[prp_cnt]);
pktlen = hlen + dlen;
- pad_pktlen = roundup2(pktlen, VMBUS_CHANPKT_SIZE_ALIGN);
+ pad_pktlen = VMBUS_CHANPKT_TOTLEN(pktlen);
pkt.cp_hdr.cph_type = VMBUS_CHANPKT_TYPE_GPA;
pkt.cp_hdr.cph_flags = VMBUS_CHANPKT_FLAG_RC;
- pkt.cp_hdr.cph_hlen = hlen >> VMBUS_CHANPKT_SIZE_SHIFT;
- pkt.cp_hdr.cph_tlen = pad_pktlen >> VMBUS_CHANPKT_SIZE_SHIFT;
+ VMBUS_CHANPKT_SETLEN(pkt.cp_hdr.cph_hlen, hlen);
+ VMBUS_CHANPKT_SETLEN(pkt.cp_hdr.cph_tlen, pad_pktlen);
pkt.cp_hdr.cph_xactid = xactid;
pkt.cp_rsvd = 0;
pkt.cp_range_cnt = 1;
Index: sys/dev/hyperv/vmbus/vmbus_reg.h
===================================================================
--- sys/dev/hyperv/vmbus/vmbus_reg.h
+++ sys/dev/hyperv/vmbus/vmbus_reg.h
@@ -115,6 +115,14 @@
#define VMBUS_CHANPKT_SIZE_SHIFT 3
#define VMBUS_CHANPKT_SIZE_ALIGN (1 << VMBUS_CHANPKT_SIZE_SHIFT)
+#define VMBUS_CHANPKT_SETLEN(pktlen, len) \
+do { \
+ (pktlen) = (len) >> VMBUS_CHANPKT_SIZE_SHIFT; \
+} while (0)
+
+#define VMBUS_CHANPKT_TOTLEN(tlen) \
+ roundup2((tlen), VMBUS_CHANPKT_SIZE_ALIGN)
+
struct vmbus_chanpkt_hdr {
uint16_t cph_type;
uint16_t cph_hlen; /* header len, in 8 bytes */

File Metadata

Mime Type
text/plain
Expires
Thu, Feb 27, 5:03 AM (14 h, 31 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16862827
Default Alt Text
D7194.id18316.diff (2 KB)

Event Timeline