Drivers: hv: vmbus: define a new VMBus message type for hvsock
A function to send the type of message is also added. The coming net/hvsock driver will use this function to proactively request the host to offer a VMBus channel for a new hvsock connection. Signed-off-by: Dexuan Cui <decui@microsoft.com> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
5f363bc38f
commit
5c23a1a5c6
@@ -219,6 +219,21 @@ error0:
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(vmbus_open);
|
EXPORT_SYMBOL_GPL(vmbus_open);
|
||||||
|
|
||||||
|
/* Used for Hyper-V Socket: a guest client's connect() to the host */
|
||||||
|
int vmbus_send_tl_connect_request(const uuid_le *shv_guest_servie_id,
|
||||||
|
const uuid_le *shv_host_servie_id)
|
||||||
|
{
|
||||||
|
struct vmbus_channel_tl_connect_request conn_msg;
|
||||||
|
|
||||||
|
memset(&conn_msg, 0, sizeof(conn_msg));
|
||||||
|
conn_msg.header.msgtype = CHANNELMSG_TL_CONNECT_REQUEST;
|
||||||
|
conn_msg.guest_endpoint_id = *shv_guest_servie_id;
|
||||||
|
conn_msg.host_service_id = *shv_host_servie_id;
|
||||||
|
|
||||||
|
return vmbus_post_msg(&conn_msg, sizeof(conn_msg));
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(vmbus_send_tl_connect_request);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* create_gpadl_header - Creates a gpadl for the specified buffer
|
* create_gpadl_header - Creates a gpadl for the specified buffer
|
||||||
*/
|
*/
|
||||||
|
@@ -958,6 +958,10 @@ struct vmbus_channel_message_table_entry
|
|||||||
{CHANNELMSG_VERSION_RESPONSE, 1, vmbus_onversion_response},
|
{CHANNELMSG_VERSION_RESPONSE, 1, vmbus_onversion_response},
|
||||||
{CHANNELMSG_UNLOAD, 0, NULL},
|
{CHANNELMSG_UNLOAD, 0, NULL},
|
||||||
{CHANNELMSG_UNLOAD_RESPONSE, 1, vmbus_unload_response},
|
{CHANNELMSG_UNLOAD_RESPONSE, 1, vmbus_unload_response},
|
||||||
|
{CHANNELMSG_18, 0, NULL},
|
||||||
|
{CHANNELMSG_19, 0, NULL},
|
||||||
|
{CHANNELMSG_20, 0, NULL},
|
||||||
|
{CHANNELMSG_TL_CONNECT_REQUEST, 0, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -392,6 +392,10 @@ enum vmbus_channel_message_type {
|
|||||||
CHANNELMSG_VERSION_RESPONSE = 15,
|
CHANNELMSG_VERSION_RESPONSE = 15,
|
||||||
CHANNELMSG_UNLOAD = 16,
|
CHANNELMSG_UNLOAD = 16,
|
||||||
CHANNELMSG_UNLOAD_RESPONSE = 17,
|
CHANNELMSG_UNLOAD_RESPONSE = 17,
|
||||||
|
CHANNELMSG_18 = 18,
|
||||||
|
CHANNELMSG_19 = 19,
|
||||||
|
CHANNELMSG_20 = 20,
|
||||||
|
CHANNELMSG_TL_CONNECT_REQUEST = 21,
|
||||||
CHANNELMSG_COUNT
|
CHANNELMSG_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -562,6 +566,13 @@ struct vmbus_channel_initiate_contact {
|
|||||||
u64 monitor_page2;
|
u64 monitor_page2;
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
|
/* Hyper-V socket: guest's connect()-ing to host */
|
||||||
|
struct vmbus_channel_tl_connect_request {
|
||||||
|
struct vmbus_channel_message_header header;
|
||||||
|
uuid_le guest_endpoint_id;
|
||||||
|
uuid_le host_service_id;
|
||||||
|
} __packed;
|
||||||
|
|
||||||
struct vmbus_channel_version_response {
|
struct vmbus_channel_version_response {
|
||||||
struct vmbus_channel_message_header header;
|
struct vmbus_channel_message_header header;
|
||||||
u8 version_supported;
|
u8 version_supported;
|
||||||
@@ -1283,4 +1294,6 @@ void hv_process_channel_removal(struct vmbus_channel *channel, u32 relid);
|
|||||||
|
|
||||||
extern __u32 vmbus_proto_version;
|
extern __u32 vmbus_proto_version;
|
||||||
|
|
||||||
|
int vmbus_send_tl_connect_request(const uuid_le *shv_guest_servie_id,
|
||||||
|
const uuid_le *shv_host_servie_id);
|
||||||
#endif /* _HYPERV_H */
|
#endif /* _HYPERV_H */
|
||||||
|
Reference in New Issue
Block a user