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);