lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [lwip-users] LwIP RAW - Simultaneous (full-duplex) communication


From: Nenad Pekez
Subject: Re: [lwip-users] LwIP RAW - Simultaneous (full-duplex) communication
Date: Thu, 5 Jul 2018 16:18:37 +0200
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0

And from which context are timers processed?

Xilinx timers are used. Each 250ms timer callback is called inside which TcpFastTmrFlag (for 250ms) and/or TcpSlowTmrFlag (for 500ms) variables are set to 1. In the main loop, there is this:

    while (1) {
        if (TcpFastTmrFlag) {
            tcp_fasttmr();
            TcpFastTmrFlag = 0;
        }
        if (TcpSlowTmrFlag) {
            tcp_slowtmr();
            TcpSlowTmrFlag = 0;
        }
        xemacif_input(echo_netif);
        transfer_txperf_data();
    }

Inside of timer callbacks, there is some SW workaround for HW bug of Ethernet controller:
    /* For providing an SW alternative for the SI #692601. Under heavy
     * Rx traffic if at some point the Rx path becomes unresponsive, the
     * following API call will ensures a SW reset of the Rx path. The
     * API xemacpsif_resetrx_on_no_rxdata is called every 100 milliseconds.
     * This ensures that if the above HW bug is hit, in the worst case,
     * the Rx path cannot become unresponsive for more than 100
     * milliseconds.
     */
#ifndef USE_SOFTETH_ON_ZYNQ
    if (ResetRxCntr >= RESET_RX_CNTR_LIMIT) {
        xemacpsif_resetrx_on_no_rxdata(echo_netif);
        ResetRxCntr = 0;
    }
#endif

I don't think any calls to lwIP are made from an ISR.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]