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
