FreeBSD nfe driver and IPMI cards
Robert Wojciechowski
robertw at expressyard.com
Wed Sep 12 14:20:39 PDT 2007
> > I'm the FreeBSD nfe driver from
> >
http://www.f.csce.kyushu-u.ac.jp/~shigeaki/software/freebsd-nfe.html
> > with FreeBSD 6-stable with good results for the most part. The only
> > issue I've experienced is that during a detach/shutdown of if_nfe,
> the
> > IPMI IP address I have set on my servers ceases to respond as well
> as
> > the ability to manage the servers.
> >
> >
> >
> > I traced the problem down to nfe_stop() and the fact that it
> completely
> > disables the Rx and Tx on the NIC. I have patched the driver to not
> > disable the Rx/Tx and IPMI continues to work after a 'ifconfig nfe0
> > down', 'shutdown -p now', etc.
> >
> >
> >
> > Does anyone have any comments on this change I've made and any
> possible
> > side effects? Can this be included in the mainstream distribution
of
> the
>
> Because MAC is still alive if's possible to recieve a packet. All DMA
> maps are unloaded and buffers are already freed in nfe_stop so it
> would cause panic I guess. But I'm not familiar with IPMI so I'm not
> sure.
Interesting, that is an issue that was also resolved by the forcedeth
driver in Linux by resetting in nv_close to prevent DMA into freed
memory.
>
> > nfe drivers (and updated in 7-CURRENT) without causing any adverse
> > problems?
> >
>
> I have no experience on IPMI but the change you've made would not
> completely solve the issue. I guess supporting IPMI needs lots of
> more work including:
> o Autodetect IPMI capability.
> o Autodetect active IPMI session in device attach and don't blindly
> reset MAC/PHY.
> o Don't blindly stop Tx/Rx on device detach.
> Given that lack of publicly available datasheet for the hardware
> supporing IPMI would be severly limited. Fortunately Linux seems to
> have basic IPMI support in their forcedeth driver. Their code doesn't
> easy to read but you may see what should be done in driver. However
> I have no idea what we can do when active IPMI session is present in
> driver attach phase. Normally PHY driver would reset PHY hardware
> itself in driver attach which in turn would result in losing the IPMI
> connection.
>
Since we have no idea how to auto-detect IPMI, I added a device sysctl
(enable_ipmi) to control the behavior I'm testing in-house right now.
If the enable_ipmi sysctl is enabled, it'll:
* resets after disabling the Rx/Tx and before disabling interrupts
* re-enables the Rx/Tx after the ring buffers are freed, just like
forcedeth but also enabling the Tx for IPMI (Linux just enabled the Rx
for WOL)
I have attached my new patch to this email that does the above, guarded
by the sysctl.
I have no idea how to handle the second case you mentioned, during
attach. It does indeed cause a disruption in IPMI, but only for a few
seconds. Where is the MAC and PHY reset and if it wasn't reset when
using IPMI, what problems could it cause?
-- Robert
-------------- next part --------------
A non-text attachment was scrubbed...
Name: nfe-ipmi-2.patch
Type: application/octet-stream
Size: 4558 bytes
Desc: nfe-ipmi-2.patch
Url : http://lists.freebsd.org/pipermail/freebsd-net/attachments/20070912/5fa2257c/nfe-ipmi-2.obj
More information about the freebsd-net
mailing list