diff options
| author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-12-07 15:48:15 -0500 |
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-12-07 15:48:15 -0500 |
| commit | 34161db6b14d984fb9b06c735b7b42f8803f6851 (patch) | |
| tree | 99656278b6697f1cde5b05894b7c0ee22c63a00e /net/sctp | |
| parent | 5847e1f4d058677c5e46dc6c3e3c70e8855ea3ba (diff) | |
| parent | 620034c84d1d939717bdfbe02c51a3fee43541c3 (diff) | |
Merge branch 'master' of /home/trondmy/kernel/linux-2.6/ into merge_linus
Conflicts:
include/linux/sunrpc/xprt.h
net/sunrpc/xprtsock.c
Fix up conflicts with the workqueue changes.
Diffstat (limited to 'net/sctp')
| -rw-r--r-- | net/sctp/associola.c | 11 | ||||
| -rw-r--r-- | net/sctp/endpointola.c | 10 | ||||
| -rw-r--r-- | net/sctp/inqueue.c | 9 |
3 files changed, 16 insertions, 14 deletions
diff --git a/net/sctp/associola.c b/net/sctp/associola.c index 39471d3b31b9..ad0057db0f91 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | #include <net/sctp/sm.h> | 61 | #include <net/sctp/sm.h> |
| 62 | 62 | ||
| 63 | /* Forward declarations for internal functions. */ | 63 | /* Forward declarations for internal functions. */ |
| 64 | static void sctp_assoc_bh_rcv(struct sctp_association *asoc); | 64 | static void sctp_assoc_bh_rcv(struct work_struct *work); |
| 65 | 65 | ||
| 66 | 66 | ||
| 67 | /* 1st Level Abstractions. */ | 67 | /* 1st Level Abstractions. */ |
| @@ -269,9 +269,7 @@ static struct sctp_association *sctp_association_init(struct sctp_association *a | |||
| 269 | 269 | ||
| 270 | /* Create an input queue. */ | 270 | /* Create an input queue. */ |
| 271 | sctp_inq_init(&asoc->base.inqueue); | 271 | sctp_inq_init(&asoc->base.inqueue); |
| 272 | sctp_inq_set_th_handler(&asoc->base.inqueue, | 272 | sctp_inq_set_th_handler(&asoc->base.inqueue, sctp_assoc_bh_rcv); |
| 273 | (void (*)(void *))sctp_assoc_bh_rcv, | ||
| 274 | asoc); | ||
| 275 | 273 | ||
| 276 | /* Create an output queue. */ | 274 | /* Create an output queue. */ |
| 277 | sctp_outq_init(asoc, &asoc->outqueue); | 275 | sctp_outq_init(asoc, &asoc->outqueue); |
| @@ -946,8 +944,11 @@ out: | |||
| 946 | } | 944 | } |
| 947 | 945 | ||
| 948 | /* Do delayed input processing. This is scheduled by sctp_rcv(). */ | 946 | /* Do delayed input processing. This is scheduled by sctp_rcv(). */ |
| 949 | static void sctp_assoc_bh_rcv(struct sctp_association *asoc) | 947 | static void sctp_assoc_bh_rcv(struct work_struct *work) |
| 950 | { | 948 | { |
| 949 | struct sctp_association *asoc = | ||
| 950 | container_of(work, struct sctp_association, | ||
| 951 | base.inqueue.immediate); | ||
| 951 | struct sctp_endpoint *ep; | 952 | struct sctp_endpoint *ep; |
| 952 | struct sctp_chunk *chunk; | 953 | struct sctp_chunk *chunk; |
| 953 | struct sock *sk; | 954 | struct sock *sk; |
diff --git a/net/sctp/endpointola.c b/net/sctp/endpointola.c index 33a42e90c32f..129756908da4 100644 --- a/net/sctp/endpointola.c +++ b/net/sctp/endpointola.c | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | #include <net/sctp/sm.h> | 61 | #include <net/sctp/sm.h> |
| 62 | 62 | ||
| 63 | /* Forward declarations for internal helpers. */ | 63 | /* Forward declarations for internal helpers. */ |
| 64 | static void sctp_endpoint_bh_rcv(struct sctp_endpoint *ep); | 64 | static void sctp_endpoint_bh_rcv(struct work_struct *work); |
| 65 | 65 | ||
| 66 | /* | 66 | /* |
| 67 | * Initialize the base fields of the endpoint structure. | 67 | * Initialize the base fields of the endpoint structure. |
| @@ -89,8 +89,7 @@ static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep, | |||
| 89 | sctp_inq_init(&ep->base.inqueue); | 89 | sctp_inq_init(&ep->base.inqueue); |
| 90 | 90 | ||
| 91 | /* Set its top-half handler */ | 91 | /* Set its top-half handler */ |
| 92 | sctp_inq_set_th_handler(&ep->base.inqueue, | 92 | sctp_inq_set_th_handler(&ep->base.inqueue, sctp_endpoint_bh_rcv); |
| 93 | (void (*)(void *))sctp_endpoint_bh_rcv, ep); | ||
| 94 | 93 | ||
| 95 | /* Initialize the bind addr area */ | 94 | /* Initialize the bind addr area */ |
| 96 | sctp_bind_addr_init(&ep->base.bind_addr, 0); | 95 | sctp_bind_addr_init(&ep->base.bind_addr, 0); |
| @@ -318,8 +317,11 @@ int sctp_endpoint_is_peeled_off(struct sctp_endpoint *ep, | |||
| 318 | /* Do delayed input processing. This is scheduled by sctp_rcv(). | 317 | /* Do delayed input processing. This is scheduled by sctp_rcv(). |
| 319 | * This may be called on BH or task time. | 318 | * This may be called on BH or task time. |
| 320 | */ | 319 | */ |
| 321 | static void sctp_endpoint_bh_rcv(struct sctp_endpoint *ep) | 320 | static void sctp_endpoint_bh_rcv(struct work_struct *work) |
| 322 | { | 321 | { |
| 322 | struct sctp_endpoint *ep = | ||
| 323 | container_of(work, struct sctp_endpoint, | ||
| 324 | base.inqueue.immediate); | ||
| 323 | struct sctp_association *asoc; | 325 | struct sctp_association *asoc; |
| 324 | struct sock *sk; | 326 | struct sock *sk; |
| 325 | struct sctp_transport *transport; | 327 | struct sctp_transport *transport; |
diff --git a/net/sctp/inqueue.c b/net/sctp/inqueue.c index cf6deed7e849..71b07466e880 100644 --- a/net/sctp/inqueue.c +++ b/net/sctp/inqueue.c | |||
| @@ -54,7 +54,7 @@ void sctp_inq_init(struct sctp_inq *queue) | |||
| 54 | queue->in_progress = NULL; | 54 | queue->in_progress = NULL; |
| 55 | 55 | ||
| 56 | /* Create a task for delivering data. */ | 56 | /* Create a task for delivering data. */ |
| 57 | INIT_WORK(&queue->immediate, NULL, NULL); | 57 | INIT_WORK(&queue->immediate, NULL); |
| 58 | 58 | ||
| 59 | queue->malloced = 0; | 59 | queue->malloced = 0; |
| 60 | } | 60 | } |
| @@ -97,7 +97,7 @@ void sctp_inq_push(struct sctp_inq *q, struct sctp_chunk *chunk) | |||
| 97 | * on the BH related data structures. | 97 | * on the BH related data structures. |
| 98 | */ | 98 | */ |
| 99 | list_add_tail(&chunk->list, &q->in_chunk_list); | 99 | list_add_tail(&chunk->list, &q->in_chunk_list); |
| 100 | q->immediate.func(q->immediate.data); | 100 | q->immediate.func(&q->immediate); |
| 101 | } | 101 | } |
| 102 | 102 | ||
| 103 | /* Extract a chunk from an SCTP inqueue. | 103 | /* Extract a chunk from an SCTP inqueue. |
| @@ -205,9 +205,8 @@ struct sctp_chunk *sctp_inq_pop(struct sctp_inq *queue) | |||
| 205 | * The intent is that this routine will pull stuff out of the | 205 | * The intent is that this routine will pull stuff out of the |
| 206 | * inqueue and process it. | 206 | * inqueue and process it. |
| 207 | */ | 207 | */ |
| 208 | void sctp_inq_set_th_handler(struct sctp_inq *q, | 208 | void sctp_inq_set_th_handler(struct sctp_inq *q, work_func_t callback) |
| 209 | void (*callback)(void *), void *arg) | ||
| 210 | { | 209 | { |
| 211 | INIT_WORK(&q->immediate, callback, arg); | 210 | INIT_WORK(&q->immediate, callback); |
| 212 | } | 211 | } |
| 213 | 212 | ||
