I would like to vote in favor of keeping NATM in the kernel. The reason
is that I am currently working on writing a device driver for the
SpeedTouch USB modem, to replace ports/net/pppoa which is not supported
on FreeBSD8+ any more. The SpeedTouch USB in fact terminates as an ATM
connection, on top of which PPPoA needs to be layered.
From my experiments with compiling a kernel with "device atm" and
"options NATM", I know that currently only the former works, this being
due to unmaintained and broken code dealing with routing entries.
I am currently not much of a kernel code expert, but have already
managed to write enough of the USB side of the device driver to load the
modem's firmware. The next step would be to connect it to the ATM stack,
using this route:
1. Terminate as ATM interface (ATM cells arriving);
2. The ATM stack implements AAL5 (I hope);
3. Capture the interface via ng_atm (which, as far as I understand,
would more aptly be named ng_natm);
4. Extend the functionality of ng_atmllc (which basically does a
small subset of RFC2684) to also do LLC/ISO (cf. RFC2364) (then better
5. Couple the resultant PPP stream to ng_ppp;
6. Use something to configure the VPI/VCI (what?);
7. Run ports/net/mpd5 on that netgraph node.
5. and 7. could be replaced by ng_tty and ppp(8), but that would be the
poorer choice as all traffic would have to go through userland again as
it is doing with ports/net/pppoa.
For this I'd need a) a working ATM stack and b) the help of some kind
souls in hooking everything up. Hans-Petter Selasky has already been
very helpful with the USB part in private mail, and I actually wanted to
solicit more help on the networking side of things privately in order
not to trumpet out something which I'll probably finish only after
considerable time, but reading the removal message I felt that I needed
to make my needs public.
p.s. A few :-) of the questions I have are
- why the original (as I understand HARP) ATM stack was removed (in the
CVS logs the reason cited is the usual giant lock issue of that time),
- what the differences between the atm and natm stacks are (as I
understand the latter only supports a subset of the functionality of the
former - only AAL5?),
- why AF_NATM is different from AF_ATM (hinting that NATM is not a
replacement of ATM),
- whether and how it is even possible to inject raw ATM cells,
- whether I even need "options NATM" (currently I can happily
instantiate a (of course non-functional) ATM interface using just
- what do I need to do on the USB side to start receive and transmit
machines (do I need to start separate kernel threads or just issue two
usbd_transfer_setup() calls as for loading the firmware),
- etc. etc.
I do of course read the source, but with the scarce documentation
available that's a steep learning curve.
email@example.com mailing list
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"