summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Prindeville <philipp@redfish-solutions.com>2011-12-23 17:22:05 -0700
committerPatrick Georgi <patrick@georgi-clan.de>2011-12-24 11:51:14 +0100
commitfe2f6b075ec0159b5308c90b69213d8c4543fbb6 (patch)
tree395216837b9c275564cbb9118800ac6b56438aca
parent46404d75e4dc106268e1027a4828d8ea4f17f389 (diff)
downloadcoreboot-fe2f6b075ec0159b5308c90b69213d8c4543fbb6.tar.xz
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> Reviewed-on: http://review.coreboot.org/497 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
-rw-r--r--payloads/coreinfo/coreboot_module.c6
-rw-r--r--payloads/libpayload/include/coreboot_tables.h5
2 files changed, 8 insertions, 3 deletions
diff --git a/payloads/coreinfo/coreboot_module.c b/payloads/coreinfo/coreboot_module.c
index 5d13128e32..7289366f8b 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 3b3b7d2299..574469a6ed 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) \