svn commit: r256202 - in projects/random_number_generator: . gnu/usr.bin gnu/usr.bin/rcs share/doc/psd share/doc/psd/13.rcs share/man/man5 share/mk sys/arm/s3c2xx0 sys/cam sys/cam/ctl sys/contrib/i...

Mark Murray markm at FreeBSD.org
Wed Oct 9 17:41:50 UTC 2013


Author: markm
Date: Wed Oct  9 17:41:47 2013
New Revision: 256202
URL: http://svnweb.freebsd.org/changeset/base/256202

Log:
  MFC - tracking commit

Added:
  projects/random_number_generator/gnu/usr.bin/rcs/
     - copied from r256201, head/gnu/usr.bin/rcs/
  projects/random_number_generator/share/doc/psd/13.rcs/
     - copied from r256201, head/share/doc/psd/13.rcs/
  projects/random_number_generator/tools/build/options/WITHOUT_RCS
     - copied unchanged from r256201, head/tools/build/options/WITHOUT_RCS
Modified:
  projects/random_number_generator/ObsoleteFiles.inc
  projects/random_number_generator/UPDATING
  projects/random_number_generator/gnu/usr.bin/Makefile
  projects/random_number_generator/share/doc/psd/Makefile
  projects/random_number_generator/share/man/man5/src.conf.5
  projects/random_number_generator/share/mk/bsd.own.mk
  projects/random_number_generator/sys/arm/s3c2xx0/uart_bus_s3c2410.c
  projects/random_number_generator/sys/arm/s3c2xx0/uart_cpu_s3c2410.c
  projects/random_number_generator/sys/cam/cam_xpt.c
  projects/random_number_generator/sys/cam/ctl/ctl_frontend_iscsi.c
  projects/random_number_generator/sys/contrib/ipfilter/netinet/ip_rcmd_pxy.c
  projects/random_number_generator/sys/dev/e1000/e1000_80003es2lan.c
  projects/random_number_generator/sys/dev/e1000/e1000_80003es2lan.h
  projects/random_number_generator/sys/dev/e1000/e1000_82571.c
  projects/random_number_generator/sys/dev/e1000/e1000_82575.c
  projects/random_number_generator/sys/dev/e1000/e1000_82575.h
  projects/random_number_generator/sys/dev/e1000/e1000_api.c
  projects/random_number_generator/sys/dev/e1000/e1000_defines.h
  projects/random_number_generator/sys/dev/e1000/e1000_hw.h
  projects/random_number_generator/sys/dev/e1000/e1000_i210.c
  projects/random_number_generator/sys/dev/e1000/e1000_i210.h
  projects/random_number_generator/sys/dev/e1000/e1000_ich8lan.c
  projects/random_number_generator/sys/dev/e1000/e1000_ich8lan.h
  projects/random_number_generator/sys/dev/e1000/e1000_mac.c
  projects/random_number_generator/sys/dev/e1000/e1000_osdep.h
  projects/random_number_generator/sys/dev/e1000/e1000_phy.c
  projects/random_number_generator/sys/dev/e1000/e1000_phy.h
  projects/random_number_generator/sys/dev/e1000/e1000_regs.h
  projects/random_number_generator/sys/dev/e1000/e1000_vf.h
  projects/random_number_generator/sys/dev/e1000/if_igb.c
  projects/random_number_generator/sys/dev/e1000/if_igb.h
  projects/random_number_generator/sys/dev/iscsi/iscsi.c
  projects/random_number_generator/sys/dev/netmap/if_igb_netmap.h
  projects/random_number_generator/sys/kern/uipc_sockbuf.c
  projects/random_number_generator/sys/netinet/tcp_input.c
  projects/random_number_generator/sys/sys/sockbuf.h
  projects/random_number_generator/tools/build/mk/OptionalObsoleteFiles.inc
  projects/random_number_generator/usr.sbin/bsdconfig/bsdconfig
  projects/random_number_generator/usr.sbin/bsdconfig/console/ttys
  projects/random_number_generator/usr.sbin/bsdconfig/mouse/enable
  projects/random_number_generator/usr.sbin/bsdconfig/networking/devices
  projects/random_number_generator/usr.sbin/bsdconfig/networking/share/device.subr
  projects/random_number_generator/usr.sbin/bsdconfig/networking/share/hostname.subr
  projects/random_number_generator/usr.sbin/bsdconfig/networking/share/ipaddr.subr
  projects/random_number_generator/usr.sbin/bsdconfig/networking/share/media.subr
  projects/random_number_generator/usr.sbin/bsdconfig/networking/share/netmask.subr
  projects/random_number_generator/usr.sbin/bsdconfig/networking/share/resolv.subr
  projects/random_number_generator/usr.sbin/bsdconfig/networking/share/routing.subr
  projects/random_number_generator/usr.sbin/bsdconfig/password/share/password.subr
  projects/random_number_generator/usr.sbin/bsdconfig/security/kern_securelevel
  projects/random_number_generator/usr.sbin/bsdconfig/security/security
  projects/random_number_generator/usr.sbin/bsdconfig/share/common.subr
  projects/random_number_generator/usr.sbin/bsdconfig/share/device.subr
  projects/random_number_generator/usr.sbin/bsdconfig/share/dialog.subr
  projects/random_number_generator/usr.sbin/bsdconfig/share/media/any.subr
  projects/random_number_generator/usr.sbin/bsdconfig/share/media/cdrom.subr
  projects/random_number_generator/usr.sbin/bsdconfig/share/media/common.subr
  projects/random_number_generator/usr.sbin/bsdconfig/share/media/dos.subr
  projects/random_number_generator/usr.sbin/bsdconfig/share/media/floppy.subr
  projects/random_number_generator/usr.sbin/bsdconfig/share/media/ftp.subr
  projects/random_number_generator/usr.sbin/bsdconfig/share/media/http.subr
  projects/random_number_generator/usr.sbin/bsdconfig/share/media/nfs.subr
  projects/random_number_generator/usr.sbin/bsdconfig/share/media/options.subr
  projects/random_number_generator/usr.sbin/bsdconfig/share/media/tcpip.subr
  projects/random_number_generator/usr.sbin/bsdconfig/share/media/ufs.subr
  projects/random_number_generator/usr.sbin/bsdconfig/share/media/usb.subr
  projects/random_number_generator/usr.sbin/bsdconfig/share/mustberoot.subr
  projects/random_number_generator/usr.sbin/bsdconfig/share/packages/packages.subr
  projects/random_number_generator/usr.sbin/bsdconfig/startup/misc
  projects/random_number_generator/usr.sbin/bsdconfig/startup/rcconf
  projects/random_number_generator/usr.sbin/bsdconfig/startup/rcdelete
  projects/random_number_generator/usr.sbin/bsdconfig/startup/rcvar
  projects/random_number_generator/usr.sbin/bsdconfig/startup/share/rcconf.subr
  projects/random_number_generator/usr.sbin/bsdconfig/startup/share/rcedit.subr
  projects/random_number_generator/usr.sbin/bsdconfig/timezone/timezone
  projects/random_number_generator/usr.sbin/bsdconfig/usermgmt/groupdel
  projects/random_number_generator/usr.sbin/bsdconfig/usermgmt/groupedit
  projects/random_number_generator/usr.sbin/bsdconfig/usermgmt/groupinput
  projects/random_number_generator/usr.sbin/bsdconfig/usermgmt/share/group_input.subr
  projects/random_number_generator/usr.sbin/bsdconfig/usermgmt/share/user_input.subr
  projects/random_number_generator/usr.sbin/bsdconfig/usermgmt/userdel
  projects/random_number_generator/usr.sbin/bsdconfig/usermgmt/useredit
  projects/random_number_generator/usr.sbin/bsdconfig/usermgmt/userinput
  projects/random_number_generator/usr.sbin/bsdconfig/usermgmt/usermgmt
  projects/random_number_generator/usr.sbin/ctladm/ctladm.c
  projects/random_number_generator/usr.sbin/ctld/kernel.c
  projects/random_number_generator/usr.sbin/ctld/login.c
  projects/random_number_generator/usr.sbin/iscsid/discovery.c
