svn commit: r302880 - in head/sys/dev/hyperv: include netvsc storvsc utilities vmbus

Sepherosa Ziehau sephe at FreeBSD.org
Fri Jul 15 06:58:23 UTC 2016


Author: sephe
Date: Fri Jul 15 06:58:21 2016
New Revision: 302880
URL: https://svnweb.freebsd.org/changeset/base/302880

Log:
  hyperv/vmbus: Move channel packet types definition to vmbus.h
  
  MFC after:	1 week
  Sponsored by:	Microsoft OSTC
  Differential Revision:	https://reviews.freebsd.org/D7177

Modified:
  head/sys/dev/hyperv/include/hyperv.h
  head/sys/dev/hyperv/include/vmbus.h
  head/sys/dev/hyperv/netvsc/hv_net_vsc.c
  head/sys/dev/hyperv/netvsc/hv_rndis_filter.c
  head/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c
  head/sys/dev/hyperv/utilities/hv_heartbeat.c
  head/sys/dev/hyperv/utilities/hv_kvp.c
  head/sys/dev/hyperv/utilities/hv_shutdown.c
  head/sys/dev/hyperv/utilities/hv_timesync.c
  head/sys/dev/hyperv/vmbus/hv_channel.c

Modified: head/sys/dev/hyperv/include/hyperv.h
==============================================================================
--- head/sys/dev/hyperv/include/hyperv.h	Fri Jul 15 06:49:45 2016	(r302879)
+++ head/sys/dev/hyperv/include/hyperv.h	Fri Jul 15 06:58:21 2016	(r302880)
@@ -112,23 +112,6 @@ typedef struct {
 	hv_vm_transfer_page	ranges[1];
 } __packed hv_vm_transfer_page_packet_header;
 
-typedef enum {
-	HV_VMBUS_PACKET_TYPE_INVALID				= 0x0,
-	HV_VMBUS_PACKET_TYPES_SYNCH				= 0x1,
-	HV_VMBUS_PACKET_TYPE_ADD_TRANSFER_PAGE_SET		= 0x2,
-	HV_VMBUS_PACKET_TYPE_REMOVE_TRANSFER_PAGE_SET		= 0x3,
-	HV_VMBUS_PACKET_TYPE_ESTABLISH_GPADL			= 0x4,
-	HV_VMBUS_PACKET_TYPE_TEAR_DOWN_GPADL			= 0x5,
-	HV_VMBUS_PACKET_TYPE_DATA_IN_BAND			= 0x6,
-	HV_VMBUS_PACKET_TYPE_DATA_USING_TRANSFER_PAGES		= 0x7,
-	HV_VMBUS_PACKET_TYPE_DATA_USING_GPADL			= 0x8,
-	HV_VMBUS_PACKET_TYPE_DATA_USING_GPA_DIRECT		= 0x9,
-	HV_VMBUS_PACKET_TYPE_CANCEL_REQUEST			= 0xa,
-	HV_VMBUS_PACKET_TYPE_COMPLETION				= 0xb,
-	HV_VMBUS_PACKET_TYPE_DATA_USING_ADDITIONAL_PACKETS	= 0xc,
-	HV_VMBUS_PACKET_TYPE_ADDITIONAL_DATA = 0xd
-} hv_vmbus_packet_type;
-
 #define HW_MACADDR_LEN	6
 
 /*
@@ -345,8 +328,8 @@ int		hv_vmbus_channel_send_packet(
 				void*			buffer,
 				uint32_t		buffer_len,
 				uint64_t		request_id,
-				hv_vmbus_packet_type	type,
-				uint32_t		flags);
+				uint16_t		type,
+				uint16_t		flags);
 
 int		hv_vmbus_channel_establish_gpadl(
 				hv_vmbus_channel*	channel,

Modified: head/sys/dev/hyperv/include/vmbus.h
==============================================================================
--- head/sys/dev/hyperv/include/vmbus.h	Fri Jul 15 06:49:45 2016	(r302879)
+++ head/sys/dev/hyperv/include/vmbus.h	Fri Jul 15 06:58:21 2016	(r302880)
@@ -47,10 +47,15 @@ struct vmbus_gpa {
 	uint64_t	gpa_page;
 } __packed;
 
-#define VMBUS_CHANPKT_FLAG_RC	0x0001	/* report completion */
+#define VMBUS_CHANPKT_TYPE_INBAND	0x0006
+#define VMBUS_CHANPKT_TYPE_RXBUF	0x0007
+#define VMBUS_CHANPKT_TYPE_GPA		0x0009
+#define VMBUS_CHANPKT_TYPE_COMP		0x000b
 
