diff options
author | Jochen Friedrich <jochen@scram.de> | 2005-11-15 00:57:46 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2005-11-15 00:57:46 -0500 |
commit | 451677c46feb5fb39cb7f71035b8716064fcbd57 (patch) | |
tree | 42b4c9273bb13eef9256d094c10d974f0e9fd0ac /net/llc/af_llc.c | |
parent | 59c6196e59a4b85d9c994e70ff20a460cdbaa003 (diff) |
[LLC]: Make core block on remote busy.
Signed-off-by: Jochen Friedrich <jochen@scram.de>
Acked-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/llc/af_llc.c')
-rw-r--r-- | net/llc/af_llc.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/llc/af_llc.c b/net/llc/af_llc.c index 59d02cbbeb9e..c3f0b0783453 100644 --- a/net/llc/af_llc.c +++ b/net/llc/af_llc.c | |||
@@ -116,7 +116,9 @@ static int llc_ui_send_data(struct sock* sk, struct sk_buff *skb, int noblock) | |||
116 | struct llc_sock* llc = llc_sk(sk); | 116 | struct llc_sock* llc = llc_sk(sk); |
117 | int rc = 0; | 117 | int rc = 0; |
118 | 118 | ||
119 | if (unlikely(llc_data_accept_state(llc->state) || llc->p_flag)) { | 119 | if (unlikely(llc_data_accept_state(llc->state) || |
120 | llc->remote_busy_flag || | ||
121 | llc->p_flag)) { | ||
120 | long timeout = sock_sndtimeo(sk, noblock); | 122 | long timeout = sock_sndtimeo(sk, noblock); |
121 | 123 | ||
122 | rc = llc_ui_wait_for_busy_core(sk, timeout); | 124 | rc = llc_ui_wait_for_busy_core(sk, timeout); |
@@ -542,6 +544,7 @@ static int llc_ui_wait_for_busy_core(struct sock *sk, long timeout) | |||
542 | if (sk_wait_event(sk, &timeout, | 544 | if (sk_wait_event(sk, &timeout, |
543 | (sk->sk_shutdown & RCV_SHUTDOWN) || | 545 | (sk->sk_shutdown & RCV_SHUTDOWN) || |
544 | (!llc_data_accept_state(llc->state) && | 546 | (!llc_data_accept_state(llc->state) && |
547 | !llc->remote_busy_flag && | ||
545 | !llc->p_flag))) | 548 | !llc->p_flag))) |
546 | break; | 549 | break; |
547 | rc = -ERESTARTSYS; | 550 | rc = -ERESTARTSYS; |