Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S967123AbXEGWfz (ORCPT ); Mon, 7 May 2007 18:35:55 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S967076AbXEGWfv (ORCPT ); Mon, 7 May 2007 18:35:51 -0400 Received: from ozlabs.org ([203.10.76.45]:56797 "EHLO ozlabs.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S966962AbXEGWfp (ORCPT ); Mon, 7 May 2007 18:35:45 -0400 Subject: Re: [patch 25/29] xen: Add the Xen virtual network device driver. From: Rusty Russell To: Jeremy Fitzhardinge Cc: Christoph Hellwig , Andi Kleen , Andrew Morton , virtualization@lists.osdl.org, lkml , Chris Wright , Ian Pratt , Christian Limpach , netdev@vger.kernel.org, Jeff Garzik , Stephen Hemminger , Herbert Xu In-Reply-To: <463F9608.40803@goop.org> References: <20070504232051.411946839@goop.org> <20070504232121.492190579@goop.org> <20070505091624.GA8890@infradead.org> <463F9608.40803@goop.org> Content-Type: text/plain Date: Tue, 08 May 2007 08:35:22 +1000 Message-Id: <1178577322.28438.16.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.10.1 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3148 Lines: 92 On Mon, 2007-05-07 at 14:11 -0700, Jeremy Fitzhardinge wrote: > Christoph Hellwig wrote: > > On Fri, May 04, 2007 at 04:21:16PM -0700, Jeremy Fitzhardinge wrote: > > > >> +/* > >> + * Mutually-exclusive module options to select receive data path: > >> + * rx_copy : Packets are copied by network backend into local memory > >> + * rx_flip : Page containing packet data is transferred to our ownership > >> + * For fully-virtualised guests there is no option - copying must be used. > >> + * For paravirtualised guests, flipping is the default. > >> + */ > >> +static enum { > >> + RX_COPY = 0, > >> + RX_FLIP = 1, > >> +} rx_mode = RX_FLIP; > >> +MODULE_PARM_DESC(rx_mode, "How to get packets from card: 0->copy, 1->flip"); > >> > > > > There only seems to be a module description but no actual paramter for > > this. I wish people would have listened to me back then and made the > > description part of the modular_param statement.. > > Is this correct? > > --- > drivers/net/xen-netfront.c | 32 ++++++++++++++++++++++++++++---- > 1 file changed, 28 insertions(+), 4 deletions(-) > > =================================================================== > --- a/drivers/net/xen-netfront.c > +++ b/drivers/net/xen-netfront.c > @@ -62,16 +62,40 @@ struct netfront_cb { > > /* > * Mutually-exclusive module options to select receive data path: > - * rx_copy : Packets are copied by network backend into local memory > - * rx_flip : Page containing packet data is transferred to our ownership > + * copy : Packets are copied by network backend into local memory > + * flip : Page containing packet data is transferred to our ownership > * For fully-virtualised guests there is no option - copying must be used. > * For paravirtualised guests, flipping is the default. > */ > -static enum { > +static enum rx_mode { > RX_COPY = 0, > RX_FLIP = 1, > } rx_mode = RX_FLIP; > -MODULE_PARM_DESC(rx_mode, "How to get packets from card: 0->copy, 1->flip"); > +MODULE_PARM_DESC(rx_mode, "How to get packets from card: \"copy\" or \"flip\""); > + > +static int set_rx_mode(const char *val, struct kernel_param *kp) > +{ > + enum rx_mode *rxmp = kp->arg; > + int ret = 0; > + > + if (strcmp(val, "copy") == 0) > + *rxmp = RX_COPY; > + else if (strcmp(val, "flip") == 0) > + *rxmp = RX_FLIP; > + else > + ret = -EINVAL; > + > + return ret; > +} > + > +static int get_rx_mode(char *buffer, struct kernel_param *kp) > +{ > + enum rx_mode *rxmp = kp->arg; > + > + return sprintf(buffer, "%s", *rxmp == RX_COPY ? "copy" : "flip"); > +} > + > +module_param_call(rx_mode, set_rx_mode, get_rx_mode, &rx_mode, 0400); Looks good, you can slightly improve it to be the model use of new module_param types by calling your functions param_set_rx_mode and param_get_rx_mode, then simply using "module_param(rx_mode, rx_mode, 0400)" Cheers, Rusty. > > #define RX_COPY_THRESHOLD 256 > - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/