Changeset d9ce049 in mainline for uspace/srv/net/tl/tcp/tqueue.c


Ignore:
Timestamp:
2011-10-04T20:40:05Z (14 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
8c7a054
Parents:
32105348
Message:

Implement RECEIVE user call.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/tl/tcp/tqueue.c

    r32105348 rd9ce049  
    7272        seg->wnd = conn->rcv_wnd;
    7373
     74        log_msg(LVL_DEBUG, "SEG.SEQ=%" PRIu32 ", SEG.WND=%" PRIu32,
     75            seg->seq, seg->wnd);
     76
    7477        if ((seg->ctrl & CTL_ACK) != 0)
    7578                seg->ack = conn->rcv_nxt;
     
    8891void tcp_tqueue_new_data(tcp_conn_t *conn)
    8992{
     93        size_t avail_wnd;
    9094        size_t data_size;
    9195        tcp_segment_t *seg;
     
    9397        log_msg(LVL_DEBUG, "tcp_tqueue_new_data()");
    9498
    95         data_size = min(conn->snd_buf_used, conn->snd_wnd);
     99        /* Number of free sequence numbers in send window */
     100        avail_wnd = (conn->snd_una + conn->snd_wnd) - conn->snd_nxt;
     101
     102        data_size = min(conn->snd_buf_used, avail_wnd);
    96103        log_msg(LVL_DEBUG, "conn->snd_buf_used = %zu, SND.WND = %zu, "
    97104            "data_size = %zu", conn->snd_buf_used, conn->snd_wnd, data_size);
     
    116123}
    117124
    118 /** Remove ACKed segments from retransmission queue.
     125/** Remove ACKed segments from retransmission queue and possibly transmit
     126 * more data.
    119127 *
    120128 * This should be called when SND.UNA is updated due to incoming ACK.
    121129 */
    122 void tcp_tqueue_remove_acked(tcp_conn_t *conn)
     130void tcp_tqueue_ack_received(tcp_conn_t *conn)
    123131{
    124132        (void) conn;
     133
     134        tcp_tqueue_new_data(conn);
    125135}
    126136
Note: See TracChangeset for help on using the changeset viewer.