Directory Properties:
  projects/random_number_generator/   (props changed)
  projects/random_number_generator/sys/   (props changed)
  projects/random_number_generator/sys/contrib/ipfilter/   (props changed)

Modified: projects/random_number_generator/ObsoleteFiles.inc
==============================================================================
--- projects/random_number_generator/ObsoleteFiles.inc	Wed Oct  9 17:34:45 2013	(r256201)
+++ projects/random_number_generator/ObsoleteFiles.inc	Wed Oct  9 17:41:47 2013	(r256202)
@@ -38,29 +38,6 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
-# 20131015: removal of RCS from base
-OLD_FILES+=usr/bin/ci
-OLD_FILES+=usr/bin/co
-OLD_FILES+=usr/bin/ident
-OLD_FILES+=usr/bin/merge
-OLD_FILES+=usr/bin/rcs
-OLD_FILES+=usr/bin/rcsclean
-OLD_FILES+=usr/bin/rcsdiff
-OLD_FILES+=usr/bin/rcsfreeze
-OLD_FILES+=usr/bin/rcsmerge
-OLD_FILES+=usr/bin/rlog
-OLD_FILES+=usr/share/man/man1/ci.1.gz
-OLD_FILES+=usr/share/man/man1/co.1.gz
-OLD_FILES+=usr/share/man/man1/ident.1.gz
-OLD_FILES+=usr/share/man/man1/merge.1.gz
-OLD_FILES+=usr/share/man/man1/rcs.1.gz
-OLD_FILES+=usr/share/man/man1/rcsclean.1.gz
-OLD_FILES+=usr/share/man/man1/rcsdiff.1.gz
-OLD_FILES+=usr/share/man/man1/rcsfreeze.1.gz
-OLD_FILES+=usr/share/man/man1/rcsintro.1.gz
-OLD_FILES+=usr/share/man/man1/rcsmerge.1.gz
-OLD_FILES+=usr/share/man/man1/rlog.1.gz
-OLD_FILES+=usr/share/man/man5/rcsfile.5.gz
 # 20131001: ar and ranlib from binutils not used
 OLD_FILES+=usr/bin/gnu-ar
 OLD_FILES+=usr/bin/gnu-ranlib

Modified: projects/random_number_generator/UPDATING
==============================================================================
--- projects/random_number_generator/UPDATING	Wed Oct  9 17:34:45 2013	(r256201)
+++ projects/random_number_generator/UPDATING	Wed Oct  9 17:41:47 2013	(r256202)
@@ -31,10 +31,6 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
 	disable the most expensive debugging functionality run
 	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
 
-20131006:
-	RCS has been removed from the base system.  If you need RCS
-	install either devel/rcs or devel/rcs57.
-
 20130930:
 	BIND has been removed from the base system.  If all you need
 	is a local resolver, simply enable and start the local_unbound

Modified: projects/random_number_generator/gnu/usr.bin/Makefile
==============================================================================
--- projects/random_number_generator/gnu/usr.bin/Makefile	Wed Oct  9 17:34:45 2013	(r256201)
+++ projects/random_number_generator/gnu/usr.bin/Makefile	Wed Oct  9 17:41:47 2013	(r256202)
@@ -12,6 +12,7 @@ SUBDIR= ${_binutils} \
 	${_gperf} \
 	grep \
 	${_groff} \
+	${_rcs} \
 	sdiff \
 	send-pr \
 	${_texinfo}
@@ -31,6 +32,10 @@ _dtc=		dtc
 _texinfo=	texinfo
 .endif
 
+.if ${MK_RCS} != "no"
+_rcs=		rcs
+.endif
+
 .if ${MK_BINUTILS} != "no"
 _binutils=	binutils
 .endif

Modified: projects/random_number_generator/share/doc/psd/Makefile
==============================================================================
--- projects/random_number_generator/share/doc/psd/Makefile	Wed Oct  9 17:34:45 2013	(r256201)
+++ projects/random_number_generator/share/doc/psd/Makefile	Wed Oct  9 17:41:47 2013	(r256202)
@@ -20,6 +20,7 @@ SUBDIR=	title \
 	05.sysman \
 	06.Clang \
 	12.make \
+	13.rcs \
 	15.yacc \
 	16.lex \
 	17.m4 \

Modified: projects/random_number_generator/share/man/man5/src.conf.5
==============================================================================
--- projects/random_number_generator/share/man/man5/src.conf.5	Wed Oct  9 17:34:45 2013	(r256201)
+++ projects/random_number_generator/share/man/man5/src.conf.5	Wed Oct  9 17:41:47 2013	(r256202)
@@ -909,6 +909,11 @@ This includes
 .Xr rlogin 1 ,
 .Xr rsh 1 ,
 etc.
+.It Va WITHOUT_RCS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_RCS 156932 2006-03-21 07:50:50Z ru
+Set to not build
+.Xr rcs 1
+and related utilities.
 .It Va WITHOUT_RESCUE
 .\" from FreeBSD: head/tools/build/options/WITHOUT_RESCUE 156932 2006-03-21 07:50:50Z ru
 Set to not build

Modified: projects/random_number_generator/share/mk/bsd.own.mk
==============================================================================
--- projects/random_number_generator/share/mk/bsd.own.mk	Wed Oct  9 17:34:45 2013	(r256201)
+++ projects/random_number_generator/share/mk/bsd.own.mk	Wed Oct  9 17:41:47 2013	(r256202)
@@ -334,6 +334,7 @@ __DEFAULT_YES_OPTIONS = \
     PROFILE \
     QUOTAS \
     RCMDS \
