📄 pquicc.c
字号:
/* */
/* PQUICC_Open */
/* */
/* CALLS */
/* */
/* None */
/* */
/* INPUTS */
/* */
/* None */
/* */
/* OUTPUTS */
/* */
/* uchar pointer */
/* */
/* HISTORY */
/* */
/* NAME DATE REMARKS */
/* */
/* B. Haggerty 05-07-1998 Created version 1.0 */
/* */
/****************************************************************************/
STATUS PQUICC_Get_Address (uchar *ether_addr, ulint io_addr)
{
return ( NU_SUCCESS );
}
/****************************************************************************/
/* FUNCTION */
/* */
/* PQUICC_Set_Address */
/* */
/* DESCRIPTION */
/* */
/* This function will handle loading the Ethernet address for PQUICC */
/* Ethernet controller, which is not necessary for QUICC, but necessary to */
/* maintain the interface with the generic code of NUCLEUS NET */
/* */
/* AUTHOR */
/* */
/* Bill Haggerty Accelerated Technology Inc. */
/* */
/* CALLED BY */
/* */
/* PQUICC_Open */
/* */
/* CALLS */
/* */
/* None */
/* */
/* INPUTS */
/* */
/* uchar pointer : MAC address */
/* device pointer : device entry to use */
/* */
/* OUTPUTS */
/* */
/* None */
/* */
/* HISTORY */
/* */
/* NAME DATE REMARKS */
/* */
/* B. Haggerty 05-07-1998 Created version 1.0 */
/* */
/****************************************************************************/
VOID PQUICC_Set_Address(uchar *ether_addr, DV_DEVICE_ENTRY *device)
{
uchar temp;
uchar *endp;
uchar *swap;
int i;
uchar local[6];
uchar *fix;
memcpy ((void *) local, (void *)ether_addr, 6);
swap = local;
endp = swap + 5;
while (swap < endp)
{
temp = *swap;
*swap++ = *endp;
*endp-- = temp;
}
fix = (uchar *)&pquicc->pram[0].enet_scc.paddr_h;
fix [0] = local[0];
fix [1] = local[1];
fix [2] = local[2];
fix [3] = local[3];
fix [4] = local[4];
fix [5] = local[5];
pquicc->pram[0].enet_scc.gaddr1 = 0; /* Zero group address */
pquicc->pram[0].enet_scc.gaddr2 = 0;
pquicc->pram[0].enet_scc.gaddr3 = 0;
pquicc->pram[0].enet_scc.gaddr4 = 0;
pquicc->pram[0].enet_scc.iaddr1 = 0; /* Individual hash table not used */
pquicc->pram[0].enet_scc.iaddr2 = 0;
pquicc->pram[0].enet_scc.iaddr3 = 0;
pquicc->pram[0].enet_scc.iaddr4 = 0;
pquicc->pram[0].enet_scc.taddr_h = 0; /* Temp regs -- clear them */
pquicc->pram[0].enet_scc.taddr_m = 0;
pquicc->pram[0].enet_scc.taddr_l = 0;
} /* PQUICC_Set_Address routine */
/****************************************************************************/
/* FUNCTION */
/* */
/* PQUICC_Update_Hash_Table */
/* */
/* DESCRIPTION */
/* */
/* */
/* AUTHOR */
/* */
/* Bill Haggerty Accelerated Technology Inc. */
/* */
/* CALLED BY */
/* */
/* */
/* CALLS */
/* */
/* */
/* INPUTS */
/* */
/* */
/* OUTPUTS */
/* */
/* */
/* HISTORY */
/* */
/* NAME DATE REMARKS */
/* */
/* B. Haggerty 05-07-1998 Created version 1.0 */
/* */
/****************************************************************************/
STATUS PQUICC_Update_Hash_Table(DV_DEVICE_ENTRY *device)
{
NET_MULTI *em;
uchar temp;
uchar *endp;
uchar *swap;
int i;
uchar local[6];
uchar *fix;
if ( device->dev_ethermulti )
{
for ( em = device->dev_ethermulti;
em != NU_NULL;
em = em->nm_next )
{
memcpy ((void *) local, (void *)em, 6);
swap = local;
endp = swap + 5;
while (swap < endp)
{
temp = *swap;
*swap++ = *endp;
*endp-- = temp;
}
fix = (uchar *)&pquicc->pram[0].enet_scc.taddr_l;
fix [0] = local[5];
fix [1] = local[4];
fix [2] = local[3];
fix [3] = local[2];
fix [4] = local[1];
fix [5] = local[0];
issue_cmd(0x1000);
}
}
} /* PQUICC_Update_Hash_Table */
/****************************************************************************/
/* FUNCTION */
/* */
/* PQUICC_Xmit_Packet */
/* */
/* DESCRIPTION */
/* */
/* Transmit the buffer - copies buffer from NET to CPM buffer and */
/* sets bits to send data. Checks for transmission error after each */
/* transmission. */
/* */
/* AUTHOR */
/* */
/* Bill Haggerty */
/* */
/* CALLED BY */
/* */
/* */
/* CALLS */
/* */
/* issue_cmd */
/* memcpy */
/* NU_Local_Control_Interrupts */
/* */
/* INPUTS */
/* */
/* device pointer : device to use */
/* buf_ptr pointer : buffer to transmit */
/* */
/* OUTPUTS */
/* */
/* None */
/* */
/* HISTORY */
/* */
/* NAME DATE REMARKS */
/* */
/* B. Haggerty 05-07-1998 Created version 1.0 */
/* */
/****************************************************************************/
STATUS PQUICC_Xmit_Packet(DV_DEVICE_ENTRY *device, NET_BUFFER *buf_ptr)
{
int counter;
int error;
int old_level;
int waiting;
int errortrans = 0;
old_level = NU_Local_Control_Interrupts(NU_DISABLE_INTERRUPTS);
while (buf_ptr)
{
memcpy((void *)tx_bd->data_ptr,
(void *)buf_ptr->data_ptr,
buf_ptr->data_len);
tx_bd->data_len = buf_ptr->data_len;
tx_bd->status &= TX_BD_Wrap;
tx_bd->status |= TX_BD_Ready;
while ( buf_ptr->next_buffer )
{
if ( (tx_bd->status & TX_BD_Wrap ) == 0 )
tx_bd++;
else
{
tx_bd->status |= TX_BD_Wrap;
tx_bd = (struct _tx_bd *)First_TX_BD;
}
buf_ptr = buf_ptr->next_buffer;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -