On Fri, 2009-08-14 at 21:46 -0400, Sowmini.Varadhan at Sun.COM wrote:
> On (08/14/09 18:23), Thirumalai Srinivasan wrote:
> >>   
> > The perimeter does ensure that only 1 thread can do mac_set_mtu() at a  
> > time on the given mac. But I am not sure why mac_set_mtu() wants to   
> > call mac_mark_exclusive().  Is it that not all drivers implement the  
> > mac_maxsdu_update() and so we can't change the mtu except if we are the  
> > only mac client ?
> >
> 
> I think Girish and Nicolas had some complex phone discussions
> about this, so maybe they can elaborate. As I recall, it had to
> do with some re-entry in the aggr driver?

If aggr does an upcall while handling a downcall, or even holds any lock
while making an upcall, then isn't that a bug in the aggr driver?  One
would assume that sane locking semantics cannot be maintained if locks
are allowed to be held while making both up and down calls.  This is
why, in the new iptun driver, notifications to the mac layer are handled
asynchronously without holding locks or perimeters (stress testing
revealed that this was the only way to make things work reliably).

In any case, yes, if Girish or Nicolas could elaborate, that would be
nice.  At the moment, I've had to remove the calls to
mac_mark_exclusive() in order to do any sort of stress testing with
GLDv3 that include setting the mtu link property.

-Seb



Reply via email to