This lab will be short; we will add all network modules needed for network layout and make a roadmap how to make the Raspberry Pi ethernet driver. First have a look at other ports and inferno and find what is needed to compile with network support.
- dev section needs:
+ ip ip ipv6 ipaux iproute arp netlog ptclbsum iprouter plan9 nullmedium pktmedium netaux
+ ether netif netaux
- add ip section
+ip
+ il
+ tcp
+ udp
+ ipifc
+ icmp
+ icmp6
- mod section needs:
+ crypt
+ ipints
Then we will add etherusb.c from 9pi project (according to 9pi: it takes over the job of copying packets between the usb pipe and the kernel ether i/o queues, to save the extra overhead of doing it in user mode in the usb/ether driver.) Later we may not need it, but for now take it just to have complete compilation.
Then link section:
link
usbdwc
+ etherusb
+ ethermedium
+ loopbackmedium
In archpi.c we will add ethernet initialization:
#include "dat.h"
#include "fns.h"
+#include "../port/netif.h"
+#include "etherif.h"
+
static void
linkproc(void)
{
...
void
validaddr(void*, ulong, int) {}
+int
+archether(unsigned ctlrno, Ether *ether)
+{
+ switch(ctlrno) {
+ case 0:
+ ether->type = "usb";
+ ether->ctlrno = ctlrno;
+ ether->irq = -1;
+ ether->nopt = 0;
+ ether->mbps = 100;
+ return 1;
+ }
+ return -1;
+}
+
+/*
+ * stub for ../omap/devether.c
+ */
+int
+isaconfig(char *class, int ctlrno, ISAConf *isa)
+{
+ USED(ctlrno);
+ USED(isa);
+ return strcmp(class, "ether") == 0;
+}
That’s enough for now. We can compile everything, we will have appropriate modules, but no ethernet driver yet. As next actions I see two ways of implementing/porting it.
- Raspberry Pi Usb driver for Plan9 written in C to be ported to Limbo
- Raspberry Pi Usb driver for Plan9 written in C just used as some fileserver which is initialized from Usb Limbo layout (which /dev/usb files to use to read/write, etc)