netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next-2.6] net/ethtool: Add support for the ethtool feature to flash firmware image from a specified file.
@ 2009-09-03  3:02 Ajit Khaparde
  2009-09-03  5:33 ` Jeff Garzik
  2009-09-03  6:10 ` David Miller
  0 siblings, 2 replies; 5+ messages in thread
From: Ajit Khaparde @ 2009-09-03  3:02 UTC (permalink / raw)
  To: davem, jgarzik; +Cc: netdev

This patch adds support to flash a firmware image to a device using ethtool.
The driver gets the filename of the firmware image and flashes the image
using the request firmware path.

The region "on the chip" to be flashed can be specified by an option.
It is upto the device driver to enumerate the region number passed by ethtool,
to the region to be flashed.

The default behavior is to flash all the regions on the chip.

Signed-off-by: Ajit Khaparde <ajitk@serverengines.com>
---
 include/linux/ethtool.h |   14 ++++++++++++++
 net/core/ethtool.c      |   16 ++++++++++++++++
 2 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
index 90c4a36..15e4eb7 100644
--- a/include/linux/ethtool.h
+++ b/include/linux/ethtool.h
@@ -362,6 +362,18 @@ struct ethtool_rxnfc {
 	__u32				rule_locs[0];
 };
 
+#define ETHTOOL_FLASH_MAX_FILENAME	128
+enum ethtool_flash_op_type {
+	ETHTOOL_FLASH_ALL_REGIONS	= 0,
+};
+
+/* for passing firmware flashing related parameters */
+struct ethtool_flash {
+	__u32	cmd;
+	__u32	region;
+	char	data[ETHTOOL_FLASH_MAX_FILENAME];
+};
+
 #ifdef __KERNEL__
 
 struct net_device;
