]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/rxrpc/ar-connevent.c
ide-cd: add TEAC CD-224E to the NO_AUTOCLOSE list
[linux-2.6-omap-h63xx.git] / net / rxrpc / ar-connevent.c
index 4b02815c1dedd1a8ad3eb0e8ffc8bc82ba8998d5..1ada43d5116541e70c01e035044d16d8ee75388b 100644 (file)
@@ -45,7 +45,7 @@ static void rxrpc_abort_calls(struct rxrpc_connection *conn, int state,
                                set_bit(RXRPC_CALL_CONN_ABORT, &call->events);
                        else
                                set_bit(RXRPC_CALL_RCVD_ABORT, &call->events);
-                       schedule_work(&call->processor);
+                       rxrpc_queue_call(call);
                }
                write_unlock(&call->state_lock);
        }
@@ -133,7 +133,7 @@ void rxrpc_call_is_secure(struct rxrpc_call *call)
                read_lock(&call->state_lock);
                if (call->state < RXRPC_CALL_COMPLETE &&
                    !test_and_set_bit(RXRPC_CALL_SECURED, &call->events))
-                       schedule_work(&call->processor);
+                       rxrpc_queue_call(call);
                read_unlock(&call->state_lock);
        }
 }
@@ -307,6 +307,22 @@ protocol_error:
        goto out;
 }
 
+/*
+ * put a packet up for transport-level abort
+ */
+void rxrpc_reject_packet(struct rxrpc_local *local, struct sk_buff *skb)
+{
+       CHECK_SLAB_OKAY(&local->usage);
+
+       if (!atomic_inc_not_zero(&local->usage)) {
+               printk("resurrected on reject\n");
+               BUG();
+       }
+
+       skb_queue_tail(&local->reject_queue, skb);
+       rxrpc_queue_work(&local->rejecter);
+}
+
 /*
  * reject packets through the local endpoint
  */