mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
tcp: move qlen/young out of struct listen_sock
qlen_inc & young_inc were protected by listener lock, while qlen_dec & young_dec were atomic fields. Everything needs to be atomic for upcoming lockless listener. Also move qlen/young in request_sock_queue as we'll get rid of struct listen_sock eventually. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
fff1f3001c
commit
aac065c50a
4 changed files with 18 additions and 38 deletions
|
@ -640,9 +640,9 @@ static void reqsk_timer_handler(unsigned long data)
|
|||
* embrions; and abort old ones without pity, if old
|
||||
* ones are about to clog our table.
|
||||
*/
|
||||
qlen = listen_sock_qlen(lopt);
|
||||
qlen = reqsk_queue_len(queue);
|
||||
if (qlen >> (lopt->max_qlen_log - 1)) {
|
||||
int young = listen_sock_young(lopt) << 1;
|
||||
int young = reqsk_queue_len_young(queue) << 1;
|
||||
|
||||
while (thresh > 2) {
|
||||
if (qlen < young)
|
||||
|
@ -664,7 +664,7 @@ static void reqsk_timer_handler(unsigned long data)
|
|||
unsigned long timeo;
|
||||
|
||||
if (req->num_timeout++ == 0)
|
||||
atomic_inc(&lopt->young_dec);
|
||||
atomic_dec(&queue->young);
|
||||
timeo = min(TCP_TIMEOUT_INIT << req->num_timeout, TCP_RTO_MAX);
|
||||
mod_timer_pinned(&req->rsk_timer, jiffies + timeo);
|
||||
return;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue