Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/ic simplifying code, unconfuses gcc index calculation.
details: https://anonhg.NetBSD.org/src/rev/62ab44df7b45
branches: trunk
changeset: 768275:62ab44df7b45
user: christos <christos%NetBSD.org@localhost>
date: Sat Aug 13 18:13:44 2011 +0000
description:
simplifying code, unconfuses gcc index calculation.
diffstat:
sys/dev/ic/tulip.c | 56 ++++++++++++++++++++++++++++-------------------------
1 files changed, 30 insertions(+), 26 deletions(-)
diffs (144 lines):
diff -r e8826bd7ba00 -r 62ab44df7b45 sys/dev/ic/tulip.c
--- a/sys/dev/ic/tulip.c Sat Aug 13 17:23:42 2011 +0000
+++ b/sys/dev/ic/tulip.c Sat Aug 13 18:13:44 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: tulip.c,v 1.177 2011/07/09 23:18:05 christos Exp $ */
+/* $NetBSD: tulip.c,v 1.178 2011/08/13 18:13:44 christos 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.177 2011/07/09 23:18:05 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tulip.c,v 1.178 2011/08/13 18:13:44 christos Exp $");
#include <sys/param.h>
@@ -667,6 +667,7 @@
struct tulip_txsoft *txs, *last_txs = NULL;
bus_dmamap_t dmamap;
int error, firsttx, nexttx, lasttx = 1, ofree, seg;
+ struct tulip_desc *txd;
DPRINTF(sc, ("%s: tlp_start: sc_flags 0x%08x, if_flags 0x%08x\n",
device_xname(sc->sc_dev), sc->sc_flags, ifp->if_flags));
@@ -803,11 +804,12 @@
* yet. That could cause a race condition.
* We'll do it below.
*/
- sc->sc_txdescs[nexttx].td_status =
+ txd = &sc->sc_txdescs[nexttx];
+ txd->td_status =
(nexttx == firsttx) ? 0 : htole32(TDSTAT_OWN);
- sc->sc_txdescs[nexttx].td_bufaddr1 =
+ txd->td_bufaddr1 =
htole32(dmamap->dm_segs[seg].ds_addr);
- sc->sc_txdescs[nexttx].td_ctl =
+ txd->td_ctl =
htole32((dmamap->dm_segs[seg].ds_len <<
TDCTL_SIZE1_SHIFT) | sc->sc_tdctl_ch |
(nexttx == (TULIP_NTXDESC - 1) ?
@@ -825,15 +827,16 @@
if (ifp->if_flags & IFF_DEBUG) {
printf(" txsoft %p transmit chain:\n", txs);
for (seg = sc->sc_txnext;; seg = TULIP_NEXTTX(seg)) {
+ txd = sc->sc_txdescs[seg];
printf(" descriptor %d:\n", seg);
printf(" td_status: 0x%08x\n",
- le32toh(sc->sc_txdescs[seg].td_status));
+ le32toh(txd->td_status));
printf(" td_ctl: 0x%08x\n",
- le32toh(sc->sc_txdescs[seg].td_ctl));
+ le32toh(txd->td_ctl));
printf(" td_bufaddr1: 0x%08x\n",
- le32toh(sc->sc_txdescs[seg].td_bufaddr1));
+ le32toh(txd->td_bufaddr1));
printf(" td_bufaddr2: 0x%08x\n",
- le32toh(sc->sc_txdescs[seg].td_bufaddr2));
+ le32toh(txd->td_bufaddr2));
if (seg == lasttx)
break;
}
@@ -1431,15 +1434,17 @@
#ifdef TLP_DEBUG
if (ifp->if_flags & IFF_DEBUG) {
int i;
+ struct tulip_desc *txd;
printf(" txsoft %p transmit chain:\n", txs);
for (i = txs->txs_firstdesc;; i = TULIP_NEXTTX(i)) {
+ txd = sc->sc_txdescs[i];
printf(" descriptor %d:\n", i);
printf(" td_status: 0x%08x\n",
- le32toh(sc->sc_txdescs[i].td_status));
+ le32toh(txd->td_status));
printf(" td_ctl: 0x%08x\n",
- le32toh(sc->sc_txdescs[i].td_ctl));
+ le32toh(txd->td_ctl));
printf(" td_bufaddr1: 0x%08x\n",
- le32toh(sc->sc_txdescs[i].td_bufaddr1));
+ le32toh(txd->td_bufaddr1));
printf(" td_bufaddr2: 0x%08x\n",
le32toh(sc->sc_txdescs[i].td_bufaddr2));
if (i == txs->txs_lastdesc)
@@ -1780,9 +1785,9 @@
*/
memset(sc->sc_txdescs, 0, sizeof(sc->sc_txdescs));
for (i = 0; i < TULIP_NTXDESC; i++) {
- sc->sc_txdescs[i].td_ctl = htole32(sc->sc_tdctl_ch);
- sc->sc_txdescs[i].td_bufaddr2 =
- htole32(TULIP_CDTXADDR(sc, TULIP_NEXTTX(i)));
+ struct tulip_desc *txd = &sc->sc_txdescs[i];
+ txd->td_ctl = htole32(sc->sc_tdctl_ch);
+ txd->td_bufaddr2 = htole32(TULIP_CDTXADDR(sc, TULIP_NEXTTX(i)));
}
sc->sc_txdescs[TULIP_NTXDESC - 1].td_ctl |= htole32(sc->sc_tdctl_er);
TULIP_CDTXSYNC(sc, 0, TULIP_NTXDESC,
@@ -2559,6 +2564,7 @@
struct ether_multistep step;
volatile uint32_t *sp;
struct tulip_txsoft *txs;
+ struct tulip_desc *txd;
uint8_t enaddr[ETHER_ADDR_LEN];
uint32_t hash, hashsize;
int cnt, nexttx;
@@ -2756,10 +2762,10 @@
txs->txs_mbuf = NULL;
nexttx = sc->sc_txnext;
- sc->sc_txdescs[nexttx].td_status = 0;
- sc->sc_txdescs[nexttx].td_bufaddr1 = htole32(TULIP_CDSPADDR(sc));
- sc->sc_txdescs[nexttx].td_ctl =
- htole32((TULIP_SETUP_PACKET_LEN << TDCTL_SIZE1_SHIFT) |
+ txd = &sc->sc_txdescs[nexttx];
+ txd->td_status = 0;
+ txd->td_bufaddr1 = htole32(TULIP_CDSPADDR(sc));
+ txd->td_ctl = htole32((TULIP_SETUP_PACKET_LEN << TDCTL_SIZE1_SHIFT) |
sc->sc_filtmode | TDCTL_Tx_SET | sc->sc_setup_fsls |
TDCTL_Tx_IC | sc->sc_tdctl_ch |
(nexttx == (TULIP_NTXDESC - 1) ? sc->sc_tdctl_er : 0));
@@ -2770,18 +2776,16 @@
if (ifp->if_flags & IFF_DEBUG) {
printf(" filter_setup %p transmit chain:\n", txs);
printf(" descriptor %d:\n", nexttx);
- printf(" td_status: 0x%08x\n",
- le32toh(sc->sc_txdescs[nexttx].td_status));
- printf(" td_ctl: 0x%08x\n",
- le32toh(sc->sc_txdescs[nexttx].td_ctl));
+ printf(" td_status: 0x%08x\n", le32toh(txd->td_status));
+ printf(" td_ctl: 0x%08x\n", le32toh(txd->td_ctl));
printf(" td_bufaddr1: 0x%08x\n",
- le32toh(sc->sc_txdescs[nexttx].td_bufaddr1));
+ le32toh(txd->td_bufaddr1));
printf(" td_bufaddr2: 0x%08x\n",
- le32toh(sc->sc_txdescs[nexttx].td_bufaddr2));
+ le32toh(txd->td_bufaddr2));
}
#endif
- sc->sc_txdescs[nexttx].td_status = htole32(TDSTAT_OWN);
+ txd->td_status = htole32(TDSTAT_OWN);
TULIP_CDTXSYNC(sc, nexttx, 1,
BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE);
Home |
Main Index |
Thread Index |
Old Index