Bristol Meetups

The Anatomy of a Linux PCIe Network Driver

I am extremely happy to announce that we've got the excellent James Pascoe speaking to us on the 19th, which promises to be a very exciting topic about Linux PCIe Network Drivers.  

It promises to be an enjoyable evening.

I'd like to thank our sponsors Jet Brains for giving us a 1 year licence to any of their products as a raffle prize, which we will be drawing.

And post talk, we will decamp to the Brewdog for beers, or possibly another pub if the Brewdog is full, but we'll decide on the night.

Talk Synopsis

Writing a Linux network driver is the art of blending kernel abstractions with hardware interactions - the intention being to achieve design goals that are typically specified in terms of performance, robustness and security. 

This talk describes the development and internals of a complex PCIe network driver that interfaces an[masked]ad multi-gigabit wireless network interface to the 4.8.8 Linux kernel.

The talk introduces a number of PCIe concepts before explaining the structure of the code in detail. In particular, the presentation will focus on the topics of initialisation, tear-down, the packet path (including IP stack integration), the use of threaded interrupt handlers (plus interrupt mitigation with NAPI) and user-space interactions through Netlink.

This talk acts as both a primer for those who are interested in writing their own network drivers and as an introduction to the existing code-bases in the Linux kernel source tree.

Speaker Bio

James is interested in all things C, C++17 and Python. James is currently a Senior Software Engineer at Blu Wireless, where he works on Linux device drivers,[masked]ad MAC firmware and developing Python tools for processing large data-sets. 

Prior to joining Blu Wireless, James worked at Intel where he developed graphics infrastructure for Android platforms. Before Intel, James was a Senior Microprocessor Architect at STMicroelectronics, where he was part of a team developing bespoke (and later ARM based) cores and CPU subsystems. James has also worked at U4EA Technologies, where he built novel QoS mechanisms for network routers. Before working in industry, James was a post-doctoral Research Fellow in the Math and Computer Science department at Emory University, Atlanta, GA. 

James holds a first class degree and a PhD in Computer Science from The University of Reading and an MBA (with distinction) from The University of Warwick.