LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Advertise
  • Mirrors
  • Logos
  • Contact us
  • Job Opportunity
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Cvs-checkins > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: cvs at opencores.org<cvs@o...>
    Date: Mon Jan 28 04:04:41 CET 2008
    Subject: [cvs-checkins] MODIFIED: mlite ...
    Top
    Date: 00/08/01 28:04:04

    Modified: mlite/kernel tcpip.c
    Log:
    Permit IPInit() to set macAddress and name; packet retry timeout in ticks


    Revision Changes Path
    1.14 mlite/kernel/tcpip.c

    http://www.opencores.org/cvsweb.shtml/mlite/kernel/tcpip.c.diff?r1=1.13&r2=1.14

    (In the diff below, changes in quantity of whitespace are not shown.)

    Index: tcpip.c
    ===================================================================
    RCS file: /cvsroot/rhoads/mlite/kernel/tcpip.c,v
    retrieving revision 1.13
    retrieving revision 1.14
    diff -u -b -r1.13 -r1.14
    --- tcpip.c 22 Sep 2007 05:30:14 -0000 1.13
    +++ tcpip.c 28 Jan 2008 03:04:40 -0000 1.14
    @@ -186,7 +186,7 @@
    static uint32 ipAddressDns; //changed by DHCP

    static OS_Mutex_t *IPMutex;
    -static int FrameFreeCount=FRAME_COUNT;
    +static int FrameFreeCount;
    static IPFrame *FrameFreeHead;
    static IPFrame *FrameSendHead;
    static IPFrame *FrameSendTail;
    @@ -211,7 +211,7 @@
    0x01, 0x01, 0x06, 0x00, 0x69, 0x26, 0xb5, 0x52 //dhcp
    };

    -static const unsigned char dhcpOptions[] = {
    +static unsigned char dhcpOptions[] = {
    0x63, 0x82, 0x53, 0x63, //cookie
    0x35, 0x01, 0x01, //DHCP Discover
    0x3d, 0x07, 0x01, 0x00, 0x10, 0xdd, 0xce, 0x15, 0xd4, //Client identifier
    @@ -234,10 +234,12 @@
    state = OS_CriticalBegin();
    if(FrameFreeCount > freeCount)
    {
    - --FrameFreeCount;
    frame = FrameFreeHead;
    if(FrameFreeHead)
    + {
    FrameFreeHead = FrameFreeHead->next;
    + --FrameFreeCount;
    + }
    }
    OS_CriticalEnd(state);
    if(frame)
    @@ -375,7 +377,7 @@
    else
    {
    //Put on resend list until TCP ACK'ed
    - frame->timeout = RETRANSMIT_TIME;
    + frame->timeout = RETRANSMIT_TIME * frame->retryCnt;
    FrameInsert(&FrameResendHead, &FrameResendTail, frame);
    }
    }
    @@ -551,7 +553,7 @@
    memcpy(packetOut+DHCP_MAGIC_COOKIE+10, ethernetAddressPlasma, 6);
    IPSendPacket(NULL, frame, 400);
    request = DHCP_DISCOVER;
    - DhcpRetrySeconds = RETRANSMIT_TIME;
    + DhcpRetrySeconds = 2;
    }
    else if(state == 2 && memcmp(packet+DHCP_CLIENT_ETHERNET, ethernetAddressPlasma, 6) == 0)
    {
    @@ -693,7 +695,7 @@
    return 0;
    memcpy(socketNew, socket, sizeof(IPSocket));
    socketNew->state = IP_TCP;
    - socketNew->timeout = RETRANSMIT_TIME * 3;
    + socketNew->timeout = SOCKET_TIMEOUT;
    socketNew->ack = seq;
    socketNew->seq = socketNew->ack + 0x12345678;
    socketNew->seqReceived = socketNew->seq;
    @@ -1100,11 +1102,15 @@


    //Set FrameSendFunction only if single threaded
    -void IPInit(IPFuncPtr frameSendFunction)
    +void IPInit(IPFuncPtr frameSendFunction, uint8 macAddress[6], char name[6])
    {
    int i;
    IPFrame *frame;

    + if(macAddress)
    + memcpy(ethernetAddressPlasma, macAddress, 6);
    + if(name)
    + memcpy(dhcpOptions+18, name, 6);
    FrameSendFunc = frameSendFunction;
    IPMutex = OS_MutexCreate("IPSem");
    IPMQueue = OS_MQueueCreate("IPMQ", FRAME_COUNT*2, 32);
    @@ -1116,6 +1122,7 @@
    frame->prev = NULL;
    FrameFreeHead = frame;
    }
    + FrameFreeCount = FRAME_COUNT; UartPacketConfig(MyPacketGet, PACKET_SIZE, IPMQueue); if(frameSendFunction == NULL) IPThread = OS_ThreadCreate("TCP/IP", IPMainThread, NULL, 240, 6000); @@ -1476,10 +1483,15 @@ { IPFrame *frame, *frame2; IPSocket *socket, *socket2; + unsigned long ticks; + static unsigned long ticksPrev=0, ticksPrev2=0; + ticks = OS_ThreadTime(); + if(ticks - ticksPrev >= 95) + { if(IPVerbose && (Seconds % 60) == 0) { - if(FrameFreeCount == FRAME_COUNT) + if(FrameFreeCount >= FRAME_COUNT-1) printf("T"); else printf("T(%d)", FrameFreeCount); @@ -1487,8 +1499,7 @@ ++Seconds; if(--DhcpRetrySeconds <= 0) IPDhcp(NULL, 400, 1); //DHCP request - //if(Seconds == 10) - // IPResolve("plasmacpu.no-ip.org", ShowIP); + } OS_MutexPend(IPMutex); @@ -1497,7 +1508,8 @@ { frame2 = frame; frame = frame->next; - if(--frame2->timeout == 0) + frame2->timeout -= ticks - ticksPrev2; + if(--frame2->timeout <= 0) { if(IPVerbose) printf("r"); @@ -1506,6 +1518,8 @@ } } + if(ticks - ticksPrev >= 95) + { //Close timed out sockets for(socket = SocketHead; socket; ) { @@ -1525,7 +1539,10 @@ IPClose2(socket2); } } + ticksPrev = ticks; + } OS_MutexPost(IPMutex); + ticksPrev2 = ticks; }

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.