mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 16:24:13 +08:00
Drivers: hv: Add state to manage batched reading
For the "read" side signaling optimization, the reader has to completely drain the queue before exiting. Add state to manage this "batched" reading. Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
6fdf3b2143
commit
132368bd0b
@ -275,6 +275,13 @@ static void vmbus_onoffer(struct vmbus_channel_message_header *hdr)
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* By default we setup state to enable batched
|
||||
* reading. A specific service can choose to
|
||||
* disable this prior to opening the channel.
|
||||
*/
|
||||
newchannel->batched_reading = true;
|
||||
|
||||
memcpy(&newchannel->offermsg, offer,
|
||||
sizeof(struct vmbus_channel_offer_channel));
|
||||
newchannel->monitor_grp = (u8)offer->monitorid / 32;
|
||||
|
@ -882,8 +882,28 @@ struct vmbus_channel {
|
||||
|
||||
void (*onchannel_callback)(void *context);
|
||||
void *channel_callback_context;
|
||||
|
||||
/*
|
||||
* A channel can be marked for efficient (batched)
|
||||
* reading:
|
||||
* If batched_reading is set to "true", we read until the
|
||||
* channel is empty and hold off interrupts from the host
|
||||
* during the entire read process.
|
||||
* If batched_reading is set to "false", the client is not
|
||||
* going to perform batched reading.
|
||||
*
|
||||
* By default we will enable batched reading; specific
|
||||
* drivers that don't want this behavior can turn it off.
|
||||
*/
|
||||
|
||||
bool batched_reading;
|
||||
};
|
||||
|
||||
static inline void set_channel_read_state(struct vmbus_channel *c, bool state)
|
||||
{
|
||||
c->batched_reading = state;
|
||||
}
|
||||
|
||||
void vmbus_onmessage(void *context);
|
||||
|
||||
int vmbus_request_offers(void);
|
||||
|
Loading…
Reference in New Issue
Block a user