diff options
author | K. Y. Srinivasan <kys@microsoft.com> | 2011-05-10 07:55:58 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-05-11 13:49:23 -0700 |
commit | 01415ab3d24e5e53b6b581869bc368f78e397ccb (patch) | |
tree | 5917ff4234008b29e9bf35d8b6d181d34fcc49d1 /drivers/staging/hv/storvsc_drv.c | |
parent | 9d41889fd6fecd106c68cc1062f6bce5bda5bdb4 (diff) | |
download | op-kernel-dev-01415ab3d24e5e53b6b581869bc368f78e397ccb.zip op-kernel-dev-01415ab3d24e5e53b6b581869bc368f78e397ccb.tar.gz |
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 <kys@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Abhishek Kane <v-abkane@microsoft.com>
Signed-off-by: Hank Janssen <hjanssen@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/hv/storvsc_drv.c')
-rw-r--r-- | drivers/staging/hv/storvsc_drv.c | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/drivers/staging/hv/storvsc_drv.c b/drivers/staging/hv/storvsc_drv.c index 07db877..7d8b8f9 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; |