-#define VMBUS_CHAN_SGLIST_MAX	32
-#define VMBUS_CHAN_PRPLIST_MAX	32
+#define VMBUS_CHANPKT_FLAG_RC		0x0001	/* report completion */
+
+#define VMBUS_CHAN_SGLIST_MAX		32
+#define VMBUS_CHAN_PRPLIST_MAX		32
 
 struct hv_vmbus_channel;
 

Modified: head/sys/dev/hyperv/netvsc/hv_net_vsc.c
==============================================================================
--- head/sys/dev/hyperv/netvsc/hv_net_vsc.c	Fri Jul 15 06:49:45 2016	(r302879)
+++ head/sys/dev/hyperv/netvsc/hv_net_vsc.c	Fri Jul 15 06:58:21 2016	(r302880)
@@ -185,7 +185,7 @@ hv_nv_init_rx_buffer_with_net_vsp(struct
 
 	ret = hv_vmbus_channel_send_packet(sc->hn_prichan, init_pkt,
 	    sizeof(nvsp_msg), (uint64_t)(uintptr_t)init_pkt,
-	    HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, VMBUS_CHANPKT_FLAG_RC);
+	    VMBUS_CHANPKT_TYPE_INBAND, VMBUS_CHANPKT_FLAG_RC);
 	if (ret != 0) {
 		goto cleanup;
 	}
@@ -278,7 +278,7 @@ hv_nv_init_send_buffer_with_net_vsp(stru
 
 	ret = hv_vmbus_channel_send_packet(sc->hn_prichan, init_pkt,
   	    sizeof(nvsp_msg), (uint64_t)init_pkt,
-	    HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, VMBUS_CHANPKT_FLAG_RC);
+	    VMBUS_CHANPKT_TYPE_INBAND, VMBUS_CHANPKT_FLAG_RC);
 	if (ret != 0) {
 		goto cleanup;
 	}
@@ -338,7 +338,7 @@ hv_nv_destroy_rx_buffer(netvsc_dev *net_
 		ret = hv_vmbus_channel_send_packet(net_dev->sc->hn_prichan,
 		    revoke_pkt, sizeof(nvsp_msg),
 		    (uint64_t)(uintptr_t)revoke_pkt,
-		    HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, 0);
+		    VMBUS_CHANPKT_TYPE_INBAND, 0);
 
 		/*
 		 * If we failed here, we might as well return and have a leak 
@@ -406,7 +406,7 @@ hv_nv_destroy_send_buffer(netvsc_dev *ne
 		ret = hv_vmbus_channel_send_packet(net_dev->sc->hn_prichan,
 		    revoke_pkt, sizeof(nvsp_msg),
 		    (uint64_t)(uintptr_t)revoke_pkt,
-		    HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, 0);
+		    VMBUS_CHANPKT_TYPE_INBAND, 0);
 		/*
 		 * If we failed here, we might as well return and have a leak 
 		 * rather than continue and a bugchk
@@ -472,7 +472,7 @@ hv_nv_negotiate_nvsp_protocol(struct hn_
 	/* Send the init request */
 	ret = hv_vmbus_channel_send_packet(sc->hn_prichan, init_pkt,
 	    sizeof(nvsp_msg), (uint64_t)(uintptr_t)init_pkt,
-	    HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, VMBUS_CHANPKT_FLAG_RC);
+	    VMBUS_CHANPKT_TYPE_INBAND, VMBUS_CHANPKT_FLAG_RC);
 	if (ret != 0)
 		return (-1);
 
@@ -515,7 +515,7 @@ hv_nv_send_ndis_config(struct hn_softc *
 	/* Send the configuration packet */
 	ret = hv_vmbus_channel_send_packet(sc->hn_prichan, init_pkt,
 	    sizeof(nvsp_msg), (uint64_t)(uintptr_t)init_pkt,
-	    HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, 0);
+	    VMBUS_CHANPKT_TYPE_INBAND, 0);
 	if (ret != 0)
 		return (-EINVAL);
 
@@ -594,7 +594,7 @@ hv_nv_connect_to_vsp(struct hn_softc *sc
 
 	ret = hv_vmbus_channel_send_packet(sc->hn_prichan, init_pkt,
 	    sizeof(nvsp_msg), (uint64_t)(uintptr_t)init_pkt,
-	    HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, 0);
+	    VMBUS_CHANPKT_TYPE_INBAND, 0);
 	if (ret != 0) {
 		goto cleanup;
 	}
