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 <[email protected]>
@@ -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