+    RCS \
     RESCUE \
     ROUTED \
     SENDMAIL \

Modified: projects/random_number_generator/sys/arm/s3c2xx0/uart_bus_s3c2410.c
==============================================================================
--- projects/random_number_generator/sys/arm/s3c2xx0/uart_bus_s3c2410.c	Wed Oct  9 17:34:45 2013	(r256201)
+++ projects/random_number_generator/sys/arm/s3c2xx0/uart_bus_s3c2410.c	Wed Oct  9 17:41:47 2013	(r256202)
@@ -35,7 +35,6 @@ static driver_t uart_s3c2410_driver = {
 	sizeof(struct uart_softc),
 };
 
-extern struct uart_class uart_s3c2410_class;
 extern SLIST_HEAD(uart_devinfo_list, uart_devinfo) uart_sysdevs;
 static int
 uart_s3c2410_probe(device_t dev)

Modified: projects/random_number_generator/sys/arm/s3c2xx0/uart_cpu_s3c2410.c
==============================================================================
--- projects/random_number_generator/sys/arm/s3c2xx0/uart_cpu_s3c2410.c	Wed Oct  9 17:34:45 2013	(r256201)
+++ projects/random_number_generator/sys/arm/s3c2xx0/uart_cpu_s3c2410.c	Wed Oct  9 17:41:47 2013	(r256202)
@@ -47,8 +47,6 @@ extern struct uart_ops uart_s3c2410_ops;
 vm_offset_t s3c2410_uart_vaddr;
 unsigned int s3c2410_pclk;
 
