I may be making things up, but here's how I understand things. First dhclient does a DISCOVER and then it makes a REQUEST. Some times it decides to skip the DISCOVER and go right to the REQUEST. Then finally after number of failures, it will try the DISCOVER again.
My phone, which I was attempting to tether to, did not want to talk to openbsd until after it saw the DISCOVER. I switched wifi networks, and so ran dhclient iwn0. dhclient fired off a series of REQUESTs. No response. dhclient went back to DISCOVER and immediately got a response, then did the REQUEST, got a response, and on I went. I don't know exactly what logic dhclient uses to decide what kind of packet to send, but I think if it hasn't tried a DISCOVER recently and REQUEST isn't working, then instead of trying REQUEST five more times, start over with DISCOVER.
