Date: Fri, 12 Mar 2010 08:26:29 +0000 From: "Robert N. M. Watson" <rwatson@freebsd.org> To: Qing Li <qingli@freebsd.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r205024 - head/sys/net Message-ID: <8726950E-5110-4FE1-90BB-B4205D637764@freebsd.org> In-Reply-To: <9ace436c1003120011v3c627aadka2e57615ae01fe6f@mail.gmail.com> References: <201003111756.o2BHukJu042449@svn.freebsd.org> <alpine.BSF.2.00.1003112128020.97017@fledge.watson.org> <9ace436c1003111530s3bd0de9cq451671909fb6aa64@mail.gmail.com> <5ADB6F0D-11F1-4F9F-87A0-64F57063981E@freebsd.org> <9ace436c1003112352l3b2505ceq63d9c78954520497@mail.gmail.com> <A543276F-1982-4F12-B325-7277C2B42C92@freebsd.org> <9ace436c1003120011v3c627aadka2e57615ae01fe6f@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mar 12, 2010, at 8:11 AM, Qing Li wrote: > I like Julian's suggestion because it is simple and very low risk. > And there isn't a need to check for interface type any more. > Here is why: >=20 > 1. The interfaces that are popular and modern are already supporting > link_state. So for these drivers, and there are just a few, I will = go set > its if_flags to include "can change link_state". >=20 > 2. For the existing dated drivers, because that flag bit is never set, > no check is done. >=20 > 3. In the mean time, we try to convert the drivers progressively. >=20 > 4. If one wants to do ECMP and not having packets go into a black > hole when the physical link is down, that person can ping the ML > and ask for driver compatibility list. If we haven't converted that > particular driver by then, we will update the driver if it's = capable > at that time. Today, we support three link state values: 170 /* 171 * Values for if_link_state. 172 */ 173 #define LINK_STATE_UNKNOWN 0 /* link invalid/unknown */ 174 #define LINK_STATE_DOWN 1 /* link is down */ 175 #define LINK_STATE_UP 2 /* link is up */ I'm confused about Julian's proposal because it seems to me that we = already know when a driver hasn't set or is unable to determine the link = state: it will (should) be set to LINK_STATE_UNKNOWN by default. So the only question we don't know the answer to, at run-time, is = whether a driver may *ever* set the link state (i.e., it thinks it knows = how to), and hence whether or not tools like dhclient should try to wait = for that to happen. That is the problem that an interface capability = would solve. For the purposes of ECMP, you just need to decide on your policy: map = UNKNOWN to either UP or DOWN for your purposes. Robert=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?8726950E-5110-4FE1-90BB-B4205D637764>