File:  [NetBSD Developer Wiki] / wikisrc / projects / project / mpsafe_net_driver.mdwn
Revision 1.4: download - view: text, annotated - select for diffs
Sat Mar 12 18:27:25 2022 UTC (8 months, 2 weeks ago) by wiki
Branches: MAIN
CVS tags: HEAD
uncommitted changes

[[!template id=project

title="Making a network driver MPSAFE (175h)"




Access to some hardware registers and other things can only be done by one CPU at a time.  
An easy way to do this is to make the entire network stack runs with a single lock held, so operations only take place on one core.  
This is inefficient, if you ever want to use more than one core, for faster performing cards.

Adapting old drivers to be able to run with the rest of the network stack not having this lock will improve NetBSD networking.  
A large number of drivers must be adapted, and some of them can be emulated from virtual machines too, some examples:  

* Realtek RTL8139 Gigabit Ethernet [[!template id=man name="re" section="4"]] (supported by QEMU)
* AMD PCnet [[!template id=man name="pcn" section="4"]] (supported by QEMU and VMware)
* Novell NE1000 [[!template id=man name="ne" section="4"]]  (supported by QEMU)
* Atheros/Killer Gigabit Ethernet [[!template id=man name="alc" section="4"]]
* Attansic Gigabit Ethernet [[!template id=man name="ale" section="4"]]
* Broadcom Gigabit Ethernet [[!template id=man name="bge" section="4"]]
* Broadcom NetXtreme [[!template id=man name="bnx" section="4"]]

You may find others listed in [[!template id=man name="pci" section="4"]].
It is possible you have a computing device with a device for which the driver
hasn't been converted yet.

The file `src/doc/TODO.smpnet` in the NetBSD source tree contains a list of fully
converted drivers that you may use an an example, as well as some general guidelines.

When applying for this project, please note which driver you would like
to work on.


[[!tag gsoc]]
[[!tag gsoc175h]]

CVSweb for NetBSD wikisrc <> software: FreeBSD-CVSweb