@@ -818,7 +818,7 @@ hv_nv_on_send(struct hv_vmbus_channel *c
 	} else {
 		ret = hv_vmbus_channel_send_packet(chan,
 		    &send_msg, sizeof(nvsp_msg), (uint64_t)(uintptr_t)pkt,
-		    HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, VMBUS_CHANPKT_FLAG_RC);
+		    VMBUS_CHANPKT_TYPE_INBAND, VMBUS_CHANPKT_FLAG_RC);
 	}
 
 	return (ret);
@@ -847,7 +847,7 @@ hv_nv_on_receive(netvsc_dev *net_dev, st
 	 * All inbound packets other than send completion should be
 	 * xfer page packet.
 	 */
-	if (pkt->type != HV_VMBUS_PACKET_TYPE_DATA_USING_TRANSFER_PAGES) {
+	if (pkt->type != VMBUS_CHANPKT_TYPE_RXBUF) {
 		device_printf(dev, "packet type %d is invalid!\n", pkt->type);
 		return;
 	}
@@ -918,7 +918,7 @@ hv_nv_on_receive_completion(struct hv_vm
 retry_send_cmplt:
 	/* Send the completion */
 	ret = hv_vmbus_channel_send_packet(chan, &rx_comp_msg,
-	    sizeof(nvsp_msg), tid, HV_VMBUS_PACKET_TYPE_COMPLETION, 0);
+	    sizeof(nvsp_msg), tid, VMBUS_CHANPKT_TYPE_COMP, 0);
 	if (ret == 0) {
 		/* success */
 		/* no-op */
@@ -1003,14 +1003,14 @@ hv_nv_on_channel_callback(void *xchan)
 			if (bytes_rxed > 0) {
 				desc = (hv_vm_packet_descriptor *)buffer;
 				switch (desc->type) {
-				case HV_VMBUS_PACKET_TYPE_COMPLETION:
+				case VMBUS_CHANPKT_TYPE_COMP:
 					hv_nv_on_send_completion(net_dev, chan,
 					    desc);
 					break;
-				case HV_VMBUS_PACKET_TYPE_DATA_USING_TRANSFER_PAGES:
+				case VMBUS_CHANPKT_TYPE_RXBUF:
 					hv_nv_on_receive(net_dev, sc, chan, desc);
 					break;
-				case HV_VMBUS_PACKET_TYPE_DATA_IN_BAND:
+				case VMBUS_CHANPKT_TYPE_INBAND:
 					hv_nv_send_table(sc, desc);
 					break;
 				default:

Modified: head/sys/dev/hyperv/netvsc/hv_rndis_filter.c
==============================================================================
--- head/sys/dev/hyperv/netvsc/hv_rndis_filter.c	Fri Jul 15 06:49:45 2016	(r302879)
+++ head/sys/dev/hyperv/netvsc/hv_rndis_filter.c	Fri Jul 15 06:58:21 2016	(r302880)
@@ -1168,7 +1168,7 @@ hv_rf_on_device_add(struct hn_softc *sc,
 
 	ret = hv_vmbus_channel_send_packet(sc->hn_prichan, init_pkt,
 	    sizeof(nvsp_msg), (uint64_t)(uintptr_t)init_pkt,
-	    HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, VMBUS_CHANPKT_FLAG_RC);
+	    VMBUS_CHANPKT_TYPE_INBAND, VMBUS_CHANPKT_FLAG_RC);
 	if (ret != 0) {
 		device_printf(dev, "Fail to allocate subchannel\n");
 		goto out;

Modified: head/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c
==============================================================================
--- head/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c	Fri Jul 15 06:49:45 2016	(r302879)
+++ head/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c	Fri Jul 15 06:58:21 2016	(r302880)
@@ -361,7 +361,7 @@ storvsc_send_multichannel_request(struct
 	    vstor_packet,
 	    VSTOR_PKT_SIZE,
 	    (uint64_t)(uintptr_t)request,
-	    HV_VMBUS_PACKET_TYPE_DATA_IN_BAND,
+	    VMBUS_CHANPKT_TYPE_INBAND,
 	    VMBUS_CHANPKT_FLAG_RC);
 
 	/* wait for 5 seconds */
@@ -432,7 +432,7 @@ hv_storvsc_channel_init(struct storvsc_s
 			vstor_packet,
 			VSTOR_PKT_SIZE,
 			(uint64_t)(uintptr_t)request,
-			HV_VMBUS_PACKET_TYPE_DATA_IN_BAND,
+			VMBUS_CHANPKT_TYPE_INBAND,
 			VMBUS_CHANPKT_FLAG_RC);
 
 	if (ret != 0)
@@ -466,7 +466,7 @@ hv_storvsc_channel_init(struct storvsc_s
 			vstor_packet,
 			VSTOR_PKT_SIZE,
 			(uint64_t)(uintptr_t)request,
-			HV_VMBUS_PACKET_TYPE_DATA_IN_BAND,
+			VMBUS_CHANPKT_TYPE_INBAND,
 			VMBUS_CHANPKT_FLAG_RC);
 
 		if (ret != 0)
@@ -509,7 +509,7 @@ hv_storvsc_channel_init(struct storvsc_s
 				vstor_packet,
 				VSTOR_PKT_SIZE,
 				(uint64_t)(uintptr_t)request,
-				HV_VMBUS_PACKET_TYPE_DATA_IN_BAND,
+				VMBUS_CHANPKT_TYPE_INBAND,
 				VMBUS_CHANPKT_FLAG_RC);
 
 	if ( ret != 0)
@@ -545,7 +545,7 @@ hv_storvsc_channel_init(struct storvsc_s
 			vstor_packet,
 			VSTOR_PKT_SIZE,
 			(uint64_t)(uintptr_t)request,
-			HV_VMBUS_PACKET_TYPE_DATA_IN_BAND,
+			VMBUS_CHANPKT_TYPE_INBAND,
 			VMBUS_CHANPKT_FLAG_RC);
 
 	if (ret != 0) {
@@ -635,7 +635,7 @@ hv_storvsc_host_reset(struct storvsc_sof
 			vstor_packet,
 			VSTOR_PKT_SIZE,
 			(uint64_t)(uintptr_t)&sc->hs_reset_req,
-			HV_VMBUS_PACKET_TYPE_DATA_IN_BAND,
+			VMBUS_CHANPKT_TYPE_INBAND,
 			VMBUS_CHANPKT_FLAG_RC);
 
 	if (ret != 0) {
@@ -699,7 +699,7 @@ hv_storvsc_io_request(struct storvsc_sof
 			vstor_packet,
 			VSTOR_PKT_SIZE,
 			(uint64_t)(uintptr_t)request,
-			HV_VMBUS_PACKET_TYPE_DATA_IN_BAND,
+			VMBUS_CHANPKT_TYPE_INBAND,
 			VMBUS_CHANPKT_FLAG_RC);
 	}
 	mtx_lock(&request->softc->hs_lock);

Modified: head/sys/dev/hyperv/utilities/hv_heartbeat.c
==============================================================================
--- head/sys/dev/hyperv/utilities/hv_heartbeat.c	Fri Jul 15 06:49:45 2016	(r302879)
+++ head/sys/dev/hyperv/utilities/hv_heartbeat.c	Fri Jul 15 06:58:21 2016	(r302880)
@@ -35,6 +35,7 @@
 #include <sys/syscallsubr.h>
 
 #include <dev/hyperv/include/hyperv.h>
+#include <dev/hyperv/include/vmbus.h>
 #include "hv_util.h"
 #include "vmbus_if.h"
 
@@ -87,7 +88,7 @@ hv_heartbeat_cb(void *context)
 				 HV_ICMSGHDRFLAG_RESPONSE;
 
 	    hv_vmbus_channel_send_packet(channel, buf, recvlen, requestid,
-		HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, 0);
+		VMBUS_CHANPKT_TYPE_INBAND, 0);
 	}
 }
 

Modified: head/sys/dev/hyperv/utilities/hv_kvp.c
==============================================================================
--- head/sys/dev/hyperv/utilities/hv_kvp.c	Fri Jul 15 06:49:45 2016	(r302879)
+++ head/sys/dev/hyperv/utilities/hv_kvp.c	Fri Jul 15 06:58:21 2016	(r302880)
@@ -578,7 +578,7 @@ hv_kvp_respond_host(hv_kvp_sc *sc, int e
 	error = hv_vmbus_channel_send_packet(sc->util_sc.channel,
 			sc->rcv_buf,
 			sc->host_msg_len, sc->host_msg_id,
-			HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, 0);
+			VMBUS_CHANPKT_TYPE_INBAND, 0);
 
 	if (error)
 		hv_kvp_log_info("%s: hv_kvp_respond_host: sendpacket error:%d\n",

Modified: head/sys/dev/hyperv/utilities/hv_shutdown.c
==============================================================================
--- head/sys/dev/hyperv/utilities/hv_shutdown.c	Fri Jul 15 06:49:45 2016	(r302879)
+++ head/sys/dev/hyperv/utilities/hv_shutdown.c	Fri Jul 15 06:58:21 2016	(r302880)
@@ -40,6 +40,7 @@
 #include <sys/syscallsubr.h>
 
 #include <dev/hyperv/include/hyperv.h>
+#include <dev/hyperv/include/vmbus.h>
 #include "hv_util.h"
 #include "vmbus_if.h"
 
@@ -106,7 +107,7 @@ hv_shutdown_cb(void *context)
 
 	    hv_vmbus_channel_send_packet(channel, buf,
 					recv_len, request_id,
-					HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, 0);
+					VMBUS_CHANPKT_TYPE_INBAND, 0);
 	}
 
 	if (execute_shutdown)

Modified: head/sys/dev/hyperv/utilities/hv_timesync.c
==============================================================================
--- head/sys/dev/hyperv/utilities/hv_timesync.c	Fri Jul 15 06:49:45 2016	(r302879)
+++ head/sys/dev/hyperv/utilities/hv_timesync.c	Fri Jul 15 06:58:21 2016	(r302880)
@@ -40,6 +40,7 @@
 #include <sys/syscallsubr.h>
 
 #include <dev/hyperv/include/hyperv.h>
+#include <dev/hyperv/include/vmbus.h>
 #include "hv_util.h"
 #include "vmbus_if.h"
 
@@ -164,7 +165,7 @@ hv_timesync_cb(void *context)
 
 	    hv_vmbus_channel_send_packet(channel, time_buf,
 		recvlen, requestId,
-		HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, 0);
+		VMBUS_CHANPKT_TYPE_INBAND, 0);
 	}
 }
 

Modified: head/sys/dev/hyperv/vmbus/hv_channel.c
==============================================================================
--- head/sys/dev/hyperv/vmbus/hv_channel.c	Fri Jul 15 06:49:45 2016	(r302879)
+++ head/sys/dev/hyperv/vmbus/hv_channel.c	Fri Jul 15 06:58:21 2016	(r302880)
@@ -630,8 +630,8 @@ hv_vmbus_channel_send_packet(
 	void*			buffer,
 	uint32_t		buffer_len,
 	uint64_t		request_id,
-	hv_vmbus_packet_type	type,
-	uint32_t		flags)
+	uint16_t		type,
+	uint16_t		flags)
 {
 	int			ret = 0;
 	struct vmbus_chanpkt pkt;
@@ -689,7 +689,7 @@ vmbus_chan_send_sglist(struct hv_vmbus_c
 	pktlen = hlen + dlen;
 	pad_pktlen = roundup2(pktlen, VMBUS_CHANPKT_SIZE_ALIGN);
 
-	pkt.cp_hdr.cph_type = HV_VMBUS_PACKET_TYPE_DATA_USING_GPA_DIRECT;
+	pkt.cp_hdr.cph_type = VMBUS_CHANPKT_TYPE_GPA;
 	pkt.cp_hdr.cph_flags = VMBUS_CHANPKT_FLAG_RC;
 	pkt.cp_hdr.cph_data_ofs = hlen >> VMBUS_CHANPKT_SIZE_SHIFT;
 	pkt.cp_hdr.cph_len = pad_pktlen >> VMBUS_CHANPKT_SIZE_SHIFT;
@@ -731,7 +731,7 @@ vmbus_chan_send_prplist(struct hv_vmbus_
 	pktlen = hlen + dlen;
 	pad_pktlen = roundup2(pktlen, VMBUS_CHANPKT_SIZE_ALIGN);
 
-	pkt.cp_hdr.cph_type = HV_VMBUS_PACKET_TYPE_DATA_USING_GPA_DIRECT;
+	pkt.cp_hdr.cph_type = VMBUS_CHANPKT_TYPE_GPA;
 	pkt.cp_hdr.cph_flags = VMBUS_CHANPKT_FLAG_RC;
 	pkt.cp_hdr.cph_data_ofs = hlen >> VMBUS_CHANPKT_SIZE_SHIFT;
 	pkt.cp_hdr.cph_len = pad_pktlen >> VMBUS_CHANPKT_SIZE_SHIFT;


More information about the svn-src-head mailing list