Re: [PATCH rdma-rc 3/9] Revert "RDMA/cma: Simplify rdma_resolve_addr() error flow"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2/14/2020 8:08 AM, Jason Gunthorpe wrote:
> On Fri, Feb 14, 2020 at 03:11:48AM +0000, Parav Pandit wrote:
>> On 2/13/2020 7:30 AM, Jason Gunthorpe wrote:
>>> On Wed, Feb 12, 2020 at 09:26:29AM +0200, Leon Romanovsky wrote:
>>>> From: Parav Pandit <parav@xxxxxxxxxxxx>
>>>>
>>>> This reverts commit 219d2e9dfda9431b808c28d5efc74b404b95b638.
>>>>
>>>> Below flow requires cm_id_priv's destination address to be setup
>>>> before performing rdma_bind_addr().
>>>> Without which, source port allocation for existing bind list fails
>>>> when port range is small, resulting into rdma_resolve_addr()
>>>> failure.
>>>
>>> I don't quite understands this - what is "when port range is small" ?
>>>  
>> There is sysfs knob to reduce source port range to use for binding.
>> So it is easy to create the issue by reducing port range to handful of them.
>>
>>>> rdma_resolve_addr()
>>>>   cma_bind_addr()
>>>>     rdma_bind_addr()
>>>>       cma_get_port()
>>>>         cma_alloc_any_port()
>>>>           cma_port_is_unique() <- compared with zero daddr
>>>
>>> Do you understand why cma_port_is_unique is even testing the dst_addr?
>>> It seems very strange.
>>
>> ma_port_unique() reuses the source port as long as
>> destination is different (destination = either different
>> dest.addr or different dest.port between two cm_ids ).
>>
>> This behavior is synonymous to TCP also.
>>
>>> Outbound connections should not alias the source port in the first
>>> place??
>>>
>> I believe it can because TCP seems to allow that too as long destination
>> is different.
>>
>> I think it allows if it results into different 4-tuple.
> 
> So the issue here is if the dest is left as 0 then the
> cma_alloc_any_port() isn't able to alias source ports any more?
>
Correct.


> Jason
> 





[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux