Philip Prindeville (pprindeville@gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/497
-gerrit
commit 76ee7c3f8e68eae1df5fcb43bcfb54dcdf489cad Author: Philip Prindeville philipp@redfish-solutions.com Date: Fri Dec 23 17:22:05 2011 -0700
Use convenience function to checksum
That coreboot uses the IP checksum is an artifact, not a deliberate requirement to be compatible with the Internet Protocole suite. Use a wrapper to abstract the computation of coreboot's checksum.
Change-Id: I6491b9ba5efb9ffe5cb12a6172653a6ac80a1370 Signed-off-by: Philip Prindeville philipp@redfish-solutions.com --- payloads/coreinfo/coreboot_module.c | 6 +++--- payloads/libpayload/include/coreboot_tables.h | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/payloads/coreinfo/coreboot_module.c b/payloads/coreinfo/coreboot_module.c index 5d13128..7289366 100644 --- a/payloads/coreinfo/coreboot_module.c +++ b/payloads/coreinfo/coreboot_module.c @@ -17,8 +17,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
-#include <coreboot_tables.h> #include "coreinfo.h" +#include <coreboot_tables.h>
#ifdef CONFIG_MODULE_COREBOOT
@@ -189,10 +189,10 @@ static int parse_header(void *addr, int len)
/* FIXME: Check the checksum. */
- if (ipchksum((uint16_t *) header, sizeof(*header))) + if (cb_checksum(header, sizeof(*header))) return -1;
- if (ipchksum((uint16_t *) (ptr + sizeof(*header)), header->table_bytes) + if (cb_checksum((ptr + sizeof(*header)), header->table_bytes) != header->table_checksum) return -1;
diff --git a/payloads/libpayload/include/coreboot_tables.h b/payloads/libpayload/include/coreboot_tables.h index 3b3b7d2..574469a 100644 --- a/payloads/libpayload/include/coreboot_tables.h +++ b/payloads/libpayload/include/coreboot_tables.h @@ -223,6 +223,11 @@ static inline u64 cb_unpack64(struct cbuint64 val) return (((u64) val.hi) << 32) | val.lo; }
+static inline u16 cb_checksum(const void *ptr, unsigned len) +{ + return ipchksum(ptr, len); +} + /* Helpful macros */
#define MEM_RANGE_COUNT(_rec) \