|
@@ -276,7 +276,7 @@ static void dp8393x_do_load_cam(dp8393xState *s)
|
|
while (s->regs[SONIC_CDC] & 0x1f) {
|
|
while (s->regs[SONIC_CDC] & 0x1f) {
|
|
/* Fill current entry */
|
|
/* Fill current entry */
|
|
address_space_rw(&s->as, dp8393x_cdp(s),
|
|
address_space_rw(&s->as, dp8393x_cdp(s),
|
|
- MEMTXATTRS_UNSPECIFIED, s->data, size, 0);
|
|
|
|
|
|
+ MEMTXATTRS_UNSPECIFIED, s->data, size, false);
|
|
s->cam[index][0] = dp8393x_get(s, width, 1) & 0xff;
|
|
s->cam[index][0] = dp8393x_get(s, width, 1) & 0xff;
|
|
s->cam[index][1] = dp8393x_get(s, width, 1) >> 8;
|
|
s->cam[index][1] = dp8393x_get(s, width, 1) >> 8;
|
|
s->cam[index][2] = dp8393x_get(s, width, 2) & 0xff;
|
|
s->cam[index][2] = dp8393x_get(s, width, 2) & 0xff;
|
|
@@ -294,7 +294,7 @@ static void dp8393x_do_load_cam(dp8393xState *s)
|
|
|
|
|
|
/* Read CAM enable */
|
|
/* Read CAM enable */
|
|
address_space_rw(&s->as, dp8393x_cdp(s),
|
|
address_space_rw(&s->as, dp8393x_cdp(s),
|
|
- MEMTXATTRS_UNSPECIFIED, s->data, size, 0);
|
|
|
|
|
|
+ MEMTXATTRS_UNSPECIFIED, s->data, size, false);
|
|
s->regs[SONIC_CE] = dp8393x_get(s, width, 0);
|
|
s->regs[SONIC_CE] = dp8393x_get(s, width, 0);
|
|
DPRINTF("load cam done. cam enable mask 0x%04x\n", s->regs[SONIC_CE]);
|
|
DPRINTF("load cam done. cam enable mask 0x%04x\n", s->regs[SONIC_CE]);
|
|
|
|
|
|
@@ -312,7 +312,7 @@ static void dp8393x_do_read_rra(dp8393xState *s)
|
|
width = (s->regs[SONIC_DCR] & SONIC_DCR_DW) ? 2 : 1;
|
|
width = (s->regs[SONIC_DCR] & SONIC_DCR_DW) ? 2 : 1;
|
|
size = sizeof(uint16_t) * 4 * width;
|
|
size = sizeof(uint16_t) * 4 * width;
|
|
address_space_rw(&s->as, dp8393x_rrp(s),
|
|
address_space_rw(&s->as, dp8393x_rrp(s),
|
|
- MEMTXATTRS_UNSPECIFIED, s->data, size, 0);
|
|
|
|
|
|
+ MEMTXATTRS_UNSPECIFIED, s->data, size, false);
|
|
|
|
|
|
/* Update SONIC registers */
|
|
/* Update SONIC registers */
|
|
s->regs[SONIC_CRBA0] = dp8393x_get(s, width, 0);
|
|
s->regs[SONIC_CRBA0] = dp8393x_get(s, width, 0);
|
|
@@ -427,7 +427,7 @@ static void dp8393x_do_transmit_packets(dp8393xState *s)
|
|
s->regs[SONIC_TTDA] = s->regs[SONIC_CTDA];
|
|
s->regs[SONIC_TTDA] = s->regs[SONIC_CTDA];
|
|
DPRINTF("Transmit packet at %08x\n", dp8393x_ttda(s));
|
|
DPRINTF("Transmit packet at %08x\n", dp8393x_ttda(s));
|
|
address_space_rw(&s->as, dp8393x_ttda(s) + sizeof(uint16_t) * width,
|
|
address_space_rw(&s->as, dp8393x_ttda(s) + sizeof(uint16_t) * width,
|
|
- MEMTXATTRS_UNSPECIFIED, s->data, size, 0);
|
|
|
|
|
|
+ MEMTXATTRS_UNSPECIFIED, s->data, size, false);
|
|
tx_len = 0;
|
|
tx_len = 0;
|
|
|
|
|
|
/* Update registers */
|
|
/* Update registers */
|
|
@@ -452,7 +452,8 @@ static void dp8393x_do_transmit_packets(dp8393xState *s)
|
|
len = sizeof(s->tx_buffer) - tx_len;
|
|
len = sizeof(s->tx_buffer) - tx_len;
|
|
}
|
|
}
|
|
address_space_rw(&s->as, dp8393x_tsa(s),
|
|
address_space_rw(&s->as, dp8393x_tsa(s),
|
|
- MEMTXATTRS_UNSPECIFIED, &s->tx_buffer[tx_len], len, 0);
|
|
|
|
|
|
+ MEMTXATTRS_UNSPECIFIED,
|
|
|
|
+ &s->tx_buffer[tx_len], len, false);
|
|
tx_len += len;
|
|
tx_len += len;
|
|
|
|
|
|
i++;
|
|
i++;
|
|
@@ -461,7 +462,7 @@ static void dp8393x_do_transmit_packets(dp8393xState *s)
|
|
size = sizeof(uint16_t) * 3 * width;
|
|
size = sizeof(uint16_t) * 3 * width;
|
|
address_space_rw(&s->as,
|
|
address_space_rw(&s->as,
|
|
dp8393x_ttda(s) + sizeof(uint16_t) * (4 + 3 * i) * width,
|
|
dp8393x_ttda(s) + sizeof(uint16_t) * (4 + 3 * i) * width,
|
|
- MEMTXATTRS_UNSPECIFIED, s->data, size, 0);
|
|
|
|
|
|
+ MEMTXATTRS_UNSPECIFIED, s->data, size, false);
|
|
s->regs[SONIC_TSA0] = dp8393x_get(s, width, 0);
|
|
s->regs[SONIC_TSA0] = dp8393x_get(s, width, 0);
|
|
s->regs[SONIC_TSA1] = dp8393x_get(s, width, 1);
|
|
s->regs[SONIC_TSA1] = dp8393x_get(s, width, 1);
|
|
s->regs[SONIC_TFS] = dp8393x_get(s, width, 2);
|
|
s->regs[SONIC_TFS] = dp8393x_get(s, width, 2);
|
|
@@ -496,7 +497,7 @@ static void dp8393x_do_transmit_packets(dp8393xState *s)
|
|
size = sizeof(uint16_t) * width;
|
|
size = sizeof(uint16_t) * width;
|
|
address_space_rw(&s->as,
|
|
address_space_rw(&s->as,
|
|
dp8393x_ttda(s),
|
|
dp8393x_ttda(s),
|
|
- MEMTXATTRS_UNSPECIFIED, s->data, size, 1);
|
|
|
|
|
|
+ MEMTXATTRS_UNSPECIFIED, s->data, size, true);
|
|
|
|
|
|
if (!(s->regs[SONIC_CR] & SONIC_CR_HTX)) {
|
|
if (!(s->regs[SONIC_CR] & SONIC_CR_HTX)) {
|
|
/* Read footer of packet */
|
|
/* Read footer of packet */
|
|
@@ -505,7 +506,7 @@ static void dp8393x_do_transmit_packets(dp8393xState *s)
|
|
dp8393x_ttda(s) +
|
|
dp8393x_ttda(s) +
|
|
sizeof(uint16_t) *
|
|
sizeof(uint16_t) *
|
|
(4 + 3 * s->regs[SONIC_TFC]) * width,
|
|
(4 + 3 * s->regs[SONIC_TFC]) * width,
|
|
- MEMTXATTRS_UNSPECIFIED, s->data, size, 0);
|
|
|
|
|
|
+ MEMTXATTRS_UNSPECIFIED, s->data, size, false);
|
|
s->regs[SONIC_CTDA] = dp8393x_get(s, width, 0) & ~0x1;
|
|
s->regs[SONIC_CTDA] = dp8393x_get(s, width, 0) & ~0x1;
|
|
if (dp8393x_get(s, width, 0) & 0x1) {
|
|
if (dp8393x_get(s, width, 0) & 0x1) {
|
|
/* EOL detected */
|
|
/* EOL detected */
|
|
@@ -768,7 +769,7 @@ static ssize_t dp8393x_receive(NetClientState *nc, const uint8_t * buf,
|
|
size = sizeof(uint16_t) * 1 * width;
|
|
size = sizeof(uint16_t) * 1 * width;
|
|
address = dp8393x_crda(s) + sizeof(uint16_t) * 5 * width;
|
|
address = dp8393x_crda(s) + sizeof(uint16_t) * 5 * width;
|
|
address_space_rw(&s->as, address, MEMTXATTRS_UNSPECIFIED,
|
|
address_space_rw(&s->as, address, MEMTXATTRS_UNSPECIFIED,
|
|
- s->data, size, 0);
|
|
|
|
|
|
+ s->data, size, false);
|
|
if (dp8393x_get(s, width, 0) & 0x1) {
|
|
if (dp8393x_get(s, width, 0) & 0x1) {
|
|
/* Still EOL ; stop reception */
|
|
/* Still EOL ; stop reception */
|
|
return -1;
|
|
return -1;
|
|
@@ -790,7 +791,7 @@ static ssize_t dp8393x_receive(NetClientState *nc, const uint8_t * buf,
|
|
address_space_write(&s->as, address, MEMTXATTRS_UNSPECIFIED, buf, rx_len);
|
|
address_space_write(&s->as, address, MEMTXATTRS_UNSPECIFIED, buf, rx_len);
|
|
address += rx_len;
|
|
address += rx_len;
|
|
address_space_rw(&s->as, address,
|
|
address_space_rw(&s->as, address,
|
|
- MEMTXATTRS_UNSPECIFIED, &checksum, 4, 1);
|
|
|
|
|
|
+ MEMTXATTRS_UNSPECIFIED, &checksum, 4, true);
|
|
rx_len += 4;
|
|
rx_len += 4;
|
|
s->regs[SONIC_CRBA1] = address >> 16;
|
|
s->regs[SONIC_CRBA1] = address >> 16;
|
|
s->regs[SONIC_CRBA0] = address & 0xffff;
|
|
s->regs[SONIC_CRBA0] = address & 0xffff;
|
|
@@ -819,12 +820,12 @@ static ssize_t dp8393x_receive(NetClientState *nc, const uint8_t * buf,
|
|
dp8393x_put(s, width, 4, s->regs[SONIC_RSC]); /* seq_no */
|
|
dp8393x_put(s, width, 4, s->regs[SONIC_RSC]); /* seq_no */
|
|
size = sizeof(uint16_t) * 5 * width;
|
|
size = sizeof(uint16_t) * 5 * width;
|
|
address_space_rw(&s->as, dp8393x_crda(s),
|
|
address_space_rw(&s->as, dp8393x_crda(s),
|
|
- MEMTXATTRS_UNSPECIFIED, s->data, size, 1);
|
|
|
|
|
|
+ MEMTXATTRS_UNSPECIFIED, s->data, size, true);
|
|
|
|
|
|
/* Move to next descriptor */
|
|
/* Move to next descriptor */
|
|
size = sizeof(uint16_t) * width;
|
|
size = sizeof(uint16_t) * width;
|
|
address_space_rw(&s->as, dp8393x_crda(s) + sizeof(uint16_t) * 5 * width,
|
|
address_space_rw(&s->as, dp8393x_crda(s) + sizeof(uint16_t) * 5 * width,
|
|
- MEMTXATTRS_UNSPECIFIED, s->data, size, 0);
|
|
|
|
|
|
+ MEMTXATTRS_UNSPECIFIED, s->data, size, false);
|
|
s->regs[SONIC_LLFA] = dp8393x_get(s, width, 0);
|
|
s->regs[SONIC_LLFA] = dp8393x_get(s, width, 0);
|
|
if (s->regs[SONIC_LLFA] & 0x1) {
|
|
if (s->regs[SONIC_LLFA] & 0x1) {
|
|
/* EOL detected */
|
|
/* EOL detected */
|
|
@@ -838,7 +839,7 @@ static ssize_t dp8393x_receive(NetClientState *nc, const uint8_t * buf,
|
|
}
|
|
}
|
|
s->data[0] = 0;
|
|
s->data[0] = 0;
|
|
address_space_rw(&s->as, offset, MEMTXATTRS_UNSPECIFIED,
|
|
address_space_rw(&s->as, offset, MEMTXATTRS_UNSPECIFIED,
|
|
- s->data, sizeof(uint16_t), 1);
|
|
|
|
|
|
+ s->data, sizeof(uint16_t), true);
|
|
s->regs[SONIC_CRDA] = s->regs[SONIC_LLFA];
|
|
s->regs[SONIC_CRDA] = s->regs[SONIC_LLFA];
|
|
s->regs[SONIC_ISR] |= SONIC_ISR_PKTRX;
|
|
s->regs[SONIC_ISR] |= SONIC_ISR_PKTRX;
|
|
s->regs[SONIC_RSC] = (s->regs[SONIC_RSC] & 0xff00) | (((s->regs[SONIC_RSC] & 0x00ff) + 1) & 0x00ff);
|
|
s->regs[SONIC_RSC] = (s->regs[SONIC_RSC] & 0xff00) | (((s->regs[SONIC_RSC] & 0x00ff) + 1) & 0x00ff);
|