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 | |
| 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>
| -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; |
