/* * Mausezahn - A fast versatile traffic generator * Copyright (C) 2008-2010 Herbert Haas * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License version 2 as published by the * Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program; if not, see http://www.gnu.org/licenses/gpl-2.0.html * */ #include "mz.h" #include "mops.h" // -- TOC: -- // // u_int16_t mops_sum16 (u_int16_t len, u_int8_t buff[]) // int mops_get_transport_sum (struct mops *mp) ////////////////////////////////////////////////////////////////////////////////// // // See also: // // RFC1071 - Computing the Internet checksum // ////////////////////////////////////////////////////////////////////////////////// // Generic 16-bit checksum code as required for IP and other headers. // The checksum is calculated over buff[] which is of length len. // // RETURN VALUE: The checksum! (Validated - correct!!!) // // Example: t16 = mops_sum16 (20, &mp->frame[fp]); // u_int16_t mops_sum16 (u_int16_t len, u_int8_t buff[]) { u_int16_t word16; u_int32_t sum=0; u_int16_t i; // make 16 bit words out of every two adjacent 8 bit words in the packet and add them up for (i=0; i>16) sum = (sum & 0xFFFF)+(sum >> 16); // one's complement the result sum = ~sum; return ((u_int16_t) sum); } // sets UDP or TCP checksum within mp[]->frame // TODO: copying the whole segment is ugly and slow; // make it more efficient and realize it in-place. // int mops_get_transport_sum(struct mops *mp) { u_int8_t buf[MAX_PAYLOAD_SIZE]; u_int16_t len; int udp_used; u_int16_t sum; udp_used = mp->use_UDP; // 0 or 1, 0 means TCP // IP Pseudoheader (12 Bytes) mops_hton4(&mp->ip_src, &buf[0]); mops_hton4(&mp->ip_dst, &buf[4]); buf[9]=0x00; // Copy segment if (udp_used) { buf[10]=0x11; // proto UDP (17 dec) len = mp->udp_len; mops_hton2(&len, &buf[11]); memcpy(&buf[13], &mp->frame[mp->begin_UDP], len); // reset checksum to zero buf[19] = 0x00; buf[20] = 0x00; sum = mops_sum16(len+12, buf); // insert checksum in UDP header (in frame) mops_hton2 (&sum, &mp->frame[(mp->begin_UDP)+7]); } else { buf[10]=0x06; // proto TCP len = mp->ip_len - mp->ip_IHL; mops_hton2((u_int16_t*)&len, &buf[11]); memcpy(&buf[13], &mp->frame[mp->begin_TCP], len); // reset checksum to zero buf[29] = 0x00; buf[30] = 0x00; sum = mops_sum16(len+12, buf); // insert checksum in TCP header (in frame) mops_hton2 (&sum, &mp->frame[(mp->begin_TCP)+17]); } return 0; } space:mode:
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>2016-08-26 03:09:38 +0000
committerMark Brown <broonie@kernel.org>2016-09-01 21:22:59 +0100
commit2c86dda74ceae739eb3c0ada5cd8f2ddf903ce35 (patch)
tree05487979865f0514bf95db1403e036edb6d7d6d9 /sound
parent0a6c7f2f7890796209896c2239420c8a38dacb60 (diff)
ASoC: simple-card: code sync: rename num_link to num
simple sound card family are using very similar style, but because of its historical reason, there are small differences. For example pointer style, function name, caller postion etc... This patch synchronized simple card style to other simple card family. This patch renames num_link to num Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/generic/simple-card.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/sound/soc/generic/simple-card.c b/sound/soc/generic/simple-card.c