From 40d46093853ed3d7e16331bfec713f4cfdea50fd Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Sun, 12 Dec 2021 11:52:32 -0800 Subject: [PATCH] PDP11, VAX: Fix XQ DELQA-T (DELQA-Plus) mode to receive broadcast addresses --- PDP11/pdp11_xq.c | 12 ++++++++---- PDP11/pdp11_xq.h | 1 + 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/PDP11/pdp11_xq.c b/PDP11/pdp11_xq.c index 0ea6dc5a..fbdaa143 100644 --- a/PDP11/pdp11_xq.c +++ b/PDP11/pdp11_xq.c @@ -2403,8 +2403,9 @@ t_stat xq_wr_srqr_action(CTLR* xq) xq->var->sanity.quarter_secs = 4*xq->var->init.hit_timeout; } xq->var->icr = xq->var->init.options & XQ_IN_OP_INT; - status = eth_filter_hash (xq->var->etherface, 1, &xq->var->init.phys, 0, xq->var->init.mode & XQ_IN_MO_PRO, &xq->var->init.hash_filter); - + memcpy (&xq->var->turbo_macs[0], &xq->var->init.phys, sizeof (xq->var->turbo_macs[0])); + memset (&xq->var->turbo_macs[1], 0xFF, sizeof (xq->var->turbo_macs[1])); /* LANCE explicitly also matches the broadcast address */ + status = eth_filter_hash (xq->var->etherface, 2, xq->var->turbo_macs, 0, xq->var->init.mode & XQ_IN_MO_PRO, &xq->var->init.hash_filter); xq->dev->dctrl = saved_debug; /* restore original debugging */ } /* start the read service timer or enable asynch reading as appropriate */ @@ -2925,8 +2926,11 @@ t_stat xq_attach(UNIT* uptr, CONST char* cptr) return status; } - if (xq->var->mode == XQ_T_DELQA_PLUS) - eth_filter_hash (xq->var->etherface, 1, &xq->var->init.phys, 0, xq->var->init.mode & XQ_IN_MO_PRO, &xq->var->init.hash_filter); + if (xq->var->mode == XQ_T_DELQA_PLUS) { + memcpy (&xq->var->turbo_macs[0], &xq->var->init.phys, sizeof (xq->var->turbo_macs[0])); + memset (&xq->var->turbo_macs[1], 0xFF, sizeof (xq->var->turbo_macs[1])); /* LANCE explicitly also matches the broadcast address */ + eth_filter_hash (xq->var->etherface, 2, xq->var->turbo_macs, 0, xq->var->init.mode & XQ_IN_MO_PRO, &xq->var->init.hash_filter); + } else if (xq->var->setup.valid) { int i, count = 0; diff --git a/PDP11/pdp11_xq.h b/PDP11/pdp11_xq.h index 023dbfe6..33d34bea 100644 --- a/PDP11/pdp11_xq.h +++ b/PDP11/pdp11_xq.h @@ -285,6 +285,7 @@ struct xq_device { uint16 pending_interrupt; /* Pending Interrupt - DELQA-T only */ struct xq_turbo_init_block init; + ETH_MAC turbo_macs[2]; /* Hardware MAC address + broadcast */ struct transmit_buffer_descriptor xring[XQ_TURBO_XM_BCNT]; /* Transmit Buffer Ring */ uint32 tbindx; /* Transmit Buffer Ring Index */