Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/pci change const value register macros to macro expr...
details: https://anonhg.NetBSD.org/src/rev/f5bdbc551105
branches: trunk
changeset: 340971:f5bdbc551105
user: knakahara <knakahara%NetBSD.org@localhost>
date: Tue Oct 13 08:23:31 2015 +0000
description:
change const value register macros to macro expressions to support multiqueue.
diffstat:
sys/dev/pci/if_wm.c | 60 +++++++++++++++++++-------------------
sys/dev/pci/if_wmreg.h | 77 +++++++++++++++++++++++++++----------------------
2 files changed, 73 insertions(+), 64 deletions(-)
diffs (truncated from 324 to 300 lines):
diff -r e1d46792e706 -r f5bdbc551105 sys/dev/pci/if_wm.c
--- a/sys/dev/pci/if_wm.c Tue Oct 13 08:20:02 2015 +0000
+++ b/sys/dev/pci/if_wm.c Tue Oct 13 08:23:31 2015 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: if_wm.c,v 1.360 2015/10/13 08:20:02 knakahara Exp $ */
+/* $NetBSD: if_wm.c,v 1.361 2015/10/13 08:23:31 knakahara Exp $ */
/*
* Copyright (c) 2001, 2002, 2003, 2004 Wasabi Systems, Inc.
@@ -83,7 +83,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.360 2015/10/13 08:20:02 knakahara Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.361 2015/10/13 08:23:31 knakahara Exp $");
#ifdef _KERNEL_OPT
#include "opt_net_mpsafe.h"
@@ -4364,10 +4364,10 @@
/* TX */
CSR_WRITE(sc, WMREG_MSIXBM(WM_MSIX_TXINTR_IDX),
- EITR_TX_QUEUE0);
+ EITR_TX_QUEUE(0));
/* RX */
CSR_WRITE(sc, WMREG_MSIXBM(WM_MSIX_RXINTR_IDX),
- EITR_RX_QUEUE0);
+ EITR_RX_QUEUE(0));
/* Link status */
CSR_WRITE(sc, WMREG_MSIXBM(WM_MSIX_LINKINTR_IDX),
EITR_OTHER);
@@ -4457,7 +4457,7 @@
break;
default:
if (sc->sc_type == WM_T_82575)
- mask = EITR_RX_QUEUE0 |EITR_TX_QUEUE0
+ mask = EITR_RX_QUEUE(0) |EITR_TX_QUEUE(0)
| EITR_OTHER;
else
mask = (1 << WM_MSIX_RXINTR_IDX)
@@ -4523,7 +4523,7 @@
if ((sc->sc_flags & WM_F_NEWQUEUE) != 0) {
/* Write TDT after TCTL.EN is set. See the document. */
- CSR_WRITE(sc, WMREG_TDT, 0);
+ CSR_WRITE(sc, WMREG_TDT(0), 0);
}
if (sc->sc_type == WM_T_80003) {
@@ -4961,7 +4961,7 @@
goto out;
if (txq->txq_fifo_stall) {
- if (CSR_READ(sc, WMREG_TDT) == CSR_READ(sc, WMREG_TDH) &&
+ if (CSR_READ(sc, WMREG_TDT(0)) == CSR_READ(sc, WMREG_TDH(0)) &&
CSR_READ(sc, WMREG_TDFT) == CSR_READ(sc, WMREG_TDFH) &&
CSR_READ(sc, WMREG_TDFTS) == CSR_READ(sc, WMREG_TDFHS)) {
/*
@@ -5418,10 +5418,10 @@
CSR_WRITE(sc, WMREG_OLD_TDT, 0);
CSR_WRITE(sc, WMREG_OLD_TIDV, 128);
} else {
- CSR_WRITE(sc, WMREG_TDBAH, WM_CDTXADDR_HI(txq, 0));
- CSR_WRITE(sc, WMREG_TDBAL, WM_CDTXADDR_LO(txq, 0));
- CSR_WRITE(sc, WMREG_TDLEN, WM_TXDESCSIZE(txq));
- CSR_WRITE(sc, WMREG_TDH, 0);
+ CSR_WRITE(sc, WMREG_TDBAH(0), WM_CDTXADDR_HI(txq, 0));
+ CSR_WRITE(sc, WMREG_TDBAL(0), WM_CDTXADDR_LO(txq, 0));
+ CSR_WRITE(sc, WMREG_TDLEN(0), WM_TXDESCSIZE(txq));
+ CSR_WRITE(sc, WMREG_TDH(0), 0);
if ((sc->sc_flags & WM_F_NEWQUEUE) != 0)
/*
@@ -5439,7 +5439,7 @@
CSR_WRITE(sc, WMREG_TADV, sc->sc_itr / 4);
}
- CSR_WRITE(sc, WMREG_TDT, 0);
+ CSR_WRITE(sc, WMREG_TDT(0), 0);
CSR_WRITE(sc, WMREG_TXDCTL(0), TXDCTL_PTHRESH(0) |
TXDCTL_HTHRESH(0) | TXDCTL_WTHRESH(0));
}
@@ -5476,7 +5476,7 @@
if (sc->sc_type < WM_T_82543) {
txq->txq_tdt_reg = WMREG_OLD_TDT;
} else {
- txq->txq_tdt_reg = WMREG_TDT;
+ txq->txq_tdt_reg = WMREG_TDT(0);
}
wm_init_tx_descs(sc);
@@ -5511,25 +5511,25 @@
CSR_WRITE(sc, WMREG_OLD_RDT1, 0);
CSR_WRITE(sc, WMREG_OLD_RDTR1, 0);
} else {
- CSR_WRITE(sc, WMREG_RDBAH, WM_CDRXADDR_HI(rxq, 0));
- CSR_WRITE(sc, WMREG_RDBAL, WM_CDRXADDR_LO(rxq, 0));
- CSR_WRITE(sc, WMREG_RDLEN,
+ CSR_WRITE(sc, WMREG_RDBAH(0), WM_CDRXADDR_HI(rxq, 0));
+ CSR_WRITE(sc, WMREG_RDBAL(0), WM_CDRXADDR_LO(rxq, 0));
+ CSR_WRITE(sc, WMREG_RDLEN(0),
sizeof(wiseman_rxdesc_t) * WM_NRXDESC);
if ((sc->sc_flags & WM_F_NEWQUEUE) != 0) {
if (MCLBYTES & ((1 << SRRCTL_BSIZEPKT_SHIFT) - 1))
panic("%s: MCLBYTES %d unsupported for i2575 or higher\n", __func__, MCLBYTES);
- CSR_WRITE(sc, WMREG_SRRCTL, SRRCTL_DESCTYPE_LEGACY
+ CSR_WRITE(sc, WMREG_SRRCTL(0), SRRCTL_DESCTYPE_LEGACY
| (MCLBYTES >> SRRCTL_BSIZEPKT_SHIFT));
- CSR_WRITE(sc, WMREG_RXDCTL, RXDCTL_QUEUE_ENABLE
+ CSR_WRITE(sc, WMREG_RXDCTL(0), RXDCTL_QUEUE_ENABLE
| RXDCTL_PTHRESH(16) | RXDCTL_HTHRESH(8)
| RXDCTL_WTHRESH(1));
} else {
- CSR_WRITE(sc, WMREG_RDH, 0);
- CSR_WRITE(sc, WMREG_RDT, 0);
+ CSR_WRITE(sc, WMREG_RDH(0), 0);
+ CSR_WRITE(sc, WMREG_RDT(0), 0);
CSR_WRITE(sc, WMREG_RDTR, 375 | RDTR_FPD); /* ITR/4 */
CSR_WRITE(sc, WMREG_RADV, 375); /* MUST be same */
- CSR_WRITE(sc, WMREG_RXDCTL, RXDCTL_PTHRESH(0) |
+ CSR_WRITE(sc, WMREG_RXDCTL(0), RXDCTL_PTHRESH(0) |
RXDCTL_HTHRESH(0) | RXDCTL_WTHRESH(1));
}
}
@@ -5589,7 +5589,7 @@
if (sc->sc_type < WM_T_82543) {
rxq->rxq_rdt_reg = WMREG_OLD_RDT0;
} else {
- rxq->rxq_rdt_reg = WMREG_RDT;
+ rxq->rxq_rdt_reg = WMREG_RDT(0);
}
wm_init_rx_regs(sc);
@@ -7079,9 +7079,9 @@
("%s: TX: got Tx intr\n", device_xname(sc->sc_dev)));
if (sc->sc_type == WM_T_82574)
- CSR_WRITE(sc, WMREG_IMC, ICR_TXQ0); /* 82574 only */
+ CSR_WRITE(sc, WMREG_IMC, ICR_TXQ(0)); /* 82574 only */
else if (sc->sc_type == WM_T_82575)
- CSR_WRITE(sc, WMREG_EIMC, EITR_TX_QUEUE0);
+ CSR_WRITE(sc, WMREG_EIMC, EITR_TX_QUEUE(0));
else
CSR_WRITE(sc, WMREG_EIMC, 1 << WM_MSIX_TXINTR_IDX);
@@ -7097,9 +7097,9 @@
WM_TX_UNLOCK(txq);
if (sc->sc_type == WM_T_82574)
- CSR_WRITE(sc, WMREG_IMS, ICR_TXQ0); /* 82574 only */
+ CSR_WRITE(sc, WMREG_IMS, ICR_TXQ(0)); /* 82574 only */
else if (sc->sc_type == WM_T_82575)
- CSR_WRITE(sc, WMREG_EIMS, EITR_TX_QUEUE0);
+ CSR_WRITE(sc, WMREG_EIMS, EITR_TX_QUEUE(0));
else
CSR_WRITE(sc, WMREG_EIMS, 1 << WM_MSIX_TXINTR_IDX);
@@ -7126,9 +7126,9 @@
("%s: RX: got Rx intr\n", device_xname(sc->sc_dev)));
if (sc->sc_type == WM_T_82574)
- CSR_WRITE(sc, WMREG_IMC, ICR_RXQ0); /* 82574 only */
+ CSR_WRITE(sc, WMREG_IMC, ICR_RXQ(0)); /* 82574 only */
else if (sc->sc_type == WM_T_82575)
- CSR_WRITE(sc, WMREG_EIMC, EITR_RX_QUEUE0);
+ CSR_WRITE(sc, WMREG_EIMC, EITR_RX_QUEUE(0));
else
CSR_WRITE(sc, WMREG_EIMC, 1 << WM_MSIX_RXINTR_IDX);
@@ -7144,9 +7144,9 @@
WM_RX_UNLOCK(rxq);
if (sc->sc_type == WM_T_82574)
- CSR_WRITE(sc, WMREG_IMS, ICR_RXQ0);
+ CSR_WRITE(sc, WMREG_IMS, ICR_RXQ(0));
else if (sc->sc_type == WM_T_82575)
- CSR_WRITE(sc, WMREG_EIMS, EITR_RX_QUEUE0);
+ CSR_WRITE(sc, WMREG_EIMS, EITR_RX_QUEUE(0));
else
CSR_WRITE(sc, WMREG_EIMS, 1 << WM_MSIX_RXINTR_IDX);
diff -r e1d46792e706 -r f5bdbc551105 sys/dev/pci/if_wmreg.h
--- a/sys/dev/pci/if_wmreg.h Tue Oct 13 08:20:02 2015 +0000
+++ b/sys/dev/pci/if_wmreg.h Tue Oct 13 08:23:31 2015 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: if_wmreg.h,v 1.82 2015/10/08 04:30:25 msaitoh Exp $ */
+/* $NetBSD: if_wmreg.h,v 1.83 2015/10/13 08:23:31 knakahara Exp $ */
/*
* Copyright (c) 2001 Wasabi Systems, Inc.
@@ -433,10 +433,8 @@
#define ICR_MDAC (1U << 9) /* MDIO access complete */
#define ICR_RXCFG (1U << 10) /* Receiving /C/ */
#define ICR_GPI(x) (1U << (x)) /* general purpose interrupts */
-#define ICR_RXQ0 __BIT(20) /* 82574: Rx queue 0 interrupt */
-#define ICR_RXQ1 __BIT(21) /* 82574: Rx queue 1 interrupt */
-#define ICR_TXQ0 __BIT(22) /* 82574: Tx queue 0 interrupt */
-#define ICR_TXQ1 __BIT(23) /* 82574: Tx queue 1 interrupt */
+#define ICR_RXQ(x) __BIT(20+(x)) /* 82574: Rx queue x interrupt x=0,1 */
+#define ICR_TXQ(x) __BIT(22+(x)) /* 82574: Tx queue x interrupt x=0,1 */
#define ICR_OTHER __BIT(24) /* 82574: Other interrupt */
#define ICR_INT (1U << 31) /* device generated an interrupt */
@@ -478,8 +476,8 @@
/* See ICR bits. */
#define WMREG_EIAC_82574 0x00dc /* Interrupt Auto Clear Register */
-#define WMREG_EIAC_82574_MSIX_MASK (ICR_RXQ0 | ICR_RXQ1 \
- | ICR_TXQ0 | ICR_TXQ1 | ICR_OTHER)
+#define WMREG_EIAC_82574_MSIX_MASK (ICR_RXQ(0) | ICR_RXQ(1) \
+ | ICR_TXQ(0) | ICR_TXQ(1) | ICR_OTHER)
#define WMREG_RCTL 0x0100 /* Receive Control */
#define RCTL_EN (1U << 1) /* receiver enable */
@@ -516,19 +514,23 @@
#define WMREG_LTRC 0x01a0 /* Latency Tolerance Reportiong Control */
#define WMREG_OLD_RDBAL0 0x0110 /* Receive Descriptor Base Low (ring 0) */
-#define WMREG_RDBAL 0x2800
-#define WMREG_RDBAL_2 0x0c00 /* for 82576 ... */
+#define WMREG_RDBAL(x) \
+ ((x) < 4 ? (0x02800 + ((x) * 0x100)) : \
+ (0x0C000 + ((x) * 0x40)))
#define WMREG_OLD_RDBAH0 0x0114 /* Receive Descriptor Base High (ring 0) */
-#define WMREG_RDBAH 0x2804
-#define WMREG_RDBAH_2 0x0c04 /* for 82576 ... */
+#define WMREG_RDBAH(x) \
+ ((x) < 4 ? (0x02804 + ((x) * 0x100)) : \
+ (0x0c004 + ((x) * 0x40)))
#define WMREG_OLD_RDLEN0 0x0118 /* Receive Descriptor Length (ring 0) */
-#define WMREG_RDLEN 0x2808
-#define WMREG_RDLEN_2 0x0c08 /* for 82576 ... */
+#define WMREG_RDLEN(x) \
+ ((x) < 4 ? (0x02808 + ((x) * 0x100)) : \
+ (0x0c008 + ((x) * 0x40)))
-#define WMREG_SRRCTL 0x280c /* additional recv control used in 82575 ... */
-#define WMREG_SRRCTL_2 0x0c0c /* for 82576 ... */
+#define WMREG_SRRCTL(x) \
+ ((x) < 4 ? (0x0280c + ((x) * 0x100)) : \
+ (0x0c00c + ((x) * 0x40))) /* additional recv control used in 82575 ... */
#define SRRCTL_BSIZEPKT_MASK 0x0000007f
#define SRRCTL_BSIZEPKT_SHIFT 10 /* Shift _right_ */
#define SRRCTL_BSIZEHDRSIZE_MASK 0x00000f00
@@ -543,15 +545,18 @@
#define SRRCTL_DROP_EN 0x80000000
#define WMREG_OLD_RDH0 0x0120 /* Receive Descriptor Head (ring 0) */
-#define WMREG_RDH 0x2810
-#define WMREG_RDH_2 0x0c10 /* for 82576 ... */
+#define WMREG_RDH(x) \
+ ((x) < 4 ? (0x02810 + ((x) * 0x100)) : \
+ (0x0C010 + ((x) * 0x40)))
#define WMREG_OLD_RDT0 0x0128 /* Receive Descriptor Tail (ring 0) */
-#define WMREG_RDT 0x2818
-#define WMREG_RDT_2 0x0c18 /* for 82576 ... */
+#define WMREG_RDT(x) \
+ ((x) < 4 ? (0x02818 + ((x) * 0x100)) : \
+ (0x0C018 + ((x) * 0x40)))
-#define WMREG_RXDCTL 0x2828 /* Receive Descriptor Control */
-#define WMREG_RXDCTL_2 0x0c28 /* for 82576 ... */
+#define WMREG_RXDCTL(x) \
+ ((x) < 4 ? (0x02828 + ((x) * 0x100)) : \
+ (0x0c028 + ((x) * 0x40))) /* Receive Descriptor Control */
#define RXDCTL_PTHRESH(x) ((x) << 0) /* prefetch threshold */
#define RXDCTL_HTHRESH(x) ((x) << 8) /* host threshold */
#define RXDCTL_WTHRESH(x) ((x) << 16) /* write back threshold */
@@ -634,19 +639,29 @@
#define WMREG_TQC 0x0418
#define WMREG_OLD_TDBAL 0x0420 /* Transmit Descriptor Base Lo */
-#define WMREG_TDBAL 0x3800
+#define WMREG_TDBAL(x) \
+ ((x) < 4 ? (0x03800 + ((x) * 0x100)) : \
+ (0x0E000 + ((x) * 0x40)))
#define WMREG_OLD_TDBAH 0x0424 /* Transmit Descriptor Base Hi */
-#define WMREG_TDBAH 0x3804
+#define WMREG_TDBAH(x)\
+ ((x) < 4 ? (0x03804 + ((x) * 0x100)) : \
+ (0x0E004 + ((x) * 0x40)))
#define WMREG_OLD_TDLEN 0x0428 /* Transmit Descriptor Length */
-#define WMREG_TDLEN 0x3808
+#define WMREG_TDLEN(x) \
+ ((x) < 4 ? (0x03808 + ((x) * 0x100)) : \
+ (0x0E008 + ((x) * 0x40)))
#define WMREG_OLD_TDH 0x0430 /* Transmit Descriptor Head */
-#define WMREG_TDH 0x3810
+#define WMREG_TDH(x) \
+ ((x) < 4 ? (0x03810 + ((x) * 0x100)) : \
+ (0x0E010 + ((x) * 0x40)))
#define WMREG_OLD_TDT 0x0438 /* Transmit Descriptor Tail */
Home |
Main Index |
Thread Index |
Old Index