Module Name:    src
Committed By:   mlelstv
Date:           Mon Aug  1 07:34:28 UTC 2022

Modified Files:
        src/sys/dev/ic: ahcisata_core.c bcmgenet.c nslm7x.c nvmereg.h nvmevar.h
            rtl8169.c tulip.c tulipreg.h

Log Message:
Also fix shift values for SCT constants.


To generate a diff of this commit:
cvs rdiff -u -r1.105 -r1.106 src/sys/dev/ic/ahcisata_core.c
cvs rdiff -u -r1.11 -r1.12 src/sys/dev/ic/bcmgenet.c
cvs rdiff -u -r1.74 -r1.75 src/sys/dev/ic/nslm7x.c
cvs rdiff -u -r1.17 -r1.18 src/sys/dev/ic/nvmereg.h
cvs rdiff -u -r1.24 -r1.25 src/sys/dev/ic/nvmevar.h
cvs rdiff -u -r1.172 -r1.173 src/sys/dev/ic/rtl8169.c
cvs rdiff -u -r1.205 -r1.206 src/sys/dev/ic/tulip.c
cvs rdiff -u -r1.41 -r1.42 src/sys/dev/ic/tulipreg.h

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

Modified files:

Index: src/sys/dev/ic/ahcisata_core.c
diff -u src/sys/dev/ic/ahcisata_core.c:1.105 src/sys/dev/ic/ahcisata_core.c:1.106
--- src/sys/dev/ic/ahcisata_core.c:1.105	Fri Nov 19 23:46:55 2021
+++ src/sys/dev/ic/ahcisata_core.c	Mon Aug  1 07:34:28 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: ahcisata_core.c,v 1.105 2021/11/19 23:46:55 rin Exp $	*/
+/*	$NetBSD: ahcisata_core.c,v 1.106 2022/08/01 07:34:28 mlelstv Exp $	*/
 
 /*
  * Copyright (c) 2006 Manuel Bouyer.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ahcisata_core.c,v 1.105 2021/11/19 23:46:55 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ahcisata_core.c,v 1.106 2022/08/01 07:34:28 mlelstv Exp $");
 
 #include <sys/types.h>
 #include <sys/malloc.h>
@@ -828,8 +828,8 @@ ahci_exec_fis(struct ata_channel *chp, i
 				 */
 				return ERROR;
 			}
-			aprint_debug("%s port %d: error 0x%x sending FIS\n",
-			    AHCINAME(sc), chp->ch_channel, is);
+			aprint_debug("%s port %d: error 0x%x sending FIS, t %d\n",
+			    AHCINAME(sc), chp->ch_channel, is, timeout);
 			return ERR_DF;
 		}
 		ata_delay(chp, 10, "ahcifis", flags);
@@ -1635,9 +1635,27 @@ ahci_channel_stop(struct ahci_softc *sc,
 		/* XXX controller reset ? */
 		return;
 	}
-
 	if (sc->sc_channel_stop)
 		sc->sc_channel_stop(sc, chp);
+	if ((AHCI_READ(sc, AHCI_P_CMD(chp->ch_channel)) & AHCI_P_CMD_FRE) == 0)
+		return;
+
+	AHCI_WRITE(sc, AHCI_P_CMD(chp->ch_channel),
+	    AHCI_READ(sc, AHCI_P_CMD(chp->ch_channel)) & ~AHCI_P_CMD_FRE);
+	/* wait 1s for FIS receive to stop */
+	for (i = 0; i <100; i++) {
+		if ((AHCI_READ(sc, AHCI_P_CMD(chp->ch_channel)) & AHCI_P_CMD_FR)
+		    == 0)
+			break;
+		if (flags & AT_WAIT)
+			tsleep(&sc, PRIBIO, "ahcistop", mstohz(10));
+		else
+			delay(10000);
+	}
+	if (AHCI_READ(sc, AHCI_P_CMD(chp->ch_channel)) & AHCI_P_CMD_FR) {
+		printf("%s: channel FIS receive wouldn't stop\n", AHCINAME(sc));
+		/* XXX controller reset ? */
+	}
 }
 
 static void

