Module Name:    src
Committed By:   riz
Date:           Sat Jul 21 00:04:56 UTC 2012

Modified Files:
        src/sys/arch/sparc/stand/ofwboot [netbsd-6]: net.c net.h ofdev.c

Log Message:
Pull up following revision(s) (requested by tsutsui in ticket #433):
        sys/arch/sparc/stand/ofwboot/net.h: revision 1.3
        sys/arch/sparc/stand/ofwboot/net.c: revision 1.8
        sys/arch/sparc/stand/ofwboot/ofdev.c: revision 1.33
Fix tftpboot which was broken by my botched WARNSfy in last year.
Also add comments that mention libsa tftp requires network device socket
in f_devdata in struct open_file, from spz@ in PR port-sparc64/46652.
Briefly tested tftpboot and nfsboot on Ultra5.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.7.10.1 src/sys/arch/sparc/stand/ofwboot/net.c
cvs rdiff -u -r1.2 -r1.2.14.1 src/sys/arch/sparc/stand/ofwboot/net.h
cvs rdiff -u -r1.32 -r1.32.10.1 src/sys/arch/sparc/stand/ofwboot/ofdev.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/sparc/stand/ofwboot/net.c
diff -u src/sys/arch/sparc/stand/ofwboot/net.c:1.7 src/sys/arch/sparc/stand/ofwboot/net.c:1.7.10.1
--- src/sys/arch/sparc/stand/ofwboot/net.c:1.7	Sat May 21 15:50:42 2011
+++ src/sys/arch/sparc/stand/ofwboot/net.c	Sat Jul 21 00:04:56 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: net.c,v 1.7 2011/05/21 15:50:42 tsutsui Exp $	*/
+/*	$NetBSD: net.c,v 1.7.10.1 2012/07/21 00:04:56 riz Exp $	*/
 
 /*
  * Copyright (C) 1995 Wolfgang Solfrank.
@@ -180,14 +180,28 @@ net_mountroot_bootp(void)
 	return (0);
 }
 
+/*
+ * libsa's tftp_open expects a pointer to netdev_sock, i.e. an (int *),
+ * in f_devdata, a pointer to which gets handed down from devopen().
+ *
+ * Do not expect booting via different methods to have the same
+ * requirements or semantics.
+ *
+ * net_tftp_bootp uses net_mountroot_bootp because that incidentially does
+ * most of what it needs to do. It of course in no manner actually mounts
+ * anything, all that routine actually does is prepare the socket for the
+ * necessary net access, and print info for the user.
+ */
+
 int
-net_tftp_bootp(struct of_dev *op)
+net_tftp_bootp(int **sock)
 {
 
 	net_mountroot_bootp();
 	if (myip.s_addr == 0)
 		return(ENOENT);
 
+	*sock = &netdev_sock;
 	return (0);
 }
 

Index: src/sys/arch/sparc/stand/ofwboot/net.h
diff -u src/sys/arch/sparc/stand/ofwboot/net.h:1.2 src/sys/arch/sparc/stand/ofwboot/net.h:1.2.14.1
--- src/sys/arch/sparc/stand/ofwboot/net.h:1.2	Sat May 21 15:50:42 2011
+++ src/sys/arch/sparc/stand/ofwboot/net.h	Sat Jul 21 00:04:56 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: net.h,v 1.2 2011/05/21 15:50:42 tsutsui Exp $ */
+/* $NetBSD: net.h,v 1.2.14.1 2012/07/21 00:04:56 riz Exp $ */
 
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
 
 int	net_open(struct of_dev *);
 int	net_close(struct of_dev *);
-int	net_tftp_bootp(struct of_dev *);
+int	net_tftp_bootp(int **);
 int	net_mountroot(void);
 
 #endif /* _OFWBOOT_NET_H */

Index: src/sys/arch/sparc/stand/ofwboot/ofdev.c
diff -u src/sys/arch/sparc/stand/ofwboot/ofdev.c:1.32 src/sys/arch/sparc/stand/ofwboot/ofdev.c:1.32.10.1
--- src/sys/arch/sparc/stand/ofwboot/ofdev.c:1.32	Wed Jun  1 11:42:18 2011
+++ src/sys/arch/sparc/stand/ofwboot/ofdev.c	Sat Jul 21 00:04:56 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: ofdev.c,v 1.32 2011/06/01 11:42:18 tsutsui Exp $	*/
+/*	$NetBSD: ofdev.c,v 1.32.10.1 2012/07/21 00:04:56 riz Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -536,7 +536,7 @@ open_again:
 		if (!strncmp(*file,"/tftp:",6)) {
 			*file += 6;
 			memcpy(&file_system[0], &file_system_tftp, sizeof file_system[0]);
-			if (net_tftp_bootp(of->f_devdata)) {
+			if (net_tftp_bootp((int **)&of->f_devdata)) {
 				net_close(&ofdev);
 				goto bad;
 			}

Reply via email to