Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8efe78fd authored by Vitaly Kuznetsov's avatar Vitaly Kuznetsov Committed by Greg Kroah-Hartman
Browse files

Drivers: hv: kvp: move poll_channel() to hyperv_vmbus.h



Move poll_channel() to hyperv_vmbus.h and make it inline and rename it to hv_poll_channel() so it can be reused
in other hv_util modules.

Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
Tested-by: default avatarAlex Ng <alexng@microsoft.com>
Signed-off-by: default avatarK. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 5fa97480
Loading
Loading
Loading
Loading
+3 −14
Original line number Diff line number Diff line
@@ -128,17 +128,6 @@ kvp_work_func(struct work_struct *dummy)
	kvp_respond_to_host(NULL, HV_E_FAIL);
}

static void poll_channel(struct vmbus_channel *channel)
{
	if (channel->target_cpu != smp_processor_id())
		smp_call_function_single(channel->target_cpu,
					 hv_kvp_onchannelcallback,
					 channel, true);
	else
		hv_kvp_onchannelcallback(channel);
}


static int kvp_handle_handshake(struct hv_kvp_msg *msg)
{
	int ret = 1;
@@ -166,8 +155,8 @@ static int kvp_handle_handshake(struct hv_kvp_msg *msg)
		pr_info("KVP: user-mode registering done.\n");
		kvp_register(dm_reg_value);
		kvp_transaction.active = false;
		if (kvp_transaction.kvp_context)
			poll_channel(kvp_transaction.kvp_context);
		hv_poll_channel(kvp_transaction.kvp_context,
				hv_kvp_onchannelcallback);
	}
	return ret;
}
@@ -587,7 +576,7 @@ kvp_respond_to_host(struct hv_kvp_msg *msg_to_host, int error)

	vmbus_sendpacket(channel, recv_buffer, buf_len, req_id,
				VM_PKT_DATA_INBAND, 0);
	poll_channel(channel);
	hv_poll_channel(channel, hv_kvp_onchannelcallback);
}

/*
+12 −0
Original line number Diff line number Diff line
@@ -742,5 +742,17 @@ int hv_fcopy_init(struct hv_util_service *);
void hv_fcopy_deinit(void);
void hv_fcopy_onchannelcallback(void *);

static inline void hv_poll_channel(struct vmbus_channel *channel,
				   void (*cb)(void *))
{
	if (!channel)
		return;

	if (channel->target_cpu != smp_processor_id())
		smp_call_function_single(channel->target_cpu,
					 cb, channel, true);
	else
		cb(channel);
}

#endif /* _HYPERV_VMBUS_H */