reformatted sources, added start of bootp protocol implementation

This commit is contained in:
Markus Fröschle
2013-12-24 08:23:01 +00:00
parent 1136db1920
commit f35df14549
8 changed files with 1383 additions and 1169 deletions

View File

@@ -100,6 +100,7 @@ CSRCS= \
ip.c \
udp.c \
arp.c \
bootp.c \
\
basflash.c \
basflash_start.c

58
BaS_gcc/include/bootp.h Normal file
View File

@@ -0,0 +1,58 @@
/*
* File: bootp.h
* Purpose: BOOTP definitions.
*
* Notes:
*/
#ifndef _BOOTP_H_
#define _BOOTP_H_
/********************************************************************/
/*
* This data definition is defined for Ethernet only!
*/
typedef struct
{
uint8_t type; /* bootp operation type */
uint8_t htype; /* hardware type */
uint8_t hlen; /* hardware address length */
uint8_t hops; /* hops */
uint32_t xid; /* transaction identifier */
uint16_t secs; /* seconds since trying to boot */
uint16_t flags; /* only broadcast flag in use */
uint32_t cl_addr; /* client ip address. Set to all 0 on request */
uint32_t yi_addr; /* this field contains the new IP */
uint32_t gi_addr; /* gateway address */
uint8_t ch_addr[16]; /* client hw address */
uint8_t sname[64]; /* server name */
uint8_t file[128]; /* name of bootfile */
uint8_t vend[64]; /* vendor specific (see below) */
} bootp_frame_hdr;
#define BOOTP_HDR_LEN sizeof(bootp_frame_hdr)
/* possible values for type field */
#define BOOTP_TYPE_BOOTREQUEST 1
#define BOOTP_TYPE_BOOTREPLY 2
/* values for hardware type - we only use ethernet */
#define BOOTP_HTYPE_ETHERNET 1
/* values for hlen - again only ethernet defined */
#define BOOTP_HLEN_ETHERNET 6
/* values for flags - only broadcast flag in use */
#define BOOTP_FLAGS_BROADCAST 1
#define BOOTP_TIMEOUT (1) /* Timeout in seconds */
/* Protocol Header information */
#define BOOTP_HDR_OFFSET ETH_HDR_LEN
extern void bootp_request(NIF *, uint8_t *);
extern void bootp_handler(NIF *, NBUF *);
//extern void bootp_init(BOOTP_INFO *);
#endif /* _BOOTP_H_ */

View File

@@ -134,7 +134,7 @@ void arp_merge(ARP_INFO *arptab, uint16_t protocol, int hwa_size, uint8_t *hwa,
/* if after all this, still no slot found, add in last slot */
if (slot == -1)
slot = (MAX_ARP_ENTRY -1);
slot = (MAX_ARP_ENTRY - 1);
/* add the entry into the slot */
arptab->table[slot].protocol = protocol;

View File

@@ -1,33 +1,190 @@
#include "bas_types.h"
#include <stdint.h>
#include <stdbool.h>
static bool bootp_initialized = false;
/*
* bootp client state
* File: arp.c
* Purpose: Address Resolution Protocol routines.
*
* Notes:
*/
struct bootp_client
{
uint8_t state;
uint8_t mode;
uint8_t socket_handle;
uint16_t timer_handle;
uint16_t boot_secs;
};
#include "net.h"
#include "bootp.h"
#include <stdbool.h>
#include <stddef.h>
static struct bootp_client client;
#define TIMER_NETWORK 0
int bootpc_init(int mode)
void bootp_request(NIF *nif, uint8_t *pa)
{
if (bootp_initialized)
/*
* This function broadcasts a BOOTP request for the protocol
* address "pa"
*/
uint8_t *addr;
NBUF *pNbuf;
bootp_frame_hdr *bootpframe;
int i, result;
pNbuf = nbuf_alloc();
if (pNbuf == NULL)
{
return true;
#if defined(DEBUG_PRINT)
xprintf("%s: arp_request couldn't allocate Tx buffer\r\n", __FUNCTION__);
#endif
return;
}
bootpframe = (bootp_frame_hdr *) &pNbuf->data[BOOTP_HDR_OFFSET];
/* Build the BOOTP request packet */
bootpframe->type = BOOTP_TYPE_BOOTREQUEST;
bootpframe->htype = BOOTP_HTYPE_ETHERNET;
bootpframe->hlen = BOOTP_HLEN_ETHERNET;
bootpframe->hops = 0;
bootpframe->xid = 0x1234;
bootpframe->secs = 1;
bootpframe->flags = BOOTP_FLAGS_BROADCAST;
bootpframe->cl_addr = 0x0;
bootpframe->yi_addr = 0x0;
bootpframe->gi_addr = 0x0;
addr = &nif->hwa[0];
for (i = 0; i < 6; i++)
bootpframe->ch_addr[i] = addr[i];
pNbuf->length = BOOTP_HDR_LEN;
/* Send the BOOTP request */
result = nif->send(nif, nif->broadcast, nif->hwa, ETH_FRM_IP, pNbuf);
if (result == 0)
nbuf_free(pNbuf);
}
void bootp_handler(NIF *nif, NBUF *pNbuf)
{
/*
* ARP protocol handler
*/
uint8_t *addr;
bootp_frame_hdr *rx_bootpframe, *tx_bootpframe;
rx_bootpframe = (bootp_frame_hdr *) &pNbuf->data[pNbuf->offset];
#ifdef _NOT_USED_
/*
* Check for an appropriate ARP packet
*/
if ((pNbuf->length < ARP_HDR_LEN) ||
(rx_arpframe->ar_hrd != ETHERNET) ||
(rx_arpframe->ar_hln != 6) ||
(rx_arpframe->ar_pro != ETH_FRM_IP) ||
(rx_arpframe->ar_pln != 4))
{
nbuf_free(pNbuf);
return;
}
/*
* get socket handle
* Check to see if it was addressed to me - if it was, keep this
* ARP entry in the table permanently; if not, mark it so that it
* can be displaced later if necessary
*/
client.socket_handle = udp_getsocket
addr = ip_get_myip(nif_get_protocol_info(nif,ETH_FRM_IP));
if ((rx_arpframe->ar_tpa[0] == addr[0]) &&
(rx_arpframe->ar_tpa[1] == addr[1]) &&
(rx_arpframe->ar_tpa[2] == addr[2]) &&
(rx_arpframe->ar_tpa[3] == addr[3]) )
{
longevity = ARP_ENTRY_PERM;
}
else
longevity = ARP_ENTRY_TEMP;
/*
* Add ARP info into the table
*/
arp_merge(arptab,
rx_arpframe->ar_pro,
rx_arpframe->ar_hln,
&rx_arpframe->ar_sha[0],
rx_arpframe->ar_pln,
&rx_arpframe->ar_spa[0],
longevity
);
switch (rx_arpframe->opcode)
{
case ARP_REQUEST:
/*
* Check to see if request is directed to me
*/
if ((rx_arpframe->ar_tpa[0] == addr[0]) &&
(rx_arpframe->ar_tpa[1] == addr[1]) &&
(rx_arpframe->ar_tpa[2] == addr[2]) &&
(rx_arpframe->ar_tpa[3] == addr[3]) )
{
/*
* Reuse the current network buffer to assemble an ARP reply
*/
tx_arpframe = (arp_frame_hdr *)&pNbuf->data[ARP_HDR_OFFSET];
/*
* Build new ARP frame from the received data
*/
tx_arpframe->ar_hrd = ETHERNET;
tx_arpframe->ar_pro = ETH_FRM_IP;
tx_arpframe->ar_hln = 6;
tx_arpframe->ar_pln = 4;
tx_arpframe->opcode = ARP_REPLY;
tx_arpframe->ar_tha[0] = rx_arpframe->ar_sha[0];
tx_arpframe->ar_tha[1] = rx_arpframe->ar_sha[1];
tx_arpframe->ar_tha[2] = rx_arpframe->ar_sha[2];
tx_arpframe->ar_tha[3] = rx_arpframe->ar_sha[3];
tx_arpframe->ar_tha[4] = rx_arpframe->ar_sha[4];
tx_arpframe->ar_tha[5] = rx_arpframe->ar_sha[5];
tx_arpframe->ar_tpa[0] = rx_arpframe->ar_spa[0];
tx_arpframe->ar_tpa[1] = rx_arpframe->ar_spa[1];
tx_arpframe->ar_tpa[2] = rx_arpframe->ar_spa[2];
tx_arpframe->ar_tpa[3] = rx_arpframe->ar_spa[3];
/*
* Now copy in the new information
*/
addr = &nif->hwa[0];
tx_arpframe->ar_sha[0] = addr[0];
tx_arpframe->ar_sha[1] = addr[1];
tx_arpframe->ar_sha[2] = addr[2];
tx_arpframe->ar_sha[3] = addr[3];
tx_arpframe->ar_sha[4] = addr[4];
tx_arpframe->ar_sha[5] = addr[5];
addr = ip_get_myip(nif_get_protocol_info(nif,ETH_FRM_IP));
tx_arpframe->ar_spa[0] = addr[0];
tx_arpframe->ar_spa[1] = addr[1];
tx_arpframe->ar_spa[2] = addr[2];
tx_arpframe->ar_spa[3] = addr[3];
/*
* Save the length of my packet in the buffer structure
*/
pNbuf->length = ARP_HDR_LEN;
nif->send(nif,
&tx_arpframe->ar_tha[0],
&tx_arpframe->ar_sha[0],
ETH_FRM_ARP,
pNbuf);
}
else
nbuf_free(pNbuf);
break;
case ARP_REPLY:
/*
* The ARP Reply case is already taken care of
*/
default:
nbuf_free(pNbuf);
break;
}
#endif /* _NOT_USED_ */
return;
}

View File

@@ -28,8 +28,6 @@
#endif
/********************************************************************/
FEC_EVENT_LOG fec_log[2];
/********************************************************************/
@@ -184,7 +182,7 @@ void fec_mii_init(uint8_t ch, uint32_t sys_clk)
* MII Speed Setting = System_Clock / (2.5MHz * 2)
* (plus 1 to make sure we round up)
*/
MCF_FEC_MSCR(ch) = MCF_FEC_MSCR_MII_SPEED((sys_clk/5)+1);
MCF_FEC_MSCR(ch) = MCF_FEC_MSCR_MII_SPEED((sys_clk / 5) + 1);
}
/********************************************************************/
@@ -217,7 +215,7 @@ void fec_mib_dump(uint8_t ch)
*/
void fec_log_init(uint8_t ch)
{
memset(&fec_log[ch],0,sizeof(FEC_EVENT_LOG));
memset(&fec_log[ch], 0, sizeof(FEC_EVENT_LOG));
}
/********************************************************************/
@@ -229,30 +227,30 @@ void fec_log_init(uint8_t ch)
void fec_log_dump(uint8_t ch)
{
xprintf("\n FEC%d Log\n---------------\n",ch);
xprintf("Total: %4d\n",fec_log[ch].total);
xprintf("hberr: %4d\n",fec_log[ch].hberr);
xprintf("babr: %4d\n",fec_log[ch].babr);
xprintf("babt: %4d\n",fec_log[ch].babt);
xprintf("gra: %4d\n",fec_log[ch].gra);
xprintf("txf: %4d\n",fec_log[ch].txf);
xprintf("mii: %4d\n",fec_log[ch].mii);
xprintf("lc: %4d\n",fec_log[ch].lc);
xprintf("rl: %4d\n",fec_log[ch].rl);
xprintf("xfun: %4d\n",fec_log[ch].xfun);
xprintf("xferr: %4d\n",fec_log[ch].xferr);
xprintf("rferr: %4d\n",fec_log[ch].rferr);
xprintf("dtxf: %4d\n",fec_log[ch].dtxf);
xprintf("drxf: %4d\n",fec_log[ch].drxf);
xprintf("Total: %4d\n", fec_log[ch].total);
xprintf("hberr: %4d\n", fec_log[ch].hberr);
xprintf("babr: %4d\n", fec_log[ch].babr);
xprintf("babt: %4d\n", fec_log[ch].babt);
xprintf("gra: %4d\n", fec_log[ch].gra);
xprintf("txf: %4d\n", fec_log[ch].txf);
xprintf("mii: %4d\n", fec_log[ch].mii);
xprintf("lc: %4d\n", fec_log[ch].lc);
xprintf("rl: %4d\n", fec_log[ch].rl);
xprintf("xfun: %4d\n", fec_log[ch].xfun);
xprintf("xferr: %4d\n", fec_log[ch].xferr);
xprintf("rferr: %4d\n", fec_log[ch].rferr);
xprintf("dtxf: %4d\n", fec_log[ch].dtxf);
xprintf("drxf: %4d\n", fec_log[ch].drxf);
xprintf("\nRFSW:\n");
xprintf("inv: %4d\n",fec_log[ch].rfsw_inv);
xprintf("m: %4d\n",fec_log[ch].rfsw_m);
xprintf("bc: %4d\n",fec_log[ch].rfsw_bc);
xprintf("mc: %4d\n",fec_log[ch].rfsw_mc);
xprintf("lg: %4d\n",fec_log[ch].rfsw_lg);
xprintf("no: %4d\n",fec_log[ch].rfsw_no);
xprintf("cr: %4d\n",fec_log[ch].rfsw_cr);
xprintf("ov: %4d\n",fec_log[ch].rfsw_ov);
xprintf("tr: %4d\n",fec_log[ch].rfsw_tr);
xprintf("inv: %4d\n", fec_log[ch].rfsw_inv);
xprintf("m: %4d\n", fec_log[ch].rfsw_m);
xprintf("bc: %4d\n", fec_log[ch].rfsw_bc);
xprintf("mc: %4d\n", fec_log[ch].rfsw_mc);
xprintf("lg: %4d\n", fec_log[ch].rfsw_lg);
xprintf("no: %4d\n", fec_log[ch].rfsw_no);
xprintf("cr: %4d\n", fec_log[ch].rfsw_cr);
xprintf("ov: %4d\n", fec_log[ch].rfsw_ov);
xprintf("tr: %4d\n", fec_log[ch].rfsw_tr);
xprintf("---------------\n\n");
}
@@ -266,28 +264,28 @@ void fec_log_dump(uint8_t ch)
void fec_debug_dump(uint8_t ch)
{
xprintf("\n------------- FEC%d -------------\n",ch);
xprintf("EIR %08x \n",MCF_FEC_EIR(ch));
xprintf("EIMR %08x \n",MCF_FEC_EIMR(ch));
xprintf("ECR %08x \n",MCF_FEC_ECR(ch));
xprintf("RCR %08x \n",MCF_FEC_RCR(ch));
xprintf("R_HASH %08x \n",MCF_FEC_RHR_HASH(ch));
xprintf("TCR %08x \n",MCF_FEC_TCR(ch));
xprintf("FECTFWR %08x \n",MCF_FEC_FECTFWR(ch));
xprintf("FECRFSR %08x \n",MCF_FEC_FECRFSR(ch));
xprintf("FECRFCR %08x \n",MCF_FEC_FECRFCR(ch));
xprintf("FECRLRFP %08x \n",MCF_FEC_FECRLRFP(ch));
xprintf("FECRLWFP %08x \n",MCF_FEC_FECRLWFP(ch));
xprintf("FECRFAR %08x \n",MCF_FEC_FECRFAR(ch));
xprintf("FECRFRP %08x \n",MCF_FEC_FECRFRP(ch));
xprintf("FECRFWP %08x \n",MCF_FEC_FECRFWP(ch));
xprintf("FECTFSR %08x \n",MCF_FEC_FECTFSR(ch));
xprintf("FECTFCR %08x \n",MCF_FEC_FECTFCR(ch));
xprintf("FECTLRFP %08x \n",MCF_FEC_FECTLRFP(ch));
xprintf("FECTLWFP %08x \n",MCF_FEC_FECTLWFP(ch));
xprintf("FECTFAR %08x \n",MCF_FEC_FECTFAR(ch));
xprintf("FECTFRP %08x \n",MCF_FEC_FECTFRP(ch));
xprintf("FECTFWP %08x \n",MCF_FEC_FECTFWP(ch));
xprintf("FRST %08x \n",MCF_FEC_FECFRST(ch));
xprintf("EIR %08x \n", MCF_FEC_EIR(ch));
xprintf("EIMR %08x \n", MCF_FEC_EIMR(ch));
xprintf("ECR %08x \n", MCF_FEC_ECR(ch));
xprintf("RCR %08x \n", MCF_FEC_RCR(ch));
xprintf("R_HASH %08x \n", MCF_FEC_RHR_HASH(ch));
xprintf("TCR %08x \n", MCF_FEC_TCR(ch));
xprintf("FECTFWR %08x \n", MCF_FEC_FECTFWR(ch));
xprintf("FECRFSR %08x \n", MCF_FEC_FECRFSR(ch));
xprintf("FECRFCR %08x \n", MCF_FEC_FECRFCR(ch));
xprintf("FECRLRFP %08x \n", MCF_FEC_FECRLRFP(ch));
xprintf("FECRLWFP %08x \n", MCF_FEC_FECRLWFP(ch));
xprintf("FECRFAR %08x \n", MCF_FEC_FECRFAR(ch));
xprintf("FECRFRP %08x \n", MCF_FEC_FECRFRP(ch));
xprintf("FECRFWP %08x \n", MCF_FEC_FECRFWP(ch));
xprintf("FECTFSR %08x \n", MCF_FEC_FECTFSR(ch));
xprintf("FECTFCR %08x \n", MCF_FEC_FECTFCR(ch));
xprintf("FECTLRFP %08x \n", MCF_FEC_FECTLRFP(ch));
xprintf("FECTLWFP %08x \n", MCF_FEC_FECTLWFP(ch));
xprintf("FECTFAR %08x \n", MCF_FEC_FECTFAR(ch));
xprintf("FECTFRP %08x \n", MCF_FEC_FECTFRP(ch));
xprintf("FECTFWP %08x \n", MCF_FEC_FECTFWP(ch));
xprintf("FRST %08x \n", MCF_FEC_FECFRST(ch));
xprintf("--------------------------------\n\n");
}
@@ -305,11 +303,11 @@ void fec_duplex (uint8_t ch, uint8_t duplex)
{
case FEC_MII_HALF_DUPLEX:
MCF_FEC_RCR(ch) |= MCF_FEC_RCR_DRT;
MCF_FEC_TCR(ch) &= (uint32_t)~MCF_FEC_TCR_FDEN;
MCF_FEC_TCR(ch) &= (uint32_t) ~MCF_FEC_TCR_FDEN;
break;
case FEC_MII_FULL_DUPLEX:
default:
MCF_FEC_RCR(ch) &= (uint32_t)~MCF_FEC_RCR_DRT;
MCF_FEC_RCR(ch) &= (uint32_t) ~MCF_FEC_RCR_DRT;
MCF_FEC_TCR(ch) |= MCF_FEC_TCR_FDEN;
break;
}
@@ -332,12 +330,12 @@ uint8_t fec_hash_address(const uint8_t *addr)
int i, j;
crc = 0xFFFFFFFF;
for(i=0; i<6; ++i)
for (i = 0; i < 6; ++i)
{
byte = addr[i];
for(j=0; j<8; ++j)
for (j = 0; j < 8; ++j)
{
if((byte & 0x01)^(crc & 0x01))
if ((byte & 0x01)^(crc & 0x01))
{
crc >>= 1;
crc = crc ^ 0xEDB88320;
@@ -366,8 +364,8 @@ void fec_set_address (uint8_t ch, const uint8_t *pa)
/*
* Set the Physical Address
*/
MCF_FEC_PALR(ch) = (uint32_t)((pa[0]<<24) | (pa[1]<<16) | (pa[2]<<8) | pa[3]);
MCF_FEC_PAHR(ch) = (uint32_t)((pa[4]<<24) | (pa[5]<<16));
MCF_FEC_PALR(ch) = (uint32_t)((pa[0] << 24) | (pa[1] << 16) | (pa[2] << 8) | pa[3]);
MCF_FEC_PAHR(ch) = (uint32_t)((pa[4] << 24) | (pa[5] << 16));
/*
* Calculate and set the hash for given Physical Address
@@ -555,9 +553,6 @@ void fec_rx_start(uint8_t ch, int8_t *rxbd)
channel = dma_set_channel(DMA_FEC_RX(ch),
(ch == 0) ? fec0_rx_frame : fec1_rx_frame);
/*
* Start the Rx DMA task
*/
/*
* Start the Rx DMA task
*/
@@ -729,6 +724,7 @@ void fec_rx_frame(uint8_t ch, NIF *nif)
#ifdef DEBUG_PRINT
xprintf("nbuf_alloc() failed\n");
#endif
/*
* Can't allocate a new network buffer, so we
* have to trash the received data and reuse the buffer
@@ -811,12 +807,14 @@ void fec_rx_frame(uint8_t ch, NIF *nif)
void fec0_rx_frame(void)
{
extern NIF nif1;
fec_rx_frame(0, &nif1);
}
void fec1_rx_frame(void)
{
extern NIF nif1;
fec_rx_frame(1, &nif1);
}
@@ -1078,6 +1076,7 @@ int fec1_send(NIF *nif, uint8_t *dst, uint8_t *src, uint16_t type, NBUF *nbuf)
{
return fec_send(1, nif, dst, src, type, nbuf);
}
/********************************************************************/
/*
* Enable interrupts on the selected FEC
@@ -1163,7 +1162,7 @@ static void fec_irq_handler(uint8_t ch)
#ifdef DEBUG
if (event != eir)
xprintf("Pending but not enabled: 0x%08X\n",(event ^ eir));
xprintf("Pending but not enabled: 0x%08X\n", (event ^ eir));
#endif
/*
@@ -1177,7 +1176,7 @@ static void fec_irq_handler(uint8_t ch)
fec_log[ch].rferr++;
#ifdef DEBUG
xprintf("RFERR\n");
xprintf("FECRFSR%d = 0x%08x\n",ch,MCF_FEC_FECRFSR(ch));
xprintf("FECRFSR%d = 0x%08x\n", ch, MCF_FEC_FECRFSR(ch));
fec_eth_stop(ch);
#endif
}
@@ -1319,8 +1318,8 @@ void fec_eth_setup(uint8_t ch, uint8_t trcvr, uint8_t speed, uint8_t duplex, con
/*
* Enable the multi-channel DMA tasks
*/
fec_rx_start(ch, (int8_t*) fecbd_get_start(ch,Rx));
fec_tx_start(ch, (int8_t*) fecbd_get_start(ch,Tx));
fec_rx_start(ch, (int8_t*) fecbd_get_start(ch, Rx));
fec_tx_start(ch, (int8_t*) fecbd_get_start(ch, Tx));
/*
* Enable the FEC channel
@@ -1337,7 +1336,7 @@ void fec_eth_setup(uint8_t ch, uint8_t trcvr, uint8_t speed, uint8_t duplex, con
*/
void fec_eth_reset(uint8_t ch)
{
// To do
// To do
}
/********************************************************************/
@@ -1387,5 +1386,4 @@ void fec_eth_stop(uint8_t ch)
*/
set_ipl(level);
}
/********************************************************************/

View File

@@ -61,8 +61,8 @@ void fecbd_init(uint8_t ch)
/*
* Align Buffer Descriptors to 4-byte boundary
*/
RxBD = (FECBD *)(((int)unaligned_bds + 3) & 0xFFFFFFFC);
TxBD = (FECBD *)((int)RxBD + (sizeof(FECBD) * 2 * NRXBD));
RxBD = (FECBD *)(((int) unaligned_bds + 3) & 0xFFFFFFFC);
TxBD = (FECBD *)((int) RxBD + (sizeof(FECBD) * 2 * NRXBD));
/*
* Initialize the Rx Buffer Descriptor ring
@@ -96,9 +96,9 @@ void fecbd_init(uint8_t ch)
*/
for (i = 0; i < NTXBD; ++i)
{
TxBD(ch,i).status = TX_BD_INTERRUPT;
TxBD(ch,i).length = 0;
TxBD(ch,i).data = NULL;
TxBD(ch, i).status = TX_BD_INTERRUPT;
TxBD(ch, i).length = 0;
TxBD(ch, i).data = NULL;
}
/*
@@ -119,22 +119,22 @@ void fecbd_dump(uint8_t ch)
printf("\n------------ FEC%d BDs -----------\n",ch);
printf("RxBD Ring\n");
for (i=0; i<NRXBD; i++)
for (i = 0; i < NRXBD; i++)
{
printf("%02d: BD Addr=0x%08x, Ctrl=0x%04x, Lgth=%04d, DataPtr=0x%08x\n",
i, &RxBD(ch,i),
RxBD(ch,i).status,
RxBD(ch,i).length,
RxBD(ch,i).data);
i, &RxBD(ch, i),
RxBD(ch, i).status,
RxBD(ch, i).length,
RxBD(ch, i).data);
}
printf("TxBD Ring\n");
for (i=0; i<NTXBD; i++)
for (i = 0; i < NTXBD; i++)
{
printf("%02d: BD Addr=0x%08x, Ctrl=0x%04x, Lgth=%04d, DataPtr=0x%08x\n",
i, &TxBD(ch,i),
TxBD(ch,i).status,
TxBD(ch,i).length,
TxBD(ch,i).data);
i, &TxBD(ch, i),
TxBD(ch, i).status,
TxBD(ch, i).length,
TxBD(ch, i).data);
}
printf("--------------------------------\n\n");
#endif
@@ -167,13 +167,13 @@ FECBD *fecbd_rx_alloc(uint8_t ch)
int i = iRxbd;
/* Check to see if the ring of BDs is full */
if (RxBD(ch,i).status & RX_BD_E)
if (RxBD(ch, i).status & RX_BD_E)
return NULL;
/* Increment the circular index */
iRxbd = (uint8_t)((iRxbd + 1) % NRXBD);
return &RxBD(ch,i);
return &RxBD(ch, i);
}
/*
@@ -191,13 +191,13 @@ FECBD *fecbd_tx_alloc(uint8_t ch)
int i = iTxbd_new;
/* Check to see if the ring of BDs is full */
if (TxBD(ch,i).status & TX_BD_R)
if (TxBD(ch, i).status & TX_BD_R)
return NULL;
/* Increment the circular index */
iTxbd_new = (uint8_t)((iTxbd_new + 1) % NTXBD);
return &TxBD(ch,i);
return &TxBD(ch, i);
}
/*
@@ -216,11 +216,11 @@ FECBD *fecbd_tx_free(uint8_t ch)
int i = iTxbd_old;
/* Check to see if the ring of BDs is empty */
if ((TxBD(ch,i).data == NULL) || (TxBD(ch,i).status & TX_BD_R))
if ((TxBD(ch, i).data == NULL) || (TxBD(ch, i).status & TX_BD_R))
return NULL;
/* Increment the circular index */
iTxbd_old = (uint8_t)((iTxbd_old + 1) % NTXBD);
return &TxBD(ch,i);
return &TxBD(ch, i);
}

