From: K. Y. Srinivasan Date: Tue, 10 May 2011 14:55:58 +0000 (-0700) Subject: Staging: hv: storvsc_drv: Compute max_outstanding_req_per_channel where it is needed X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=01415ab3d24e5e53b6b581869bc368f78e397ccb;p=linux-beck.git Staging: hv: storvsc_drv: Compute max_outstanding_req_per_channel where it is needed Compute max_outstanding_req_per_channel where it is needed. Signed-off-by: K. Y. Srinivasan Signed-off-by: Haiyang Zhang Signed-off-by: Abhishek Kane Signed-off-by: Hank Janssen Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/hv/storvsc_drv.c b/drivers/staging/hv/storvsc_drv.c index 07db877ff181..7d8b8f9be189 100644 --- a/drivers/staging/hv/storvsc_drv.c +++ b/drivers/staging/hv/storvsc_drv.c @@ -90,20 +90,6 @@ static int storvsc_initialize(struct hv_driver *driver) memcpy(&driver->dev_type, &gStorVscDeviceType, sizeof(struct hv_guid)); - - /* - * Divide the ring buffer data size (which is 1 page less - * than the ring buffer size since that page is reserved for - * the ring buffer indices) by the max request size (which is - * vmbus_channel_packet_multipage_buffer + struct vstor_packet + u64) - */ - stor_driver->max_outstanding_req_per_channel = - ((stor_driver->ring_buffer_size - PAGE_SIZE) / - ALIGN(MAX_MULTIPAGE_BUFFER_PACKET + - sizeof(struct vstor_packet) + sizeof(u64), - sizeof(u64))); - - return 0; } @@ -797,13 +783,27 @@ static int storvsc_drv_init(void) int ret; struct storvsc_driver *storvsc_drv_obj = &storvsc_drv; struct hv_driver *drv = &storvsc_drv.base; + u32 max_outstanding_req_per_channel; + + /* + * Divide the ring buffer data size (which is 1 page less + * than the ring buffer size since that page is reserved for + * the ring buffer indices) by the max request size (which is + * vmbus_channel_packet_multipage_buffer + struct vstor_packet + u64) + */ + + max_outstanding_req_per_channel = + ((storvsc_ringbuffer_size - PAGE_SIZE) / + ALIGN(MAX_MULTIPAGE_BUFFER_PACKET + + sizeof(struct vstor_packet) + sizeof(u64), + sizeof(u64))); storvsc_drv_obj->ring_buffer_size = storvsc_ringbuffer_size; /* Callback to client driver to complete the initialization */ storvsc_initialize(&storvsc_drv_obj->base); - if (storvsc_drv_obj->max_outstanding_req_per_channel < + if (max_outstanding_req_per_channel < STORVSC_MAX_IO_REQUESTS) return -1;