summaryrefslogtreecommitdiffstats
path: root/sys/dev/firewire
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>2004-06-13 13:58:00 +0000
committerdfr <dfr@FreeBSD.org>2004-06-13 13:58:00 +0000
commit4707be9db2b74eec181c39fa563612a16cbda5f8 (patch)
treec4869721d97eaa8b37b1d00a7a55ebefde76a087 /sys/dev/firewire
parent53efa6c4cc84756af0a9d11c54dc6f5a5d015ec3 (diff)
downloadFreeBSD-src-4707be9db2b74eec181c39fa563612a16cbda5f8.zip
FreeBSD-src-4707be9db2b74eec181c39fa563612a16cbda5f8.tar.gz
Add configuration rom entries for IP over firewire.
Diffstat (limited to 'sys/dev/firewire')
-rw-r--r--sys/dev/firewire/if_fwip.c22
-rw-r--r--sys/dev/firewire/if_fwipvar.h6
2 files changed, 28 insertions, 0 deletions
diff --git a/sys/dev/firewire/if_fwip.c b/sys/dev/firewire/if_fwip.c
index 1d10afe..27af6e0 100644
--- a/sys/dev/firewire/if_fwip.c
+++ b/sys/dev/firewire/if_fwip.c
@@ -62,6 +62,7 @@
#else
#include <dev/firewire/firewire.h>
#include <dev/firewire/firewirereg.h>
+#include <dev/firewire/iec13213.h>
#include <dev/firewire/if_fwipvar.h>
#endif
@@ -447,6 +448,27 @@ static void
fwip_post_busreset(void *arg)
{
struct fwip_softc *fwip = arg;
+ struct crom_src *src;
+ struct crom_chunk *root;
+
+ src = fwip->fd.fc->crom_src;
+ root = fwip->fd.fc->crom_root;
+
+ /* RFC2734 IPv4 over IEEE1394 */
+ bzero(&fwip->unit4, sizeof(struct crom_chunk));
+ crom_add_chunk(src, root, &fwip->unit4, CROM_UDIR);
+ crom_add_entry(&fwip->unit4, CSRKEY_SPEC, CSRVAL_IETF);
+ crom_add_simple_text(src, &fwip->unit4, &fwip->spec4, "IANA");
+ crom_add_entry(&fwip->unit4, CSRKEY_VER, 1);
+ crom_add_simple_text(src, &fwip->unit4, &fwip->ver4, "IPv4");
+
+ /* RFC3146 IPv6 over IEEE1394 */
+ bzero(&fwip->unit6, sizeof(struct crom_chunk));
+ crom_add_chunk(src, root, &fwip->unit6, CROM_UDIR);
+ crom_add_entry(&fwip->unit6, CSRKEY_SPEC, CSRVAL_IETF);
+ crom_add_simple_text(src, &fwip->unit6, &fwip->spec6, "IANA");
+ crom_add_entry(&fwip->unit6, CSRKEY_VER, 2);
+ crom_add_simple_text(src, &fwip->unit6, &fwip->ver6, "IPv6");
fwip->last_dest.hi = 0;
fwip->last_dest.lo = 0;
diff --git a/sys/dev/firewire/if_fwipvar.h b/sys/dev/firewire/if_fwipvar.h
index 5542328..fe20218 100644
--- a/sys/dev/firewire/if_fwipvar.h
+++ b/sys/dev/firewire/if_fwipvar.h
@@ -48,6 +48,12 @@ struct fwip_softc {
struct fw_pkt last_hdr;
struct task start_send;
STAILQ_HEAD(, fw_xfer) xferlist;
+ struct crom_chunk unit4; /* unit directory for IPv4 */
+ struct crom_chunk spec4; /* specifier description IPv4 */
+ struct crom_chunk ver4; /* version description IPv4 */
+ struct crom_chunk unit6; /* unit directory for IPv6 */
+ struct crom_chunk spec6; /* specifier description IPv6 */
+ struct crom_chunk ver6; /* version description IPv6 */
struct fwip_eth_softc {
/* XXX this must be the first for if_fwsubr.c */
struct fw_com fwcom; /* firewire common data */
OpenPOWER on IntegriCloud