|
@@ -219,9 +219,6 @@ static uint dma_msg_level;
|
|
|
|
|
|
#define DI_INFO(dmah) ((dma_info_t *)dmah)
|
|
|
|
|
|
-#define R_SM(r) (*(r))
|
|
|
-#define W_SM(r, v) (*(r) = (v))
|
|
|
-
|
|
|
/* One physical DMA segment */
|
|
|
struct dma_seg {
|
|
|
unsigned long addr;
|
|
@@ -593,13 +590,12 @@ dma64_dd_upd(struct dma_info *di, struct dma64desc *ddring,
|
|
|
#else
|
|
|
if ((di->dataoffsetlow == 0) || !(PHYSADDRLO(pa) & PCI32ADDR_HIGH)) {
|
|
|
#endif /* defined(__mips__) && defined(IL_BIGENDIAN) */
|
|
|
-
|
|
|
- W_SM(&ddring[outidx].addrlow,
|
|
|
- BUS_SWAP32(PHYSADDRLO(pa) + di->dataoffsetlow));
|
|
|
- W_SM(&ddring[outidx].addrhigh,
|
|
|
- BUS_SWAP32(PHYSADDRHI(pa) + di->dataoffsethigh));
|
|
|
- W_SM(&ddring[outidx].ctrl1, BUS_SWAP32(*flags));
|
|
|
- W_SM(&ddring[outidx].ctrl2, BUS_SWAP32(ctrl2));
|
|
|
+ ddring[outidx].addrlow =
|
|
|
+ BUS_SWAP32(PHYSADDRLO(pa) + di->dataoffsetlow);
|
|
|
+ ddring[outidx].addrhigh =
|
|
|
+ BUS_SWAP32(PHYSADDRHI(pa) + di->dataoffsethigh);
|
|
|
+ ddring[outidx].ctrl1 = BUS_SWAP32(*flags);
|
|
|
+ ddring[outidx].ctrl2 = BUS_SWAP32(ctrl2);
|
|
|
} else {
|
|
|
/* address extension for 32-bit PCI */
|
|
|
u32 ae;
|
|
@@ -608,17 +604,17 @@ dma64_dd_upd(struct dma_info *di, struct dma64desc *ddring,
|
|
|
PHYSADDRLO(pa) &= ~PCI32ADDR_HIGH;
|
|
|
|
|
|
ctrl2 |= (ae << D64_CTRL2_AE_SHIFT) & D64_CTRL2_AE;
|
|
|
- W_SM(&ddring[outidx].addrlow,
|
|
|
- BUS_SWAP32(PHYSADDRLO(pa) + di->dataoffsetlow));
|
|
|
- W_SM(&ddring[outidx].addrhigh,
|
|
|
- BUS_SWAP32(0 + di->dataoffsethigh));
|
|
|
- W_SM(&ddring[outidx].ctrl1, BUS_SWAP32(*flags));
|
|
|
- W_SM(&ddring[outidx].ctrl2, BUS_SWAP32(ctrl2));
|
|
|
+ ddring[outidx].addrlow =
|
|
|
+ BUS_SWAP32(PHYSADDRLO(pa) + di->dataoffsetlow);
|
|
|
+ ddring[outidx].addrhigh =
|
|
|
+ BUS_SWAP32(0 + di->dataoffsethigh);
|
|
|
+ ddring[outidx].ctrl1 = BUS_SWAP32(*flags);
|
|
|
+ ddring[outidx].ctrl2 = BUS_SWAP32(ctrl2);
|
|
|
}
|
|
|
if (di->dma.dmactrlflags & DMA_CTRL_PEN) {
|
|
|
if (DMA64_DD_PARITY(&ddring[outidx]))
|
|
|
- W_SM(&ddring[outidx].ctrl2,
|
|
|
- BUS_SWAP32(ctrl2 | D64_CTRL2_PARITY));
|
|
|
+ ddring[outidx].ctrl2 =
|
|
|
+ BUS_SWAP32(ctrl2 | D64_CTRL2_PARITY);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1369,8 +1365,8 @@ int dma_txfast(struct dma_pub *pub, struct sk_buff *p0, bool commit)
|
|
|
|
|
|
/* if last txd eof not set, fix it */
|
|
|
if (!(flags & D64_CTRL1_EOF))
|
|
|
- W_SM(&di->txd64[PREVTXD(txout)].ctrl1,
|
|
|
- BUS_SWAP32(flags | D64_CTRL1_IOC | D64_CTRL1_EOF));
|
|
|
+ di->txd64[PREVTXD(txout)].ctrl1 =
|
|
|
+ BUS_SWAP32(flags | D64_CTRL1_IOC | D64_CTRL1_EOF);
|
|
|
|
|
|
/* save the packet */
|
|
|
di->txp[PREVTXD(txout)] = p0;
|
|
@@ -1456,10 +1452,10 @@ struct sk_buff *dma_getnexttxp(struct dma_pub *pub, enum txd_range range)
|
|
|
uint size, j, nsegs;
|
|
|
|
|
|
PHYSADDRLOSET(pa,
|
|
|
- (BUS_SWAP32(R_SM(&di->txd64[i].addrlow)) -
|
|
|
+ (BUS_SWAP32(di->txd64[i].addrlow) -
|
|
|
di->dataoffsetlow));
|
|
|
PHYSADDRHISET(pa,
|
|
|
- (BUS_SWAP32(R_SM(&di->txd64[i].addrhigh)) -
|
|
|
+ (BUS_SWAP32(di->txd64[i].addrhigh) -
|
|
|
di->dataoffsethigh));
|
|
|
|
|
|
if (DMASGLIST_ENAB) {
|
|
@@ -1468,14 +1464,14 @@ struct sk_buff *dma_getnexttxp(struct dma_pub *pub, enum txd_range range)
|
|
|
nsegs = map->nsegs;
|
|
|
} else {
|
|
|
size =
|
|
|
- (BUS_SWAP32(R_SM(&di->txd64[i].ctrl2)) &
|
|
|
+ (BUS_SWAP32(di->txd64[i].ctrl2) &
|
|
|
D64_CTRL2_BC_MASK);
|
|
|
nsegs = 1;
|
|
|
}
|
|
|
|
|
|
for (j = nsegs; j > 0; j--) {
|
|
|
- W_SM(&di->txd64[i].addrlow, 0xdeadbeef);
|
|
|
- W_SM(&di->txd64[i].addrhigh, 0xdeadbeef);
|
|
|
+ di->txd64[i].addrlow = 0xdeadbeef;
|
|
|
+ di->txd64[i].addrhigh = 0xdeadbeef;
|
|
|
|
|
|
txp = di->txp[i];
|
|
|
di->txp[i] = NULL;
|
|
@@ -1524,17 +1520,17 @@ static struct sk_buff *dma64_getnextrxp(struct dma_info *di, bool forceall)
|
|
|
di->rxp[i] = NULL;
|
|
|
|
|
|
PHYSADDRLOSET(pa,
|
|
|
- (BUS_SWAP32(R_SM(&di->rxd64[i].addrlow)) -
|
|
|
+ (BUS_SWAP32(di->rxd64[i].addrlow) -
|
|
|
di->dataoffsetlow));
|
|
|
PHYSADDRHISET(pa,
|
|
|
- (BUS_SWAP32(R_SM(&di->rxd64[i].addrhigh)) -
|
|
|
+ (BUS_SWAP32(di->rxd64[i].addrhigh) -
|
|
|
di->dataoffsethigh));
|
|
|
|
|
|
/* clear this packet from the descriptor ring */
|
|
|
pci_unmap_single(di->pbus, pa, di->rxbufsize, PCI_DMA_FROMDEVICE);
|
|
|
|
|
|
- W_SM(&di->rxd64[i].addrlow, 0xdeadbeef);
|
|
|
- W_SM(&di->rxd64[i].addrhigh, 0xdeadbeef);
|
|
|
+ di->rxd64[i].addrlow = 0xdeadbeef;
|
|
|
+ di->rxd64[i].addrhigh = 0xdeadbeef;
|
|
|
|
|
|
di->rxin = NEXTRXD(i);
|
|
|
|