Index: src/sys/dev/ic/bcmgenet.c
diff -u src/sys/dev/ic/bcmgenet.c:1.11 src/sys/dev/ic/bcmgenet.c:1.12
--- src/sys/dev/ic/bcmgenet.c:1.11	Fri Dec 31 14:25:22 2021
+++ src/sys/dev/ic/bcmgenet.c	Mon Aug  1 07:34:28 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: bcmgenet.c,v 1.11 2021/12/31 14:25:22 riastradh Exp $ */
+/* $NetBSD: bcmgenet.c,v 1.12 2022/08/01 07:34:28 mlelstv Exp $ */
 
 /*-
  * Copyright (c) 2020 Jared McNeill <jmcne...@invisible.ca>
@@ -34,7 +34,7 @@
 #include "opt_ddb.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bcmgenet.c,v 1.11 2021/12/31 14:25:22 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcmgenet.c,v 1.12 2022/08/01 07:34:28 mlelstv Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -730,7 +730,8 @@ genet_rxintr(struct genet_softc *sc, int
 			bus_dmamap_sync(sc->sc_rx.buf_tag, sc->sc_rx.buf_map[index].map,
 			    0, sc->sc_rx.buf_map[index].map->dm_mapsize,
 			    BUS_DMASYNC_POSTREAD);
-		}
+		} else
+			device_printf(sc->sc_dev, "RXINTR empty %d\n",index);
 		bus_dmamap_unload(sc->sc_rx.buf_tag, sc->sc_rx.buf_map[index].map);
 		sc->sc_rx.buf_map[index].mbuf = NULL;
 
@@ -784,18 +785,19 @@ genet_txintr(struct genet_softc *sc, int
 				bus_dmamap_sync(sc->sc_tx.buf_tag, bmap->map,
 				    0, bmap->map->dm_mapsize,
 				    BUS_DMASYNC_POSTWRITE);
-			}
+			} else
+				device_printf(sc->sc_dev, "TXINTR empty %d\n",i);
 			bus_dmamap_unload(sc->sc_tx.buf_tag, bmap->map);
 			m_freem(bmap->mbuf);
 			bmap->mbuf = NULL;
 			++pkts;
 		}
 
-		ifp->if_flags &= ~IFF_OACTIVE;
 		i = TX_NEXT(i);
 		sc->sc_tx.cidx = (sc->sc_tx.cidx + 1) & 0xffff;
 	}
 
+	ifp->if_flags &= ~IFF_OACTIVE;
 	if_statadd(ifp, if_opackets, pkts);
 
 	if (pkts != 0)

Index: src/sys/dev/ic/nslm7x.c
diff -u src/sys/dev/ic/nslm7x.c:1.74 src/sys/dev/ic/nslm7x.c:1.75
--- src/sys/dev/ic/nslm7x.c:1.74	Mon Sep  7 00:32:28 2020
+++ src/sys/dev/ic/nslm7x.c	Mon Aug  1 07:34:28 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: nslm7x.c,v 1.74 2020/09/07 00:32:28 mrg Exp $ */
+/*	$NetBSD: nslm7x.c,v 1.75 2022/08/01 07:34:28 mlelstv Exp $ */
 
 /*-
  * Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nslm7x.c,v 1.74 2020/09/07 00:32:28 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nslm7x.c,v 1.75 2022/08/01 07:34:28 mlelstv Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -2247,6 +2247,7 @@ lm_attach(struct lm_softc *lmsc)
 		if ((rv = sysmon_envsys_sensor_attach(lmsc->sc_sme,
 			    &lmsc->sensors[i])) != 0) {
 			sysmon_envsys_destroy(lmsc->sc_sme);
+			lmsc->sc_sme = NULL;
 			aprint_error_dev(lmsc->sc_dev,
 			    "sysmon_envsys_sensor_attach() returned %d\n", rv);
 			return;
@@ -2270,6 +2271,7 @@ lm_attach(struct lm_softc *lmsc)
 		aprint_error_dev(lmsc->sc_dev,
 		    "unable to register with sysmon\n");
 		sysmon_envsys_destroy(lmsc->sc_sme);
+		lmsc->sc_sme = NULL;
 	}
 	if (!pmf_device_register(lmsc->sc_dev, NULL, NULL))
 		aprint_error_dev(lmsc->sc_dev,
@@ -2285,7 +2287,9 @@ lm_detach(struct lm_softc *lmsc)
 {
 	callout_halt(&lmsc->sc_callout, NULL);
 	callout_destroy(&lmsc->sc_callout);
-	sysmon_envsys_unregister(lmsc->sc_sme);
+
+	if (lmsc->sc_sme != NULL)
+		sysmon_envsys_unregister(lmsc->sc_sme);
 	pmf_device_deregister(lmsc->sc_dev);
 }
 

Index: src/sys/dev/ic/nvmereg.h
diff -u src/sys/dev/ic/nvmereg.h:1.17 src/sys/dev/ic/nvmereg.h:1.18
--- src/sys/dev/ic/nvmereg.h:1.17	Sun Jul 31 11:58:37 2022
+++ src/sys/dev/ic/nvmereg.h	Mon Aug  1 07:34:28 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: nvmereg.h,v 1.17 2022/07/31 11:58:37 mlelstv Exp $	*/
+/*	$NetBSD: nvmereg.h,v 1.18 2022/08/01 07:34:28 mlelstv Exp $	*/
 /*	$OpenBSD: nvmereg.h,v 1.10 2016/04/14 11:18:32 dlg Exp $ */
 
 /*
@@ -242,10 +242,10 @@ struct nvme_cqe {
 #define NVME_CQE_M		__BIT(14)
 #define NVME_CQE_SCT_MASK	__BITS(9, 11)
 #define NVME_CQE_SCT(_f)	((_f) & NVME_CQE_SCT_MASK)
-#define  NVME_CQE_SCT_GENERIC		(0x00 << 8)
-#define  NVME_CQE_SCT_COMMAND		(0x01 << 8)
-#define  NVME_CQE_SCT_MEDIAERR		(0x02 << 8)
-#define  NVME_CQE_SCT_VENDOR		(0x07 << 8)
+#define  NVME_CQE_SCT_GENERIC		(0x00 << 9)
+#define  NVME_CQE_SCT_COMMAND		(0x01 << 9)
+#define  NVME_CQE_SCT_MEDIAERR		(0x02 << 9)
+#define  NVME_CQE_SCT_VENDOR		(0x07 << 9)
 #define NVME_CQE_SC_MASK	__BITS(1, 8)
 #define NVME_CQE_SC(_f)		((_f) & NVME_CQE_SC_MASK)
 /* generic command status codes */

Index: src/sys/dev/ic/nvmevar.h
diff -u src/sys/dev/ic/nvmevar.h:1.24 src/sys/dev/ic/nvmevar.h:1.25
--- src/sys/dev/ic/nvmevar.h:1.24	Sat May  7 08:20:04 2022
+++ src/sys/dev/ic/nvmevar.h	Mon Aug  1 07:34:28 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: nvmevar.h,v 1.24 2022/05/07 08:20:04 skrll Exp $	*/
+/*	$NetBSD: nvmevar.h,v 1.25 2022/08/01 07:34:28 mlelstv Exp $	*/
 /*	$OpenBSD: nvmevar.h,v 1.8 2016/04/14 11:18:32 dlg Exp $ */
 
 /*
@@ -23,7 +23,6 @@
 #include <sys/mutex.h>
 #include <sys/pool.h>
 #include <sys/queue.h>
-#include <sys/buf.h>
 
 struct nvme_dmamem {
 	bus_dmamap_t		ndm_map;
@@ -199,18 +198,29 @@ void	nvme_softintr_msi(void *);
 static __inline struct nvme_queue *
 nvme_get_q(struct nvme_softc *sc, struct buf *bp, bool waitok)
 {
-	struct cpu_info *ci = (bp && bp->b_ci) ? bp->b_ci : curcpu();
+	struct nvme_queue *q;
+	u_int cpunum;
 
-	/*
-	 * Find a queue with available ccbs, preferring the originating CPU's queue.
-	 */
-
-	for (u_int qoff = 0; qoff < sc->sc_nq; qoff++) {
-		struct nvme_queue *q = sc->sc_q[(cpu_index(ci) + qoff) % sc->sc_nq];
-		if (!SIMPLEQ_EMPTY(&q->q_ccb_list) || waitok)
-			return q;
+	cpunum = cpu_index(curcpu());
+
+	/* try own queue */
+	q = sc->sc_q[cpunum % sc->sc_nq];
+	if (waitok)
+		return q;
+
+	/* if busy, search for an idle queue */
+	if (SIMPLEQ_EMPTY(&q->q_ccb_list)) {
+		for (u_int qoff = 1; qoff < sc->sc_nq; qoff++) {
+			struct nvme_queue *t;
+			t = sc->sc_q[(cpunum + qoff) % sc->sc_nq];
+			if (t->q_sq_tail == t->q_cq_head) {
+				q = t;
+				break;
+			}
+		}
 	}
-	return NULL;
+
+	return q;
 }
 
 /*

Index: src/sys/dev/ic/rtl8169.c
diff -u src/sys/dev/ic/rtl8169.c:1.172 src/sys/dev/ic/rtl8169.c:1.173
--- src/sys/dev/ic/rtl8169.c:1.172	Sat Jun 25 02:46:15 2022
+++ src/sys/dev/ic/rtl8169.c	Mon Aug  1 07:34:28 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: rtl8169.c,v 1.172 2022/06/25 02:46:15 tsutsui Exp $	*/
+/*	$NetBSD: rtl8169.c,v 1.173 2022/08/01 07:34:28 mlelstv Exp $	*/
 
 /*
  * Copyright (c) 1997, 1998-2003
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rtl8169.c,v 1.172 2022/06/25 02:46:15 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rtl8169.c,v 1.173 2022/08/01 07:34:28 mlelstv Exp $");
 /* $FreeBSD: /repoman/r/ncvs/src/sys/dev/re/if_re.c,v 1.20 2004/04/11 20:34:08 ru Exp $ */
 
 /*
@@ -682,8 +682,8 @@ re_attach(struct rtk_softc *sc)
 		case RTK_HWREV_8168H:
 		case RTK_HWREV_8411B:
 			sc->sc_quirk |= RTKQ_DESCV2 | RTKQ_NOEECMD |
-			    RTKQ_MACSTAT | RTKQ_CMDSTOP | RTKQ_NOJUMBO | 
-			    RTKQ_RXDV_GATED | RTKQ_TXRXEN_LATER;
+			    RTKQ_MACSTAT | RTKQ_CMDSTOP | RTKQ_PHYWAKE_PM |
+			    RTKQ_NOJUMBO | RTKQ_RXDV_GATED | RTKQ_TXRXEN_LATER;
 			break;
 		case RTK_HWREV_8100E:
 		case RTK_HWREV_8100E_SPIN2:

Index: src/sys/dev/ic/tulip.c
diff -u src/sys/dev/ic/tulip.c:1.205 src/sys/dev/ic/tulip.c:1.206
--- src/sys/dev/ic/tulip.c:1.205	Sat Jun 25 02:46:15 2022
+++ src/sys/dev/ic/tulip.c	Mon Aug  1 07:34:28 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: tulip.c,v 1.205 2022/06/25 02:46:15 tsutsui Exp $	*/
+/*	$NetBSD: tulip.c,v 1.206 2022/08/01 07:34:28 mlelstv Exp $	*/
 
 /*-
  * Copyright (c) 1998, 1999, 2000, 2002 The NetBSD Foundation, Inc.
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tulip.c,v 1.205 2022/06/25 02:46:15 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tulip.c,v 1.206 2022/08/01 07:34:28 mlelstv Exp $");
 
 
 #include <sys/param.h>
@@ -4394,7 +4394,7 @@ tlp_21040_tmsw_init(struct tulip_softc *
 	 */
 
 	/* XXX This should be auto-sense. */
