Archived from groups: comp.dcom.lans.ethernet (
More info?)
sean <sean@snerts-r-us.org> writes:
>Patrick Schaaf wrote:
>> Ahem, this is completely wrong.
>>
>> For one, network card drivers are part of the OS.
>Um, OK. I can see how someone might view it that way.
>IMO, anything that does not ship in the box with the OS is npot part of
>the OS proper - so IMO most drivers are NOT part of the OS.
We were talking about Linux. Apart from some weird high end graphics
card vendors, which supply binary drivers, ALL drivers are part of
the Linux kernel, developed in tandem with kernel improvements, and
delivered in one piece (maybe built modular, or a recompile away,
but delivered with the rest of the sources).
>> Second, network card drivers, at least under Linux, know almost nothing
>> of VLANs - they just know they have to tell the hardware that it should
>> accept frames that are four bytes longer.
>Perhaps not under Linux at the moment. But they could - most higher end
>network card drivers for Windoze certainlt can do VLANS (tagging, but
>noat GARP)
Maybe they have to do it, because Windows (the Windows network stack
and/or driver API and/or whatever) doesn't know about VLANs, itself?
Handling VLANs (tagged frames) is a pure logical software function,
just like ethertype and MAC address handling / checking. Putting it
at the driver layer is bad design, in my opinion, because it results
in code duplication in each and every driver, with a very good chance
of inconsistent operation with hardware/drivers from different vendors.
A hardware driver is for shoving bits from and to cards. Interpreting
the bits is best left to suitable shared components of the OS.
>> All VLAN handling is part of the core network stack of Linux,
>> or, to be more exact, of the ethernet handling core, which is
>> 100% independant of network card drivers, and definitely sees
>> things at layer 2.
>Interesting. Never knew that. Poor design, IMO.
>Should not be part of the core - should be more abstracted for the
>obvious reasons.
Maybe you should look at how things are layered in Linux, before you
jump to such conclusions. The things I've seen in the Linux networking
code, are usually abstracted quite well. Where they aren't, and it
starts to show, things are changed after some time.
best regards
Patrick