![]() |
![]() |
Defines | |
#define | pa_RESET_SUBSYSTEM() |
pa_RESET_SUBSYSTEM is used to reset the Sub-system | |
#define | pa_ENABLE_SUBSYSTEM() |
pa_ENABLE_SUBSYSTEM enables the subsystem. | |
#define | pa_DOWNLOAD_MODULE(id, img, size) |
pa_DOWNLOAD_MODULE downloads an image | |
#define | pa_GET_SYSTEM_STATE(x) |
pa_GET_SYSETM_STATE returns the state of the subsystem | |
#define | pa_SET_TX_CHKSUM_LENGTH(datap, cnum, len) PASAHO_CHKCRC_SET_LEN ((&(((pasahoComChkCrc_t *)datap)[cnum])), len) |
pa_SET_TX_CHKSUM_LENGTH sets the tx checksum length in a tx route block | |
#define | pa_SET_TX_CHKSUM_INITVAL(datap, cnum, val) PASAHO_CHKCRC_SET_INITVAL ((&(((pasahoComChkCrc_t *)datap)[cnum])), val) |
pa_SET_TX_INITVAL sets the initial value in a tx route block |
#define pa_DOWNLOAD_MODULE | ( | id, | |||
img, | |||||
size | ) |
{ \
CSL_Pa_ssRegs *passRegs = (CSL_Pa_ssRegs *)CSL_PA_SS_CFG_REGS; \
\
SYSTEM_COPY(&(passRegs->PDSP_IRAM[id].PDSP_RAM[0]), img, size); \
}
pa_DOWNLOAD_MODULE downloads an image
This macro provides the same function as Pa_downloadImage. A single image is downloaded to one of the packet processing modules.
#define pa_ENABLE_SUBSYSTEM | ( | ) |
{ \ CSL_Pa_ssRegs *passRegs = (CSL_Pa_ssRegs *)CSL_PA_SS_CFG_REGS; \ \ SYSTEM_WRITE32(&(passRegs->PDSP_CTLSTAT[0].PDSP_CONTROL), (CSL_PA_SS_PDSP_CONTROL_PDSP_ENABLE_MASK)); \ SYSTEM_WRITE32(&(passRegs->PDSP_CTLSTAT[1].PDSP_CONTROL), (CSL_PA_SS_PDSP_CONTROL_PDSP_ENABLE_MASK)); \ SYSTEM_WRITE32(&(passRegs->PDSP_CTLSTAT[2].PDSP_CONTROL), (CSL_PA_SS_PDSP_CONTROL_PDSP_ENABLE_MASK)); \ SYSTEM_WRITE32(&(passRegs->PDSP_CTLSTAT[3].PDSP_CONTROL), (CSL_PA_SS_PDSP_CONTROL_PDSP_ENABLE_MASK)); \ SYSTEM_WRITE32(&(passRegs->PDSP_CTLSTAT[4].PDSP_CONTROL), (CSL_PA_SS_PDSP_CONTROL_PDSP_ENABLE_MASK)); \ SYSTEM_WRITE32(&(passRegs->PDSP_CTLSTAT[5].PDSP_CONTROL), (CSL_PA_SS_PDSP_CONTROL_PDSP_ENABLE_MASK)); \ while (SYSTEM_READ32(&(passRegs->MAILBOX[0].MBOX_SLOT[0])) == 0); \ while (SYSTEM_READ32(&(passRegs->MAILBOX[1].MBOX_SLOT[0])) == 0); \ while (SYSTEM_READ32(&(passRegs->MAILBOX[2].MBOX_SLOT[0])) == 0); \ while (SYSTEM_READ32(&(passRegs->MAILBOX[3].MBOX_SLOT[0])) == 0); \ while (SYSTEM_READ32(&(passRegs->MAILBOX[4].MBOX_SLOT[0])) == 0); \ while (SYSTEM_READ32(&(passRegs->MAILBOX[5].MBOX_SLOT[0])) == 0); \ SYSTEM_WRITE32(&(passRegs->MAILBOX[0].MBOX_SLOT[1], 1); \ SYSTEM_WRITE32(&(passRegs->MAILBOX[0].MBOX_SLOT[0], 0); \ while (SYSTEM_READ32(&(passRegs->MAILBOX[0].MBOX_SLOT[1])) == 1); \ SYSTEM_WRITE32(&(passRegs->MAILBOX[0].MBOX_SLOT[1], 0); \ SYSTEM_WRITE32(&(passRegs->MAILBOX[0].MBOX_SLOT[2], 0); \ SYSTEM_WRITE32(&(passRegs->MAILBOX[0].MBOX_SLOT[3], 0); \ SYSTEM_WRITE32(&(passRegs->MAILBOX[0].MBOX_SLOT[4], 0); \ SYSTEM_WRITE32(&(passRegs->MAILBOX[0].MBOX_SLOT[5], 0); \ }
pa_ENABLE_SUBSYSTEM enables the subsystem.
This macro is used to release reset from the packet processing sub-system. It performs the same function as Pa_resetControl, but in macro from. The module user must define the macro SYSTEM_WRITE32 and SYSTEM_READ32.
#define pa_GET_SYSTEM_STATE | ( | x | ) |
{ int enable=0; int disable=0; \ CSL_Pa_ssRegs *passRegs = (CSL_Pa_ssRegs *)CSL_PA_SS_CFG_REGS; \ if ( (SYSTEM_READ32(&(passRegs->PDSP_CTLSTAT[0].PDSP_CONTROL)) & CSL_PA_SS_PDSP_CONTROL_PDSP_ENABLE_MASK) == \ (CSL_PA_SS_PDSP_CONTROL_PDSP_ENABLE_MASK) ) \ enable++; else disable++; \ if ( (SYSTEM_READ32(&(passRegs->PDSP_CTLSTAT[1].PDSP_CONTROL)) & CSL_PA_SS_PDSP_CONTROL_PDSP_ENABLE_MASK) == \ (CSL_PA_SS_PDSP_CONTROL_PDSP_ENABLE_MASK) ) \ enable++; else disable++; \ if ( (SYSTEM_READ32(&(passRegs->PDSP_CTLSTAT[2].PDSP_CONTROL)) & CSL_PA_SS_PDSP_CONTROL_PDSP_ENABLE_MASK) == \ (CSL_PA_SS_PDSP_CONTROL_PDSP_ENABLE_MASK) ) \ enable++; else disable++; \ if ( (SYSTEM_READ32(&(passRegs->PDSP_CTLSTAT[3].PDSP_CONTROL)) & CSL_PA_SS_PDSP_CONTROL_PDSP_ENABLE_MASK) == \ (CSL_PA_SS_PDSP_CONTROL_PDSP_ENABLE_MASK) ) \ enable++; else disable++; \ if ( (SYSTEM_READ32(&(passRegs->PDSP_CTLSTAT[4].PDSP_CONTROL)) & CSL_PA_SS_PDSP_CONTROL_PDSP_ENABLE_MASK) == \ (CSL_PA_SS_PDSP_CONTROL_PDSP_ENABLE_MASK) ) \ enable++; else disable++; \ if ( (SYSTEM_READ32(&(passRegs->PDSP_CTLSTAT[5].PDSP_CONTROL)) & CSL_PA_SS_PDSP_CONTROL_PDSP_ENABLE_MASK) == \ (CSL_PA_SS_PDSP_CONTROL_PDSP_ENABLE_MASK) ) \ enable++; else disable++; \ if ( (enable > 0) && (disable > 0) ) (x) = pa_STATE_INCONSISTENT; \ else if (enable > 0) (x) = pa_STATE_ENABLE; \ else (x) = pa_STATE_RESET; \ } (x) = (x)
pa_GET_SYSETM_STATE returns the state of the subsystem
This macro provides the same functionality as Pa_resetControl and returns the current state in the macro argument.
#define pa_RESET_SUBSYSTEM | ( | ) |
{ \ CSL_Pa_ssRegs *passRegs = (CSL_Pa_ssRegs *)CSL_PA_SS_CFG_REGS; \ \ SYSTEM_WRITE32(&(passRegs->PDSP_CTLSTAT[0].PDSP_CONTROL), (CSL_PA_SS_PDSP_CONTROL_SOFT_RST_N_MASK)); \ SYSTEM_WRITE32(&(passRegs->PDSP_CTLSTAT[1].PDSP_CONTROL), (CSL_PA_SS_PDSP_CONTROL_SOFT_RST_N_MASK)); \ SYSTEM_WRITE32(&(passRegs->PDSP_CTLSTAT[2].PDSP_CONTROL), (CSL_PA_SS_PDSP_CONTROL_SOFT_RST_N_MASK)); \ SYSTEM_WRITE32(&(passRegs->PDSP_CTLSTAT[3].PDSP_CONTROL), (CSL_PA_SS_PDSP_CONTROL_SOFT_RST_N_MASK)); \ SYSTEM_WRITE32(&(passRegs->PDSP_CTLSTAT[4].PDSP_CONTROL), (CSL_PA_SS_PDSP_CONTROL_SOFT_RST_N_MASK)); \ SYSTEM_WRITE32(&(passRegs->PDSP_CTLSTAT[5].PDSP_CONTROL), (CSL_PA_SS_PDSP_CONTROL_SOFT_RST_N_MASK)); \ SYSTEM_WRITE32(&(passRegs->PKT_ID.PKT_ID_SOFT_RESET, 1); \ SYSTEM_WRITE32(&(passRegs->STATS.STATS_SOFT_RESET, 1); \ SYSTEM_WRITE32(&(passRegs->PDSP_TIMER[0].TIMER_CNTRL_REG, 0); \ SYSTEM_WRITE32(&(passRegs->PDSP_TIMER[1].TIMER_CNTRL_REG, 0); \ SYSTEM_WRITE32(&(passRegs->PDSP_TIMER[2].TIMER_CNTRL_REG, 0); \ SYSTEM_WRITE32(&(passRegs->PDSP_TIMER[3].TIMER_CNTRL_REG, 0); \ SYSTEM_WRITE32(&(passRegs->PDSP_TIMER[4].TIMER_CNTRL_REG, 0); \ SYSTEM_WRITE32(&(passRegs->PDSP_TIMER[5].TIMER_CNTRL_REG, 0); \ }
pa_RESET_SUBSYSTEM is used to reset the Sub-system
This macro is used to put the packet processing sub-system into reset. It performs the same function as Pa_resetControl, but in macro form. The module user must define the macro SYSTEM_WRITE32.
#define pa_SET_TX_CHKSUM_INITVAL | ( | datap, | |||
cnum, | |||||
val | ) | PASAHO_CHKCRC_SET_INITVAL ((&(((pasahoComChkCrc_t *)datap)[cnum])), val) |
pa_SET_TX_INITVAL sets the initial value in a tx route block
This macro is used to modify the initial value of a checksum field in a command packet created by a call to Pa_formatTxRoute. This macro is used when a single call to Pa_formatTxRoute is desired, The application typically follows this with an update to the length fields in network headers, either directly or through a blind patch. For updates with IPv4 or IPv6 the pseudo header checksum must be updated as well, and this macro is used to update the value. Typically the pseudo header checksum will be computed with all values except the length, and then updated for each packet with a single ones' complement add.
#define pa_SET_TX_CHKSUM_LENGTH | ( | datap, | |||
cnum, | |||||
len | ) | PASAHO_CHKCRC_SET_LEN ((&(((pasahoComChkCrc_t *)datap)[cnum])), len) |
pa_SET_TX_CHKSUM_LENGTH sets the tx checksum length in a tx route block
This macro is used to modify the length of a checksum field in a command packet created by a call to Pa_formatTxRoute. In many cases packets in an outbound packet stream will have the same source and destination information (see netlayers) but differ in the packet length. This macro will change the checksum calculation information which is sent to the sub-system. The length fields in L2, L3 and L4 must be changed by the module user before sending the packet, they are not changed by this macro. In the case of IP L3 and TCP or UDP L4 the psuedo header checksum must also be changed to reflect the change in packet length.