<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Driver on FreeBSD developer&#39;s notebook</title>
    <link>https://kernelnomicon.org/categories/driver/</link>
    <description>Recent content in Driver on FreeBSD developer&#39;s notebook</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 19 Feb 2010 06:22:00 +0000</lastBuildDate>
    <atom:link href="https://kernelnomicon.org/categories/driver/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Writing FreeBSD NIC driver</title>
      <link>https://kernelnomicon.org/posts/writing-freebsd-nic-driver/</link>
      <pubDate>Fri, 19 Feb 2010 06:22:00 +0000</pubDate>
      <guid>https://kernelnomicon.org/posts/writing-freebsd-nic-driver/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been through writing NIC driver 2.5 times. 0.5 was porting ADM5120 switch driver by Ruslan Ermilov and Vsevolod Lobko from NetBSD. The usual routine for this kind of thing is &amp;ldquo;take existing driver and rewrite it&amp;rdquo;, e.g. copy selected parts or remove unnecessary ones. So I decided that it would be nice to skip &amp;ldquo;remove&amp;rdquo; part of procedure next time.&lt;/p&gt;
&lt;p&gt;All cards I had to deal with (&amp;ldquo;both&amp;rdquo; wouldn&amp;rsquo;t be that impressive here) had similar design save for registers layout and some quirks. I believe that vast majority of NICs have the same design to some extent: there are circular RX/TX rings of more or less similar structure, interrupt status/mask register, media settings registers, you name it. Not a rocket science.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