-	ifmedia_set(&mii->mii_media, IFM_ETHER | IFM_10_T);
+	ifmedia_set(&mii->mii_media, IFM_ETHER | IFM_10_5);
 
 	tlp_print_media(sc);
 }

Index: src/sys/dev/ic/tulipreg.h
diff -u src/sys/dev/ic/tulipreg.h:1.41 src/sys/dev/ic/tulipreg.h:1.42
--- src/sys/dev/ic/tulipreg.h:1.41	Thu Aug 19 20:43:58 2021
+++ src/sys/dev/ic/tulipreg.h	Mon Aug  1 07:34:28 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: tulipreg.h,v 1.41 2021/08/19 20:43:58 andvar Exp $	*/
+/*	$NetBSD: tulipreg.h,v 1.42 2022/08/01 07:34:28 mlelstv Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
@@ -938,19 +938,19 @@ struct tulip_desc {
 
 
 /* SIA configuration for 10base-T (from the 21040 manual) */
-#define	SIACONN_21040_10BASET	0x0000ef01
+#define	SIACONN_21040_10BASET	0x00008f01
 #define	SIATXRX_21040_10BASET	0x0000ffff
 #define	SIAGEN_21040_10BASET	0x00000000
 
 
 /* SIA configuration for 10base-T full-duplex (from the 21040 manual) */
-#define	SIACONN_21040_10BASET_FDX 0x0000ef01
+#define	SIACONN_21040_10BASET_FDX 0x00008f01
 #define	SIATXRX_21040_10BASET_FDX 0x0000fffd
 #define	SIAGEN_21040_10BASET_FDX  0x00000000
 
 
 /* SIA configuration for 10base-5 (from the 21040 manual) */
-#define	SIACONN_21040_AUI	0x0000ef09
+#define	SIACONN_21040_AUI	0x00008f09
 #define	SIATXRX_21040_AUI	0x00000705
 #define	SIAGEN_21040_AUI	0x00000006
 

Reply via email to