-extern struct uart_class uart_s3c2410_class;
-
 int
 uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2)
 {

Modified: projects/random_number_generator/sys/cam/cam_xpt.c
==============================================================================
--- projects/random_number_generator/sys/cam/cam_xpt.c	Wed Oct  9 17:34:45 2013	(r256201)
+++ projects/random_number_generator/sys/cam/cam_xpt.c	Wed Oct  9 17:41:47 2013	(r256202)
@@ -2415,7 +2415,7 @@ xptsetasyncbusfunc(struct cam_eb *bus, v
 	struct ccb_setasync *csa = (struct ccb_setasync *)arg;
 
 	xpt_compile_path(&path, /*periph*/NULL,
-			 bus->sim->path_id,
+			 bus->path_id,
 			 CAM_TARGET_WILDCARD,
 			 CAM_LUN_WILDCARD);
 	xpt_setup_ccb(&cpi.ccb_h, &path, CAM_PRIORITY_NORMAL);
@@ -3840,13 +3840,8 @@ xpt_bus_register(struct cam_sim *sim, de
 		/* Couldn't satisfy request */
 		return (CAM_RESRC_UNAVAIL);
 	}
-	if (strcmp(sim->sim_name, "xpt") != 0) {
-		sim->path_id =
-		    xptpathid(sim->sim_name, sim->unit_number, sim->bus_id);
-	}
 
 	TAILQ_INIT(&new_bus->et_entries);
-	new_bus->path_id = sim->path_id;
 	cam_sim_hold(sim);
 	new_bus->sim = sim;
 	timevalclear(&new_bus->last_reset);
@@ -3855,6 +3850,8 @@ xpt_bus_register(struct cam_sim *sim, de
 	new_bus->generation = 0;
 
 	xpt_lock_buses();
+	sim->path_id = new_bus->path_id =
+	    xptpathid(sim->sim_name, sim->unit_number, sim->bus_id);
 	old_bus = TAILQ_FIRST(&xsoftc.xpt_busses);
 	while (old_bus != NULL
 	    && old_bus->path_id < new_bus->path_id)
@@ -3958,8 +3955,8 @@ xptnextfreepathid(void)
 	path_id_t pathid;
 	const char *strval;
 
+	mtx_assert(&xsoftc.xpt_topo_lock, MA_OWNED);
 	pathid = 0;
-	xpt_lock_buses();
 	bus = TAILQ_FIRST(&xsoftc.xpt_busses);
 retry:
 	/* Find an unoccupied pathid */
@@ -3968,7 +3965,6 @@ retry:
 			pathid++;
 		bus = TAILQ_NEXT(bus, links);
 	}
-	xpt_unlock_buses();
 
 	/*
 	 * Ensure that this pathid is not reserved for
@@ -3977,7 +3973,6 @@ retry:
 	if (resource_string_value("scbus", pathid, "at", &strval) == 0) {
 		++pathid;
 		/* Start the search over */
-		xpt_lock_buses();
 		goto retry;
 	}
 	return (pathid);
@@ -3993,6 +3988,8 @@ xptpathid(const char *sim_name, int sim_
 
 	pathid = CAM_XPT_PATH_ID;
 	snprintf(buf, sizeof(buf), "%s%d", sim_name, sim_unit);
+	if (strcmp(buf, "xpt0") == 0 && sim_bus == 0)
+		return (pathid);
 	i = 0;
 	while ((resource_find_match(&i, &dname, &dunit, "at", buf)) == 0) {
 		if (strcmp(dname, "scbus")) {

Modified: projects/random_number_generator/sys/cam/ctl/ctl_frontend_iscsi.c
==============================================================================
--- projects/random_number_generator/sys/cam/ctl/ctl_frontend_iscsi.c	Wed Oct  9 17:34:45 2013	(r256201)
+++ projects/random_number_generator/sys/cam/ctl/ctl_frontend_iscsi.c	Wed Oct  9 17:41:47 2013	(r256202)
@@ -229,8 +229,6 @@ cfiscsi_pdu_update_cmdsn(const struct ic
 	/*
 	 * The target MUST silently ignore any non-immediate command outside
 	 * of this range.
-	 *
-	 * XXX:	... or non-immediate duplicates within the range.
 	 */
 	if (cmdsn < cs->cs_cmdsn || cmdsn > cs->cs_cmdsn + maxcmdsn_delta) {
 		CFISCSI_SESSION_UNLOCK(cs);
@@ -288,8 +286,8 @@ cfiscsi_pdu_handle(struct icl_pdu *reque
 		CFISCSI_SESSION_WARN(cs, "received PDU with unsupported "
 		    "opcode 0x%x; dropping connection",
 		    request->ip_bhs->bhs_opcode);
-		cfiscsi_session_terminate(cs);
 		icl_pdu_free(request);
+		cfiscsi_session_terminate(cs);
 	}
 
 }
@@ -455,6 +453,9 @@ cfiscsi_pdu_handle_nop_out(struct icl_pd
 	struct iscsi_bhs_nop_out *bhsno;
 	struct iscsi_bhs_nop_in *bhsni;
 	struct icl_pdu *response;
+	void *data = NULL;
+	size_t datasize;
+	int error;
 
 	cs = PDU_SESSION(request);
 	bhsno = (struct iscsi_bhs_nop_out *)request->ip_bhs;
@@ -468,9 +469,26 @@ cfiscsi_pdu_handle_nop_out(struct icl_pd
 		return;
 	}
 
+	datasize = icl_pdu_data_segment_length(request);
+	if (datasize > 0) {
+		data = malloc(datasize, M_CFISCSI, M_NOWAIT | M_ZERO);
+		if (data == NULL) {
+			CFISCSI_SESSION_WARN(cs, "failed to allocate memory; "
+			    "dropping connection");
+			icl_pdu_free(request);
+			cfiscsi_session_terminate(cs);
+			return;
+		}
+		icl_pdu_get_data(request, 0, data, datasize);
+	}
+
 	response = cfiscsi_pdu_new_response(request, M_NOWAIT);
 	if (response == NULL) {
+		CFISCSI_SESSION_WARN(cs, "failed to allocate memory; "
+		    "droppping connection");
+		free(data, M_CFISCSI);
 		icl_pdu_free(request);
+		cfiscsi_session_terminate(cs);
 		return;
 	}
 	bhsni = (struct iscsi_bhs_nop_in *)response->ip_bhs;
@@ -478,14 +496,19 @@ cfiscsi_pdu_handle_nop_out(struct icl_pd
 	bhsni->bhsni_flags = 0x80;
 	bhsni->bhsni_initiator_task_tag = bhsno->bhsno_initiator_task_tag;
 	bhsni->bhsni_target_transfer_tag = 0xffffffff;
-
-#if 0
-	/* XXX */
-	response->ip_data_len = request->ip_data_len;
-	response->ip_data_mbuf = request->ip_data_mbuf;
-	request->ip_data_len = 0;
-	request->ip_data_mbuf = NULL;
-#endif
+	if (datasize > 0) {
+		error = icl_pdu_append_data(response, data, datasize, M_NOWAIT);
+		if (error != 0) {
+			CFISCSI_SESSION_WARN(cs, "failed to allocate memory; "
+			    "dropping connection");
+			free(data, M_CFISCSI);
+			icl_pdu_free(request);
+			icl_pdu_free(response);
+			cfiscsi_session_terminate(cs);
+			return;
+		}
+		free(data, M_CFISCSI);
+	}
 
 	icl_pdu_free(request);
 	cfiscsi_pdu_queue(response);
@@ -507,14 +530,16 @@ cfiscsi_pdu_handle_scsi_command(struct i
 	if (request->ip_data_len > 0 && cs->cs_immediate_data == false) {
 		CFISCSI_SESSION_WARN(cs, "unsolicited data with "
 		    "ImmediateData=No; dropping connection");
-		cfiscsi_session_terminate(cs);
 		icl_pdu_free(request);
+		cfiscsi_session_terminate(cs);
 		return;
 	}
 	io = ctl_alloc_io(cs->cs_target->ct_softc->fe.ctl_pool_ref);
 	if (io == NULL) {
-		CFISCSI_SESSION_WARN(cs, "can't allocate ctl_io");
+		CFISCSI_SESSION_WARN(cs, "can't allocate ctl_io; "
+		    "dropping connection");
 		icl_pdu_free(request);
+		cfiscsi_session_terminate(cs);
 		return;
 	}
 	ctl_zero_io(io);
@@ -554,10 +579,12 @@ cfiscsi_pdu_handle_scsi_command(struct i
 	refcount_acquire(&cs->cs_outstanding_ctl_pdus);
 	error = ctl_queue(io);
 	if (error != CTL_RETVAL_COMPLETE) {
-		CFISCSI_SESSION_WARN(cs, "ctl_queue() failed; error %d", error);
+		CFISCSI_SESSION_WARN(cs, "ctl_queue() failed; error %d; "
+		    "dropping connection", error);
 		ctl_free_io(io);
 		refcount_release(&cs->cs_outstanding_ctl_pdus);
 		icl_pdu_free(request);
+		cfiscsi_session_terminate(cs);
 	}
 }
 
@@ -575,8 +602,10 @@ cfiscsi_pdu_handle_task_request(struct i
 	bhstmr = (struct iscsi_bhs_task_management_request *)request->ip_bhs;
 	io = ctl_alloc_io(cs->cs_target->ct_softc->fe.ctl_pool_ref);
 	if (io == NULL) {
-		CFISCSI_SESSION_WARN(cs, "can't allocate ctl_io");
+		CFISCSI_SESSION_WARN(cs, "can't allocate ctl_io;"
+		    "dropping connection");
 		icl_pdu_free(request);
+		cfiscsi_session_terminate(cs);
 		return;
 	}
 	ctl_zero_io(io);
@@ -617,7 +646,10 @@ cfiscsi_pdu_handle_task_request(struct i
 
 		response = cfiscsi_pdu_new_response(request, M_NOWAIT);
 		if (response == NULL) {
+			CFISCSI_SESSION_WARN(cs, "failed to allocate memory; "
+			    "dropping connection");
 			icl_pdu_free(request);
+			cfiscsi_session_terminate(cs);
 			return;
 		}
 		bhstmr2 = (struct iscsi_bhs_task_management_response *)
@@ -636,10 +668,12 @@ cfiscsi_pdu_handle_task_request(struct i
 	refcount_acquire(&cs->cs_outstanding_ctl_pdus);
 	error = ctl_queue(io);
 	if (error != CTL_RETVAL_COMPLETE) {
-		CFISCSI_SESSION_WARN(cs, "ctl_queue() failed; error %d", error);
+		CFISCSI_SESSION_WARN(cs, "ctl_queue() failed; error %d; "
+		    "dropping connection", error);
 		ctl_free_io(io);
 		refcount_release(&cs->cs_outstanding_ctl_pdus);
 		icl_pdu_free(request);
+		cfiscsi_session_terminate(cs);
 	}
 }
 
@@ -649,7 +683,7 @@ cfiscsi_handle_data_segment(struct icl_p
 	struct iscsi_bhs_data_out *bhsdo;
 	struct cfiscsi_session *cs;
 	struct ctl_sg_entry ctl_sg_entry, *ctl_sglist;
-	size_t copy_len, off, buffer_offset;
+	size_t copy_len, len, off, buffer_offset;
 	int ctl_sg_count;
 	union ctl_io *io;
 
@@ -684,10 +718,6 @@ cfiscsi_handle_data_segment(struct icl_p
 		ctl_sglist->len = io->scsiio.kern_data_len;
 		ctl_sg_count = 1;
 	}
-#if 0
-	if (ctl_sg_count > 1)
-		CFISCSI_SESSION_DEBUG(cs, "ctl_sg_count = %d", ctl_sg_count);
-#endif
 
 	if ((request->ip_bhs->bhs_opcode & ~ISCSI_BHS_OPCODE_IMMEDIATE) ==
 	    ISCSI_BHS_OPCODE_SCSI_DATA_OUT)
@@ -707,7 +737,20 @@ cfiscsi_handle_data_segment(struct icl_p
 		return (true);
 	}
 
+	/*
+	 * This is the offset within the PDU data segment, as opposed
+	 * to buffer_offset, which is the offset within the task (SCSI
+	 * command).
+	 */
 	off = 0;
+	len = icl_pdu_data_segment_length(request);
+
+	/*
+	 * Iterate over the scatter/gather segments, filling them with data
+	 * from the PDU data segment.  Note that this can get called multiple
+	 * times for one SCSI command; the cdw structure holds state for the
+	 * scatter/gather list.
+	 */
 	for (;;) {
 		KASSERT(cdw->cdw_sg_index < ctl_sg_count,
 		    ("cdw->cdw_sg_index >= ctl_sg_count"));
@@ -715,7 +758,8 @@ cfiscsi_handle_data_segment(struct icl_p
 			cdw->cdw_sg_addr = ctl_sglist[cdw->cdw_sg_index].addr;
 			cdw->cdw_sg_len = ctl_sglist[cdw->cdw_sg_index].len;
 		}
-		copy_len = icl_pdu_data_segment_length(request) - off;
+		KASSERT(off <= len, ("len > off"));
+		copy_len = len - off;
 		if (copy_len > cdw->cdw_sg_len)
 			copy_len = cdw->cdw_sg_len;
 
@@ -726,15 +770,27 @@ cfiscsi_handle_data_segment(struct icl_p
 		io->scsiio.ext_data_filled += copy_len;
 
 		if (cdw->cdw_sg_len == 0) {
-			if (cdw->cdw_sg_index == ctl_sg_count - 1)
+			/*
+			 * End of current segment.
+			 */
+			if (cdw->cdw_sg_index == ctl_sg_count - 1) {
+				/*
+				 * Last segment in scatter/gather list.
+				 */
 				break;
+			}
 			cdw->cdw_sg_index++;
 		}
-		if (off == icl_pdu_data_segment_length(request))
+
+		if (off == len) {
+			/*
+			 * End of PDU payload.
+			 */
 			break;
+		}
 	}
 
-	if (off < icl_pdu_data_segment_length(request)) {
+	if (len > off) {
 		CFISCSI_SESSION_WARN(cs, "received too much data: got %zd bytes, "
 		    "expected %zd", icl_pdu_data_segment_length(request), off);
 		cfiscsi_session_terminate(cs);
@@ -808,8 +864,8 @@ cfiscsi_pdu_handle_data_out(struct icl_p
 	CFISCSI_SESSION_UNLOCK(cs);
 	if (cdw == NULL) {
 		CFISCSI_SESSION_WARN(cs, "data transfer tag 0x%x, initiator task tag "
-		    "0x%x, not found", bhsdo->bhsdo_target_transfer_tag,
-		    bhsdo->bhsdo_initiator_task_tag);
+		    "0x%x, not found; dropping connection",
+		    bhsdo->bhsdo_target_transfer_tag, bhsdo->bhsdo_initiator_task_tag);
 		icl_pdu_free(request);
 		cfiscsi_session_terminate(cs);
 		return;
@@ -846,6 +902,7 @@ cfiscsi_pdu_handle_logout_request(struct
 	case BHSLR_REASON_CLOSE_CONNECTION:
 		response = cfiscsi_pdu_new_response(request, M_NOWAIT);
 		if (response == NULL) {
+			CFISCSI_SESSION_DEBUG(cs, "failed to allocate memory");
 			icl_pdu_free(request);
 			cfiscsi_session_terminate(cs);
 			return;
@@ -863,6 +920,8 @@ cfiscsi_pdu_handle_logout_request(struct
 	case BHSLR_REASON_REMOVE_FOR_RECOVERY:
 		response = cfiscsi_pdu_new_response(request, M_NOWAIT);
 		if (response == NULL) {
+			CFISCSI_SESSION_WARN(cs,
+			    "failed to allocate memory; dropping connection");
 			icl_pdu_free(request);
 			cfiscsi_session_terminate(cs);
 			return;
@@ -934,7 +993,7 @@ cfiscsi_callout(void *context)
 
 	cp = icl_pdu_new_bhs(cs->cs_conn, M_NOWAIT);
 	if (cp == NULL) {
-		CFISCSI_SESSION_WARN(cs, "failed to allocate PDU");
+		CFISCSI_SESSION_WARN(cs, "failed to allocate memory");
 		return;
 	}
 	bhsni = (struct iscsi_bhs_nop_in *)cp->ip_bhs;
@@ -2275,11 +2334,6 @@ cfiscsi_datamove_in(union ctl_io *io)
 	 */
 	PDU_TOTAL_TRANSFER_LEN(request) = io->scsiio.kern_total_len;
 
-#if 0
-	if (ctl_sg_count > 1)
-		CFISCSI_SESSION_DEBUG(cs, "ctl_sg_count = %d", ctl_sg_count);
-#endif
-
 	/*
 	 * This is the offset within the current SCSI command;
 	 * i.e. for the first call of datamove(), it will be 0,
@@ -2287,8 +2341,6 @@ cfiscsi_datamove_in(union ctl_io *io)
 	 * of previous ones.
 	 */
 	off = htonl(io->scsiio.kern_rel_offset);
-	if (off > 1)
-		CFISCSI_SESSION_DEBUG(cs, "off = %zd", off);
 
 	i = 0;
 	addr = NULL;
@@ -2361,7 +2413,7 @@ cfiscsi_datamove_in(union ctl_io *io)
 			/*
 			 * Can't stuff more data into the current PDU;
 			 * queue it.  Note that's not enough to check
-			 * for kern_data_resid == 0  instead; there
+			 * for kern_data_resid == 0 instead; there
 			 * may be several Data-In PDUs for the final
 			 * call to cfiscsi_datamove(), and we want
 			 * to set the F flag only on the last of them.
@@ -2380,10 +2432,12 @@ cfiscsi_datamove_in(union ctl_io *io)
 	if (response != NULL) {
 		if (off == io->scsiio.kern_total_len) {
 			bhsdi->bhsdi_flags |= BHSDI_FLAGS_F;
+#if 0
 		} else {
 			CFISCSI_SESSION_DEBUG(cs, "not setting the F flag; "
 			    "have %zd, need %zd", off,
 			    (size_t)io->scsiio.kern_total_len);
+#endif
 		}
 		KASSERT(response->ip_data_len > 0, ("sending empty Data-In"));
 		cfiscsi_pdu_queue(response);

Modified: projects/random_number_generator/sys/contrib/ipfilter/netinet/ip_rcmd_pxy.c
==============================================================================
--- projects/random_number_generator/sys/contrib/ipfilter/netinet/ip_rcmd_pxy.c	Wed Oct  9 17:34:45 2013	(r256201)
+++ projects/random_number_generator/sys/contrib/ipfilter/netinet/ip_rcmd_pxy.c	Wed Oct  9 17:41:47 2013	(r256202)
@@ -159,7 +159,7 @@ ipf_p_rcmd_portmsg(fin, aps, nat)
 	ip6_t *ip6;
 #endif
 	int tcpsz;
-	int slen;
+	int slen = 0; /* silence gcc */
 	ip_t *ip;
 	mb_t *m;
 

Modified: projects/random_number_generator/sys/dev/e1000/e1000_80003es2lan.c
==============================================================================
--- projects/random_number_generator/sys/dev/e1000/e1000_80003es2lan.c	Wed Oct  9 17:34:45 2013	(r256201)
+++ projects/random_number_generator/sys/dev/e1000/e1000_80003es2lan.c	Wed Oct  9 17:41:47 2013	(r256202)
@@ -1,6 +1,6 @@
 /******************************************************************************
 
-  Copyright (c) 2001-2011, Intel Corporation 
+  Copyright (c) 2001-2013, Intel Corporation 
   All rights reserved.
   
   Redistribution and use in source and binary forms, with or without 
@@ -32,16 +32,12 @@
 ******************************************************************************/
 /*$FreeBSD$*/
 
-/*
- * 80003ES2LAN Gigabit Ethernet Controller (Copper)
+/* 80003ES2LAN Gigabit Ethernet Controller (Copper)
  * 80003ES2LAN Gigabit Ethernet Controller (Serdes)
  */
 
 #include "e1000_api.h"
 
-static s32  e1000_init_phy_params_80003es2lan(struct e1000_hw *hw);
-static s32  e1000_init_nvm_params_80003es2lan(struct e1000_hw *hw);
-static s32  e1000_init_mac_params_80003es2lan(struct e1000_hw *hw);
 static s32  e1000_acquire_phy_80003es2lan(struct e1000_hw *hw);
 static void e1000_release_phy_80003es2lan(struct e1000_hw *hw);
 static s32  e1000_acquire_nvm_80003es2lan(struct e1000_hw *hw);
@@ -71,14 +67,12 @@ static s32  e1000_read_kmrn_reg_80003es2
 					    u16 *data);
 static s32  e1000_write_kmrn_reg_80003es2lan(struct e1000_hw *hw, u32 offset,
 					     u16 data);
-static s32  e1000_copper_link_setup_gg82563_80003es2lan(struct e1000_hw *hw);
 static void e1000_initialize_hw_bits_80003es2lan(struct e1000_hw *hw);
 static void e1000_release_swfw_sync_80003es2lan(struct e1000_hw *hw, u16 mask);
 static s32  e1000_read_mac_addr_80003es2lan(struct e1000_hw *hw);
 static void e1000_power_down_phy_copper_80003es2lan(struct e1000_hw *hw);
 
-/*
- * A table for the GG82563 cable length where the range is defined
+/* A table for the GG82563 cable length where the range is defined
  * with a lower bound at "index" and the upper bound at
  * "index + 5".
  */
@@ -95,13 +89,13 @@ static const u16 e1000_gg82563_cable_len
 static s32 e1000_init_phy_params_80003es2lan(struct e1000_hw *hw)
 {
 	struct e1000_phy_info *phy = &hw->phy;
-	s32 ret_val = E1000_SUCCESS;
+	s32 ret_val;
 
 	DEBUGFUNC("e1000_init_phy_params_80003es2lan");
 
 	if (hw->phy.media_type != e1000_media_type_copper) {
 		phy->type = e1000_phy_none;
-		goto out;
+		return E1000_SUCCESS;
 	} else {
 		phy->ops.power_up = e1000_power_up_phy_copper;
 		phy->ops.power_down = e1000_power_down_phy_copper_80003es2lan;
@@ -133,12 +127,9 @@ static s32 e1000_init_phy_params_80003es
 	ret_val = e1000_get_phy_id(hw);
 
 	/* Verify phy id */
-	if (phy->id != GG82563_E_PHY_ID) {
-		ret_val = -E1000_ERR_PHY;
-		goto out;
-	}
+	if (phy->id != GG82563_E_PHY_ID)
+		return -E1000_ERR_PHY;
 
-out:
 	return ret_val;
 }
 
@@ -176,8 +167,7 @@ static s32 e1000_init_nvm_params_80003es
 	size = (u16)((eecd & E1000_EECD_SIZE_EX_MASK) >>
 		     E1000_EECD_SIZE_EX_SHIFT);
 
-	/*
-	 * Added to a constant, "size" becomes the left-shift value
+	/* Added to a constant, "size" becomes the left-shift value
 	 * for setting word_size.
 	 */
 	size += NVM_WORD_SIZE_BASE_SHIFT;
@@ -234,8 +224,8 @@ static s32 e1000_init_mac_params_80003es
 	/* FWSM register */
 	mac->has_fwsm = TRUE;
 	/* ARC supported; valid only if manageability features are enabled. */
-	mac->arc_subsystem_valid = (E1000_READ_REG(hw, E1000_FWSM) &
-				    E1000_FWSM_MODE_MASK) ? TRUE : FALSE;
+	mac->arc_subsystem_valid = !!(E1000_READ_REG(hw, E1000_FWSM) &
+				      E1000_FWSM_MODE_MASK);
 	/* Adaptive IFS not supported */
 	mac->adaptive_ifs = FALSE;
 
@@ -377,14 +367,13 @@ static s32 e1000_acquire_nvm_80003es2lan
 
 	ret_val = e1000_acquire_swfw_sync_80003es2lan(hw, E1000_SWFW_EEP_SM);
 	if (ret_val)
-		goto out;
+		return ret_val;
 
 	ret_val = e1000_acquire_nvm_generic(hw);
 
 	if (ret_val)
 		e1000_release_swfw_sync_80003es2lan(hw, E1000_SWFW_EEP_SM);
 
-out:
 	return ret_val;
 }
 
@@ -415,23 +404,20 @@ static s32 e1000_acquire_swfw_sync_80003
 	u32 swfw_sync;
 	u32 swmask = mask;
 	u32 fwmask = mask << 16;
-	s32 ret_val = E1000_SUCCESS;
-	s32 i = 0, timeout = 50;
+	s32 i = 0;
+	s32 timeout = 50;
 
 	DEBUGFUNC("e1000_acquire_swfw_sync_80003es2lan");
 
 	while (i < timeout) {
-		if (e1000_get_hw_semaphore_generic(hw)) {
-			ret_val = -E1000_ERR_SWFW_SYNC;
-			goto out;
-		}
+		if (e1000_get_hw_semaphore_generic(hw))
+			return -E1000_ERR_SWFW_SYNC;
 
 		swfw_sync = E1000_READ_REG(hw, E1000_SW_FW_SYNC);
 		if (!(swfw_sync & (fwmask | swmask)))
 			break;
 
-		/*
-		 * Firmware currently using resource (fwmask)
+		/* Firmware currently using resource (fwmask)
 		 * or other software thread using resource (swmask)
 		 */
 		e1000_put_hw_semaphore_generic(hw);
@@ -441,8 +427,7 @@ static s32 e1000_acquire_swfw_sync_80003
 
 	if (i == timeout) {
 		DEBUGOUT("Driver can't access resource, SW_FW_SYNC timeout.\n");
-		ret_val = -E1000_ERR_SWFW_SYNC;
-		goto out;
+		return -E1000_ERR_SWFW_SYNC;
 	}
 
 	swfw_sync |= swmask;
@@ -450,8 +435,7 @@ static s32 e1000_acquire_swfw_sync_80003
 
 	e1000_put_hw_semaphore_generic(hw);
 
-out:
-	return ret_val;
+	return E1000_SUCCESS;
 }
 
 /**
@@ -497,14 +481,13 @@ static s32 e1000_read_phy_reg_gg82563_80
 
 	ret_val = e1000_acquire_phy_80003es2lan(hw);
 	if (ret_val)
-		goto out;
+		return ret_val;
 
 	/* Select Configuration Page */
 	if ((offset & MAX_PHY_REG_ADDRESS) < GG82563_MIN_ALT_REG) {
 		page_select = GG82563_PHY_PAGE_SELECT;
 	} else {
-		/*
-		 * Use Alternative Page Select register to access
+		/* Use Alternative Page Select register to access
 		 * registers 30 and 31
 		 */
 		page_select = GG82563_PHY_PAGE_SELECT_ALT;
@@ -514,12 +497,11 @@ static s32 e1000_read_phy_reg_gg82563_80
 	ret_val = e1000_write_phy_reg_mdic(hw, page_select, temp);
 	if (ret_val) {
 		e1000_release_phy_80003es2lan(hw);
-		goto out;
+		return ret_val;
 	}
 
-	if (hw->dev_spec._80003es2lan.mdic_wa_enable == TRUE) {
-		/*
-		 * The "ready" bit in the MDIC register may be incorrectly set
+	if (hw->dev_spec._80003es2lan.mdic_wa_enable) {
+		/* The "ready" bit in the MDIC register may be incorrectly set
 		 * before the device has completed the "Page Select" MDI
 		 * transaction.  So we wait 200us after each MDI command...
 		 */
@@ -529,9 +511,8 @@ static s32 e1000_read_phy_reg_gg82563_80
 		ret_val = e1000_read_phy_reg_mdic(hw, page_select, &temp);
 
 		if (((u16)offset >> GG82563_PAGE_SHIFT) != temp) {
-			ret_val = -E1000_ERR_PHY;
 			e1000_release_phy_80003es2lan(hw);
-			goto out;
+			return -E1000_ERR_PHY;
 		}
 
 		usec_delay(200);
@@ -549,7 +530,6 @@ static s32 e1000_read_phy_reg_gg82563_80
 
 	e1000_release_phy_80003es2lan(hw);
 
-out:
 	return ret_val;
 }
 
@@ -572,14 +552,13 @@ static s32 e1000_write_phy_reg_gg82563_8
 
 	ret_val = e1000_acquire_phy_80003es2lan(hw);
 	if (ret_val)
-		goto out;
+		return ret_val;
 
 	/* Select Configuration Page */
 	if ((offset & MAX_PHY_REG_ADDRESS) < GG82563_MIN_ALT_REG) {
 		page_select = GG82563_PHY_PAGE_SELECT;
 	} else {
-		/*
-		 * Use Alternative Page Select register to access
+		/* Use Alternative Page Select register to access
 		 * registers 30 and 31
 		 */
 		page_select = GG82563_PHY_PAGE_SELECT_ALT;
@@ -589,12 +568,11 @@ static s32 e1000_write_phy_reg_gg82563_8
 	ret_val = e1000_write_phy_reg_mdic(hw, page_select, temp);
 	if (ret_val) {
 		e1000_release_phy_80003es2lan(hw);
-		goto out;
+		return ret_val;
 	}
 
-	if (hw->dev_spec._80003es2lan.mdic_wa_enable == TRUE) {
-		/*
-		 * The "ready" bit in the MDIC register may be incorrectly set
+	if (hw->dev_spec._80003es2lan.mdic_wa_enable) {
+		/* The "ready" bit in the MDIC register may be incorrectly set
 		 * before the device has completed the "Page Select" MDI
 		 * transaction.  So we wait 200us after each MDI command...
 		 */
@@ -604,9 +582,8 @@ static s32 e1000_write_phy_reg_gg82563_8
 		ret_val = e1000_read_phy_reg_mdic(hw, page_select, &temp);
 
 		if (((u16)offset >> GG82563_PAGE_SHIFT) != temp) {
-			ret_val = -E1000_ERR_PHY;
 			e1000_release_phy_80003es2lan(hw);
-			goto out;
+			return -E1000_ERR_PHY;
 		}
 
 		usec_delay(200);
@@ -624,7 +601,6 @@ static s32 e1000_write_phy_reg_gg82563_8
 
 	e1000_release_phy_80003es2lan(hw);
 
-out:
 	return ret_val;
 }
 
@@ -655,7 +631,6 @@ static s32 e1000_write_nvm_80003es2lan(s
 static s32 e1000_get_cfg_done_80003es2lan(struct e1000_hw *hw)
 {
 	s32 timeout = PHY_CFG_TIMEOUT;
-	s32 ret_val = E1000_SUCCESS;
 	u32 mask = E1000_NVM_CFG_DONE_PORT_0;
 
 	DEBUGFUNC("e1000_get_cfg_done_80003es2lan");
@@ -671,12 +646,10 @@ static s32 e1000_get_cfg_done_80003es2la
 	}
 	if (!timeout) {
 		DEBUGOUT("MNG configuration cycle has not completed.\n");
-		ret_val = -E1000_ERR_RESET;
-		goto out;
+		return -E1000_ERR_RESET;
 	}
 
-out:
-	return ret_val;
+	return E1000_SUCCESS;
 }
 
 /**
@@ -688,33 +661,32 @@ out:
  **/
 static s32 e1000_phy_force_speed_duplex_80003es2lan(struct e1000_hw *hw)
 {
-	s32 ret_val = E1000_SUCCESS;
+	s32 ret_val;
 	u16 phy_data;
 	bool link;
 
 	DEBUGFUNC("e1000_phy_force_speed_duplex_80003es2lan");
 
 	if (!(hw->phy.ops.read_reg))
-		goto out;
+		return E1000_SUCCESS;
 
-	/*
-	 * Clear Auto-Crossover to force MDI manually.  M88E1000 requires MDI
+	/* Clear Auto-Crossover to force MDI manually.  M88E1000 requires MDI
 	 * forced whenever speed and duplex are forced.
 	 */
 	ret_val = hw->phy.ops.read_reg(hw, M88E1000_PHY_SPEC_CTRL, &phy_data);
 	if (ret_val)
-		goto out;
+		return ret_val;
 
 	phy_data &= ~GG82563_PSCR_CROSSOVER_MODE_AUTO;
 	ret_val = hw->phy.ops.write_reg(hw, GG82563_PHY_SPEC_CTRL, phy_data);
 	if (ret_val)
-		goto out;
+		return ret_val;
 
 	DEBUGOUT1("GG82563 PSCR: %X\n", phy_data);
 
 	ret_val = hw->phy.ops.read_reg(hw, PHY_CONTROL, &phy_data);
 	if (ret_val)
-		goto out;
+		return ret_val;
 
 	e1000_phy_force_speed_duplex_setup(hw, &phy_data);
 
@@ -723,7 +695,7 @@ static s32 e1000_phy_force_speed_duplex_
 
 	ret_val = hw->phy.ops.write_reg(hw, PHY_CONTROL, phy_data);
 	if (ret_val)
-		goto out;
+		return ret_val;
 
 	usec_delay(1);
 
@@ -733,32 +705,30 @@ static s32 e1000_phy_force_speed_duplex_
 		ret_val = e1000_phy_has_link_generic(hw, PHY_FORCE_LIMIT,
 						     100000, &link);
 		if (ret_val)
-			goto out;
+			return ret_val;
 
 		if (!link) {
-			/*
-			 * We didn't get link.
+			/* We didn't get link.
 			 * Reset the DSP and cross our fingers.
 			 */
 			ret_val = e1000_phy_reset_dsp_generic(hw);
 			if (ret_val)
-				goto out;
+				return ret_val;
 		}
 
 		/* Try once more */
 		ret_val = e1000_phy_has_link_generic(hw, PHY_FORCE_LIMIT,
 						     100000, &link);
 		if (ret_val)
-			goto out;
+			return ret_val;
 	}
 
 	ret_val = hw->phy.ops.read_reg(hw, GG82563_PHY_MAC_SPEC_CTRL,
 				       &phy_data);
 	if (ret_val)
-		goto out;
+		return ret_val;
 
-	/*
-	 * Resetting the phy means we need to verify the TX_CLK corresponds
+	/* Resetting the phy means we need to verify the TX_CLK corresponds
 	 * to the link speed.  10Mbps -> 2.5MHz, else 25MHz.
 	 */
 	phy_data &= ~GG82563_MSCR_TX_CLK_MASK;
@@ -767,15 +737,13 @@ static s32 e1000_phy_force_speed_duplex_
 	else
 		phy_data |= GG82563_MSCR_TX_CLK_100MBPS_25;
 
-	/*
-	 * In addition, we must re-enable CRS on Tx for both half and full
+	/* In addition, we must re-enable CRS on Tx for both half and full
 	 * duplex.
 	 */
 	phy_data |= GG82563_MSCR_ASSERT_CRS_ON_TX;
 	ret_val = hw->phy.ops.write_reg(hw, GG82563_PHY_MAC_SPEC_CTRL,
 					phy_data);
 
-out:
 	return ret_val;
 }
 
@@ -789,32 +757,29 @@ out:
 static s32 e1000_get_cable_length_80003es2lan(struct e1000_hw *hw)
 {
 	struct e1000_phy_info *phy = &hw->phy;
-	s32 ret_val = E1000_SUCCESS;
+	s32 ret_val;
 	u16 phy_data, index;
 
 	DEBUGFUNC("e1000_get_cable_length_80003es2lan");
 
 	if (!(hw->phy.ops.read_reg))
-		goto out;
+		return E1000_SUCCESS;
 
 	ret_val = hw->phy.ops.read_reg(hw, GG82563_PHY_DSP_DISTANCE, &phy_data);
 	if (ret_val)
-		goto out;
+		return ret_val;
 
 	index = phy_data & GG82563_DSPD_CABLE_LENGTH;
 
-	if (index >= GG82563_CABLE_LENGTH_TABLE_SIZE - 5) {
-		ret_val = -E1000_ERR_PHY;
-		goto out;
-	}
+	if (index >= GG82563_CABLE_LENGTH_TABLE_SIZE - 5)
+		return -E1000_ERR_PHY;
 
 	phy->min_cable_length = e1000_gg82563_cable_length_table[index];
 	phy->max_cable_length = e1000_gg82563_cable_length_table[index + 5];
 
 	phy->cable_length = (phy->min_cable_length + phy->max_cable_length) / 2;
 
-out:
-	return ret_val;
+	return E1000_SUCCESS;
 }
 
 /**
@@ -855,11 +820,11 @@ static s32 e1000_reset_hw_80003es2lan(st
 {
 	u32 ctrl;
 	s32 ret_val;
+	u16 kum_reg_data;
 
 	DEBUGFUNC("e1000_reset_hw_80003es2lan");
 
-	/*
-	 * Prevent the PCI-E bus from sticking if there is no TLP connection
+	/* Prevent the PCI-E bus from sticking if there is no TLP connection
 	 * on the last TLP read/write transaction when MAC is reset.
 	 */
 	ret_val = e1000_disable_pcie_master_generic(hw);
@@ -878,23 +843,30 @@ static s32 e1000_reset_hw_80003es2lan(st
 	ctrl = E1000_READ_REG(hw, E1000_CTRL);
 
 	ret_val = e1000_acquire_phy_80003es2lan(hw);
+	if (ret_val)
+		return ret_val;
+
 	DEBUGOUT("Issuing a global reset to MAC\n");
 	E1000_WRITE_REG(hw, E1000_CTRL, ctrl | E1000_CTRL_RST);
 	e1000_release_phy_80003es2lan(hw);
 
+	/* Disable IBIST slave mode (far-end loopback) */
+	e1000_read_kmrn_reg_80003es2lan(hw, E1000_KMRNCTRLSTA_INBAND_PARAM,
+					&kum_reg_data);
+	kum_reg_data |= E1000_KMRNCTRLSTA_IBIST_DISABLE;
+	e1000_write_kmrn_reg_80003es2lan(hw, E1000_KMRNCTRLSTA_INBAND_PARAM,
+					kum_reg_data);
+
 	ret_val = e1000_get_auto_rd_done_generic(hw);
 	if (ret_val)
 		/* We don't want to continue accessing MAC registers. */
-		goto out;
+		return ret_val;
 
 	/* Clear any pending interrupt events. */
 	E1000_WRITE_REG(hw, E1000_IMC, 0xffffffff);
 	E1000_READ_REG(hw, E1000_ICR);
 
-	ret_val = e1000_check_alt_mac_addr_generic(hw);
-
-out:
-	return ret_val;
+	return e1000_check_alt_mac_addr_generic(hw);
 }
 

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-projects mailing list