tech-net archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[GSOC PROPOSAL] Making the re(4) Realtek RTL8139 Driver MPSAFE
Hello,
I am writing to express my interest in working on the "Making a
network driver MPSAFE" project, specifically focusing on the Realtek
RTL8139 Gigabit Ethernet driver.
Project Overview:
The goal is to introduce fine grained locking within the re(4) driver,
replacing the old usage of the big networking lock. This will allow
for improved performance in multi-core systems.
Deliverables:
1. MPSAFE re(4) driver
2. Documentation of changes and design decisions
3. Performance benchmarks comparing before/after modifications
Implementation Plan and Schedule:
Phase 1: Analysis and Design (25h):
- Week 1: Study the current re(4) implementation and identify
critical sections.
- Week 2: Review existing MPSAFE drivers listed in
"src/doc/TODO.smpnet".
- Week 3: Design locking strategy and document approach.
Phase 2: Implementation (100h)
- Week 4: Implement device access synchronization.
- Week 5-6: Adapt locking in the interrupt path.
- Week 7-8: Adapt transmit and receive paths.
- Week 9: Adapt init/shutdown paths and sections not covered earlier.
Phase 3: Testing and Refinement (40h)
- Week 10: Basic functionality testing in QEMU environment.
- Week 11: Performance benchmarking and optimization.
- Week 12: Test edge-cases and on real-hardware.
Phase 4: Documentation and Submission (10h)
- Week 13: Finalize docs and prepare submission.
About your project and NetBSD
I have installed the netbsd operating system to my Thinkpad x250 and
rebuilt the kernel to learn more about the workflow. As for the
project itself, it will be within the kernel subsystem only. The
source code for this project will be contained within the re(4) driver
sources which are as follows:
- src/sys/dev/ic/rtl81x9.c
- src/sys/dev/ic/rtl81x9reg.h
- src/sys/dev/ic/rtl81x9var.h
In terms of knowledge, this project requires you to know NetBSD's
kernel locking primitives, such as condvar(9), mutex(9) and rwlock(9).
Basic knowledge of the kernel network stack and driver APIs are also
required. I have an okay level understanding of both the driver and
locking interfaces from reading NetBSD source code in the past, but I
will attempt to brush up on all these topics over the upcoming weeks.
Finally, I have access to a desktop computer with a RTL8139 PCI card
(model TXA001), and will be conducting driver tests on real hardware.
About Me
I am a second year computer engineering student with 4+ years of hobby
programming experience, focusing in the fields of kernel development
and server applications.
A favorite project of mine I would like to showcase is the 9x kernel,
written completely from scratch in the C programming language. It took
me around a year to go from a "Hello, World" on the serial console to
porting and running the dash shell. I learned lots of things about
kernel design and development, and made tons of design choices for
core kernel components (such as taking inspiration from SunOS and
NetBSD UVM for virtual memory management).
Link to project: https://github.com/hvrsim/9x
For contact, you may email me at yusufmahamud902%gmail.com@localhost and I will
respond within 1-2 days.
I would appreciate any feedback on this proposal and am open to
adjustments to better align with NetBSD's needs.
Thanks,
Yusuf
Home |
Main Index |
Thread Index |
Old Index