Success! With these changes, the DEFTA now under NetBSD/pmax!!

This commit is contained in:
matt 1998-05-26 15:33:16 +00:00
parent a10981bdbf
commit 1f8a0caf0a
2 changed files with 43 additions and 39 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: pdq.c,v 1.16 1998/05/25 21:24:21 matt Exp $ */
/* $NetBSD: pdq.c,v 1.17 1998/05/26 15:33:16 matt Exp $ */
/*-
* Copyright (c) 1995,1996 Matt Thomas <matt@3am-software.com>
@ -502,6 +502,7 @@ pdq_queue_commands(
* mask.
*/
ci->ci_queued_commands[ci->ci_request_producer] = op;
#if defined(PDQVERBOSE)
((pdq_response_generic_t *) ci->ci_response_bufstart)->generic_op = PDQC_BOGUS_CMD;
#endif
@ -609,10 +610,11 @@ pdq_process_command_responses(
PDQ_OS_CMDRSP_POSTSYNC(pdq, PDQ_SIZE_COMMAND_RESPONSE);
rspgen = (const pdq_response_generic_t *) ci->ci_response_bufstart;
PDQ_ASSERT(rspgen->generic_op == ci->ci_queued_commands[ci->ci_request_completion]);
PDQ_ASSERT(rspgen->generic_status == PDQR_SUCCESS);
PDQ_PRINTF(("PDQ Process Command Response: %s completed (status=%d)\n",
PDQ_PRINTF(("PDQ Process Command Response: %s completed (status=%d [0x%x])\n",
pdq_cmd_info[rspgen->generic_op].cmd_name,
rspgen->generic_status));
rspgen->generic_status, rspgen->generic_status));
if (rspgen->generic_op == PDQC_STATUS_CHARS_GET && (pdq->pdq_flags & PDQ_PRINTCHARS)) {
pdq->pdq_flags &= ~PDQ_PRINTCHARS;
@ -1557,12 +1559,6 @@ pdq_initialize(
}
dbp = pdq->pdq_dbp;
pdq->pdq_command_info.ci_response_bufstart = (pdq_uint8_t *) dbp->pdqdb_command_pool;
pdq->pdq_command_info.ci_request_bufstart = (pdq_uint8_t *) dbp->pdqdb_command_pool + sizeof(dbp->pdqdb_command_pool) - PDQ_SIZE_COMMAND_RESPONSE;
pdq->pdq_rx_info.rx_buffers = (void *) dbp->pdqdb_receive_buffers;
pdq->pdq_host_smt_info.rx_buffers = (void *) dbp->pdqdb_host_smt_buffers;
PDQ_PRINTF(("\nPDQ Descriptor Block = " PDQ_OS_PTR_FMT " (PA = 0x%x)\n", dbp, pdq->pdq_pa_descriptor_block));
PDQ_PRINTF((" Recieve Queue = " PDQ_OS_PTR_FMT "\n", dbp->pdqdb_receives));
PDQ_PRINTF((" Transmit Queue = " PDQ_OS_PTR_FMT "\n", dbp->pdqdb_transmits));
@ -1618,6 +1614,7 @@ pdq_initialize(
/*
* Initialize the command information block
*/
pdq->pdq_command_info.ci_request_bufstart = dbp->pdqdb_cmd_request_buf;
pdq->pdq_command_info.ci_pa_request_bufstart = PDQ_DB_BUSPA(pdq, pdq->pdq_command_info.ci_request_bufstart);
pdq->pdq_command_info.ci_pa_request_descriptors = PDQ_DB_BUSPA(pdq, dbp->pdqdb_command_requests);
PDQ_PRINTF(("PDQ Command Request Buffer = " PDQ_OS_PTR_FMT " (PA=0x%x)\n",
@ -1633,6 +1630,7 @@ pdq_initialize(
PDQ_OS_DESC_PRESYNC(pdq, dbp->pdqdb_command_requests,
sizeof(dbp->pdqdb_command_requests));
pdq->pdq_command_info.ci_response_bufstart = dbp->pdqdb_cmd_response_buf;
pdq->pdq_command_info.ci_pa_response_bufstart = PDQ_DB_BUSPA(pdq, pdq->pdq_command_info.ci_response_bufstart);
pdq->pdq_command_info.ci_pa_response_descriptors = PDQ_DB_BUSPA(pdq, dbp->pdqdb_command_responses);
PDQ_PRINTF(("PDQ Command Response Buffer = " PDQ_OS_PTR_FMT " (PA=0x%x)\n",
@ -1676,10 +1674,12 @@ pdq_initialize(
/*
* Initialize the receive information blocks (normal and SMT).
*/
pdq->pdq_rx_info.rx_buffers = pdq->pdq_receive_buffers;
pdq->pdq_rx_info.rx_free = PDQ_RING_MASK(dbp->pdqdb_receives);
pdq->pdq_rx_info.rx_target = pdq->pdq_rx_info.rx_free - PDQ_RX_SEGCNT * 8;
pdq->pdq_rx_info.rx_pa_descriptors = PDQ_DB_BUSPA(pdq, dbp->pdqdb_receives);
pdq->pdq_host_smt_info.rx_buffers = pdq->pdq_host_smt_buffers;
pdq->pdq_host_smt_info.rx_free = PDQ_RING_MASK(dbp->pdqdb_host_smt);
pdq->pdq_host_smt_info.rx_target = pdq->pdq_host_smt_info.rx_free - PDQ_RX_SEGCNT * 3;
pdq->pdq_host_smt_info.rx_pa_descriptors = PDQ_DB_BUSPA(pdq, dbp->pdqdb_host_smt);

View File

@ -1,4 +1,4 @@
/* $NetBSD: pdqreg.h,v 1.10 1998/05/25 21:24:21 matt Exp $ */
/* $NetBSD: pdqreg.h,v 1.11 1998/05/26 15:33:17 matt Exp $ */
/*-
* Copyright (c) 1995, 1996 Matt Thomas <matt@3am-software.com>
@ -361,23 +361,43 @@ typedef struct {
* The rest of the descriptor block is unused.
* As such we could use it for other things.
*/
pdq_consumer_block_t pdqdb_consumer; /* 64; 0x1380..0x13BF */
void *pdqdb_receive_buffers[256]; /* 1024/2048; 0x13C0..0x17BF 0x13C0..0x1BBF */
void *pdqdb_host_smt_buffers[64]; /* 256/ 512; 0x17C0..0x18BF 0x1BC0..0x1DBF */
pdq_uint8_t pdqdb_tx_hdr[4];
pdq_uint32_t pdqdb__filler1[16]; /* 64; 0x1380..0x13BF */
pdq_consumer_block_t pdqdb_consumer; /* 64; 0x13C0..0x13FF */
/*
* The maximum command size is 512 so as long as thes
* command is at least that long all will be fine.
*/
#if defined(__alpha) || defined(__alpha__)
pdq_uint32_t pdqdb_command_pool[143];
#else
pdq_uint32_t pdqdb_command_pool[463];
#endif
pdq_uint32_t pdqdb__filler2[64]; /* 256; 0x1400..0x14FF */
pdq_uint8_t pdqdb_cmd_request_buf[1024]; /* 1024; 0x1500..0x18FF */
pdq_uint8_t pdqdb_cmd_response_buf[1024]; /* 1024; 0x1900..0x1CFF */
pdq_uint32_t pdqdb__filler3[128]; /* 512; 0x1D00..0x1EFF */
pdq_uint8_t pdqdb_tx_hdr[4]; /* 4; 0x1F00..0x1F03 */
pdq_uint32_t pdqdb__filler4[63]; /* 252; 0x1F04..0x1FFF */
} pdq_descriptor_block_t;
#define PDQ_SIZE_COMMAND_RESPONSE 512
typedef enum {
PDQC_START=0,
PDQC_FILTER_SET=1,
PDQC_FILTER_GET=2,
PDQC_CHARS_SET=3,
PDQC_STATUS_CHARS_GET=4,
PDQC_COUNTERS_GET=5,
PDQC_COUNTERS_SET=6,
PDQC_ADDR_FILTER_SET=7,
PDQC_ADDR_FILTER_GET=8,
PDQC_ERROR_LOG_CLEAR=9,
PDQC_ERROR_LOG_GET=10,
PDQC_FDDI_MIB_GET=11,
PDQC_DEC_EXT_MIB_GET=12,
PDQC_DEV_SPECIFIC_GET=13,
PDQC_SNMP_SET=14,
PDQC_SMT_MIB_GET=16,
PDQC_SMT_MIB_SET=17,
PDQC_BOGUS_CMD=18
} pdq_cmd_code_t;
typedef struct {
/*
* These value manage the available space in command/response
@ -404,6 +424,8 @@ typedef struct {
*/
pdq_physaddr_t ci_pa_request_descriptors;
pdq_physaddr_t ci_pa_response_descriptors;
pdq_cmd_code_t ci_queued_commands[16];
} pdq_command_info_t;
#define PDQ_SIZE_UNSOLICITED_EVENT 512
@ -491,6 +513,8 @@ struct _pdq_t {
pdq_tx_info_t pdq_tx_info;
pdq_rx_info_t pdq_rx_info;
pdq_rx_info_t pdq_host_smt_info;
void *pdq_receive_buffers[256];
void *pdq_host_smt_buffers[64];
pdq_physaddr_t pdq_pa_consumer_block;
pdq_physaddr_t pdq_pa_descriptor_block;
};
@ -499,26 +523,6 @@ struct _pdq_t {
((pdq)->pdq_pa_descriptor_block + \
((u_int8_t *) (m) - (u_int8_t *) (pdq)->pdq_dbp))
typedef enum {
PDQC_START=0,
PDQC_FILTER_SET=1,
PDQC_FILTER_GET=2,
PDQC_CHARS_SET=3,
PDQC_STATUS_CHARS_GET=4,
PDQC_COUNTERS_GET=5,
PDQC_COUNTERS_SET=6,
PDQC_ADDR_FILTER_SET=7,
PDQC_ADDR_FILTER_GET=8,
PDQC_ERROR_LOG_CLEAR=9,
PDQC_ERROR_LOG_GET=10,
PDQC_FDDI_MIB_GET=11,
PDQC_DEC_EXT_MIB_GET=12,
PDQC_DEV_SPECIFIC_GET=13,
PDQC_SNMP_SET=14,
PDQC_SMT_MIB_GET=16,
PDQC_SMT_MIB_SET=17,
PDQC_BOGUS_CMD=18
} pdq_cmd_code_t;
typedef enum {
PDQR_SUCCESS=0,