@@ -489,6 +501,7 @@ struct ethtool_ops {
 	int	(*get_stats_count)(struct net_device *);/* use get_sset_count */
 	int	(*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, void *);
 	int	(*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
+	int     (*flash_device)(struct net_device *, struct ethtool_flash *);
 };
 #endif /* __KERNEL__ */
 
@@ -545,6 +558,7 @@ struct ethtool_ops {
 #define	ETHTOOL_GRXCLSRLALL	0x00000030 /* Get all RX classification rule */
 #define	ETHTOOL_SRXCLSRLDEL	0x00000031 /* Delete RX classification rule */
 #define	ETHTOOL_SRXCLSRLINS	0x00000032 /* Insert RX classification rule */
+#define	ETHTOOL_FLASHDEV	0x00000033 /* Flash firmware to device */
 
 /* compatibility with older code */
 #define SPARC_ETH_GSET		ETHTOOL_GSET
diff --git a/net/core/ethtool.c b/net/core/ethtool.c
index 44e5711..4c12ddb 100644
--- a/net/core/ethtool.c
+++ b/net/core/ethtool.c
@@ -898,6 +898,19 @@ static int ethtool_set_value(struct net_device *dev, char __user *useraddr,
 	return actor(dev, edata.data);
 }
 
+static int ethtool_flash_device(struct net_device *dev, char __user *useraddr)
+{
+	struct ethtool_flash efl;
+
+	if (copy_from_user(&efl, useraddr, sizeof(efl)))
+		return -EFAULT;
+
+	if (!dev->ethtool_ops->flash_device)
+		return -EOPNOTSUPP;
+
+	return dev->ethtool_ops->flash_device(dev, &efl);
+}
+
 /* The main entry point in this file.  Called from net/core/dev.c */
 
 int dev_ethtool(struct net *net, struct ifreq *ifr)
@@ -1111,6 +1124,9 @@ int dev_ethtool(struct net *net, struct ifreq *ifr)
 	case ETHTOOL_SGRO:
 		rc = ethtool_set_gro(dev, useraddr);
 		break;
+	case ETHTOOL_FLASHDEV:
+		rc = ethtool_flash_device(dev, useraddr);
+		break;
 	default:
 		rc = -EOPNOTSUPP;
 	}
-- 
1.6.0.4


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

* Re: [PATCH net-next-2.6] net/ethtool: Add support for the ethtool feature to flash firmware image from a specified file.
  2009-09-03  3:02 [PATCH net-next-2.6] net/ethtool: Add support for the ethtool feature to flash firmware image from a specified file Ajit Khaparde
@ 2009-09-03  5:33 ` Jeff Garzik
  2009-09-03  5:43   ` David Miller
  2009-09-03  5:55   ` Jeff Garzik
  2009-09-03  6:10 ` David Miller
  1 sibling, 2 replies; 5+ messages in thread
From: Jeff Garzik @ 2009-09-03  5:33 UTC (permalink / raw)
  To: Ajit Khaparde; +Cc: davem, netdev

On 09/02/2009 11:02 PM, Ajit Khaparde wrote:
> This patch adds support to flash a firmware image to a device using ethtool.
> The driver gets the filename of the firmware image and flashes the image
> using the request firmware path.
>
> The region "on the chip" to be flashed can be specified by an option.
> It is upto the device driver to enumerate the region number passed by ethtool,
> to the region to be flashed.
>
> The default behavior is to flash all the regions on the chip.
>
> Signed-off-by: Ajit Khaparde<ajitk@serverengines.com>
> ---
>   include/linux/ethtool.h |   14 ++++++++++++++
>   net/core/ethtool.c      |   16 ++++++++++++++++
>   2 files changed, 30 insertions(+), 0 deletions(-)
>
> diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
> index 90c4a36..15e4eb7 100644
> --- a/include/linux/ethtool.h
> +++ b/include/linux/ethtool.h
> @@ -362,6 +362,18 @@ struct ethtool_rxnfc {
>   	__u32				rule_locs[0];
>   };
>
> +#define ETHTOOL_FLASH_MAX_FILENAME	128
> +enum ethtool_flash_op_type {
> +	ETHTOOL_FLASH_ALL_REGIONS	= 0,
> +};
> +
> +/* for passing firmware flashing related parameters */
> +struct ethtool_flash {
> +	__u32	cmd;
> +	__u32	region;
> +	char	data[ETHTOOL_FLASH_MAX_FILENAME];
> +};

It passes a _filepath_ directly into the kernel?  That seems quite wrong...

we fixed kernel drivers to _not_ think they could read directly from the 
userland filesystem many years ago.

Seems like passing in an mmap'd fd would be far preferable.

	Jeff




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

* Re: [PATCH net-next-2.6] net/ethtool: Add support for the ethtool feature to flash firmware image from a specified file.
  2009-09-03  5:33 ` Jeff Garzik
@ 2009-09-03  5:43   ` David Miller
  2009-09-03  5:55   ` Jeff Garzik
  1 sibling, 0 replies; 5+ messages in thread
From: David Miller @ 2009-09-03  5:43 UTC (permalink / raw)
  To: jgarzik; +Cc: ajitk, netdev

From: Jeff Garzik <jgarzik@pobox.com>
Date: Thu, 03 Sep 2009 01:33:01 -0400

> It passes a _filepath_ directly into the kernel?  That seems quite
> wrong...
> 
> we fixed kernel drivers to _not_ think they could read directly from
> the userland filesystem many years ago.
> 
> Seems like passing in an mmap'd fd would be far preferable.

Jeff, it's passing in something that's going to requested via
the firmware loading infrastructure in the kernel.

It is the most appropriate way to do this.

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

* Re: [PATCH net-next-2.6] net/ethtool: Add support for the ethtool feature to flash firmware image from a specified file.
  2009-09-03  5:33 ` Jeff Garzik
  2009-09-03  5:43   ` David Miller
@ 2009-09-03  5:55   ` Jeff Garzik
  1 sibling, 0 replies; 5+ messages in thread
From: Jeff Garzik @ 2009-09-03  5:55 UTC (permalink / raw)
  To: Ajit Khaparde, davem; +Cc: netdev

On 09/03/2009 01:33 AM, Jeff Garzik wrote:
>> diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
>> index 90c4a36..15e4eb7 100644
>> --- a/include/linux/ethtool.h
>> +++ b/include/linux/ethtool.h
>> @@ -362,6 +362,18 @@ struct ethtool_rxnfc {
>> __u32 rule_locs[0];
>> };
>>
>> +#define ETHTOOL_FLASH_MAX_FILENAME 128
>> +enum ethtool_flash_op_type {
>> + ETHTOOL_FLASH_ALL_REGIONS = 0,
>> +};
>> +
>> +/* for passing firmware flashing related parameters */
>> +struct ethtool_flash {
>> + __u32 cmd;
>> + __u32 region;
>> + char data[ETHTOOL_FLASH_MAX_FILENAME];
>> +};
>
> It passes a _filepath_ directly into the kernel? That seems quite wrong...

doh, nevermind.  Catching up...

	Jeff




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

* Re: [PATCH net-next-2.6] net/ethtool: Add support for the ethtool feature to flash firmware image from a specified file.
  2009-09-03  3:02 [PATCH net-next-2.6] net/ethtool: Add support for the ethtool feature to flash firmware image from a specified file Ajit Khaparde
  2009-09-03  5:33 ` Jeff Garzik
@ 2009-09-03  6:10 ` David Miller
  1 sibling, 0 replies; 5+ messages in thread
From: David Miller @ 2009-09-03  6:10 UTC (permalink / raw)
  To: ajitk; +Cc: jgarzik, netdev

From: Ajit Khaparde <ajitk@serverengines.com>
Date: Thu, 3 Sep 2009 08:32:55 +0530

> This patch adds support to flash a firmware image to a device using ethtool.
> The driver gets the filename of the firmware image and flashes the image
> using the request firmware path.
> 
> The region "on the chip" to be flashed can be specified by an option.
> It is upto the device driver to enumerate the region number passed by ethtool,
> to the region to be flashed.
> 
> The default behavior is to flash all the regions on the chip.
> 
> Signed-off-by: Ajit Khaparde <ajitk@serverengines.com>

Applied to net-next-2.6, thanks.

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

end of thread, other threads:[~2009-09-03  6:09 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-03  3:02 [PATCH net-next-2.6] net/ethtool: Add support for the ethtool feature to flash firmware image from a specified file Ajit Khaparde
2009-09-03  5:33 ` Jeff Garzik
2009-09-03  5:43   ` David Miller
2009-09-03  5:55   ` Jeff Garzik
2009-09-03  6:10 ` David Miller

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).