linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH net-next,1/1] hv_netvsc: call dump_rndis_message() only in netvsc debug mode
  2015-04-21 22:58 [PATCH net-next,1/1] hv_netvsc: call dump_rndis_message() only in netvsc debug mode sixiao
@ 2015-04-21 21:48 ` David Miller
  2015-04-21 22:14   ` Simon Xiao
  2015-04-22  8:52 ` [PATCH net-next, 1/1] " Vitaly Kuznetsov
  1 sibling, 1 reply; 5+ messages in thread
From: David Miller @ 2015-04-21 21:48 UTC (permalink / raw)
  To: sixiao; +Cc: kys, haiyangz, devel, netdev, linux-kernel

From: sixiao@microsoft.com
Date: Tue, 21 Apr 2015 15:58:05 -0700

> From: Simon Xiao <sixiao@microsoft.com>
> 
> Signed-off-by: Simon Xiao <sixiao@microsoft.com>
> Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
> Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>

I just gave you feedback on this patch in response to your
original submission, do not ignore it.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: [PATCH net-next,1/1] hv_netvsc: call dump_rndis_message() only in netvsc debug mode
  2015-04-21 21:48 ` David Miller
@ 2015-04-21 22:14   ` Simon Xiao
  2015-04-22  0:30     ` David Miller
  0 siblings, 1 reply; 5+ messages in thread
From: Simon Xiao @ 2015-04-21 22:14 UTC (permalink / raw)
  To: David Miller; +Cc: KY Srinivasan, Haiyang Zhang, devel, netdev, linux-kernel


> -----Original Message-----
> From: David Miller [mailto:davem@davemloft.net]
> Sent: Tuesday, April 21, 2015 2:49 PM
> To: Simon Xiao
> Cc: KY Srinivasan; Haiyang Zhang; devel@linuxdriverproject.org;
> netdev@vger.kernel.org; linux-kernel@vger.kernel.org
> Subject: Re: [PATCH net-next,1/1] hv_netvsc: call dump_rndis_message() only in
> netvsc debug mode
> 
> From: sixiao@microsoft.com
> Date: Tue, 21 Apr 2015 15:58:05 -0700
> 
> > From: Simon Xiao <sixiao@microsoft.com>
> >
> > Signed-off-by: Simon Xiao <sixiao@microsoft.com>
> > Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
> > Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
> 
> I just gave you feedback on this patch in response to your original submission,
> do not ignore it.

Thanks for your feedback, David.

In current netvsc driver, for each packet received, it will call dump_rndis_message() 
to try to dump the rndis packet information by netdev_dbg(). 
In non-debug mode, dump_rndis_message() will not dump anything 
but it still initialize some local variables and process the switch logic in the function 
of dump_rndis_message(), which is unnecessary, especially in high network throughput situation.

My change is to have a run-time config flag to control the execution of dump_rndis_message() 
and avoid above unnecessary cost in non-debug mode.
In the default case, it will be non-debug mode,
 and rndis_filter_receive() will not call dump_rndis_message() 
which saves the above extra cost for each packet received.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH net-next,1/1] hv_netvsc: call dump_rndis_message() only in netvsc debug mode
@ 2015-04-21 22:58 sixiao
  2015-04-21 21:48 ` David Miller
  2015-04-22  8:52 ` [PATCH net-next, 1/1] " Vitaly Kuznetsov
  0 siblings, 2 replies; 5+ messages in thread
From: sixiao @ 2015-04-21 22:58 UTC (permalink / raw)
  To: kys, haiyangz, devel, netdev, linux-kernel; +Cc: Simon Xiao

From: Simon Xiao <sixiao@microsoft.com>

Signed-off-by: Simon Xiao <sixiao@microsoft.com>
Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
---
 drivers/net/hyperv/hyperv_net.h   | 3 +++
 drivers/net/hyperv/netvsc_drv.c   | 8 ++++++++
 drivers/net/hyperv/rndis_filter.c | 3 ++-
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
index a10b316..c9be35e 100644
--- a/drivers/net/hyperv/hyperv_net.h
+++ b/drivers/net/hyperv/hyperv_net.h
@@ -28,6 +28,9 @@
 #include <linux/hyperv.h>
 #include <linux/rndis.h>
 
+/* flag for netvsc debug mode */
+extern int debug_mode;
+
 /* RSS related */
 #define OID_GEN_RECEIVE_SCALE_CAPABILITIES 0x00010203  /* query only */
 #define OID_GEN_RECEIVE_SCALE_PARAMETERS 0x00010204  /* query and set */
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
index a3a9d38..7c41864 100644
--- a/drivers/net/hyperv/netvsc_drv.c
+++ b/drivers/net/hyperv/netvsc_drv.c
@@ -52,6 +52,10 @@ static int ring_size = 128;
 module_param(ring_size, int, S_IRUGO);
 MODULE_PARM_DESC(ring_size, "Ring buffer size (# of pages)");
 
+int debug_mode = 0;
+module_param(debug_mode, int, S_IRUGO);
+MODULE_PARM_DESC(debug_mode, "debug mode: zero(0) for non-debug mode; non-zero for debug mode");
+
 static void do_set_multicast(struct work_struct *w)
 {
 	struct net_device_context *ndevctx =
@@ -999,6 +1003,10 @@ static int __init netvsc_drv_init(void)
 		pr_info("Increased ring_size to %d (min allowed)\n",
 			ring_size);
 	}
+
+	if (debug_mode != 0)
+		pr_info("Run netvsc in debug mode");
+
 	return vmbus_driver_register(&netvsc_drv);
 }
 
diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
index 0d92efe..a3f43f6 100644
--- a/drivers/net/hyperv/rndis_filter.c
+++ b/drivers/net/hyperv/rndis_filter.c
@@ -429,7 +429,8 @@ int rndis_filter_receive(struct hv_device *dev,
 
 	rndis_msg = pkt->data;
 
-	dump_rndis_message(dev, rndis_msg);
+	if (debug_mode != 0)
+		dump_rndis_message(dev, rndis_msg);
 
 	switch (rndis_msg->ndis_msg_type) {
 	case RNDIS_MSG_PACKET:
-- 
1.8.5.2


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH net-next,1/1] hv_netvsc: call dump_rndis_message() only in netvsc debug mode
  2015-04-21 22:14   ` Simon Xiao
@ 2015-04-22  0:30     ` David Miller
  0 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2015-04-22  0:30 UTC (permalink / raw)
  To: sixiao; +Cc: kys, haiyangz, devel, netdev, linux-kernel

From: Simon Xiao <sixiao@microsoft.com>
Date: Tue, 21 Apr 2015 22:14:14 +0000

> In current netvsc driver, for each packet received, it will call
> dump_rndis_message() to try to dump the rndis packet information by
> netdev_dbg().  In non-debug mode, dump_rndis_message() will not dump
> anything but it still initialize some local variables and process
> the switch logic in the function of dump_rndis_message(), which is
> unnecessary, especially in high network throughput situation.

See NETIF_MSG_* and use it properly in your driver, read other drivers
and learn how to properly use it for things like this.

I'm not going to explain this a third time.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH net-next, 1/1] hv_netvsc: call dump_rndis_message() only in netvsc debug mode
  2015-04-21 22:58 [PATCH net-next,1/1] hv_netvsc: call dump_rndis_message() only in netvsc debug mode sixiao
  2015-04-21 21:48 ` David Miller
@ 2015-04-22  8:52 ` Vitaly Kuznetsov
  1 sibling, 0 replies; 5+ messages in thread
From: Vitaly Kuznetsov @ 2015-04-22  8:52 UTC (permalink / raw)
  To: sixiao; +Cc: kys, haiyangz, devel, netdev, linux-kernel

sixiao@microsoft.com writes:

> From: Simon Xiao <sixiao@microsoft.com>
>
> Signed-off-by: Simon Xiao <sixiao@microsoft.com>
> Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
> Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>

I don't quite understand what problem is being solved here (and empty
commit message doesn't is not very helpful).

netdev_dbg() is not being printed by default and in case if floods logs
with too many messages you can change it to net_dbg_ratelimited(). We
already have dynamic debug and adding another module parameter shouldn't
be needed...

> ---
>  drivers/net/hyperv/hyperv_net.h   | 3 +++
>  drivers/net/hyperv/netvsc_drv.c   | 8 ++++++++
>  drivers/net/hyperv/rndis_filter.c | 3 ++-
>  3 files changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
> index a10b316..c9be35e 100644
> --- a/drivers/net/hyperv/hyperv_net.h
> +++ b/drivers/net/hyperv/hyperv_net.h
> @@ -28,6 +28,9 @@
>  #include <linux/hyperv.h>
>  #include <linux/rndis.h>
>
> +/* flag for netvsc debug mode */
> +extern int debug_mode;
> +
>  /* RSS related */
>  #define OID_GEN_RECEIVE_SCALE_CAPABILITIES 0x00010203  /* query only */
>  #define OID_GEN_RECEIVE_SCALE_PARAMETERS 0x00010204  /* query and set */
> diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
> index a3a9d38..7c41864 100644
> --- a/drivers/net/hyperv/netvsc_drv.c
> +++ b/drivers/net/hyperv/netvsc_drv.c
> @@ -52,6 +52,10 @@ static int ring_size = 128;
>  module_param(ring_size, int, S_IRUGO);
>  MODULE_PARM_DESC(ring_size, "Ring buffer size (# of pages)");
>
> +int debug_mode = 0;
> +module_param(debug_mode, int, S_IRUGO);
> +MODULE_PARM_DESC(debug_mode, "debug mode: zero(0) for non-debug mode; non-zero for debug mode");
> +
>  static void do_set_multicast(struct work_struct *w)
>  {
>  	struct net_device_context *ndevctx =
> @@ -999,6 +1003,10 @@ static int __init netvsc_drv_init(void)
>  		pr_info("Increased ring_size to %d (min allowed)\n",
>  			ring_size);
>  	}
> +
> +	if (debug_mode != 0)
> +		pr_info("Run netvsc in debug mode");
> +
>  	return vmbus_driver_register(&netvsc_drv);
>  }
>
> diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
> index 0d92efe..a3f43f6 100644
> --- a/drivers/net/hyperv/rndis_filter.c
> +++ b/drivers/net/hyperv/rndis_filter.c
> @@ -429,7 +429,8 @@ int rndis_filter_receive(struct hv_device *dev,
>
>  	rndis_msg = pkt->data;
>
> -	dump_rndis_message(dev, rndis_msg);
> +	if (debug_mode != 0)
> +		dump_rndis_message(dev, rndis_msg);
>
>  	switch (rndis_msg->ndis_msg_type) {
>  	case RNDIS_MSG_PACKET:

-- 
  Vitaly

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-04-22  8:53 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-21 22:58 [PATCH net-next,1/1] hv_netvsc: call dump_rndis_message() only in netvsc debug mode sixiao
2015-04-21 21:48 ` David Miller
2015-04-21 22:14   ` Simon Xiao
2015-04-22  0:30     ` David Miller
2015-04-22  8:52 ` [PATCH net-next, 1/1] " Vitaly Kuznetsov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).