From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26486 invoked by alias); 30 Oct 2007 02:41:59 -0000 Received: (qmail 26229 invoked by uid 22791); 30 Oct 2007 02:41:58 -0000 X-Spam-Check-By: sourceware.org Received: from pop132.ocn.ne.jp (HELO pop132.ocn.ne.jp) (60.37.31.215) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 30 Oct 2007 02:41:54 +0000 Received: from ariga (p1143-ipbf2202marunouchi.tokyo.ocn.ne.jp [122.17.131.143]) by pop132.ocn.ne.jp (OCN) with SMTP id l9U2fn8p019202; Tue, 30 Oct 2007 11:41:49 +0900 (JST) Message-ID: <000a01c81a9e$6b8c2240$1c0110ac@ariga> From: "ariga masahiro" To: "Gary Thomas" , "Alok Singh" Cc: References: <000501c7f691$4847e2f0$1c0110ac@ariga> <20070914082224.GA16840@lunn.ch> <000501c80eef$edf10f30$1c0110ac@ariga> <47134CDD.1080604@mlbassoc.com> <004301c80fa1$3dcb15d0$1c0110ac@ariga> <47149BA6.1080500@mlbassoc.com> <001301c81091$1d11b060$1c0110ac@ariga> <4715F2D0.7080704@mlbassoc.com> <000c01c81151$9add59c0$1c0110ac@ariga> <47173F99.80405@mlbassoc.com> <000601c8120c$667aa3c0$1c0110ac@ariga> <47187EEB.5020109@mlbassoc.com> <000501c8154d$ecc04db0$1c0110ac@ariga> <000301c816ab$6acbf7f0$1c0110ac@ariga> Date: Tue, 30 Oct 2007 02:41:00 -0000 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0007_01C81AE9.DB4B33A0" X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-IsSubscribed: yes Mailing-List: contact ecos-discuss-help@ecos.sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: ecos-discuss-owner@ecos.sourceware.org Subject: [ECOS] Can't Connect,TCP CHECKSUM INCORRECT X-SW-Source: 2007-10/txt/msg00145.txt.bz2 ------=_NextPart_000_0007_01C81AE9.DB4B33A0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=response Content-Transfer-Encoding: 7bit Content-length: 5976 Hello, I am the same person who sent the mailing list titled "What functions should I call in ethernet drv ?". At that time I was helped by your advices. I was very much obliged. I am sorry to say that I am encountered another trouble and I ask you again your help. Since then I continued to test transmission between host and target. host(Client) : 172.16.1.28 : nc_test_master target(Server): 172.16.1.200 : nc_test_slave UDP packets look like correctly transmitted between both terminals. But when host tries to connect to target in TCP, always happens connection error(timeout). Below is host's output on cygwin shell. $ ./nc_test_master.exe 172.16.1.200 Start Network Characterization - MASTER ================== No load, master at 100% ======================== Start TCP echo [64,10240] - no delays Can't connect to slave: Connection refused Can't connect to slave: Connection refused Can't connect to slave: Connection refused I sent also Etherreal packets captutre log file(text-gz format). \TCP-checksum-log\DEBUG-00-prescale-20\EtherReal-log-txt\etherreal-TCP-2.txt DEBUG=00,CYGHWR_HAL_SH_RTC_PRESCALE=20(CYGNUM_HAL_RTC_PERIOD=14745) >From here on,I refer to this file as er.txt. When host send SYN packet to target(er.txt,line 89), target tried to reply SYN-ACK but resulted [CHECKSUM INCORRECT]. Target's TCP packets almost always [CHECKSUM INCORRECT]. I also noticed Seq, Ack,and Win numbers all suspicious. When Ack-number looks proper,CHECKSUM INCORRECT not occurs, but never connected. I traced TCP checksum routine,and I am not sure they are correct. I set break at 735 line in tcp_output() function in packages\net\bsd_tcpip\current\src\sys\netinet\tcp_output.c 730: #endif /* INET6 */ 731: { 732: m->m_pkthdr.csum_flags = CSUM_TCP; 733: m->m_pkthdr.csum_data = offsetof(struct tcphdr, th_sum); 734: if (len + optlen) 735: th->th_sum = in_addword(th->th_sum, 736: htons((u_short)(optlen + len))); Then jumped to packages\net\bsd_tcpip\current\src\sys\netinet\in_cksum.c(200): in_addword(u_short a, u_short b) 199: u_short 200: in_addword(u_short a, u_short b) 201: { 202: u_int32_t sum = a + b; 203: 204: ADDCARRY(sum); 205: return (sum); 206: } ADDCARRY is defined as below in in_cksum.c(76) #define ADDCARRY(x) (x > 65535 ? x -= 65535 : x) Now this looks not doing one's complement sum for me. Is this really correct function ? Whereas in case of UDP checksum, I set break at 735 line in udp_output() function in packages\net\bsd_tcpip\current\src\sys\netinet\udp_usrreq.c(662) udp_usrreq.c 662: udp_output(inp, m, addr, control, p) 731: /* 732: * Set up checksum and output datagram. 733: */ 734: if (udpcksum) { 735: ui->ui_sum = in_pseudo(ui->ui_src.s_addr, ui->ui_dst.s_addr, 736: htons((u_short)len + sizeof(struct udphdr) + IPPROTO_UDP)); 737: m->m_pkthdr.csum_flags = CSUM_UDP; 738: m->m_pkthdr.csum_data = offsetof(struct udphdr, uh_sum); 739: } else { 740: ui->ui_sum = 0; 741: } And jumped to 208: u_short 209: in_pseudo(u_int32_t a, u_int32_t b, u_int32_t c) 210: { 211: u_int64_t sum; 212: union q_util q_util; 213: union l_util l_util; 214: 215: sum = (u_int64_t) a + b + c; 216: REDUCE16; 217: return (sum); 218: } #define REDUCE16 \ { \ q_util.q = sum; \ l_util.l = q_util.s[0] + q_util.s[1] + q_util.s[2] + q_util.s[3]; \ sum = l_util.s[0] + l_util.s[1]; \ ADDCARRY(sum); \ } This looks like doing one's complement sum for me. As Gary suggested,I checked hearbeat. I changed CYGHWR_HAL_SH_RTC_PRESCALE from default 4 to 20 and now,CYGNUM_HAL_RTC_PERIOD=14745, cdl_option CYGNUM_HAL_RTC_PERIOD { # Flavor: data # No user value, uncomment the following line to provide one. # user_value 14745 # value_source default # Default value: CYGHWR_HAL_SH_ONCHIP_PERIPHERAL_SPEED/CYGNUM_HAL_RTC_DENOMINATOR / CYGHWR_HAL_SH_RTC_PRESCALE # CYGHWR_HAL_SH_ONCHIP_PERIPHERAL_SPEED == 29491200 # CYGNUM_HAL_RTC_DENOMINATOR == 100 # CYGHWR_HAL_SH_RTC_PRESCALE == 20 # --> 14745 }; but nothing changed. Our most serious concern is, my concoction in driver source to accommodate to target's hardware pecuriality is affecting those misbehaviour. As I said in last mail, our company's target board was hardware wired to retreive data in BigEndian. I concocted in \packages\devs\eth\smsc\lan91cxx\current\src\if_lan91cxx.c. cyg_uint8 get_data_byte(struct eth_drv_sc *sc) { //20070919 int sf; cyg_uint8 c; struct lan91cxx_priv_data *cpd = (struct lan91cxx_priv_data *)sc->driver_private; if( cpd->data_pos == sizeof(rxd_t) ) { cpd->data_buf = get_data(sc); cpd->data_pos = 0; //20070919 sf = 1; } //20070919 begin else{ sf = 0; } //20070919 end //20070919 begin //ORG c = (cpd->data_buf>>(cpd->data_pos*8))&0xFF; c = (cpd->data_buf>>(sf*8))&0xFF; cpd->data_pos++; return c; } cyg_uint16 get_data_short(struct eth_drv_sc *sc) { cyg_uint16 val; val = get_data_byte(sc); //20071023 //ORG val |= get_data_byte(sc)<<8; val = val<<8 | get_data_byte(sc); return CYG_LE16_TO_CPU(val); } I also send together target's serial log when I setted DEBUF=FF. But if CYGNUM_HAL_RTC_PERIOD=14745 then happend time_out error at intialization(watchdog), so I changed CYGHWR_HAL_SH_RTC_PRESCALE=4(CYGNUM_HAL_RTC_PERIOD=73728). C:\cygwin\home\TCP-checksum-log\DEBUG-FF-prescale-4\Teraterm\MyFlashIDis422f9019.txt I am perplexed what is happening,please help me. Thanks in advance. Masahiro Ariga ------=_NextPart_000_0007_01C81AE9.DB4B33A0 Content-Type: application/x-gzip; name="TCP-checksum-log.tar.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="TCP-checksum-log.tar.gz" Content-length: 18170 H4sIAN2RJkcAA+xd61LbypbOb6p4h65TM7XJFCh9v1A7mRMcklDZEAqT2TWT YighBLhiLI4lkjA/9zuddziPNatbtrF8wwZJdpAaY+xG1299vdbqpe5ex43D reAqDL7Ft9db7ejy1Yv8C4aiMLZ/iRLC/YWXq++VFwQrQgRWlPEXmFDJ6Qsk CriWsXIbJ34XoRd/7B18mrXdX//6659lXE/J5XhU/u92d7582MJ466YbxoHf DrcofiIpFpe/UBTX8i+jzCf/3eQq7B6FfttuspX8TBZixMLyp4RIVcu/jPJY +Ye2pmtr7BGoB3VTzzFb/lIyplL5M0yktPLnwIQXCJcBQMXlfxB5yJbj1nWI eqUZ3XaDwbd+eRfGSavjJ62oM1R72I2SKIjaaK9zEa2vpZUEYS8VrvumqEek Rzyafk/LTjfyzwM/TjIneXt0mH748ypCV36c2fk/EfrQ9ZPbVhLdxnbT9bX1 tfddH66coA2J0dldEsYIru9HqxtuokFN4N8kt93w/OX6mmNyJ0zQ3t4manaD bYTxNsfbjGxjvY3hHW+id3GyjS4utrOv9bW35+fQKGJ0FMZR+9YhMbj/jW74 j1uA6NVl5hJf2mssBGQKIHOuuBRlgUyrBzIDkLXhhpXGZFY9kDkiHuOUGVMW yLx6IAsAWWmjJSsLZFE9kCWiHmWKUVUWyLJ6ICsAWWquTGkgq+qBrBFnQGVq jMiArId2fBzIx2G7PXzAe5g12uB0FOZBzUMwE7EdiG15vk3Z9sUTYS4OV5Pi yjTmU8k7Ge0BrpmdWjHyk3GW3YNq8ufuGNgPgnrTvisMUoL7kJIspMPgTQb6 y7vDzDXcRF24PaWUzF7AoF4N9Tgw2lBjwKp5gZ3I1gli3Osk6c79W3eHQBbv 7cy9bgx9eemON7YR3PrG8De4ti9x2EXv/MQHvXI9co7DezQ27HvvqINq5aoV HMUeAG3ARbh7d5JOO3/wm74ovf+Mhz7zwQYaOcl4nvc3Ly1/97wNzx6JDI4E h+F06DOzgBOBMBhCMsIgONAO/DZuPM8vjHvEcY9zxsmCzXkq99QU7skh7tnu rhxr1DLnRj0n98ZoNZl9IxSdk3t9ko1wr0/JAff4dO5hMpl79+QMkDlLuTdU Nke4l9lDoXCUb1nu2fKbVxjvgPvSY1JRQacybDIbjxt9M2KoQW+QVtCEvjb/ ++AENcN/vMbobfAN3v9sdV5LIZhAf4Qd+L7fbL4mXA4ZFmLDAWPmWj7JXJev AI+7fie+bsWxBb0RdZIuID2Jiw6uDfue4aKDb8O+QzUACPewaSF0fwE6+FsY CVhKAi24niruydQYkMBd/pv05iwJ4Nobn1ImUAX/FFinjKCCYEmoYtpRgyhB gTaNj7uNT80v+2jvoPH56Gi3cXzydd9vX0Td6/AcHfrBtzA5GaJMAcGN8vXW 3JTJcOOeMhkmOcoMoO5R5x7s9bUxPLet9E4KIxW3pDJSaml+EVIVEMypSZUv qQTiGm4WSJU1V6tLqgKCVzWp8iWVRNx4lArD5VT6FO0DydoHWq4PpFISSMMX jadM1iwDpTJMglSHOBIMyb6AqOBzUBHlyV4jgT0BVoVlY5Sra1V0TZlVtyoG CeFRTrjJdqrKtCqmtipLtSrQtB0JqKBZ1+LJVqXPdOLIQKZbF6ipVcUMVUF6 XCCFc4FYLjCwMpTlwoXCrQwtYDDUc6LOClgZSpEkllSK5OO6HDWPJ5DqYS1T wJCu50SV8rQMA/vuMaM0XlpAn7La7Viu28FTEhgsCwnog/C5shqnZ2q4EoQa 9RRTU8deJ+uPPtT3pqYHdvmmRlhSGaOVfZT5S5Cqjr2uPKkkktwjRktTSOil AFIVMFCyJlW+pFJICo8TRsX0MYdF+0Cq9oGW6wPplASc6HyeP48pFflgp6iO 0s5UFbK0TpFBUnoCrIz6VaxMOaNtf1nqrICVYRgpAp0sINUv4g+zOhS88qQi llSc6iWGbxipXZelui6MpiQwyk3/Wobrwup47mq4LowhpayVETIfKzMS4J+b EPWI2xUhBEdKOwshszNFyrQQvLYQy7UQwpGAYSyK6NAQY1lth0P2fE+ttcLC PMX3rGOxE/XHAOp737MHdvm+p0TKeJjmZmqKJ1Udi115UimksUeBVLyIaSBF kKoejrvypNJIQwfJkNHYbpk+kK59oOX6QCYlASV00SnTD/SS+0xXD3aK6ijt TFWhyuoUcYw09SRYGVbE2MoCrAyvY7GrbmU4gcu2PW3B8hm8XTyp6gG7K08q akklsFQsG9st0XXh9YILy3VdOEtJoKTMebLh3K4Lr+O5K+K6cGSYtTKc5DOl PRvgn58Q9QjcFSGEQIZ7XBhDlvYImIvaQizXQkhHAknIwuuBzTW4RHPMicJ9 35O6JwmMPMX3rGOxkx8Q9qEe+J59sMv3PRUywsMS82JmIBZAqjoWu/Kk0shI jwKpSD6+bPGkqoflrjypDDLKYwIznX0UWaYPVC+esFwfSOCUBISRR5urr/bT YTf83rILXcfh5XXYSVA7ipOTaUPkeq3gwQ6TqCO4M9VIaR0mQZDRnpSYmV/E rRF1nHbVLZCgiGAGPTAwQerXIFU9ZHflScWAVMaSiipWwGDeuU1XHfxd1HQt O73aypcp+f/ev7/P/8efmhP2Mfk/iazzP5ZR5pJ/cHf5o9XZim4Xy/vZL4vn /8SYslr+ZZRF5X//cWbKz0x5SP6cDeTPhWQgfyoVq/N/llH+DXmvOsEp+A/J 6bUfg+X3wp9hxsyvrzUBogQdhMmPqPsNNa78rh/Alq3/S72nLbT/tnm8e7S+ 9nqsoIMI+u3++SZKj26zFYHw/x2Nb5qW/tms5xQGVxH6KvkmwZTjEzhRJ0Ln Ydu/i9fXGn7ntwQFUacTBglKIhS3/e/htnUpbI29sKRlXUTgqvULEfD5JurE od02iK6v/c759Pply6WsMlf7f1r650fof0KkqPV/GeWR8u/tZnfq7zDdHsyU P2E2XjzQ/1hIm/9ZSVrr/zJKnf/5V83QOMj/TMoCubr5n7XgZYFcyfzPFmRl 6Ehq4iflGtWz0z+vSKLREtM/Y88IwVVZGIvqYSzTPObSpWMrRVlUMvsz8ZTB hJTmW1Qy+zOx2kJSmgW5MG2xOqmfS8PYpLniJSvNfytg2uOKgwxKwuaKF9jI skAmBYwvWXWUCaBsbHI/lUV5WF1Qyj3oFXqpSumXvQ/7Kcz/xdB+eH0WduOr 1g3clU17nE14LPgoqIOaxw3qsgBvi9C+221kHoO6hu5y4/7zy6FDf+hGtzdo 3+/4l6Eb1dQ/V4G5gkE6oGfMiKLJSIcZj9qcN+633ziazV6S6v2t5u7bo8ZH 9B/o4/Hx4SvikWwiYKLEqHTuq54mHpVy3s9FPCO3uTFSMVdWakI10NG+jzyX dk/EjRu/9/HuJuwm4c8EucfdF3DMwuXMrJy1xnjE/XyK0Sag6Y7Ddnv4cNl8 vititotTbtzCahjTIyGA/JQbr5Xbo6UjnHSE4WKGdJ6i3ETllJtwyk2slnKT iHmYMTv2Z6qcF3bkZis3WQHlpgBW6OgJPiMs9DTlVsSC+lVRbhpxTzA2FlAq kPSr0xEvjvQGOmmekPAzfS2HnGE1zx9Wii2sRksppk+Aztf/tEkynz2sBHq/ HqGU6ukT9XJ+zle9p6mg9Qn1sOSKTc89k69OsIbm2ZOXgQPtYQzsza7FVKBO qECflHIHK3R72DzzLN1iw71ysHPQdB+OwstWnHTT0x3sIDv+5WD3+HeM32Tz +9knLaO9HzKvLpgXzjynUwoxvJUQc/V74NxnrSje6sSwM1OZzs/o/0CoYbKz 97mJDixIzbD7vRWEBSbwA2Fzigmfvmh0zgaggFWfV90ASDB7TlOx0ryXCnQw qXKw2gBNdpJngXZVVQBWDe6DJ6kiap7l6OYyAG+P9j68/Z1m1L+u1f/S1b/p iZrSebIiLmTrSTgsbFMLe9nCBneOMo8pRVRuwp7Qrm1GsVrUSxY16Yl6Vtco j3Zt84LVwl6ysCl0pTxi7fU8iwM+ul3TWtRLFzXriZrS6R5vLu2a1cJeurC5 FbZdokDpItt1HYZZvqhFT9SE5ibqye1a1MJeurAlogI6XYbqRfvXO0ef/2zu HiH0MbI4dTrRbSdInxe7lr2J/oy63+LEXcamu5Gwu4kOjrP1h1ECu7T8to2O /AAos+mzqBiLcNxXPTuCnF9eWxboiQwZ/POeIoODDmjS3N9BGynWaD+MY/8y RDvtKPg2OO/LdKN9v9VutqPhh/v7raAbxdFFYlfmOQdh9EVS+AAApno0FCL7 7G8BGh6loagJTMzmzqJEjzFqUFUz6rkwSiOqrHeKzaIBhsUYpWtGVYRRBlFt 45N44ZDVYowyNaOqwSiOEcMuWEIXfbq9EKNsLq+aUZVgFEGMuMdleJ7k2xMZ 1b/W3XZvcaEexbJpvCgb67jdV9V8ei58opZPRmNuyhoswCswWowzxNyjTkyL bKasbqYVaaYcMeZhrNmMUHzOzXR1lhYprpkKC6uk0phHRyXmaKaibqYVaaYS Me74pB/dg5yDT7LmU0X4pBATztsX092IfMcc8gqMOeQaMWVHyGI+vVueszWt wGw0biysBLRfaTNPeAVmowmMmE6dlPxmnsyGVVRgNhpoVI49IjTF+Y9GPR96 Ci7qUWtLfwouqBW2wSDs3EaZTxZ2PW5t+cJmiLsJMFiVNVVPVGCqnuAWVik0 cStXFNiG6jFiy29DwglbMSWnjxF73FS9Ga1odVZaLa4VSbghj2NN5kqu/oRW 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 ------=_NextPart_000_0007_01C81AE9.DB4B33A0 Content-Type: text/plain; charset=us-ascii Content-length: 148 -- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss ------=_NextPart_000_0007_01C81AE9.DB4B33A0--