PDP11, VAX: Fix XQ DELQA-T (DELQA-Plus) mode to receive broadcast addresses

This commit is contained in:
Mark Pizzolato 2021-12-12 11:52:32 -08:00
parent b35d36407d
commit 40d4609385
2 changed files with 9 additions and 4 deletions

View file

@ -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->sanity.quarter_secs = 4*xq->var->init.hit_timeout;
} }
xq->var->icr = xq->var->init.options & XQ_IN_OP_INT; 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 */ xq->dev->dctrl = saved_debug; /* restore original debugging */
} }
/* start the read service timer or enable asynch reading as appropriate */ /* 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; return status;
} }
if (xq->var->mode == XQ_T_DELQA_PLUS) 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); 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 else
if (xq->var->setup.valid) { if (xq->var->setup.valid) {
int i, count = 0; int i, count = 0;

View file

@ -285,6 +285,7 @@ struct xq_device {
uint16 pending_interrupt; /* Pending Interrupt - DELQA-T only */ uint16 pending_interrupt; /* Pending Interrupt - DELQA-T only */
struct xq_turbo_init_block struct xq_turbo_init_block
init; init;
ETH_MAC turbo_macs[2]; /* Hardware MAC address + broadcast */
struct transmit_buffer_descriptor struct transmit_buffer_descriptor
xring[XQ_TURBO_XM_BCNT]; /* Transmit Buffer Ring */ xring[XQ_TURBO_XM_BCNT]; /* Transmit Buffer Ring */
uint32 tbindx; /* Transmit Buffer Ring Index */ uint32 tbindx; /* Transmit Buffer Ring Index */