[ofa-general] [PATCH] RDMA/CMA: Implement rdma_resolve_ip retry enhancement.
Roland Dreier
rdreier at cisco.com
Wed Sep 19 08:43:50 PDT 2007
Thanks for the patch...
> If an application is calling rdma_resolve_ip() and a status of -ENODATA is returned from addr_resolve_local/remote(), the timeout mechanism waits until the application's timeout occurs before rechecking the address resolution status; the application will wait until it's full timeout occurs. This case is seen when the work thread call to process_req() is made before the arp packet is processed.
I'm having a hard time understanding this changelog. Could you please
resend with a description that lets me understand:
- What the current behavior is and what is wrong with that;
- What the behavior should be;
- And how your patch changes the behavior to be correct.
> This patch is in addition to Steve Wise's neigh_event_send patch to initiate neighbour discovery sent on 9/12/2007.
Does this mean it depends on Steve's patch being applied first?
Also please try to keep lines in the changelog to 72 characters or so...
> @@ -136,6 +137,7 @@ static void set_timeout(unsigned long ti
> static void queue_req(struct addr_req *req)
> {
> struct addr_req *temp_req;
> + unsigned long req_timeout = msecs_to_jiffies(MIN_ADDR_TIMEOUT_MS) + jiffies;
>
> mutex_lock(&lock);
> list_for_each_entry_reverse(temp_req, &req_list, list) {
> @@ -145,8 +147,10 @@ static void queue_req(struct addr_req *r
>
> list_add(&req->list, &temp_req->list);
>
> - if (req_list.next == &req->list)
> + if (req_list.next == &req->list) {
> + req_timeout = min(req_timeout, req->timeout);
> set_timeout(req->timeout);
> + }
> mutex_unlock(&lock);
> }
I don't understand this code. It seems you keep track of the minimum
timeout, and then ignore the value you computed. What am I missing?
Thanks,
Roland
More information about the general
mailing list