From patchwork Tue Jan 26 09:44:45 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dexuan Cui X-Patchwork-Id: 573120 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 2E164140216 for ; Tue, 26 Jan 2016 19:10:47 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933703AbcAZII3 (ORCPT ); Tue, 26 Jan 2016 03:08:29 -0500 Received: from p3plsmtps2ded04.prod.phx3.secureserver.net ([208.109.80.198]:36292 "EHLO p3plsmtps2ded04.prod.phx3.secureserver.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933042AbcAZII0 (ORCPT ); Tue, 26 Jan 2016 03:08:26 -0500 Received: from linuxonhyperv.com ([72.167.245.219]) by : HOSTING RELAY : with SMTP id Nyfqa71w1WOsdNyfqahjbc; Tue, 26 Jan 2016 01:08:26 -0700 x-originating-ip: 72.167.245.219 Received: by linuxonhyperv.com (Postfix, from userid 518) id 46FFC19025B; Tue, 26 Jan 2016 01:44:45 -0800 (PST) From: Dexuan Cui To: gregkh@linuxfoundation.org, davem@davemloft.net, stephen@networkplumber.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, driverdev-devel@linuxdriverproject.org, olaf@aepfle.de, apw@canonical.com, jasowang@redhat.com, kys@microsoft.com, vkuznets@redhat.com Cc: pebolle@tiscali.nl, stefanha@redhat.com, dan.carpenter@oracle.com Subject: [PATCH V6 4/8] Drivers: hv: vmbus: define a new VMBus message type for hvsock Date: Tue, 26 Jan 2016 01:44:45 -0800 Message-Id: <1453801485-3364-1-git-send-email-decui@microsoft.com> X-Mailer: git-send-email 1.7.4.1 X-CMAE-Envelope: MS4wfLo7pYrvCSXeBQzH8feP7NFXdv0t+q5C1rhHKWpJnodLU9e7QFFUdljLjJlgMVo6IcRBHIRTLo8hvFbsDWuK/YVrBlrGlH1LJnpo40DgSmLLDVjw4OfO qL3uh6Tx2r1NuhxY2wtEFq4fqO+uwF2fO93C/hHwm+d0DkGwMBWRA90pjEurterwINBdPl9ExmBAIxJ9tdFfIRfnvfEru8hNSq/nGliMNrlOK5SM/MhbSNJX hYIiaTCJMe+KQEqoUqUX9uukVjmLEe+YEiyn60p4lzEriYYJQjJe3XSj+Inpumsu9zaI3EsGtOAM38apLK5nRskYVfmEsKF10yGF8+wAPSmE9jt9drQcdP57 yQMMwME+TtvlKMgC9LZhM4rcb83MNbXPFTeHMwm8u7aMjW5skvJSOlUgjCwhj/oxx5f4DoB5ib6AtBNGx1CE1FKOMoTbxCKtaOJc01VqRwgTsfSnJtctOSxn v7mewUz/Ie06T5J9ksU7JPThnfwFFaPOK7uXuEVaxKFAFrSE/OrA9wSLLKxMl5bI/OA/YjjovfNuBhFAHQCGEQVLsZAgg4Kj5p3FuMadsQVbHqEjUGzna2Qc pkTI8vE7fcSZnRAM199/tkpt6LIpxlcS/cKjt9v+5+Hpdg== Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 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 --- drivers/hv/channel.c | 15 +++++++++++++++ drivers/hv/channel_mgmt.c | 4 ++++ include/linux/hyperv.h | 13 +++++++++++++ 3 files changed, 32 insertions(+) diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c index 3f04533..fcab234 100644 --- a/drivers/hv/channel.c +++ b/drivers/hv/channel.c @@ -219,6 +219,21 @@ error0: } 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 */ diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c index 1c1ad47..4611b50 100644 --- a/drivers/hv/channel_mgmt.c +++ b/drivers/hv/channel_mgmt.c @@ -825,6 +825,10 @@ struct vmbus_channel_message_table_entry {CHANNELMSG_VERSION_RESPONSE, 1, vmbus_onversion_response}, {CHANNELMSG_UNLOAD, 0, NULL}, {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}, }; /* diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h index c0eddd7..b835d80 100644 --- a/include/linux/hyperv.h +++ b/include/linux/hyperv.h @@ -392,6 +392,10 @@ enum vmbus_channel_message_type { CHANNELMSG_VERSION_RESPONSE = 15, CHANNELMSG_UNLOAD = 16, CHANNELMSG_UNLOAD_RESPONSE = 17, + CHANNELMSG_18 = 18, + CHANNELMSG_19 = 19, + CHANNELMSG_20 = 20, + CHANNELMSG_TL_CONNECT_REQUEST = 21, CHANNELMSG_COUNT }; @@ -562,6 +566,13 @@ struct vmbus_channel_initiate_contact { u64 monitor_page2; } __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_message_header header; u8 version_supported; @@ -1255,4 +1266,6 @@ void hv_process_channel_removal(struct vmbus_channel *channel, u32 relid); 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 */