]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[tcpip] Do not fall back to using unoptimised TCP/IP checksumming
authorMichael Brown <mcb30@ipxe.org>
Wed, 4 May 2016 12:30:37 +0000 (13:30 +0100)
committerMichael Brown <mcb30@ipxe.org>
Wed, 4 May 2016 12:38:25 +0000 (13:38 +0100)
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 <mcb30@ipxe.org>
src/arch/x86/core/x86_tcpip.c
src/arch/x86/include/bits/tcpip.h
src/include/ipxe/tcpip.h

index 88042f5f7ede74f1147f73f34ac65fe494e49844..ed323d5d0ad853852af65c327b91d78513fe5a70 100644 (file)
@@ -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;
index 5c2baffcfd749a38825d9e0b2cbc5dbe9e79732e..0ac55b1a015e87c4ee1019ac9c4eedcbf22cb7c7 100644 (file)
@@ -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 */
index be4ac838b40025a9d0b6210eb97e0d1325fff629..414daad5365fdd461fba357a60f83156cef479cc 100644 (file)
@@ -13,6 +13,10 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
 #include <ipxe/socket.h>
 #include <ipxe/in.h>
 #include <ipxe/tables.h>
+
+extern uint16_t generic_tcpip_continue_chksum ( uint16_t partial,
+                                               const void *data, size_t len );
+
 #include <bits/tcpip.h>
 
 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 */