On Monday, 20 June 2022 12:20:19 CEST cchien@creonexsystems.com wrote:
Does BATMAN ADV interfaces with the radio via the network driver or does BATMAN include the network driver?
As said before, it is interfacing with the generic ethernet netdev layer of the kernel. For example in:
* https://git.open-mesh.org/batman-adv.git/blob/caa1eb0cf7bf8ebfe43bba06b89025... * https://git.open-mesh.org/batman-adv.git/blob/caa1eb0cf7bf8ebfe43bba06b89025... * https://git.open-mesh.org/batman-adv.git/blob/caa1eb0cf7bf8ebfe43bba06b89025...
There are a lot of other places when it uses the abstraction interfaces of the kernels for ethernet related communication.
For B.A.T.M.A.N. V, it is also trying to get throughput information via various generic kernel functionality:
* https://git.open-mesh.org/batman-adv.git/blob/caa1eb0cf7bf8ebfe43bba06b89025...
There is also one detection for wifi interfaces to decide whether broadcast messages should be repeated or not:
* https://git.open-mesh.org/batman-adv.git/blob/caa1eb0cf7bf8ebfe43bba06b89025...
Can you provide some guidance on where the network driver or interface to network driver is located within BATMAN?
It is not talking directly to the driver. It is always using abstraction layers. Either the normal network core, ethernet or cfg80211 abstraction interfaces. But these don't abstract the requirement for ethernet compatibility away - the underlying device must provide this either directly or via a wrapper. Just perform a `git grep -e ETH_ -e eth_ -e ethhdr` to see that it is build around the concept of ethernet packets.
Also things like originators and the complete translation table only works with ethernet addresses.
Kind regards, Sven