1

I'm exploring how does the wifi pipeline work on the Raspberry pi 3 starting from the driver and going upwards.

I've identified the following drivers responsible for working with the wifi chip:

$ lsmod
...
brcmfmac              186403  0 
brcmutil                5661  1 brcmfmac
cfg80211              428871  1 brcmfmac

My next steps was to find a device file that would have a relation to any of the driver after which I would check with lsof what userspace app is holding that file.

The approach failed once I found no device files related to any of the above mentioned drivers. Used the command below.

/dev $ find . ! -type d -exec sh -c "echo {};  udevadm info -a -n {} | grep DRIVERS" \;

My question is, are there other options for interfacing device drivers in Linux that doesn't go through device files?

1 Answers1

3

are there other options for interfacing device drivers in Linux that doesn't go through device files?

Yes, network devices do not have a device file in /dev, or use read/write file operations, as they don't just react in response to calls from kernel space - they also react in response to network traffic, so their set of operations is different. This is in contract to char and block devices, which do have file device nodes.

Network devices use sockets and socket buffers to communicate, and the main calls used are socket(), bind(), listen(), accept(), read(), write() and close(). There's plenty of information available about them on the web, and the (rather old now) Linux Device Drivers 3 (LDD3) book is a good introduction and freely available online.