View File

@@ -58,10 +58,10 @@ uint8_t *ip_resolve_route(NIF *nif, IP_ADDR_P destip)
* to the router for transmission.
*/
IP_INFO *info;
IP_ADDR mask,result;
IP_ADDR mask, result;
int i;
info = nif_get_protocol_info(nif,ETH_FRM_IP);
info = nif_get_protocol_info(nif, ETH_FRM_IP);
/* create mask for local IP */
for (i = 0; i < sizeof(IP_ADDR); i++)
@@ -76,15 +76,15 @@ uint8_t *ip_resolve_route(NIF *nif, IP_ADDR_P destip)
}
/* See if destination IP is local or not */
if (ip_addr_compare(mask,result))
if (ip_addr_compare(mask, result))
{
/* The destination IP is on the local net */
return arp_resolve(nif,ETH_FRM_IP,destip);
return arp_resolve(nif, ETH_FRM_IP, destip);
}
else
{
/* The destination IP is not on the local net */
return arp_resolve(nif,ETH_FRM_IP,info->gateway);
return arp_resolve(nif, ETH_FRM_IP, info->gateway);
}
}
@@ -151,7 +151,7 @@ int ip_send(NIF *nif, uint8_t *dest, uint8_t *src, uint8_t protocol, NBUF *pNbuf
if (route == NULL)
{
xprintf("Unable to locate %d.%d.%d.%d\n",
dest[0],dest[1],dest[2],dest[3]);
dest[0], dest[1], dest[2], dest[3]);
return 0;
}
@@ -245,7 +245,7 @@ static int validate_ip_hdr(NIF *nif, ip_frame_hdr *ipframe)
chksum = (int)((uint16_t) IP_CHKSUM(ipframe));
IP_CHKSUM(ipframe) = 0;
if (ip_chksum((uint16_t *) ipframe,IP_IHL(ipframe)*4) != chksum)
if (ip_chksum((uint16_t *) ipframe, IP_IHL(ipframe) * 4) != chksum)
return 0;
IP_CHKSUM(ipframe) = (uint16_t) chksum;
@@ -265,7 +265,7 @@ void ip_handler(NIF *nif, NBUF *pNbuf)
/*
* Verify valid IP header and destination IP
*/
if (!validate_ip_hdr(nif,ipframe))
if (!validate_ip_hdr(nif, ipframe))
{
nbuf_free(pNbuf);
return;