diff options
author | Jochen Friedrich <jochen@scram.de> | 2005-11-14 21:57:46 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2005-11-14 21:57:46 -0800 |
commit | 451677c46feb5fb39cb7f71035b8716064fcbd57 (patch) | |
tree | 42b4c9273bb13eef9256d094c10d974f0e9fd0ac /net/llc | |
parent | 59c6196e59a4b85d9c994e70ff20a460cdbaa003 (diff) | |
download | linux-3.10-451677c46feb5fb39cb7f71035b8716064fcbd57.tar.gz linux-3.10-451677c46feb5fb39cb7f71035b8716064fcbd57.tar.bz2 linux-3.10-451677c46feb5fb39cb7f71035b8716064fcbd57.zip |
[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')
-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 59d02cbbeb9..c3f0b078345 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) struct llc_sock* llc = llc_sk(sk); int rc = 0; - if (unlikely(llc_data_accept_state(llc->state) || llc->p_flag)) { + if (unlikely(llc_data_accept_state(llc->state) || + llc->remote_busy_flag || + llc->p_flag)) { long timeout = sock_sndtimeo(sk, noblock); 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) if (sk_wait_event(sk, &timeout, (sk->sk_shutdown & RCV_SHUTDOWN) || (!llc_data_accept_state(llc->state) && + !llc->remote_busy_flag && !llc->p_flag))) break; rc = -ERESTARTSYS; |