From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760343AbcLAPfw (ORCPT ); Thu, 1 Dec 2016 10:35:52 -0500 Received: from p3plsmtps2ded03.prod.phx3.secureserver.net ([208.109.80.60]:38334 "EHLO p3plsmtps2ded03.prod.phx3.secureserver.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758850AbcLAPeD (ORCPT ); Thu, 1 Dec 2016 10:34:03 -0500 x-originating-ip: 72.167.245.219 From: kys@exchange.microsoft.com To: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, devel@linuxdriverproject.org, olaf@aepfle.de, apw@canonical.com, vkuznets@redhat.com, jasowang@redhat.com, leann.ogasawara@canonical.com Cc: "K. Y. Srinivasan" Subject: [PATCH 05/15] Drivers: hv: vmbus: Enhance the rescind callback functionality Date: Thu, 1 Dec 2016 09:28:42 -0800 Message-Id: <1480613332-7788-5-git-send-email-kys@exchange.microsoft.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1480613332-7788-1-git-send-email-kys@exchange.microsoft.com> References: <1480613287-7748-1-git-send-email-kys@exchange.microsoft.com> <1480613332-7788-1-git-send-email-kys@exchange.microsoft.com> Reply-To: kys@microsoft.com X-CMAE-Envelope: MS4wfM9xhNmSGO8n4Xy2mN1ehI3gkb+CxtN5nPQTs4R6TazFAdtQ0ZY0GYNgyhiDoQq9c0GlUhcaTrrJxxl55G6Hsd9sZ+Zs7CaF+DmpMcM7oOmjWl8eTioN I5J4nE6XyHYkuulrWzUWGPH0RdbcYtZkJnoHvt+ZCofHNkuOO6lUXlILDzmK9YLdHN9wdftZ51zK54mpE58Sjgl1z8b+TznSTDUpREhzv54IJtTGuubLfToC Bj17Q/9NqfLQCgZCrHR7KP+MLH20Hlrj9LrBdmcLwGDRc6bBZZ83EKp4OYv+14OzlbdjoCGz37Am8aoxiiN2Ibci8LcMxRWSrAcNKGV0gjwRZI/ycK/dDZKX 8C/sfffLCZsHO0EupRFFAIAgbPLChJEApao18sRTc7qRGO2bbHPz/dKHWGlOj9YZT9n2DymtCh8ODsKItypumhVUuUhKHF2eyzE2fF/u8VzVzyPscD8= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: K. Y. Srinivasan Signed-off-by: K. Y. Srinivasan --- drivers/hv/channel_mgmt.c | 11 +++++++---- include/linux/hyperv.h | 7 ++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c index f9c5827..d83c1ac 100644 --- a/drivers/hv/channel_mgmt.c +++ b/drivers/hv/channel_mgmt.c @@ -825,8 +825,10 @@ static void vmbus_onoffer_rescind(struct vmbus_channel_message_header *hdr) if (channel->device_obj) { if (channel->chn_rescind_callback) { - channel->chn_rescind_callback(channel); - goto out; + channel->chn_rescind_callback(channel, + channel->rescind_arg); + if (is_hvsock_channel(channel)) + goto out; } /* * We will have to unregister this device from the @@ -1215,9 +1217,10 @@ bool vmbus_are_subchannels_present(struct vmbus_channel *primary) } EXPORT_SYMBOL_GPL(vmbus_are_subchannels_present); -void vmbus_set_chn_rescind_callback(struct vmbus_channel *channel, - void (*chn_rescind_cb)(struct vmbus_channel *)) +void vmbus_set_chn_rescind_callback(struct vmbus_channel *channel, void *arg, + void (*chn_rescind_cb)(struct vmbus_channel *, void *)) { channel->chn_rescind_callback = chn_rescind_cb; + channel->rescind_arg = arg; } EXPORT_SYMBOL_GPL(vmbus_set_chn_rescind_callback); diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h index 5a2d2dd..5051eca 100644 --- a/include/linux/hyperv.h +++ b/include/linux/hyperv.h @@ -800,7 +800,8 @@ struct vmbus_channel { * Channel rescind callback. Some channels (the hvsock ones), need to * register a callback which is invoked in vmbus_onoffer_rescind(). */ - void (*chn_rescind_callback)(struct vmbus_channel *channel); + void (*chn_rescind_callback)(struct vmbus_channel *channel, void *arg); + void *rescind_arg; /* * The spinlock to protect the structure. It is being used to protect @@ -959,8 +960,8 @@ static inline void clear_low_latency_mode(struct vmbus_channel *c) void vmbus_set_sc_create_callback(struct vmbus_channel *primary_channel, void (*sc_cr_cb)(struct vmbus_channel *new_sc)); -void vmbus_set_chn_rescind_callback(struct vmbus_channel *channel, - void (*chn_rescind_cb)(struct vmbus_channel *)); +void vmbus_set_chn_rescind_callback(struct vmbus_channel *channel, void *arg, + void (*chn_rescind_cb)(struct vmbus_channel *, void *)); /* * Retrieve the (sub) channel on which to send an outgoing request. -- 1.7.4.1