Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 25 Nov 2018 11:15:01 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r340918 - in projects/clang700-import: lib/csu/common stand/i386/pxeldr sys/compat/linux sys/contrib/ipfilter/netinet sys/dev/atkbdc sys/dev/sfxge sys/dev/sfxge/common sys/kern sys/sys
Message-ID:  <201811251115.wAPBF13B076759@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Sun Nov 25 11:15:01 2018
New Revision: 340918
URL: https://svnweb.freebsd.org/changeset/base/340918

Log:
  Merge ^/head r340869 through r340917.

Modified:
  projects/clang700-import/lib/csu/common/crtend.c
  projects/clang700-import/stand/i386/pxeldr/pxeboot.8
  projects/clang700-import/sys/compat/linux/linux_event.c
  projects/clang700-import/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
  projects/clang700-import/sys/dev/atkbdc/atkbdc.c
  projects/clang700-import/sys/dev/atkbdc/atkbdcreg.h
  projects/clang700-import/sys/dev/atkbdc/psm.c
  projects/clang700-import/sys/dev/sfxge/common/ef10_ev.c
  projects/clang700-import/sys/dev/sfxge/common/ef10_filter.c
  projects/clang700-import/sys/dev/sfxge/common/ef10_impl.h
  projects/clang700-import/sys/dev/sfxge/common/ef10_nvram.c
  projects/clang700-import/sys/dev/sfxge/common/ef10_phy.c
  projects/clang700-import/sys/dev/sfxge/common/ef10_rx.c
  projects/clang700-import/sys/dev/sfxge/common/ef10_tx.c
  projects/clang700-import/sys/dev/sfxge/common/efx.h
  projects/clang700-import/sys/dev/sfxge/common/efx_bootcfg.c
  projects/clang700-import/sys/dev/sfxge/common/efx_check.h
  projects/clang700-import/sys/dev/sfxge/common/efx_ev.c
  projects/clang700-import/sys/dev/sfxge/common/efx_impl.h
  projects/clang700-import/sys/dev/sfxge/common/efx_lic.c
  projects/clang700-import/sys/dev/sfxge/common/efx_mac.c
  projects/clang700-import/sys/dev/sfxge/common/efx_mcdi.c
  projects/clang700-import/sys/dev/sfxge/common/efx_mcdi.h
  projects/clang700-import/sys/dev/sfxge/common/efx_mon.c
  projects/clang700-import/sys/dev/sfxge/common/efx_nic.c
  projects/clang700-import/sys/dev/sfxge/common/efx_port.c
  projects/clang700-import/sys/dev/sfxge/common/efx_rx.c
  projects/clang700-import/sys/dev/sfxge/common/efx_tx.c
  projects/clang700-import/sys/dev/sfxge/common/efx_types.h
  projects/clang700-import/sys/dev/sfxge/common/efx_vpd.c
  projects/clang700-import/sys/dev/sfxge/common/mcdi_mon.c
  projects/clang700-import/sys/dev/sfxge/common/medford_impl.h
  projects/clang700-import/sys/dev/sfxge/common/medford_nic.c
  projects/clang700-import/sys/dev/sfxge/common/siena_impl.h
  projects/clang700-import/sys/dev/sfxge/common/siena_nic.c
  projects/clang700-import/sys/dev/sfxge/common/siena_phy.c
  projects/clang700-import/sys/dev/sfxge/sfxge_rx.c
  projects/clang700-import/sys/kern/kern_event.c
  projects/clang700-import/sys/kern/subr_blist.c
  projects/clang700-import/sys/kern/vfs_aio.c
  projects/clang700-import/sys/sys/event.h
Directory Properties:
  projects/clang700-import/   (props changed)
  projects/clang700-import/sys/contrib/ipfilter/   (props changed)

Modified: projects/clang700-import/lib/csu/common/crtend.c
==============================================================================
--- projects/clang700-import/lib/csu/common/crtend.c	Sun Nov 25 09:37:57 2018	(r340917)
+++ projects/clang700-import/lib/csu/common/crtend.c	Sun Nov 25 11:15:01 2018	(r340918)
@@ -41,6 +41,9 @@ static crt_func __CTOR_END__[] __section(".ctors") __u
 static crt_func __DTOR_END__[] __section(".dtors") __used = {
 	(crt_func)0
 };
+static crt_func __JCR_LIST__[] __section(".jcr") __used = {
+	(crt_func)0
+};
 
 static void
 __do_global_ctors_aux(void)

Modified: projects/clang700-import/stand/i386/pxeldr/pxeboot.8
==============================================================================
--- projects/clang700-import/stand/i386/pxeldr/pxeboot.8	Sun Nov 25 09:37:57 2018	(r340917)
+++ projects/clang700-import/stand/i386/pxeldr/pxeboot.8	Sun Nov 25 11:15:01 2018	(r340918)
@@ -58,7 +58,7 @@ The
 .Nm
 binary is loaded just like any other boot file,
 by specifying it in the DHCP server's configuration file.
-Below is a sample configuration for the ISC DHCP v2 server:
+Below is a sample configuration for the ISC DHCP v3 server:
 .Bd -literal -offset indent
 option domain-name "example.com";
 option routers 10.0.0.1;
@@ -67,6 +67,7 @@ option broadcast-address 10.0.0.255;
 option domain-name-servers 10.0.0.1;
 server-name "DHCPserver";
 server-identifier 10.0.0.1;
+next-server 10.0.0.1;
 
 default-lease-time 120;
 max-lease-time 120;
@@ -80,10 +81,11 @@ subnet 10.0.0.0 netmask 255.255.255.0 {
 }
 
 .Ed
+.Va next-server
+is the IP address of the next server in the bootstrap process, i.e.
+your TFTP server or NFS server.
 .Nm
 recognizes
-.Va next-server
-and
 .Va option root-path
 directives as the server and path to NFS mount for file requests,
 respectively, or the server to make TFTP requests to.

