Date: Fri, 9 Dec 2011 07:49:06 -0500 From: John Baldwin <jhb@freebsd.org> To: freebsd-drivers@freebsd.org Cc: Naresh <gbal.naresh@gmail.com> Subject: Re: Firmware upgrade for CNA Message-ID: <201112090749.07012.jhb@freebsd.org> In-Reply-To: <9E03496F-B9A3-499E-9C50-9F0D1EC6FF4F@gmail.com> References: <9E03496F-B9A3-499E-9C50-9F0D1EC6FF4F@gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sunday, December 04, 2011 1:04:12 pm Naresh wrote: > Hi All, > > Our product is a CNA i.e it supports both 10G Ethernet and Storage. We need to provide firmware upgrade facility through our FreeBSD nic driver. > > The driver should be able to flash any version of the firmware when provided. > > Asuuming driver is already loaded flashing steps should be something like > 1) User will invoke flashing by providing the image name and file path. > 2) Driver should load the image from the path and start flashing. > 3) Return the flashing status to the user. > > I looked into load_firmware FreeBSD mechanism. But it requires image to be > converted to loadable module, load image module and then invoke driver using sysctl to start flashing. > > Is there any standard way other than load_firmware ? Can we open and read a file in the driver? > > In Linux, we copy the image to /lib/firmware and invoke flashing using something like "ethtool -f eth0 image". > Then kernel loads the image file from > /lib/firmware to a data buffer and invokes the driver. The driver then flashes and return status. > > Is there a approach in FreeBSD something similar to Linux ? There is not a framework along those lines, no. However, you could provide an ioctl which accepts a data buffer and have a small userland utility that takes the filename as an argument, loads it into a local buffer, then invokes your ioctl. -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201112090749.07012.jhb>