From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KNv4j-00053d-Uk for qemu-devel@nongnu.org; Tue, 29 Jul 2008 15:41:37 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KNv4j-00053J-Bv for qemu-devel@nongnu.org; Tue, 29 Jul 2008 15:41:37 -0400 Received: from [199.232.76.173] (port=44167 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KNv4j-00053E-1v for qemu-devel@nongnu.org; Tue, 29 Jul 2008 15:41:37 -0400 Received: from savannah.gnu.org ([199.232.41.3]:52938 helo=sv.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KNv4S-0004Z0-3d for qemu-devel@nongnu.org; Tue, 29 Jul 2008 15:41:36 -0400 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.63) (envelope-from ) id 1KNv4R-0002QL-Ed for qemu-devel@nongnu.org; Tue, 29 Jul 2008 19:41:19 +0000 Received: from aliguori by cvs.savannah.gnu.org with local (Exim 4.63) (envelope-from ) id 1KNv4R-0002Q9-91 for qemu-devel@nongnu.org; Tue, 29 Jul 2008 19:41:19 +0000 MIME-Version: 1.0 Errors-To: aliguori Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Anthony Liguori Message-Id: Date: Tue, 29 Jul 2008 19:41:19 +0000 Subject: [Qemu-devel] [4972] e1000: use common checksumming code Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Revision: 4972 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=4972 Author: aliguori Date: 2008-07-29 19:41:19 +0000 (Tue, 29 Jul 2008) Log Message: ----------- e1000: use common checksumming code Signed-off-by: Gerd Hoffmann Signed-off-by: Anthony Liguori Modified Paths: -------------- trunk/hw/e1000.c Modified: trunk/hw/e1000.c =================================================================== --- trunk/hw/e1000.c 2008-07-29 19:40:04 UTC (rev 4971) +++ trunk/hw/e1000.c 2008-07-29 19:41:19 UTC (rev 4972) @@ -279,26 +279,18 @@ E1000_EEPROM_RW_REG_DONE | r; } -static unsigned int -do_cksum(uint8_t *dp, uint8_t *de) -{ - unsigned int bsum[2] = {0, 0}, i, sum; - - for (i = 1; dp < de; bsum[i^=1] += *dp++) - ; - sum = (bsum[0] << 8) + bsum[1]; - sum = (sum >> 16) + (sum & 0xffff); - return ~(sum + (sum >> 16)); -} - static void putsum(uint8_t *data, uint32_t n, uint32_t sloc, uint32_t css, uint32_t cse) { + uint32_t sum; + if (cse && cse < n) n = cse + 1; - if (sloc < n-1) + if (sloc < n-1) { + sum = net_checksum_add(n-css, data+css); cpu_to_be16wu((uint16_t *)(data + sloc), - do_cksum(data + css, data + n)); + net_checksum_finish(sum)); + } } static void