Re: [PATCH net 2/2] net/smc: align the connect behaviour with TCP

From: Guangguan Wang
Date: Tue May 10 2022 - 08:58:50 EST




On 2022/5/10 17:30, Tony Lu wrote:
> On Mon, May 09, 2022 at 07:58:37PM +0800, Guangguan Wang wrote:
>> Connect with O_NONBLOCK will not be completed immediately
>> and returns -EINPROGRESS. It is possible to use selector/poll
>> for completion by selecting the socket for writing. After select
>> indicates writability, a second connect function call will return
>> 0 to indicate connected successfully as TCP does, but smc returns
>
> If the connection is established successfully, the following up call of
> connect() returns -EISCONN (SS_CONNECTED), which is expected and SMC
> does it, same as TCP.
>
> In case of misunderstanding, could you append more detailed information?
>
> Thanks,
> Tony Lu
>

io_uring uses nonblocking connect as follow steps:
1) call connect with nonblocking
2) wait for selector/poll to indicate writability
3) call connect to confirm connection's state

In the third step, tcp changes the socket state from SS_CONNECTING to
SS_CONNECTED and returns 0 if the connection is established successfully,
but smc returns -EISCONN.