Lines Matching refs:call
92 bool afs_cm_incoming_call(struct afs_call *call) in afs_cm_incoming_call() argument
94 _enter("{CB.OP %u}", call->operation_ID); in afs_cm_incoming_call()
96 switch (call->operation_ID) { in afs_cm_incoming_call()
98 call->type = &afs_SRXCBCallBack; in afs_cm_incoming_call()
101 call->type = &afs_SRXCBInitCallBackState; in afs_cm_incoming_call()
104 call->type = &afs_SRXCBInitCallBackState3; in afs_cm_incoming_call()
107 call->type = &afs_SRXCBProbe; in afs_cm_incoming_call()
110 call->type = &afs_SRXCBProbeUuid; in afs_cm_incoming_call()
113 call->type = &afs_SRXCBTellMeAboutYourself; in afs_cm_incoming_call()
123 static void afs_cm_destructor(struct afs_call *call) in afs_cm_destructor() argument
131 if (call->unmarshall == 5) { in afs_cm_destructor()
132 ASSERT(call->server && call->count && call->request); in afs_cm_destructor()
133 afs_break_callbacks(call->server, call->count, call->request); in afs_cm_destructor()
136 afs_put_server(call->server); in afs_cm_destructor()
137 call->server = NULL; in afs_cm_destructor()
138 kfree(call->buffer); in afs_cm_destructor()
139 call->buffer = NULL; in afs_cm_destructor()
147 struct afs_call *call = container_of(work, struct afs_call, work); in SRXAFSCB_CallBack() local
156 afs_send_empty_reply(call); in SRXAFSCB_CallBack()
158 afs_break_callbacks(call->server, call->count, call->request); in SRXAFSCB_CallBack()
165 static int afs_deliver_cb_callback(struct afs_call *call) in afs_deliver_cb_callback() argument
173 _enter("{%u}", call->unmarshall); in afs_deliver_cb_callback()
175 switch (call->unmarshall) { in afs_deliver_cb_callback()
177 rxrpc_kernel_get_peer(afs_socket, call->rxcall, &srx); in afs_deliver_cb_callback()
178 call->offset = 0; in afs_deliver_cb_callback()
179 call->unmarshall++; in afs_deliver_cb_callback()
184 ret = afs_extract_data(call, &call->tmp, 4, true); in afs_deliver_cb_callback()
188 call->count = ntohl(call->tmp); in afs_deliver_cb_callback()
189 _debug("FID count: %u", call->count); in afs_deliver_cb_callback()
190 if (call->count > AFSCBMAX) in afs_deliver_cb_callback()
193 call->buffer = kmalloc(call->count * 3 * 4, GFP_KERNEL); in afs_deliver_cb_callback()
194 if (!call->buffer) in afs_deliver_cb_callback()
196 call->offset = 0; in afs_deliver_cb_callback()
197 call->unmarshall++; in afs_deliver_cb_callback()
201 ret = afs_extract_data(call, call->buffer, in afs_deliver_cb_callback()
202 call->count * 3 * 4, true); in afs_deliver_cb_callback()
207 call->request = kcalloc(call->count, in afs_deliver_cb_callback()
210 if (!call->request) in afs_deliver_cb_callback()
213 cb = call->request; in afs_deliver_cb_callback()
214 bp = call->buffer; in afs_deliver_cb_callback()
215 for (loop = call->count; loop > 0; loop--, cb++) { in afs_deliver_cb_callback()
222 call->offset = 0; in afs_deliver_cb_callback()
223 call->unmarshall++; in afs_deliver_cb_callback()
228 ret = afs_extract_data(call, &call->tmp, 4, true); in afs_deliver_cb_callback()
232 call->count2 = ntohl(call->tmp); in afs_deliver_cb_callback()
233 _debug("CB count: %u", call->count2); in afs_deliver_cb_callback()
234 if (call->count2 != call->count && call->count2 != 0) in afs_deliver_cb_callback()
236 call->offset = 0; in afs_deliver_cb_callback()
237 call->unmarshall++; in afs_deliver_cb_callback()
241 ret = afs_extract_data(call, call->buffer, in afs_deliver_cb_callback()
242 call->count2 * 3 * 4, false); in afs_deliver_cb_callback()
247 cb = call->request; in afs_deliver_cb_callback()
248 bp = call->buffer; in afs_deliver_cb_callback()
249 for (loop = call->count2; loop > 0; loop--, cb++) { in afs_deliver_cb_callback()
255 call->offset = 0; in afs_deliver_cb_callback()
256 call->unmarshall++; in afs_deliver_cb_callback()
265 call->unmarshall++; in afs_deliver_cb_callback()
270 call->state = AFS_CALL_REPLYING; in afs_deliver_cb_callback()
277 call->server = server; in afs_deliver_cb_callback()
279 INIT_WORK(&call->work, SRXAFSCB_CallBack); in afs_deliver_cb_callback()
280 queue_work(afs_wq, &call->work); in afs_deliver_cb_callback()
289 struct afs_call *call = container_of(work, struct afs_call, work); in SRXAFSCB_InitCallBackState() local
291 _enter("{%p}", call->server); in SRXAFSCB_InitCallBackState()
293 afs_init_callback_state(call->server); in SRXAFSCB_InitCallBackState()
294 afs_send_empty_reply(call); in SRXAFSCB_InitCallBackState()
301 static int afs_deliver_cb_init_call_back_state(struct afs_call *call) in afs_deliver_cb_init_call_back_state() argument
309 rxrpc_kernel_get_peer(afs_socket, call->rxcall, &srx); in afs_deliver_cb_init_call_back_state()
311 ret = afs_extract_data(call, NULL, 0, false); in afs_deliver_cb_init_call_back_state()
316 call->state = AFS_CALL_REPLYING; in afs_deliver_cb_init_call_back_state()
323 call->server = server; in afs_deliver_cb_init_call_back_state()
325 INIT_WORK(&call->work, SRXAFSCB_InitCallBackState); in afs_deliver_cb_init_call_back_state()
326 queue_work(afs_wq, &call->work); in afs_deliver_cb_init_call_back_state()
333 static int afs_deliver_cb_init_call_back_state3(struct afs_call *call) in afs_deliver_cb_init_call_back_state3() argument
344 rxrpc_kernel_get_peer(afs_socket, call->rxcall, &srx); in afs_deliver_cb_init_call_back_state3()
346 _enter("{%u}", call->unmarshall); in afs_deliver_cb_init_call_back_state3()
348 switch (call->unmarshall) { in afs_deliver_cb_init_call_back_state3()
350 call->offset = 0; in afs_deliver_cb_init_call_back_state3()
351 call->buffer = kmalloc(11 * sizeof(__be32), GFP_KERNEL); in afs_deliver_cb_init_call_back_state3()
352 if (!call->buffer) in afs_deliver_cb_init_call_back_state3()
354 call->unmarshall++; in afs_deliver_cb_init_call_back_state3()
358 ret = afs_extract_data(call, call->buffer, in afs_deliver_cb_init_call_back_state3()
367 call->request = kmalloc(sizeof(struct afs_uuid), GFP_KERNEL); in afs_deliver_cb_init_call_back_state3()
368 if (!call->request) in afs_deliver_cb_init_call_back_state3()
371 b = call->buffer; in afs_deliver_cb_init_call_back_state3()
372 r = call->request; in afs_deliver_cb_init_call_back_state3()
382 call->offset = 0; in afs_deliver_cb_init_call_back_state3()
383 call->unmarshall++; in afs_deliver_cb_init_call_back_state3()
390 call->state = AFS_CALL_REPLYING; in afs_deliver_cb_init_call_back_state3()
397 call->server = server; in afs_deliver_cb_init_call_back_state3()
399 INIT_WORK(&call->work, SRXAFSCB_InitCallBackState); in afs_deliver_cb_init_call_back_state3()
400 queue_work(afs_wq, &call->work); in afs_deliver_cb_init_call_back_state3()
409 struct afs_call *call = container_of(work, struct afs_call, work); in SRXAFSCB_Probe() local
412 afs_send_empty_reply(call); in SRXAFSCB_Probe()
419 static int afs_deliver_cb_probe(struct afs_call *call) in afs_deliver_cb_probe() argument
425 ret = afs_extract_data(call, NULL, 0, false); in afs_deliver_cb_probe()
430 call->state = AFS_CALL_REPLYING; in afs_deliver_cb_probe()
432 INIT_WORK(&call->work, SRXAFSCB_Probe); in afs_deliver_cb_probe()
433 queue_work(afs_wq, &call->work); in afs_deliver_cb_probe()
442 struct afs_call *call = container_of(work, struct afs_call, work); in SRXAFSCB_ProbeUuid() local
443 struct afs_uuid *r = call->request; in SRXAFSCB_ProbeUuid()
456 afs_send_simple_reply(call, &reply, sizeof(reply)); in SRXAFSCB_ProbeUuid()
463 static int afs_deliver_cb_probe_uuid(struct afs_call *call) in afs_deliver_cb_probe_uuid() argument
470 _enter("{%u}", call->unmarshall); in afs_deliver_cb_probe_uuid()
472 switch (call->unmarshall) { in afs_deliver_cb_probe_uuid()
474 call->offset = 0; in afs_deliver_cb_probe_uuid()
475 call->buffer = kmalloc(11 * sizeof(__be32), GFP_KERNEL); in afs_deliver_cb_probe_uuid()
476 if (!call->buffer) in afs_deliver_cb_probe_uuid()
478 call->unmarshall++; in afs_deliver_cb_probe_uuid()
482 ret = afs_extract_data(call, call->buffer, in afs_deliver_cb_probe_uuid()
491 call->request = kmalloc(sizeof(struct afs_uuid), GFP_KERNEL); in afs_deliver_cb_probe_uuid()
492 if (!call->request) in afs_deliver_cb_probe_uuid()
495 b = call->buffer; in afs_deliver_cb_probe_uuid()
496 r = call->request; in afs_deliver_cb_probe_uuid()
506 call->offset = 0; in afs_deliver_cb_probe_uuid()
507 call->unmarshall++; in afs_deliver_cb_probe_uuid()
513 call->state = AFS_CALL_REPLYING; in afs_deliver_cb_probe_uuid()
515 INIT_WORK(&call->work, SRXAFSCB_ProbeUuid); in afs_deliver_cb_probe_uuid()
516 queue_work(afs_wq, &call->work); in afs_deliver_cb_probe_uuid()
526 struct afs_call *call = container_of(work, struct afs_call, work); in SRXAFSCB_TellMeAboutYourself() local
578 afs_send_simple_reply(call, &reply, sizeof(reply)); in SRXAFSCB_TellMeAboutYourself()
586 static int afs_deliver_cb_tell_me_about_yourself(struct afs_call *call) in afs_deliver_cb_tell_me_about_yourself() argument
592 ret = afs_extract_data(call, NULL, 0, false); in afs_deliver_cb_tell_me_about_yourself()
597 call->state = AFS_CALL_REPLYING; in afs_deliver_cb_tell_me_about_yourself()
599 INIT_WORK(&call->work, SRXAFSCB_TellMeAboutYourself); in afs_deliver_cb_tell_me_about_yourself()
600 queue_work(afs_wq, &call->work); in afs_deliver_cb_tell_me_about_yourself()