Defaults for if_capenable and detecting user initiated changes

Justin T. Gibbs gibbs at scsiguy.com
Fri Dec 6 16:26:04 UTC 2013


On Dec 3, 2013, at 10:13 AM, John Baldwin <jhb at freebsd.org> wrote:

> 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

Certainly this could be done in the Xen driver.  The reason I posted my question, however, was to ask whether this should be more generically tracked by the if layer instead of handled by the underlying driver.  Lots of user interfaces support a “restore defaults” capability (e.g. for the novice administrator who screws up, or as a step in writing a script/procedure that starts by getting to a known state), so I think this is interesting for more than this particular Xen issue.

—
Justin



More information about the freebsd-net mailing list