From 1e066431a45a67321abcd134e888205fc633bd41 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Wed, 4 May 2016 13:30:37 +0100 Subject: [PATCH] [tcpip] Do not fall back to using unoptimised TCP/IP checksumming Require architecture-specific code to make a deliberate choice to use the unoptimised generic_tcpip_continue_chksum() function, if there is no optimised version available. Signed-off-by: Michael Brown --- src/arch/x86/core/x86_tcpip.c | 4 ++-- src/arch/x86/include/bits/tcpip.h | 6 ++---- src/include/ipxe/tcpip.h | 13 ++++--------- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/arch/x86/core/x86_tcpip.c b/src/arch/x86/core/x86_tcpip.c index 88042f5f7..ed323d5d0 100644 --- a/src/arch/x86/core/x86_tcpip.c +++ b/src/arch/x86/core/x86_tcpip.c @@ -42,8 +42,8 @@ extern char x86_tcpip_loop_end[]; * @v len Length of data buffer * @ret cksum Updated checksum, in network byte order */ -uint16_t x86_tcpip_continue_chksum ( uint16_t partial, - const void *data, size_t len ) { +uint16_t tcpip_continue_chksum ( uint16_t partial, const void *data, + size_t len ) { unsigned long sum = ( ( ~partial ) & 0xffff ); unsigned long initial_word_count; unsigned long loop_count; diff --git a/src/arch/x86/include/bits/tcpip.h b/src/arch/x86/include/bits/tcpip.h index 5c2baffcf..0ac55b1a0 100644 --- a/src/arch/x86/include/bits/tcpip.h +++ b/src/arch/x86/include/bits/tcpip.h @@ -9,9 +9,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); -extern uint16_t x86_tcpip_continue_chksum ( uint16_t partial, - const void *data, size_t len ); - -#define tcpip_continue_chksum x86_tcpip_continue_chksum +extern uint16_t tcpip_continue_chksum ( uint16_t partial, const void *data, + size_t len ); #endif /* _BITS_TCPIP_H */ diff --git a/src/include/ipxe/tcpip.h b/src/include/ipxe/tcpip.h index be4ac838b..414daad53 100644 --- a/src/include/ipxe/tcpip.h +++ b/src/include/ipxe/tcpip.h @@ -13,6 +13,10 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include #include #include + +extern uint16_t generic_tcpip_continue_chksum ( uint16_t partial, + const void *data, size_t len ); + #include struct io_buffer; @@ -195,17 +199,8 @@ extern int tcpip_tx ( struct io_buffer *iobuf, struct tcpip_protocol *tcpip, extern struct tcpip_net_protocol * tcpip_net_protocol ( sa_family_t sa_family ); extern struct net_device * tcpip_netdev ( struct sockaddr_tcpip *st_dest ); extern size_t tcpip_mtu ( struct sockaddr_tcpip *st_dest ); -extern uint16_t generic_tcpip_continue_chksum ( uint16_t partial, - const void *data, size_t len ); extern uint16_t tcpip_chksum ( const void *data, size_t len ); extern int tcpip_bind ( struct sockaddr_tcpip *st_local, int ( * available ) ( int port ) ); -/* Use generic_tcpip_continue_chksum() if no architecture-specific - * version is available - */ -#ifndef tcpip_continue_chksum -#define tcpip_continue_chksum generic_tcpip_continue_chksum -#endif - #endif /* _IPXE_TCPIP_H */