summaryrefslogtreecommitdiffstats
path: root/drivers/staging/hv/netvsc_drv.c
diff options
context:
space:
mode:
authorStephen Hemminger2010-05-04 18:58:53 +0200
committerGreg Kroah-Hartman2010-05-11 20:36:09 +0200
commit450d7a4b7ace20fb1cbb4d87ccbccbac3f8895d0 (patch)
tree73cea927dd0458d3dde78493efae9690200b8d3d /drivers/staging/hv/netvsc_drv.c
parentStaging: hv: cleanup network driver (diff)
downloadkernel-qcow2-linux-450d7a4b7ace20fb1cbb4d87ccbccbac3f8895d0.tar.gz
kernel-qcow2-linux-450d7a4b7ace20fb1cbb4d87ccbccbac3f8895d0.tar.xz
kernel-qcow2-linux-450d7a4b7ace20fb1cbb4d87ccbccbac3f8895d0.zip
Staging: hv: ring parameter
The ring size parameter should be number of pages (not bytes). Add module parameter information as well. Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> Acked-by: Hank Janssen <hjanssen@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/hv/netvsc_drv.c')
-rw-r--r--drivers/staging/hv/netvsc_drv.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/staging/hv/netvsc_drv.c b/drivers/staging/hv/netvsc_drv.c
index 2ce9437b44b5..b02455cfe237 100644
--- a/drivers/staging/hv/netvsc_drv.c
+++ b/drivers/staging/hv/netvsc_drv.c
@@ -52,7 +52,11 @@ struct netvsc_driver_context {
struct netvsc_driver drv_obj;
};
-static int netvsc_ringbuffer_size = NETVSC_DEVICE_RING_BUFFER_SIZE;
+/* Need at least MAX_SKB_FRAGS (18) + 1
+ to handle worst case fragmented packet */
+static int ring_size = roundup_pow_of_two(2*MAX_SKB_FRAGS+1);
+module_param(ring_size, int, S_IRUGO);
+MODULE_PARM_DESC(ring_size, "Ring buffer size (# of pages)");
/* The one and only one */
static struct netvsc_driver_context g_netvsc_drv;
@@ -536,7 +540,7 @@ static int netvsc_drv_init(int (*drv_init)(struct hv_driver *drv))
vmbus_get_interface(&net_drv_obj->Base.VmbusChannelInterface);
- net_drv_obj->RingBufferSize = netvsc_ringbuffer_size;
+ net_drv_obj->RingBufferSize = ring_size * PAGE_SIZE;
net_drv_obj->OnReceiveCallback = netvsc_recv_callback;
net_drv_obj->OnLinkStatusChanged = netvsc_linkstatus_callback;
@@ -582,7 +586,6 @@ static void __exit netvsc_exit(void)
MODULE_LICENSE("GPL");
MODULE_VERSION(HV_DRV_VERSION);
MODULE_DESCRIPTION("Microsoft Hyper-V network driver");
-module_param(netvsc_ringbuffer_size, int, S_IRUGO);
module_init(netvsc_init);
module_exit(netvsc_exit);