Lines Matching refs:req
185 static void queue_req(struct addr_req *req) in queue_req() argument
191 if (time_after_eq(req->timeout, temp_req->timeout)) in queue_req()
195 list_add(&req->list, &temp_req->list); in queue_req()
197 if (req_list.next == &req->list) in queue_req()
198 set_timeout(req->timeout); in queue_req()
336 struct addr_req *req, *temp_req; in process_req() local
343 list_for_each_entry_safe(req, temp_req, &req_list, list) { in process_req()
344 if (req->status == -ENODATA) { in process_req()
345 src_in = (struct sockaddr *) &req->src_addr; in process_req()
346 dst_in = (struct sockaddr *) &req->dst_addr; in process_req()
347 req->status = addr_resolve(src_in, dst_in, req->addr); in process_req()
348 if (req->status && time_after_eq(jiffies, req->timeout)) in process_req()
349 req->status = -ETIMEDOUT; in process_req()
350 else if (req->status == -ENODATA) in process_req()
353 list_move_tail(&req->list, &done_list); in process_req()
357 req = list_entry(req_list.next, struct addr_req, list); in process_req()
358 set_timeout(req->timeout); in process_req()
362 list_for_each_entry_safe(req, temp_req, &done_list, list) { in process_req()
363 list_del(&req->list); in process_req()
364 req->callback(req->status, (struct sockaddr *) &req->src_addr, in process_req()
365 req->addr, req->context); in process_req()
366 put_client(req->client); in process_req()
367 kfree(req); in process_req()
379 struct addr_req *req; in rdma_resolve_ip() local
382 req = kzalloc(sizeof *req, GFP_KERNEL); in rdma_resolve_ip()
383 if (!req) in rdma_resolve_ip()
386 src_in = (struct sockaddr *) &req->src_addr; in rdma_resolve_ip()
387 dst_in = (struct sockaddr *) &req->dst_addr; in rdma_resolve_ip()
401 req->addr = addr; in rdma_resolve_ip()
402 req->callback = callback; in rdma_resolve_ip()
403 req->context = context; in rdma_resolve_ip()
404 req->client = client; in rdma_resolve_ip()
407 req->status = addr_resolve(src_in, dst_in, addr); in rdma_resolve_ip()
408 switch (req->status) { in rdma_resolve_ip()
410 req->timeout = jiffies; in rdma_resolve_ip()
411 queue_req(req); in rdma_resolve_ip()
414 req->timeout = msecs_to_jiffies(timeout_ms) + jiffies; in rdma_resolve_ip()
415 queue_req(req); in rdma_resolve_ip()
418 ret = req->status; in rdma_resolve_ip()
424 kfree(req); in rdma_resolve_ip()
431 struct addr_req *req, *temp_req; in rdma_addr_cancel() local
434 list_for_each_entry_safe(req, temp_req, &req_list, list) { in rdma_addr_cancel()
435 if (req->addr == addr) { in rdma_addr_cancel()
436 req->status = -ECANCELED; in rdma_addr_cancel()
437 req->timeout = jiffies; in rdma_addr_cancel()
438 list_move(&req->list, &req_list); in rdma_addr_cancel()
439 set_timeout(req->timeout); in rdma_addr_cancel()