X-Git-Url: https://git.kernelconcepts.de/?a=blobdiff_plain;f=include%2Fnet.h;h=73ea88b42d7defb35ddea2da2d0ff30684c26b30;hb=0347960b8732b8d8506c9123c217b503666a4ad8;hp=18d279ebe737da5ac87cf891d509b44efb1ece94;hpb=db67801bf92f7fae6131dbc0d387131698fb9490;p=karo-tx-uboot.git diff --git a/include/net.h b/include/net.h index 18d279ebe7..73ea88b42d 100644 --- a/include/net.h +++ b/include/net.h @@ -81,7 +81,7 @@ enum eth_state_t { struct eth_device { char name[16]; unsigned char enetaddr[6]; - int iobase; + phys_addr_t iobase; int state; int (*init) (struct eth_device *, bd_t *); @@ -482,6 +482,36 @@ extern void net_set_ip_header(uchar *pkt, IPaddr_t dest, IPaddr_t source); extern void net_set_udp_header(uchar *pkt, IPaddr_t dest, int dport, int sport, int len); +/** + * compute_ip_checksum() - Compute IP checksum + * + * @addr: Address to check (must be 16-bit aligned) + * @nbytes: Number of bytes to check (normally a multiple of 2) + * @return 16-bit IP checksum + */ +unsigned compute_ip_checksum(const void *addr, unsigned nbytes); + +/** + * add_ip_checksums() - add two IP checksums + * + * @offset: Offset of first sum (if odd we do a byte-swap) + * @sum: First checksum + * @new_sum: New checksum to add + * @return updated 16-bit IP checksum + */ +unsigned add_ip_checksums(unsigned offset, unsigned sum, unsigned new_sum); + +/** + * ip_checksum_ok() - check if a checksum is correct + * + * This works by making sure the checksum sums to 0 + * + * @addr: Address to check (must be 16-bit aligned) + * @nbytes: Number of bytes to check (normally a multiple of 2) + * @return true if the checksum matches, false if not + */ +int ip_checksum_ok(const void *addr, unsigned nbytes); + /* Checksum */ extern int NetCksumOk(uchar *, int); /* Return true if cksum OK */ extern uint NetCksum(uchar *, int); /* Calculate the checksum */