From 16f86601d94bf28a4fc4d84b078c9ccf68cece07 Mon Sep 17 00:00:00 2001 From: MHeinrichs Date: Fri, 9 Feb 2018 00:41:02 +0100 Subject: [PATCH] Tweaked the driver a bit --- Driver/enc624j6net/build/enc624j6net.device | Bin 9768 -> 9692 bytes Driver/enc624j6net/enc624j6net/enc624j6l.asm | 46 ++-- Driver/enc624j6net/server.c | 215 +++++++++---------- Logic/LAN_IDE/LAN_IDE.gise | 7 + Logic/LAN_IDE/LAN_IDE_CP_summary.html | 4 +- Logic/LAN_IDE/_xmsgs/pn_parser.xmsgs | 3 + Logic/LAN_IDE/iseconfig/LAN_IDE.projectmgr | 10 +- Logic/LAN_IDE/iseconfig/LAN_IDE_CP.xreport | 2 +- 8 files changed, 146 insertions(+), 141 deletions(-) diff --git a/Driver/enc624j6net/build/enc624j6net.device b/Driver/enc624j6net/build/enc624j6net.device index 61b29f0316c3b617c7a7a20b234607dbd8675d3e..13c1c8297411b5d0d66f68a124daa3f41c7fdb65 100644 GIT binary patch delta 934 zcmYk5UuaWT9LK-Eo9rfSlbEJr)+RMKw=s(`n7WlwrIR$&G~6_4SNl-=p!W`zFxO6T z|AK_>K4m_XF?K{p-GhuF1zqX5rN{=QD^g@iANn9uiVh#DgLTU`w>j;Sof{eKTt0{I z{r!H2^E+S8nHgBmeC%z$3P9mR0Lzbn{pwedG<8Xp-c3yJJ)=R|;A*C>*11}!t2M5! z)zx*b*6M1}_=4Pm;Jw8bEEj0a7`FaSbk0bLe+d+32OE5JnvFH=B8QZ7)aDC4?q~ zn`TktBSkNOtWs81G&H>!g>t9>+-Ie2yZcWM{sMmyy_@8UO`tnB`_Ikr1f~>L@Jo9T znk(mBa^_j4W-XE`N}2GG`osU~SCqbdg!$dOG@(dJUm+xA%zdhA1U%CyWltVWLBrNt z@us*_!=K|rgKAs42s(-Qf1hY(tgB`(=WnQ}iG0-|zUILB8^d2>R7LgCz`gMbE4zcV z!e-nZ?Rjoa&RYT@kh}~@O`0ctdeNMp=P2(U>b%jn-D#mUHtdZFjgJl8`z_G| zOSZm1DdTwS9t!Bm!=1K)dog`(}Q^oYG+FVe@So{mgdwUZLY`#22Kr z@t*GwYUw(a=-fT&U+OJHJ9~7zl=$E`quib%m%KdMzgRj}Jz>3DS^~SXGegrX9N6zv zyKywJkvN=~07lq&pv@k-9lHJM_1Y8Tlfd&R xi=1nmTbv4~3P>)FpA+VEat;8&o&53fVc|6pj^$o|f8dR`-vQ)qBNp1Ce*q#P9qj-B delta 1090 zcmYjRZERCj7=F*~^|tHRy0Wl!pQpFAma@=oEM%BE?&?;W+poFtqbvqmGFv~GBXdrF zG^HV0iP?|EW5A4rAI2D>aey}=Mw6w?#TZ8X!4H0rW$cH6VAz}p6ScO!_YNcX<~irN z?|JSyZ=UzPcO`NmI@?gU3;;613!u9PU|7EF4U-;cpno0a_MA?Gvm4n3jd_t>(O4U@ zC5_c1yP+|o@)@ylT;oo5MR$&@D8u~kgxpj@!XF&Tu)dmR@+}*!d6q<#Ld|!aV@{Sb zd>&H1gX^4u#%KVbT1|uT8+ORNU!SM3G*~`lADe$8_gT?$jng+O!&WnCJDdpLt=;Df z=fFMAU8gZoPJ=1u19>nDFw2UyyG|}8eub9)bzR!weZxAKcuXv9Yp1s zv&+L@L6VxXV>pkY<`Y(_Z5?z!*;zUuf%w$U@h3Y+hZ3o#@Vh`xfd9W+P|xHy)a;|T zk8dUuEN63)GCOZ`wZ4pY#T#-!pgs5{&{R-0=~`(q6w|&iO-im7lrtI<(3HX`RaLx=w!T11f-I15tqfSvd8+mmE-Y7X1=< zEoJ*kewT6f_ zd2k_jv@*f3=1L$gvX9y#pb_Frame; + + while(hw_recv_pending(pb)){ + d8(("+hw_recv\n")); + rv = hw_recv_frame(pb, frame); + d8(("-hw_recv\n")); + if (rv) + { + pb->pb_DevStats.PacketsReceived++; + + pkttyp = frame->hwf_Type; + + #if 0 + /* perform internal loop back of magic packets of type 0xfffd */ + if(pkttyp == HW_MAGIC_LOOPBACK) { + d(("loop back packet (size %ld)\n",frame->hwf_Size)); + hw_send_frame(pb, frame); + return; + } + + /* plipbox requests online magic (again) */ + if(pkttyp == HW_MAGIC_ONLINE) { + d(("request online magic")); + hw_send_magic_pkt(pb, HW_MAGIC_ONLINE); + return; + } + #endif + + datasize = frame->hwf_Size - HW_ETH_HDR_SIZE; + + dotracktype(pb, pkttyp, 0, 1, 0, datasize, 0); + + d(("packet %08lx, size %ld received\n",pkttyp,datasize)); + ok = FALSE; + ObtainSemaphore(&pb->pb_ReadListSem); + /* traverse the list of read-requests */ + for(got = (struct IOSana2Req *)pb->pb_ReadList.lh_Head; + got->ios2_Req.io_Message.mn_Node.ln_Succ; + got = (struct IOSana2Req *)got->ios2_Req.io_Message.mn_Node.ln_Succ ) + { + /* check if this one requests for the new packet we got */ + if (got->ios2_PacketType == pkttyp ) + { + Remove((struct Node*)got); + ok =TRUE; + break; + } + } + ReleaseSemaphore(&pb->pb_ReadListSem); + + if(!ok){ + /* If no one wanted this packet explicitely, there is one chance + ** left: somebody waiting for orphaned packets. If this fails, too, + ** we will drop it. + */ + d(("unknown packet\n")); + + pb->pb_DevStats.UnknownTypesReceived++; + + ObtainSemaphore(&pb->pb_ReadOrphanListSem); + got = (struct IOSana2Req *)RemHead((struct List*)&pb->pb_ReadOrphanList); + ReleaseSemaphore(&pb->pb_ReadOrphanListSem); + + if (got) + { + d(("orphan read\n")); + ok=TRUE; + } + } - d8(("+hw_recv\n")); - rv = hw_recv_frame(pb, frame); - d8(("-hw_recv\n")); - if (rv) - { - pb->pb_DevStats.PacketsReceived++; - - pkttyp = frame->hwf_Type; - -#if 0 - /* perform internal loop back of magic packets of type 0xfffd */ - if(pkttyp == HW_MAGIC_LOOPBACK) { - d(("loop back packet (size %ld)\n",frame->hwf_Size)); - hw_send_frame(pb, frame); - return; - } - - /* plipbox requests online magic (again) */ - if(pkttyp == HW_MAGIC_ONLINE) { - d(("request online magic")); - hw_send_magic_pkt(pb, HW_MAGIC_ONLINE); - return; - } -#endif - - datasize = frame->hwf_Size - HW_ETH_HDR_SIZE; - - dotracktype(pb, pkttyp, 0, 1, 0, datasize, 0); - - d(("packet %08lx, size %ld received\n",pkttyp,datasize)); - - ObtainSemaphore(&pb->pb_ReadListSem); - - /* traverse the list of read-requests */ - for(got = (struct IOSana2Req *)pb->pb_ReadList.lh_Head; - got->ios2_Req.io_Message.mn_Node.ln_Succ; - got = (struct IOSana2Req *)got->ios2_Req.io_Message.mn_Node.ln_Succ ) - { - /* check if this one requests for the new packet we got */ - if (got->ios2_PacketType == pkttyp ) - { - BOOL ok; - - Remove((struct Node*)got); - - /* deliver packet */ - ok = read_frame(got, frame); - if(!ok) { - DoEvent(pb, S2EVENT_ERROR | S2EVENT_BUFF | S2EVENT_SOFTWARE); - } - - d(("packet received, satisfying S2Request\n")); - DevTermIO(pb, got); - got = NULL; - break; - } - } - - ReleaseSemaphore(&pb->pb_ReadListSem); - } - else - { - d(("Error receiving (%ld. len=%ld)\n", rv, frame->hwf_Size)); - /* something went wrong during receipt */ - DoEvent(pb, S2EVENT_HARDWARE | S2EVENT_ERROR | S2EVENT_RX); - got = NULL; - pb->pb_DevStats.BadData++; - } - - /* If no one wanted this packet explicitely, there is one chance - ** left: somebody waiting for orphaned packets. If this fails, too, - ** we will drop it. - */ - if (got) - { - d(("unknown packet\n")); - - pb->pb_DevStats.UnknownTypesReceived++; - - ObtainSemaphore(&pb->pb_ReadOrphanListSem); - got = (struct IOSana2Req *)RemHead((struct List*)&pb->pb_ReadOrphanList); - ReleaseSemaphore(&pb->pb_ReadOrphanListSem); - - if (got) - { - BOOL ok = read_frame(got, frame); - if(!ok) { - DoEvent(pb, S2EVENT_ERROR | S2EVENT_BUFF | S2EVENT_SOFTWARE); - } - - d(("orphan read\n")); - - DevTermIO(pb, got); - } - else - { - dotracktype(pb, pkttyp, 0, 0, 0, 0, 1); - d(("packet thrown away...\n")); - } - } + if(ok){ + /* deliver packet */ + ok = read_frame(got, frame); + if(!ok) { + DoEvent(pb, S2EVENT_ERROR | S2EVENT_BUFF | S2EVENT_SOFTWARE); + } + + d(("packet received, satisfying S2Request\n")); + DevTermIO(pb, got); + } + else{ + /* throw it away*/ + dotracktype(pb, pkttyp, 0, 0, 0, 0, 1); + d(("packet thrown away...\n")); + } + got = NULL; + } + else + { + d(("Error receiving (%ld. len=%ld)\n", rv, frame->hwf_Size)); + /* something went wrong during receipt */ + DoEvent(pb, S2EVENT_HARDWARE | S2EVENT_ERROR | S2EVENT_RX); + got = NULL; + pb->pb_DevStats.BadData++; + } + } } /*E*/ @@ -725,21 +719,14 @@ PRIVATE REGARGS BOOL read_frame(struct IOSana2Req *req, struct HWFrame *frame) hw_enable_global_int(pb); recv = Wait(wmask); d2(("**> wait: got 0x%08lx\n", recv)); - haverec = hw_recv_pending(pb); } - hw_disable_global_int(pb); - - /*allow only a certain number of packets to be serverd per interrupt*/ - if(haverec>MAX_READ_PACKAGE) - haverec = MAX_READ_PACKAGE; - + /*hw_disable_global_int(pb);*/ + /* accept pending receive and start reading */ - while( haverec-- ) - { - d2(("*+ do_read\n")); - doreadreqs(pb); - d2(("*- do_read\n")); - } + d2(("*+ do_read\n")); + doreadreqs(pb); + d2(("*- do_read\n")); + if( recv & specialmask ) { diff --git a/Logic/LAN_IDE/LAN_IDE.gise b/Logic/LAN_IDE/LAN_IDE.gise index d6b07ae..ec9460d 100644 --- a/Logic/LAN_IDE/LAN_IDE.gise +++ b/Logic/LAN_IDE/LAN_IDE.gise @@ -72,6 +72,8 @@ + + @@ -92,6 +94,7 @@ + @@ -102,6 +105,7 @@ + @@ -119,12 +123,14 @@ + + @@ -132,6 +138,7 @@ + diff --git a/Logic/LAN_IDE/LAN_IDE_CP_summary.html b/Logic/LAN_IDE/LAN_IDE_CP_summary.html index fb8924a..532a9c6 100644 --- a/Logic/LAN_IDE/LAN_IDE_CP_summary.html +++ b/Logic/LAN_IDE/LAN_IDE_CP_summary.html @@ -2,7 +2,7 @@ - + @@ -77,5 +77,5 @@ System Settings
LAN_IDE_CP Project Status (02/02/2018 - 21:54:37)
LAN_IDE_CP Project Status (01/26/2017 - 20:59:08)
Project File: LAN_IDE.xise
-
Date Generated: 02/02/2018 - 21:54:37
+
Date Generated: 02/08/2018 - 22:40:05
\ No newline at end of file diff --git a/Logic/LAN_IDE/_xmsgs/pn_parser.xmsgs b/Logic/LAN_IDE/_xmsgs/pn_parser.xmsgs index a38ed26..36b25b9 100644 --- a/Logic/LAN_IDE/_xmsgs/pn_parser.xmsgs +++ b/Logic/LAN_IDE/_xmsgs/pn_parser.xmsgs @@ -8,5 +8,8 @@ +Parsing VHDL file "C:/Users/Matze/Amiga/Hardwarehacks/Zorro-LAN-IDE/Logic/LAN_IDE/LAN_IDE_CP.vhd" into library work + + diff --git a/Logic/LAN_IDE/iseconfig/LAN_IDE.projectmgr b/Logic/LAN_IDE/iseconfig/LAN_IDE.projectmgr index eeadaf4..b3bbf3a 100644 --- a/Logic/LAN_IDE/iseconfig/LAN_IDE.projectmgr +++ b/Logic/LAN_IDE/iseconfig/LAN_IDE.projectmgr @@ -9,13 +9,13 @@ 2 - pinlist.ucf (C:/Users/Matze/Amiga/Hardwarehacks/Zorro-LAN-IDE/Logic/LAN_IDE/pinlist.ucf) + LAN_IDE_CP - Behavioral (C:/Users/Matze/Amiga/Hardwarehacks/Zorro-LAN-IDE/Logic/LAN_IDE/LAN_IDE_CP.vhd) 0 0 000000ff0000000000000001000000010000000000000000000000000000000002020000000100000001000000640000013c000000020000000000000000000000000200000064ffffffff0000008100000003000000020000013c0000000100000003000000000000000100000003 true - pinlist.ucf (C:/Users/Matze/Amiga/Hardwarehacks/Zorro-LAN-IDE/Logic/LAN_IDE/pinlist.ucf) + LAN_IDE_CP - Behavioral (C:/Users/Matze/Amiga/Hardwarehacks/Zorro-LAN-IDE/Logic/LAN_IDE/LAN_IDE_CP.vhd) @@ -64,13 +64,13 @@ Implement Design/Synthesize - XST - Manage Configuration Project (iMPACT) + - 1 + 0 0 000000ff000000000000000100000001000000000000000000000000000000000000000000000000e7000000010000000100000000000000000000000064ffffffff000000810000000000000001000000e70000000100000000 false - Manage Configuration Project (iMPACT) + 000000ff00000000000000020000011b0000011b01000000050100000002 Implementation diff --git a/Logic/LAN_IDE/iseconfig/LAN_IDE_CP.xreport b/Logic/LAN_IDE/iseconfig/LAN_IDE_CP.xreport index d2ee1dc..aa899bc 100644 --- a/Logic/LAN_IDE/iseconfig/LAN_IDE_CP.xreport +++ b/Logic/LAN_IDE/iseconfig/LAN_IDE_CP.xreport @@ -1,7 +1,7 @@
- 2018-02-01T00:49:32 + 2018-02-08T22:40:05 LAN_IDE_CP 2017-01-26T20:59:08 C:/Users/Matze/Amiga/Hardwarehacks/Zorro-LAN-IDE/Logic/LAN_IDE/iseconfig/LAN_IDE_CP.xreport