]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - include/net.h
update to 2015.04-rc1
[karo-tx-uboot.git] / include / net.h
index 0dd721604fd3d6f4eb70bf2c866c7895ecb76ef9..0b338ff4e63c9cff6b266a4fd9617d4fbf523efd 100644 (file)
@@ -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 */