Ignore:
File:
1 edited

Legend:

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

    r7c15d6f rc0f3460  
    11/*
    2  * Copyright (c) 2015 Jiri Svoboda
     2 * Copyright (c) 2011 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    6262{
    6363        tqueue->conn = conn;
    64         tqueue->timer = fibril_timer_create(&conn->lock);
     64        tqueue->timer = fibril_timer_create();
    6565        if (tqueue->timer == NULL)
    6666                return ENOMEM;
     
    9292        seg = tcp_segment_make_ctrl(ctrl);
    9393        tcp_tqueue_seg(conn, seg);
    94         tcp_segment_delete(seg);
    9594}
    9695
     
    213212
    214213        tcp_tqueue_seg(conn, seg);
    215         tcp_segment_delete(seg);
    216214}
    217215
     
    282280}
    283281
    284 void tcp_transmit_segment(inet_ep2_t *epp, tcp_segment_t *seg)
     282void tcp_transmit_segment(tcp_sockpair_t *sp, tcp_segment_t *seg)
    285283{
    286284        log_msg(LOG_DEFAULT, LVL_DEBUG,
    287             "tcp_transmit_segment(l:(%u),f:(%u), %p)",
    288             epp->local.port, epp->remote.port, seg);
    289 
     285            "tcp_transmit_segment(f:(%u),l:(%u), %p)",
     286            sp->local.port, sp->foreign.port, seg);
     287       
    290288        log_msg(LOG_DEFAULT, LVL_DEBUG, "SEG.SEQ=%" PRIu32 ", SEG.WND=%" PRIu32,
    291289            seg->seq, seg->wnd);
     
    301299        tcp_pdu_t *pdu;
    302300
    303         if (tcp_pdu_encode(epp, seg, &pdu) != EOK) {
     301        if (tcp_pdu_encode(sp, seg, &pdu) != EOK) {
    304302                log_msg(LOG_DEFAULT, LVL_WARN, "Not enough memory. Segment dropped.");
    305303                return;
     
    319317        log_msg(LOG_DEFAULT, LVL_DEBUG, "### %s: retransmit_timeout_func(%p)", conn->name, conn);
    320318
    321         tcp_conn_lock(conn);
     319        fibril_mutex_lock(&conn->lock);
    322320
    323321        if (conn->cstate == st_closed) {
    324322                log_msg(LOG_DEFAULT, LVL_DEBUG, "Connection already closed.");
    325                 tcp_conn_unlock(conn);
     323                fibril_mutex_unlock(&conn->lock);
    326324                tcp_conn_delref(conn);
    327325                return;
     
    331329        if (link == NULL) {
    332330                log_msg(LOG_DEFAULT, LVL_DEBUG, "Nothing to retransmit");
    333                 tcp_conn_unlock(conn);
     331                fibril_mutex_unlock(&conn->lock);
    334332                tcp_conn_delref(conn);
    335333                return;
     
    341339        if (rt_seg == NULL) {
    342340                log_msg(LOG_DEFAULT, LVL_ERROR, "Memory allocation failed.");
    343                 tcp_conn_unlock(conn);
     341                fibril_mutex_unlock(&conn->lock);
    344342                tcp_conn_delref(conn);
    345343                /* XXX Handle properly */
     
    351349
    352350        /* Reset retransmission timer */
    353         fibril_timer_set_locked(conn->retransmit.timer, RETRANSMIT_TIMEOUT,
    354             retransmit_timeout_func, (void *) conn);
    355 
    356         tcp_conn_unlock(conn);
    357 
    358         log_msg(LOG_DEFAULT, LVL_DEBUG, "### %s: retransmit_timeout_func(%p) end", conn->name, conn);
     351        tcp_tqueue_timer_set(tqe->conn);
     352
     353        fibril_mutex_unlock(&conn->lock);
     354        tcp_conn_delref(conn);
    359355}
    360356
     
    362358static void tcp_tqueue_timer_set(tcp_conn_t *conn)
    363359{
    364         log_msg(LOG_DEFAULT, LVL_DEBUG, "### %s: tcp_tqueue_timer_set() begin", conn->name);
     360        log_msg(LOG_DEFAULT, LVL_DEBUG, "### %s: tcp_tqueue_timer_set()", conn->name);
    365361
    366362        /* Clear first to make sure we update refcnt correctly */
     
    368364
    369365        tcp_conn_addref(conn);
    370         fibril_timer_set_locked(conn->retransmit.timer, RETRANSMIT_TIMEOUT,
     366        fibril_timer_set(conn->retransmit.timer, RETRANSMIT_TIMEOUT,
    371367            retransmit_timeout_func, (void *) conn);
    372 
    373         log_msg(LOG_DEFAULT, LVL_DEBUG, "### %s: tcp_tqueue_timer_set() end", conn->name);
    374368}
    375369
     
    377371static void tcp_tqueue_timer_clear(tcp_conn_t *conn)
    378372{
    379         log_msg(LOG_DEFAULT, LVL_DEBUG, "### %s: tcp_tqueue_timer_clear() begin", conn->name);
    380 
    381         if (fibril_timer_clear_locked(conn->retransmit.timer) == fts_active)
     373        log_msg(LOG_DEFAULT, LVL_DEBUG, "### %s: tcp_tqueue_timer_clear()", conn->name);
     374
     375        if (fibril_timer_clear(conn->retransmit.timer) == fts_active)
    382376                tcp_conn_delref(conn);
    383 
    384         log_msg(LOG_DEFAULT, LVL_DEBUG, "### %s: tcp_tqueue_timer_clear() end", conn->name);
    385377}
    386378
Note: See TracChangeset for help on using the changeset viewer.