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