Modified: projects/clang700-import/sys/compat/linux/linux_event.c
==============================================================================
--- projects/clang700-import/sys/compat/linux/linux_event.c	Sun Nov 25 09:37:57 2018	(r340917)
+++ projects/clang700-import/sys/compat/linux/linux_event.c	Sun Nov 25 11:15:01 2018	(r340918)
@@ -504,7 +504,7 @@ linux_epoll_ctl(struct thread *td, struct linux_epoll_
 		 * and the EV_ADD flag is not set.
 		 */
 		kev[0].flags &= ~EV_ADD;
-		error = kqfd_register(args->epfd, &kev[0], td, 1);
+		error = kqfd_register(args->epfd, &kev[0], td, M_WAITOK);
 		if (error != ENOENT) {
 			error = EEXIST;
 			goto leave0;

Modified: projects/clang700-import/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
==============================================================================
--- projects/clang700-import/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c	Sun Nov 25 09:37:57 2018	(r340917)
+++ projects/clang700-import/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c	Sun Nov 25 11:15:01 2018	(r340918)
@@ -288,8 +288,7 @@ ipfdetach(softc)
  * Filter ioctl interface.
  */
 int
-ipfioctl(dev, cmd, data, mode
-, p)
+ipfioctl(dev, cmd, data, mode, p)
 	struct thread *p;
 #    define	p_cred	td_ucred
 #    define	p_uid	td_ucred->cr_ruid

Modified: projects/clang700-import/sys/dev/atkbdc/atkbdc.c
==============================================================================
--- projects/clang700-import/sys/dev/atkbdc/atkbdc.c	Sun Nov 25 09:37:57 2018	(r340917)
+++ projects/clang700-import/sys/dev/atkbdc/atkbdc.c	Sun Nov 25 11:15:01 2018	(r340918)
@@ -296,6 +296,7 @@ atkbdc_setup(atkbdc_softc_t *sc, bus_space_tag_t tag, 
 	    sc->lock = FALSE;
 	    sc->kbd.head = sc->kbd.tail = 0;
 	    sc->aux.head = sc->aux.tail = 0;
+	    sc->aux_mux_enabled = FALSE;
 #if KBDIO_DEBUG >= 2
 	    sc->kbd.call_count = 0;
 	    sc->kbd.qcount = sc->kbd.max_qcount = 0;
@@ -639,7 +640,12 @@ write_kbd_command(KBDC p, int c)
 int
 write_aux_command(KBDC p, int c)
 {
-    if (!write_controller_command(p, KBDC_WRITE_TO_AUX))
+    int f;
+
+    f = aux_mux_is_enabled(p) ?
+        KBDC_WRITE_TO_AUX_MUX + kbdcp(p)->aux_mux_port : KBDC_WRITE_TO_AUX;
+
+    if (!write_controller_command(p, f))
 	return FALSE;
     return write_controller_data(p, c);
 }
@@ -1200,4 +1206,79 @@ set_controller_command_byte(KBDC p, int mask, int comm
 	    command);
 
     return TRUE;
+}
+
+/*
+ * Rudimentary support for active PS/2 AUX port multiplexing.
+ * Only write commands can be routed to a selected AUX port.
+ * Source port of data processed by read commands is totally ignored.
+ */
+static int
+set_aux_mux_state(KBDC p, int enabled)
+{
+	int command, version;
+
+	if (write_controller_command(p, KBDC_FORCE_AUX_OUTPUT) == 0 ||
+	    write_controller_data(p, 0xF0) == 0 ||
+	    read_controller_data(p) != 0xF0)
+		return (-1);
+
+	if (write_controller_command(p, KBDC_FORCE_AUX_OUTPUT) == 0 ||
+	    write_controller_data(p, 0x56) == 0 ||
+	    read_controller_data(p) != 0x56)
+		return (-1);
+
+	command = enabled ? 0xa4 : 0xa5;
+	if (write_controller_command(p, KBDC_FORCE_AUX_OUTPUT) == 0 ||
+	    write_controller_data(p, command) == 0 ||
+	    (version = read_controller_data(p)) == command)
+		return (-1);
+
+	return (version);
+}
+
+int
+set_active_aux_mux_port(KBDC p, int port)
+{
+
+	if (!aux_mux_is_enabled(p))
+		return (FALSE);
+
+	if (port < 0 || port >= KBDC_AUX_MUX_NUM_PORTS)
+		return (FALSE);
+
+	kbdcp(p)->aux_mux_port = port;
+
+	return (TRUE);
+}
+
+/* Checks for active multiplexing support and enables it */
+int
+enable_aux_mux(KBDC p)
+{
+	int version;
+
+	version = set_aux_mux_state(p, TRUE);
+	if (version >= 0) {
+		kbdcp(p)->aux_mux_enabled = TRUE;
+		set_active_aux_mux_port(p, 0);
+	}
+
+	return (version);
+}
+
+int
+disable_aux_mux(KBDC p)
+{
+
+	kbdcp(p)->aux_mux_enabled = FALSE;
+
+	return (set_aux_mux_state(p, FALSE));
+}
+
+int
+aux_mux_is_enabled(KBDC p)
+{
+
+	return (kbdcp(p)->aux_mux_enabled);
 }

Modified: projects/clang700-import/sys/dev/atkbdc/atkbdcreg.h
==============================================================================
--- projects/clang700-import/sys/dev/atkbdc/atkbdcreg.h	Sun Nov 25 09:37:57 2018	(r340917)
+++ projects/clang700-import/sys/dev/atkbdc/atkbdcreg.h	Sun Nov 25 11:15:01 2018	(r340918)
@@ -51,6 +51,8 @@
 /* controller commands (sent to KBD_COMMAND_PORT) */
 #define KBDC_SET_COMMAND_BYTE 	0x0060
 #define KBDC_GET_COMMAND_BYTE 	0x0020
+#define KBDC_WRITE_TO_AUX_MUX	0x0090
+#define KBDC_FORCE_AUX_OUTPUT	0x00d3
 #define KBDC_WRITE_TO_AUX    	0x00d4
 #define KBDC_DISABLE_AUX_PORT 	0x00a7
 #define KBDC_ENABLE_AUX_PORT 	0x00a8
@@ -209,6 +211,8 @@ typedef struct atkbdc_softc {
 #define KBDC_QUIRK_IGNORE_PROBE_RESULT	(1 << 1)
 #define KBDC_QUIRK_RESET_AFTER_PROBE	(1 << 2)
 #define KBDC_QUIRK_SETLEDS_ON_INIT	(1 << 3)
+    int aux_mux_enabled;	/* active PS/2 multiplexing is enabled */
+    int aux_mux_port;		/* current aux mux port */
 } atkbdc_softc_t; 
 
 enum kbdc_device_ivar {
@@ -223,6 +227,8 @@ typedef caddr_t KBDC;
 #define KBDC_RID_KBD	0
 #define KBDC_RID_AUX	1
 
+#define KBDC_AUX_MUX_NUM_PORTS	4
+
 /* function prototypes */
 
 atkbdc_softc_t *atkbdc_get_softc(int unit);
@@ -267,6 +273,11 @@ void kbdc_set_device_mask(KBDC kbdc, int mask);
 
 int get_controller_command_byte(KBDC kbdc);
 int set_controller_command_byte(KBDC kbdc, int command, int flag);
+
+int set_active_aux_mux_port(KBDC p, int port);
+int enable_aux_mux(KBDC p);
+int disable_aux_mux(KBDC p);
+int aux_mux_is_enabled(KBDC p);
 
 #endif /* _KERNEL */
 

Modified: projects/clang700-import/sys/dev/atkbdc/psm.c
==============================================================================
--- projects/clang700-import/sys/dev/atkbdc/psm.c	Sun Nov 25 09:37:57 2018	(r340917)
+++ projects/clang700-import/sys/dev/atkbdc/psm.c	Sun Nov 25 11:15:01 2018	(r340918)
@@ -136,7 +136,6 @@ struct psmcpnp_softc {
 	enum {
 		PSMCPNP_GENERIC,
 		PSMCPNP_FORCEPAD,
-		PSMCPNP_HPSYN81,
 	} type;		/* Based on PnP ID */
 };
 
@@ -151,6 +150,9 @@ struct psmcpnp_softc {
 #define	PSM_LEVEL_MIN		PSM_LEVEL_BASE
 #define	PSM_LEVEL_MAX		PSM_LEVEL_NATIVE
 
+/* Active PS/2 multiplexing */
+#define	PSM_NOMUX		(-1)
+
 /* Logitech PS2++ protocol */
 #define	MOUSE_PS2PLUS_CHECKBITS(b)	\
     ((((b[2] & 0x03) << 2) | 0x02) == (b[1] & 0x0f))
@@ -175,15 +177,6 @@ typedef struct packetbuf {
 #define	PSM_PACKETQUEUE	128
 #endif
 
-/*
- * Typical bezel limits. Taken from 'Synaptics
- * PS/2 TouchPad Interfacing Guide' p.3.2.3.
- */
-#define	SYNAPTICS_DEFAULT_MAX_X	5472
-#define	SYNAPTICS_DEFAULT_MAX_Y	4448
-#define	SYNAPTICS_DEFAULT_MIN_X	1472
-#define	SYNAPTICS_DEFAULT_MIN_Y	1408
-
 typedef struct synapticsinfo {
 	struct sysctl_ctx_list	 sysctl_ctx;
 	struct sysctl_oid	*sysctl_tree;
@@ -448,6 +441,11 @@ struct psm_softc {		/* Driver status information */
 	int		cmdcount;
 	struct sigio	*async;		/* Processes waiting for SIGIO */
 	int		extended_buttons;
+	int		muxport;	/* MUX port with attached Synaptics */
+	u_char		muxsave[3];	/* 3->6 byte proto conversion buffer */
+	int		muxtpbuttons;	/* Touchpad button state */
+	int		muxmsbuttons;	/* Mouse (trackpoint) button state */
+	struct timeval	muxmidtimeout;	/* middle button supression timeout */
 #ifdef EVDEV_SUPPORT
 	struct evdev_dev *evdev_a;	/* Absolute reporting device */
 	struct evdev_dev *evdev_r;	/* Relative reporting device */
@@ -613,6 +611,7 @@ static void	proc_mmanplus(struct psm_softc *, packetbu
 		    mousestatus_t *, int *, int *, int *);
 static int	proc_synaptics(struct psm_softc *, packetbuf_t *,
 		    mousestatus_t *, int *, int *, int *);
+static int	proc_synaptics_mux(struct psm_softc *, packetbuf_t *);
 static void	proc_versapad(struct psm_softc *, packetbuf_t *,
 		    mousestatus_t *, int *, int *, int *);
 static int	proc_elantech(struct psm_softc *, packetbuf_t *,
@@ -642,6 +641,7 @@ static probefunc_t	enable_4dmouse;
 static probefunc_t	enable_4dplus;
 static probefunc_t	enable_mmanplus;
 static probefunc_t	enable_synaptics;
+static probefunc_t	enable_synaptics_mux;
 static probefunc_t	enable_trackpoint;
 static probefunc_t	enable_versapad;
 static probefunc_t	enable_elantech;
@@ -662,6 +662,8 @@ static struct {
 	 * WARNING: the order of probe is very important.  Don't mess it
 	 * unless you know what you are doing.
 	 */
+	{ MOUSE_MODEL_SYNAPTICS,	/* Synaptics Touchpad on Active Mux */
+	  0x00, MOUSE_PS2_PACKETSIZE, enable_synaptics_mux },
 	{ MOUSE_MODEL_NET,		/* Genius NetMouse */
 	  0x08, MOUSE_PS2INTELLI_PACKETSIZE, enable_gmouse },
 	{ MOUSE_MODEL_NETSCROLL,	/* Genius NetScroll */
@@ -1092,6 +1094,7 @@ static int
 doopen(struct psm_softc *sc, int command_byte)
 {
 	int stat[3];
+	int mux_enabled = FALSE;
 
 	/*
 	 * FIXME: Synaptics TouchPad seems to go back to Relative Mode with
@@ -1106,16 +1109,27 @@ doopen(struct psm_softc *sc, int command_byte)
 	 * doesn't show any evidence of such a command.
 	 */
 	if (sc->hw.model == MOUSE_MODEL_SYNAPTICS) {
+		if (sc->muxport != PSM_NOMUX) {
+			mux_enabled = enable_aux_mux(sc->kbdc) >= 0;
+			if (mux_enabled)
+				set_active_aux_mux_port(sc->kbdc, sc->muxport);
+			else
+				log(LOG_ERR, "psm%d: failed to enable "
+				    "active multiplexing mode.\n",
+				    sc->unit);
+		}
 		mouse_ext_command(sc->kbdc, 1);
 		get_mouse_status(sc->kbdc, stat, 0, 3);
 		if ((SYNAPTICS_VERSION_GE(sc->synhw, 7, 5) ||
-		     stat[1] == 0x46 || stat[1] == 0x47) &&
+		     stat[1] == 0x47) &&
 		     stat[2] == 0x40) {
 			synaptics_set_mode(sc, synaptics_preferred_mode(sc));
 			VLOG(5, (LOG_DEBUG, "psm%d: Synaptis Absolute Mode "
 			    "hopefully restored\n",
 			    sc->unit));
 		}
+		if (mux_enabled)
+			disable_aux_mux(sc->kbdc);
 	}
 
 	/*
@@ -1364,6 +1378,7 @@ psmprobe(device_t dev)
 #endif
 #endif /* PSM_HOOKRESUME | PSM_HOOKAPM */
 	sc->flags = 0;
+	sc->muxport = PSM_NOMUX;
 	if (bootverbose)
 		++verbose;
 
@@ -1833,7 +1848,7 @@ psm_register_synaptics(device_t dev)
 			evdev_support_key(evdev_a, BTN_0 + i);
 
 	error = evdev_register_mtx(evdev_a, &Giant);
-	if (!error && sc->synhw.capPassthrough) {
+	if (!error && (sc->synhw.capPassthrough || sc->muxport != PSM_NOMUX)) {
 		guest_model = sc->tpinfo.sysctl_tree != NULL ?
 		    MOUSE_MODEL_TRACKPOINT : MOUSE_MODEL_GENERIC;
 		error = psm_register(dev, guest_model);
@@ -2941,6 +2956,9 @@ psmintr(void *arg)
 	int c;
 	packetbuf_t *pb;
 
+	if (aux_mux_is_enabled(sc->kbdc))
+		VLOG(2, (LOG_DEBUG, "psmintr: active multiplexing mode is not "
+		    "supported!\n"));
 
 	/* read until there is nothing to read */
 	while((c = read_aux_data_no_wait(sc->kbdc)) != -1) {
@@ -3292,7 +3310,7 @@ proc_synaptics(struct psm_softc *sc, packetbuf_t *pb, 
 		 * Handle packets from the guest device. See:
 		 * Synaptics PS/2 TouchPad Interfacing Guide, Section 5.1
 		 */
-		if (sc->synhw.capPassthrough) {
+		if (sc->synhw.capPassthrough || sc->muxport != PSM_NOMUX) {
 			*x = ((pb->ipacket[1] & 0x10) ?
 			    pb->ipacket[4] - 256 : pb->ipacket[4]);
 			*y = ((pb->ipacket[1] & 0x20) ?
@@ -3592,6 +3610,83 @@ SYNAPTICS_END:
 }
 
 static int
+proc_synaptics_mux(struct psm_softc *sc, packetbuf_t *pb)
+{
+	int butt;
+
+	/*
+	 * Convert 3-byte interleaved mixture of Synaptics and generic mouse
+	 * packets into plain 6-byte Synaptics packet protocol.
+	 * While in hidden multiplexing mode KBC does some editing of the
+	 * packet stream. It remembers the button bits from the last packet
+	 * received from each device, and replaces the button bits of every
+	 * packet with the logical OR of all devices’ most recent button bits.
+	 * This button crosstalk should be filtered out as Synaptics and
+	 * generic mouse encode middle button presses in a different way.
+	 */
+	switch (pb->ipacket[0] & 0xc0) {
+	case 0x80:	/* First 3 bytes of Synaptics packet */
+		bcopy(pb->ipacket, sc->muxsave, 3);
+		/* Compute middle mouse button supression timeout. */
+		sc->muxmidtimeout.tv_sec  = 0;
+		sc->muxmidtimeout.tv_usec = 50000;	/* ~2-3 ints */
+		timevaladd(&sc->muxmidtimeout, &sc->lastsoftintr);
+		return (1);
+
+	case 0xc0:	/* Second 3 bytes of Synaptics packet */
+		/* Join two 3-bytes absolute packets */
+		bcopy(pb->ipacket, pb->ipacket + 3, 3);
+		bcopy(sc->muxsave, pb->ipacket, 3);
+		/* Prefer trackpoint buttons over touchpad's */
+		pb->ipacket[0] &= ~(0x08 | sc->muxmsbuttons);
+		pb->ipacket[3] &= ~(0x08 | sc->muxmsbuttons);
+		butt = (pb->ipacket[3] & 0x03) << 2 | (pb->ipacket[0] & 0x03);
+		/* Add hysteresis to remove spurious middle button events */
+		if (butt != sc->muxtpbuttons && sc->fpcount < 1) {
+			pb->ipacket[0] &= 0xfc;
+			pb->ipacket[0] |= sc->muxtpbuttons & 0x03;
+			pb->ipacket[3] &= 0xfc;
+			pb->ipacket[3] |= sc->muxtpbuttons >> 2 & 0x03;
+			++sc->fpcount;
+		} else {
+			sc->fpcount = 0;
+			sc->muxtpbuttons = butt;
+		}
+		/* Filter out impossible w induced by middle trackpoint btn */
+		if (sc->synhw.capExtended && !sc->synhw.capPassthrough &&
+		    (pb->ipacket[0] & 0x34) == 0x04 &&
+		    (pb->ipacket[3] & 0x04) == 0x04) {
+			pb->ipacket[0] &= 0xfb;
+			pb->ipacket[3] &= 0xfb;
+		}
+		sc->muxsave[0] &= 0x30;
+		break;
+
+	default:	/* Generic mouse (Trackpoint) packet */
+		/* Filter out middle button events induced by some w values */
+		if (sc->muxmsbuttons & 0x03 || pb->ipacket[0] & 0x03 ||
+		    (timevalcmp(&sc->lastsoftintr, &sc->muxmidtimeout, <=) &&
+		     (sc->muxsave[0] & 0x30 || sc->muxsave[2] > 8)))
+			pb->ipacket[0] &= 0xfb;
+		sc->muxmsbuttons = pb->ipacket[0] & 0x07;
+		/* Convert to Synaptics pass-through protocol */
+		pb->ipacket[4] = pb->ipacket[1];
+		pb->ipacket[5] = pb->ipacket[2];
+		pb->ipacket[1] = pb->ipacket[0];
+		pb->ipacket[2] = 0;
+		pb->ipacket[0] = 0x84 | (sc->muxtpbuttons & 0x03);
+		pb->ipacket[3] = 0xc4 | (sc->muxtpbuttons >> 2 & 0x03);
+	}
+
+	VLOG(4, (LOG_DEBUG, "synaptics: %02x %02x %02x %02x %02x %02x\n",
+	    pb->ipacket[0], pb->ipacket[1], pb->ipacket[2],
+	    pb->ipacket[3], pb->ipacket[4], pb->ipacket[5]));
+
+	pb->inputbytes = MOUSE_SYNAPTICS_PACKETSIZE;
+	return (0);
+}
+
+static int
 psmpalmdetect(struct psm_softc *sc, finger_t *f, int nfingers)
 {
 	if (!(
@@ -4929,6 +5024,10 @@ psmsoftintr(void *arg)
 			break;
 
 		case MOUSE_MODEL_SYNAPTICS:
+			if (pb->inputbytes == MOUSE_PS2_PACKETSIZE)
+				if (proc_synaptics_mux(sc, pb))
+					goto next;
+
 			if (proc_synaptics(sc, pb, &ms, &x, &y, &z) != 0) {
 				VLOG(3, (LOG_DEBUG, "synaptics: "
 				    "packet rejected\n"));
@@ -6039,7 +6138,61 @@ synaptics_set_mode(struct psm_softc *sc, int mode_byte
 	}
 }
 
+/*
+ * AUX MUX detection code should be placed at very beginning of probe sequence
+ * at least before 4-byte protocol mouse probes e.g. MS IntelliMouse probe as
+ * latter can trigger switching the MUX to incompatible state.
+ */
 static int
+enable_synaptics_mux(struct psm_softc *sc, enum probearg arg)
+{
+	KBDC kbdc = sc->kbdc;
+	int port, version;
+	int probe = FALSE;
+	int active_ports_count = 0;
+	int active_ports_mask = 0;
+
+	version = enable_aux_mux(kbdc);
+	if (version == -1)
+		return (FALSE);
+
+	for (port = 0; port < KBDC_AUX_MUX_NUM_PORTS; port++) {
+		VLOG(3, (LOG_DEBUG, "aux_mux: ping port %d\n", port));
+		set_active_aux_mux_port(kbdc, port);
+		if (enable_aux_dev(kbdc) && disable_aux_dev(kbdc)) {
+			active_ports_count++;
+			active_ports_mask |= 1 << port;
+		}
+	}
+
+	if (verbose >= 2)
+		printf("Active Multiplexing PS/2 controller v%d.%d with %d "
+		    "active port(s)\n", version >> 4 & 0x0f, version & 0x0f,
+		    active_ports_count);
+
+	/* psm has a special support for GenMouse + SynTouchpad combination */
+	if (active_ports_count >= 2) {
+		for (port = 0; port < KBDC_AUX_MUX_NUM_PORTS; port++) {
+			if ((active_ports_mask & 1 << port) == 0)
+				continue;
+			VLOG(3, (LOG_DEBUG, "aux_mux: probe port %d\n", port));
+			set_active_aux_mux_port(kbdc, port);
+			probe = enable_synaptics(sc, arg);
+			if (probe) {
+				if (arg == PROBE)
+					sc->muxport = port;
+				break;
+			}
+		}
+	}
+
+	/* IRQ handler does not support active multiplexing mode */
+	disable_aux_mux(kbdc);
+
+	return (probe);
+}
+
+static int
 enable_synaptics(struct psm_softc *sc, enum probearg arg)
 {
 	device_t psmcpnp;
@@ -6047,7 +6200,7 @@ enable_synaptics(struct psm_softc *sc, enum probearg a
 	KBDC kbdc = sc->kbdc;
 	synapticshw_t synhw;
 	int status[3];
-	int buttons, middle_byte;
+	int buttons;
 
 	VLOG(3, (LOG_DEBUG, "synaptics: BEGIN init\n"));
 
@@ -6064,8 +6217,7 @@ enable_synaptics(struct psm_softc *sc, enum probearg a
 		return (FALSE);
 	if (get_mouse_status(kbdc, status, 0, 3) != 3)
 		return (FALSE);
-	middle_byte = status[1];
-	if (middle_byte != 0x46 && middle_byte != 0x47)
+	if (status[1] != 0x47)
 		return (FALSE);
 
 	bzero(&synhw, sizeof(synhw));
@@ -6076,15 +6228,7 @@ enable_synaptics(struct psm_softc *sc, enum probearg a
 		printf("Synaptics Touchpad v%d.%d\n", synhw.infoMajor,
 		    synhw.infoMinor);
 
-	/*
-	 * Most synaptics touchpads return 0x47 in middle byte in responce to
-	 * identify command as stated in p.4.4 of "Synaptics PS/2 TouchPad
-	 * Interfacing Guide" and we only support v4.0 or better. But some
-	 * devices return 0x46 here and have a different numbering scheme.
-	 * In the case of 0x46, we allow versions as low as v2.0
-	 */
-	if ((middle_byte == 0x47 && synhw.infoMajor < 4) ||
-	    (middle_byte == 0x46 && synhw.infoMajor < 2)) {
+	if (synhw.infoMajor < 4) {
 		printf("  Unsupported (pre-v4) Touchpad detected\n");
 		return (FALSE);
 	}
@@ -6125,7 +6269,7 @@ enable_synaptics(struct psm_softc *sc, enum probearg a
 		return (FALSE);
 	if (get_mouse_status(kbdc, status, 0, 3) != 3)
 		return (FALSE);
-	if (!SYNAPTICS_VERSION_GE(synhw, 7, 5) && status[1] != middle_byte) {
+	if (!SYNAPTICS_VERSION_GE(synhw, 7, 5) && status[1] != 0x47) {
 		printf("  Failed to read extended capability bits\n");
 		return (FALSE);
 	}
@@ -6134,29 +6278,10 @@ enable_synaptics(struct psm_softc *sc, enum probearg a
 	    sc->unit);
 	psmcpnp_sc = (psmcpnp != NULL) ? device_get_softc(psmcpnp) : NULL;
 
-	/*
-	 * Set conservative defaults for 0x46 middle byte touchpads
-	 * as ExtendedQueries return bogus data.
-	 */
-	if (middle_byte == 0x46) {
-		synhw.capExtended = 1;
-		synhw.capPalmDetect = 1;
-		synhw.capPassthrough = 1;
-		synhw.capMultiFinger = 1;
-		synhw.maximumXCoord = SYNAPTICS_DEFAULT_MAX_X;
-		synhw.maximumYCoord = SYNAPTICS_DEFAULT_MAX_Y;
-		synhw.minimumXCoord = SYNAPTICS_DEFAULT_MIN_X;
-		synhw.minimumYCoord = SYNAPTICS_DEFAULT_MIN_Y;
-		/* Enable multitouch mode for HW v8.1 devices */
-		if (psmcpnp_sc != NULL &&
-		    psmcpnp_sc->type == PSMCPNP_HPSYN81)
-			synhw.capReportsV = 1;
-	} else
-		synhw.capExtended = (status[0] & 0x80) != 0;
-
 	/* Set the different capabilities when they exist. */
 	buttons = 0;
-	if (synhw.capExtended && middle_byte == 0x47) {
+	synhw.capExtended = (status[0] & 0x80) != 0;
+	if (synhw.capExtended) {
 		synhw.nExtendedQueries = (status[0] & 0x70) >> 4;
 		synhw.capMiddle        = (status[0] & 0x04) != 0;
 		synhw.capPassthrough   = (status[2] & 0x80) != 0;
@@ -6278,8 +6403,12 @@ enable_synaptics(struct psm_softc *sc, enum probearg a
 				synhw.maximumYCoord = (status[2] << 5) |
 						     ((status[1] & 0xf0) >> 3);
 			} else {
-				synhw.maximumXCoord = SYNAPTICS_DEFAULT_MAX_X;
-				synhw.maximumYCoord = SYNAPTICS_DEFAULT_MAX_Y;
+				/*
+				 * Typical bezel limits. Taken from 'Synaptics
+				 * PS/2 * TouchPad Interfacing Guide' p.3.2.3.
+				 */
+				synhw.maximumXCoord = 5472;
+				synhw.maximumYCoord = 4448;
 			}
 
 			if (synhw.capReportsMin) {
@@ -6295,8 +6424,12 @@ enable_synaptics(struct psm_softc *sc, enum probearg a
 				synhw.minimumYCoord = (status[2] << 5) |
 						     ((status[1] & 0xf0) >> 3);
 			} else {
-				synhw.minimumXCoord = SYNAPTICS_DEFAULT_MIN_X;
-				synhw.minimumYCoord = SYNAPTICS_DEFAULT_MIN_Y;
+				/*
+				 * Typical bezel limits. Taken from 'Synaptics
+				 * PS/2 * TouchPad Interfacing Guide' p.3.2.3.
+				 */
+				synhw.minimumXCoord = 1472;
+				synhw.minimumYCoord = 1408;
 			}
 
 			/*
@@ -6382,7 +6515,7 @@ enable_synaptics(struct psm_softc *sc, enum probearg a
 		return (FALSE);
 	if (get_mouse_status(kbdc, status, 0, 3) != 3)
 		return (FALSE);
-	if (!SYNAPTICS_VERSION_GE(synhw, 7, 5) && status[1] != middle_byte) {
+	if (!SYNAPTICS_VERSION_GE(synhw, 7, 5) && status[1] != 0x47) {
 		printf("  Failed to read mode byte\n");
 		return (FALSE);
 	}
@@ -7205,12 +7338,6 @@ static struct isa_pnp_id forcepad_ids[] = {
 	{ 0 }
 };
 
-/* List of HW v8.1 synaptics touchpads erroneously detected as HW v2.0 */
-static struct isa_pnp_id hpsyn81_ids[] = {
-	{ 0x9e012e4f, "HP PS/2 trackpad port" },	/* SYN019E, EB 9470 */
-	{ 0 }
-};
-
 static int
 create_a_copy(device_t atkbdc, device_t me)
 {
@@ -7244,8 +7371,6 @@ psmcpnp_probe(device_t dev)
 
 	if (ISA_PNP_PROBE(device_get_parent(dev), dev, forcepad_ids) == 0)
 		sc->type = PSMCPNP_FORCEPAD;
-	else if(ISA_PNP_PROBE(device_get_parent(dev), dev, hpsyn81_ids) == 0)
-		sc->type = PSMCPNP_HPSYN81;
 	else if (ISA_PNP_PROBE(device_get_parent(dev), dev, psmcpnp_ids) == 0)
 		sc->type = PSMCPNP_GENERIC;
 	else

Modified: projects/clang700-import/sys/dev/sfxge/common/ef10_ev.c
==============================================================================
--- projects/clang700-import/sys/dev/sfxge/common/ef10_ev.c	Sun Nov 25 09:37:57 2018	(r340917)
+++ projects/clang700-import/sys/dev/sfxge/common/ef10_ev.c	Sun Nov 25 11:15:01 2018	(r340918)
@@ -466,7 +466,7 @@ ef10_ev_qcreate(
 	__in		efx_nic_t *enp,
 	__in		unsigned int index,
 	__in		efsys_mem_t *esmp,
-	__in		size_t n,
+	__in		size_t ndescs,
 	__in		uint32_t id,
 	__in		uint32_t us,
 	__in		uint32_t flags,
@@ -480,7 +480,8 @@ ef10_ev_qcreate(
 	EFX_STATIC_ASSERT(ISP2(EFX_EVQ_MAXNEVS));
 	EFX_STATIC_ASSERT(ISP2(EFX_EVQ_MINNEVS));
 
-	if (!ISP2(n) || (n < EFX_EVQ_MINNEVS) || (n > EFX_EVQ_MAXNEVS)) {
+	if (!ISP2(ndescs) ||
+	    (ndescs < EFX_EVQ_MINNEVS) || (ndescs > EFX_EVQ_MAXNEVS)) {
 		rc = EINVAL;
 		goto fail1;
 	}
@@ -529,7 +530,8 @@ ef10_ev_qcreate(
 		 * it will choose the best settings for low latency, otherwise
 		 * it will choose the best settings for throughput.
 		 */
-		rc = efx_mcdi_init_evq_v2(enp, index, esmp, n, irq, us, flags);
+		rc = efx_mcdi_init_evq_v2(enp, index, esmp, ndescs, irq, us,
+		    flags);
 		if (rc != 0)
 			goto fail4;
 	} else {
@@ -545,7 +547,7 @@ ef10_ev_qcreate(
 		 * to choose it.)
 		 */
 		boolean_t low_latency = encp->enc_datapath_cap_evb ? 0 : 1;
-		rc = efx_mcdi_init_evq(enp, index, esmp, n, irq, us, flags,
+		rc = efx_mcdi_init_evq(enp, index, esmp, ndescs, irq, us, flags,
 		    low_latency);
 		if (rc != 0)
 			goto fail5;
@@ -576,7 +578,7 @@ ef10_ev_qdestroy(
 	EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
 	    enp->en_family == EFX_FAMILY_MEDFORD);
 
-	(void) efx_mcdi_fini_evq(eep->ee_enp, eep->ee_index);
+	(void) efx_mcdi_fini_evq(enp, eep->ee_index);
 }
 
 	__checkReturn	efx_rc_t
@@ -1347,9 +1349,11 @@ ef10_ev_rxlabel_init(
 	__in		efx_rxq_type_t type)
 {
 	efx_evq_rxq_state_t *eersp;
-	boolean_t packed_stream = (type >= EFX_RXQ_TYPE_PACKED_STREAM_1M) &&
-	    (type <= EFX_RXQ_TYPE_PACKED_STREAM_64K);
+#if EFSYS_OPT_RX_PACKED_STREAM
+	boolean_t packed_stream = (type == EFX_RXQ_TYPE_PACKED_STREAM);
+#endif
 
+	_NOTE(ARGUNUSED(type))
 	EFSYS_ASSERT3U(label, <, EFX_ARRAY_SIZE(eep->ee_rxq_state));
 	eersp = &eep->ee_rxq_state[label];
 
@@ -1387,8 +1391,6 @@ ef10_ev_rxlabel_init(
 		EFSYS_ASSERT3U(eersp->eers_rx_packed_stream_credits, <=,
 		    EFX_RX_PACKED_STREAM_MAX_CREDITS);
 	}
-#else
-	EFSYS_ASSERT(!packed_stream);
 #endif
 }
 

Modified: projects/clang700-import/sys/dev/sfxge/common/ef10_filter.c
==============================================================================
--- projects/clang700-import/sys/dev/sfxge/common/ef10_filter.c	Sun Nov 25 09:37:57 2018	(r340917)
+++ projects/clang700-import/sys/dev/sfxge/common/ef10_filter.c	Sun Nov 25 11:15:01 2018	(r340918)
@@ -998,7 +998,7 @@ ef10_filter_supported_filters(
 	size_t list_length;
 	uint32_t i;
 	efx_rc_t rc;
-	uint32_t all_filter_flags =
+	efx_filter_match_flags_t all_filter_flags =
 	    (EFX_FILTER_MATCH_REM_HOST | EFX_FILTER_MATCH_LOC_HOST |
 	    EFX_FILTER_MATCH_REM_MAC | EFX_FILTER_MATCH_REM_PORT |
 	    EFX_FILTER_MATCH_LOC_MAC | EFX_FILTER_MATCH_LOC_PORT |
@@ -1246,8 +1246,8 @@ typedef struct ef10_filter_encap_entry_s {
 	uint32_t		inner_frame_match;
 } ef10_filter_encap_entry_t;
 
-#define EF10_ENCAP_FILTER_ENTRY(ipv, encap_type, inner_frame_match)	\
-	{ EFX_ETHER_TYPE_##ipv, EFX_TUNNEL_PROTOCOL_##encap_type,		\
+#define	EF10_ENCAP_FILTER_ENTRY(ipv, encap_type, inner_frame_match)	\
+	{ EFX_ETHER_TYPE_##ipv, EFX_TUNNEL_PROTOCOL_##encap_type,	\
 	    EFX_FILTER_INNER_FRAME_MATCH_UNKNOWN_##inner_frame_match }
 
 static ef10_filter_encap_entry_t ef10_filter_encap_list[] = {
@@ -1308,8 +1308,8 @@ ef10_filter_insert_encap_filters(
 		 */
 		if ((mulcst == B_FALSE) &&
 		    (encap_filter->inner_frame_match ==
-		     EFX_FILTER_INNER_FRAME_MATCH_UNKNOWN_MCAST_DST))
-				continue;
+		    EFX_FILTER_INNER_FRAME_MATCH_UNKNOWN_MCAST_DST))
+			continue;
 
 		efx_filter_spec_init_rx(&spec, EFX_FILTER_PRI_AUTO,
 					filter_flags,

Modified: projects/clang700-import/sys/dev/sfxge/common/ef10_impl.h
==============================================================================
--- projects/clang700-import/sys/dev/sfxge/common/ef10_impl.h	Sun Nov 25 09:37:57 2018	(r340917)
+++ projects/clang700-import/sys/dev/sfxge/common/ef10_impl.h	Sun Nov 25 11:15:01 2018	(r340918)
@@ -52,8 +52,9 @@ extern "C" {
  */
 #define	EF10_NVRAM_CHUNK 0x80
 
-/* Alignment requirement for value written to RX WPTR:
- *  the WPTR must be aligned to an 8 descriptor boundary
+/*
+ * Alignment requirement for value written to RX WPTR: the WPTR must be aligned
+ * to an 8 descriptor boundary.
  */
 #define	EF10_RX_WPTR_ALIGN 8
 
@@ -82,7 +83,7 @@ ef10_ev_qcreate(
 	__in		efx_nic_t *enp,
 	__in		unsigned int index,
 	__in		efsys_mem_t *esmp,
-	__in		size_t n,
+	__in		size_t ndescs,
 	__in		uint32_t id,
 	__in		uint32_t us,
 	__in		uint32_t flags,
@@ -507,8 +508,7 @@ ef10_nvram_buffer_find_item_start(
 	__in_bcount(buffer_size)
 				caddr_t bufferp,
 	__in			size_t buffer_size,
-	__out			uint32_t *startp
-	);
+	__out			uint32_t *startp);
 
 extern	__checkReturn		efx_rc_t
 ef10_nvram_buffer_find_end(
@@ -516,8 +516,7 @@ ef10_nvram_buffer_find_end(
 				caddr_t bufferp,
 	__in			size_t buffer_size,
 	__in			uint32_t offset,
-	__out			uint32_t *endp
-	);
+	__out			uint32_t *endp);
 
 extern	__checkReturn	__success(return != B_FALSE)	boolean_t
 ef10_nvram_buffer_find_item(
@@ -526,8 +525,7 @@ ef10_nvram_buffer_find_item(
 	__in			size_t buffer_size,
 	__in			uint32_t offset,
 	__out			uint32_t *startp,
-	__out			uint32_t *lengthp
-	);
+	__out			uint32_t *lengthp);
 
 extern	__checkReturn		efx_rc_t
 ef10_nvram_buffer_get_item(
@@ -539,8 +537,7 @@ ef10_nvram_buffer_get_item(
 	__out_bcount_part(item_max_size, *lengthp)
 				caddr_t itemp,
 	__in			size_t item_max_size,
-	__out			uint32_t *lengthp
-	);
+	__out			uint32_t *lengthp);
 
 extern	__checkReturn		efx_rc_t
 ef10_nvram_buffer_insert_item(
@@ -550,8 +547,7 @@ ef10_nvram_buffer_insert_item(
 	__in			uint32_t offset,
 	__in_bcount(length)	caddr_t keyp,
 	__in			uint32_t length,
-	__out			uint32_t *lengthp
-	);
+	__out			uint32_t *lengthp);
 
 extern	__checkReturn		efx_rc_t
 ef10_nvram_buffer_delete_item(
@@ -560,15 +556,13 @@ ef10_nvram_buffer_delete_item(
 	__in			size_t buffer_size,
 	__in			uint32_t offset,
 	__in			uint32_t length,
-	__in			uint32_t end
-	);
+	__in			uint32_t end);
 
 extern	__checkReturn		efx_rc_t
 ef10_nvram_buffer_finish(
 	__in_bcount(buffer_size)
 				caddr_t bufferp,
-	__in			size_t buffer_size
-	);
+	__in			size_t buffer_size);
 
 #endif	/* EFSYS_OPT_NVRAM */
 
@@ -670,7 +664,7 @@ ef10_tx_qcreate(
 	__in		unsigned int index,
 	__in		unsigned int label,
 	__in		efsys_mem_t *esmp,
-	__in		size_t n,
+	__in		size_t ndescs,
 	__in		uint32_t id,
 	__in		uint16_t flags,
 	__in		efx_evq_t *eep,
@@ -681,13 +675,13 @@ extern		void
 ef10_tx_qdestroy(
 	__in		efx_txq_t *etp);
 
-extern	__checkReturn	efx_rc_t
+extern	__checkReturn		efx_rc_t
 ef10_tx_qpost(
-	__in		efx_txq_t *etp,
-	__in_ecount(n)	efx_buffer_t *eb,
-	__in		unsigned int n,
-	__in		unsigned int completed,
-	__inout		unsigned int *addedp);
+	__in			efx_txq_t *etp,
+	__in_ecount(ndescs)	efx_buffer_t *ebp,
+	__in			unsigned int ndescs,
+	__in			unsigned int completed,
+	__inout			unsigned int *addedp);
 
 extern			void
 ef10_tx_qpush(
@@ -797,7 +791,7 @@ ef10_tx_qstats_update(
 
 typedef uint32_t	efx_piobuf_handle_t;
 
-#define	EFX_PIOBUF_HANDLE_INVALID	((efx_piobuf_handle_t) -1)
+#define	EFX_PIOBUF_HANDLE_INVALID	((efx_piobuf_handle_t)-1)
 
 extern	__checkReturn	efx_rc_t
 ef10_nic_pio_alloc(
@@ -956,14 +950,14 @@ ef10_rx_prefix_pktlen(
 	__in		uint8_t *buffer,
 	__out		uint16_t *lengthp);
 
-extern			void
+extern				void
 ef10_rx_qpost(
-	__in		efx_rxq_t *erp,
-	__in_ecount(n)	efsys_dma_addr_t *addrp,
-	__in		size_t size,
-	__in		unsigned int n,
-	__in		unsigned int completed,
-	__in		unsigned int added);
+	__in			efx_rxq_t *erp,
+	__in_ecount(ndescs)	efsys_dma_addr_t *addrp,
+	__in			size_t size,
+	__in			unsigned int ndescs,
+	__in			unsigned int completed,
+	__in			unsigned int added);
 
 extern			void
 ef10_rx_qpush(
@@ -985,9 +979,11 @@ ef10_rx_qcreate(
 	__in		unsigned int index,
 	__in		unsigned int label,
 	__in		efx_rxq_type_t type,
+	__in		uint32_t type_data,
 	__in		efsys_mem_t *esmp,
-	__in		size_t n,
+	__in		size_t ndescs,
 	__in		uint32_t id,
+	__in		unsigned int flags,
 	__in		efx_evq_t *eep,
 	__in		efx_rxq_t *erp);
 
@@ -1036,7 +1032,7 @@ typedef struct ef10_filter_entry_s {
  * IPv4 or IPv6 outer frame, VXLAN, GENEVE or NVGRE packet type, and unicast or
  * multicast inner frames.
  */
-#define EFX_EF10_FILTER_ENCAP_FILTERS_MAX	12
+#define	EFX_EF10_FILTER_ENCAP_FILTERS_MAX	12
 
 typedef struct ef10_filter_table_s {
 	ef10_filter_entry_t	eft_entry[EFX_EF10_FILTER_TBL_ROWS];
@@ -1203,9 +1199,9 @@ ef10_external_port_mapping(
 /* Minimum space for packet in packed stream mode */
 #define	EFX_RX_PACKED_STREAM_MIN_PACKET_SPACE		     \
 	P2ROUNDUP(EFX_RX_PACKED_STREAM_RX_PREFIX_SIZE +	     \
-		  EFX_MAC_PDU_MIN +			     \
-		  EFX_RX_PACKED_STREAM_ALIGNMENT,	     \
-		  EFX_RX_PACKED_STREAM_ALIGNMENT)
+	    EFX_MAC_PDU_MIN +				     \
+	    EFX_RX_PACKED_STREAM_ALIGNMENT,		     \
+	    EFX_RX_PACKED_STREAM_ALIGNMENT)
 
 /* Maximum number of credits */
 #define	EFX_RX_PACKED_STREAM_MAX_CREDITS 127

Modified: projects/clang700-import/sys/dev/sfxge/common/ef10_nvram.c
==============================================================================
--- projects/clang700-import/sys/dev/sfxge/common/ef10_nvram.c	Sun Nov 25 09:37:57 2018	(r340917)
+++ projects/clang700-import/sys/dev/sfxge/common/ef10_nvram.c	Sun Nov 25 11:15:01 2018	(r340918)
@@ -675,6 +675,7 @@ ef10_nvram_buffer_validate(
 	int pos;
 	efx_rc_t rc;
 
+	_NOTE(ARGUNUSED(enp, partn))
 	EFX_STATIC_ASSERT(sizeof (*header) <= EF10_NVRAM_CHUNK);
 
 	if ((partn_data == NULL) || (partn_size == 0)) {
@@ -1284,6 +1285,8 @@ ef10_nvram_buf_read_tlv(
 	size_t length;
 	caddr_t value;
 	efx_rc_t rc;
+
+	_NOTE(ARGUNUSED(enp))
 
 	if ((seg_data == NULL) || (max_seg_size == 0)) {
 		rc = EINVAL;

Modified: projects/clang700-import/sys/dev/sfxge/common/ef10_phy.c
==============================================================================
--- projects/clang700-import/sys/dev/sfxge/common/ef10_phy.c	Sun Nov 25 09:37:57 2018	(r340917)
+++ projects/clang700-import/sys/dev/sfxge/common/ef10_phy.c	Sun Nov 25 11:15:01 2018	(r340918)
@@ -283,7 +283,9 @@ ef10_phy_reconfigure(
 	uint8_t payload[MAX(MC_CMD_SET_LINK_IN_LEN,
 			    MC_CMD_SET_LINK_OUT_LEN)];
 	uint32_t cap_mask;
+#if EFSYS_OPT_PHY_LED_CONTROL
 	unsigned int led_mode;
+#endif
 	unsigned int speed;
 	boolean_t supported;
 	efx_rc_t rc;

Modified: projects/clang700-import/sys/dev/sfxge/common/ef10_rx.c
==============================================================================
--- projects/clang700-import/sys/dev/sfxge/common/ef10_rx.c	Sun Nov 25 09:37:57 2018	(r340917)
+++ projects/clang700-import/sys/dev/sfxge/common/ef10_rx.c	Sun Nov 25 11:15:01 2018	(r340918)
@@ -41,19 +41,20 @@ __FBSDID("$FreeBSD$");
 static	__checkReturn	efx_rc_t
 efx_mcdi_init_rxq(
 	__in		efx_nic_t *enp,
-	__in		uint32_t size,
+	__in		uint32_t ndescs,
 	__in		uint32_t target_evq,
 	__in		uint32_t label,
 	__in		uint32_t instance,
 	__in		efsys_mem_t *esmp,
 	__in		boolean_t disable_scatter,
+	__in		boolean_t want_inner_classes,
 	__in		uint32_t ps_bufsize)
 {
 	efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
 	efx_mcdi_req_t req;
 	uint8_t payload[MAX(MC_CMD_INIT_RXQ_EXT_IN_LEN,
 			    MC_CMD_INIT_RXQ_EXT_OUT_LEN)];
-	int npages = EFX_RXQ_NBUFS(size);
+	int npages = EFX_RXQ_NBUFS(ndescs);
 	int i;
 	efx_qword_t *dma_addr;

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201811251115.wAPBF13B076759>