summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Patrick Mackinlay <pmackinlay@hotmail.com>2021-05-10 21:11:32 +0700
committer Patrick Mackinlay <pmackinlay@hotmail.com>2021-05-10 21:11:32 +0700
commitbf96ef8c48907ca351e1f07bd59f619b20e89513 (patch)
tree590fa4be0ed383ab8e39b448271bdce4fcbb8ed7
parent9ef03aa3995ada7a5d6c275baf138d3ae5688662 (diff)
dinetwork: don't transmit fcs
-rw-r--r--src/devices/machine/am79c90.cpp2
-rw-r--r--src/devices/machine/dp83932c.cpp2
-rw-r--r--src/devices/machine/edlc.cpp2
-rw-r--r--src/devices/machine/i82586.cpp2
-rw-r--r--src/emu/dinetwork.cpp8
-rw-r--r--src/emu/dinetwork.h2
6 files changed, 10 insertions, 8 deletions
diff --git a/src/devices/machine/am79c90.cpp b/src/devices/machine/am79c90.cpp
index c48a8cd8236..bfa1aad78e5 100644
--- a/src/devices/machine/am79c90.cpp
+++ b/src/devices/machine/am79c90.cpp
@@ -482,7 +482,7 @@ void am7990_device_base::transmit()
}
}
- send(buf, length);
+ send(buf, length, 4);
}
void am7990_device_base::send_complete_cb(int result)
diff --git a/src/devices/machine/dp83932c.cpp b/src/devices/machine/dp83932c.cpp
index c08a16b655c..092b3949ac2 100644
--- a/src/devices/machine/dp83932c.cpp
+++ b/src/devices/machine/dp83932c.cpp
@@ -393,7 +393,7 @@ void dp83932c_device::transmit()
// transmit data
dump_bytes(buf, length);
- send(buf, length);
+ send(buf, length, 4);
}
void dp83932c_device::send_complete_cb(int result)
diff --git a/src/devices/machine/edlc.cpp b/src/devices/machine/edlc.cpp
index 9749191afe2..9fcc3be5fb5 100644
--- a/src/devices/machine/edlc.cpp
+++ b/src/devices/machine/edlc.cpp
@@ -288,7 +288,7 @@ void seeq8003_device::transmit(void *ptr, int param)
dump_bytes(buf, length);
// transmit the frame
- send(buf, length);
+ send(buf, length, 4);
// TODO: transmit errors/TxRET
diff --git a/src/devices/machine/i82586.cpp b/src/devices/machine/i82586.cpp
index 7dfc6272435..4cad2244d35 100644
--- a/src/devices/machine/i82586.cpp
+++ b/src/devices/machine/i82586.cpp
@@ -1030,7 +1030,7 @@ bool i82586_device::cu_transmit(u32 command)
LOG("cu_transmit sending frame length %d\n", length);
dump_bytes(buf, length);
- return send(buf, length) == length;
+ return send(buf, length, 4) == length;
}
}
diff --git a/src/emu/dinetwork.cpp b/src/emu/dinetwork.cpp
index 6e10e28ecbd..69cc7e9235f 100644
--- a/src/emu/dinetwork.cpp
+++ b/src/emu/dinetwork.cpp
@@ -28,7 +28,7 @@ void device_network_interface::interface_post_start()
device().save_item(NAME(m_loopback_control));
}
-int device_network_interface::send(u8 *buf, int len)
+int device_network_interface::send(u8 *buf, int len, int fcs)
{
// TODO: enable this check when other devices implement delayed transmit
//if (m_send_timer->enabled())
@@ -49,8 +49,10 @@ int device_network_interface::send(u8 *buf, int len)
}
else if (m_dev)
{
- // send the data
- result = m_dev->send(buf, len);
+ // send the data (excluding fcs)
+ result = m_dev->send(buf, len - fcs);
+ if (result)
+ result += fcs;
}
// schedule transmit complete callback
diff --git a/src/emu/dinetwork.h b/src/emu/dinetwork.h
index d165d752852..99909e93905 100644
--- a/src/emu/dinetwork.h
+++ b/src/emu/dinetwork.h
@@ -23,7 +23,7 @@ public:
bool get_promisc() const { return m_promisc; }
int get_interface() const { return m_intf; }
- int send(u8 *buf, int len);
+ int send(u8 *buf, int len, int fcs = 0);
// TODO: de-virtualise this when existing devices implement delayed receive
virtual void recv_cb(u8 *buf, int len);