Changeset 975d528 in mainline for uspace/srv/net/tcp/tqueue.c
- Timestamp:
- 2017-09-10T17:48:58Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- e1b4ae0
- Parents:
- 12dcd5f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/tcp/tqueue.c
r12dcd5f r975d528 47 47 #include "inet.h" 48 48 #include "ncsim.h" 49 #include "pdu.h"50 49 #include "rqueue.h" 51 50 #include "segment.h" … … 56 55 #define RETRANSMIT_TIMEOUT (2*1000*1000) 57 56 58 static void retransmit_timeout_func(void *arg); 59 static void tcp_tqueue_timer_set(tcp_conn_t *conn); 60 static void tcp_tqueue_timer_clear(tcp_conn_t *conn); 61 62 int tcp_tqueue_init(tcp_tqueue_t *tqueue, tcp_conn_t *conn) 57 static void retransmit_timeout_func(void *); 58 static void tcp_tqueue_timer_set(tcp_conn_t *); 59 static void tcp_tqueue_timer_clear(tcp_conn_t *); 60 static void tcp_tqueue_seg(tcp_conn_t *, tcp_segment_t *); 61 static void tcp_conn_transmit_segment(tcp_conn_t *, tcp_segment_t *); 62 static void tcp_prepare_transmit_segment(tcp_conn_t *, tcp_segment_t *); 63 static void tcp_tqueue_send_immed(tcp_conn_t *, tcp_segment_t *); 64 65 int tcp_tqueue_init(tcp_tqueue_t *tqueue, tcp_conn_t *conn, 66 tcp_tqueue_cb_t *cb) 63 67 { 64 68 tqueue->conn = conn; 65 69 tqueue->timer = fibril_timer_create(&conn->lock); 70 tqueue->cb = cb; 66 71 if (tqueue->timer == NULL) 67 72 return ENOMEM; … … 79 84 void tcp_tqueue_fini(tcp_tqueue_t *tqueue) 80 85 { 86 link_t *link; 87 tcp_tqueue_entry_t *tqe; 88 81 89 if (tqueue->timer != NULL) { 82 90 fibril_timer_destroy(tqueue->timer); 83 91 tqueue->timer = NULL; 84 92 } 93 94 while (!list_empty(&tqueue->list)) { 95 link = list_first(&tqueue->list); 96 tqe = list_get_instance(link, tcp_tqueue_entry_t, link); 97 list_remove(link); 98 99 tcp_segment_delete(tqe->seg); 100 free(tqe); 101 } 85 102 } 86 103 … … 96 113 } 97 114 98 void tcp_tqueue_seg(tcp_conn_t *conn, tcp_segment_t *seg)115 static void tcp_tqueue_seg(tcp_conn_t *conn, tcp_segment_t *seg) 99 116 { 100 117 tcp_segment_t *rt_seg; … … 136 153 } 137 154 138 void tcp_prepare_transmit_segment(tcp_conn_t *conn, tcp_segment_t *seg)155 static void tcp_prepare_transmit_segment(tcp_conn_t *conn, tcp_segment_t *seg) 139 156 { 140 157 /* … … 268 285 } 269 286 270 void tcp_conn_transmit_segment(tcp_conn_t *conn, tcp_segment_t *seg)287 static void tcp_conn_transmit_segment(tcp_conn_t *conn, tcp_segment_t *seg) 271 288 { 272 289 log_msg(LOG_DEFAULT, LVL_DEBUG, "%s: tcp_conn_transmit_segment(%p, %p)", … … 280 297 seg->ack = 0; 281 298 282 tcp_t ransmit_segment(&conn->ident, seg);283 } 284 285 void tcp_t ransmit_segment(inet_ep2_t *epp, tcp_segment_t *seg)299 tcp_tqueue_send_immed(conn, seg); 300 } 301 302 void tcp_tqueue_send_immed(tcp_conn_t *conn, tcp_segment_t *seg) 286 303 { 287 304 log_msg(LOG_DEFAULT, LVL_DEBUG, 288 "tcp_t ransmit_segment(l:(%u),f:(%u), %p)",289 epp->local.port, epp->remote.port, seg);305 "tcp_tqueue_send_immed(l:(%u),f:(%u), %p)", 306 conn->ident.local.port, conn->ident.remote.port, seg); 290 307 291 308 log_msg(LOG_DEFAULT, LVL_DEBUG, "SEG.SEQ=%" PRIu32 ", SEG.WND=%" PRIu32, … … 293 310 294 311 tcp_segment_dump(seg); 295 /* 296 tcp_pdu_prepare(conn, seg, &data, &len); 297 tcp_pdu_transmit(data, len); 298 */ 299 // tcp_rqueue_bounce_seg(sp, seg); 300 // tcp_ncsim_bounce_seg(sp, seg); 301 302 tcp_pdu_t *pdu; 303 304 if (tcp_pdu_encode(epp, seg, &pdu) != EOK) { 305 log_msg(LOG_DEFAULT, LVL_WARN, "Not enough memory. Segment dropped."); 306 return; 307 } 308 309 tcp_transmit_pdu(pdu); 310 tcp_pdu_delete(pdu); 312 313 conn->retransmit.cb->transmit_seg(&conn->ident, seg); 311 314 } 312 315
Note:
See TracChangeset
for help on using the changeset viewer.