Defaults for if_capenable and detecting user initiated changes
John Baldwin
jhb at freebsd.org
Tue Dec 3 18:44:40 UTC 2013
On Wednesday, November 27, 2013 12:59:08 pm Justin T. Gibbs wrote:
> Hi net,
>
> I’m reviewing a patch from Roger Pau Monné for the Xen netfront driver. The
goal of the change is to avoid disturbing the user’s settings for the
interface just because the backend device has changed or the connection to the
backend was reset. I’ve attached the latest version of the patch.
>
> The current patch leaves the interface settings alone if they can be
supported by the newly attached backend. What would be ideal is to enable
capabilities that default to being enabled if they were not explicitly
disabled by the user and can be supported by the new backend. Unfortunately,
I don’t think the if_capenable and if_capabilities fields are descriptive
enough to deal with an interface whose capabilities can change at runtime.
Just as can be done with link speed, some of these settings need to allow an
“auto/default” setting in addition to on or off. This would allow the user to
explicitly disable a capability if needed, but generally allow the system to
chose the most optimal settings when they are supported. Would this be
difficult to add?
Couldn't you maintain this state in the Xen netfront driver's softc?
You already get the ioctls that track changes to the capenable field,
so you when a change explicitly disables a capability you can set that
in a 'forced off' or 'forced on' field. Perhaps more of a 'forced'
field that you just update by doing:
sc->capforced |= (oldcapenable ^ newcapenable)
However, it's not clear to me if you can get the underlying adapters
initial capenable list. If so, I think capforced should be all you
need to handle this (though it might be easier if you have separate
forcedon and forcedoff fields).
--
John Baldwin
More information about the freebsd-net
mailing list