[openib-general] Re: CMA stuff

Sean Hefty mshefty at ichips.intel.com
Thu Mar 2 13:31:45 PST 2006


Michael S. Tsirkin wrote:
> - Do we expect ULPs to let CMA mange the QPs, or do it themselves?

The CMA manages the QP states only if the user calls rdma_create_qp().  If this 
call is not made, the user must perform QP state transitions themselves.  In 
general, I would expect most users to call rdma_create_qp().  The option is 
there mainly to support userspace QPs.

> - When cma manages QP state, there doesnt seem to exist an option
>   to post receive WQEs when qp is in INIT state.
>   This is required at least for SDP if SDP's to use.

The QP is in the INIT state after rdma_create_qp() is called.  Receives may be 
posted at that time.

> - CMA does not seem to do anything with the path static rate it gets
>   from SA. Am I missing the place where it does do it?

What are you wanting it to do with it?  It's possible that what you're looking 
for is done by the IB CM.

> - Any chance IPv6 will get supported soon?

Only if someone submits a patch for it.  I don't see having time to do this 
myself for at least a few months.

> - backlog parameter
> 	- Most code handling backlog seems to be in ucma -
> 	  shouldnt this be generic to cma?

Backlog doesn't make much sense when the CMA is used over the IB CM, since it's 
a direct callback model.  I looked at adding backlog as a parameter to the IB 
CM, but couldn't come up with a decent implementation for what to do with it. 
The uCMA is the only location where any queuing of requests is actually done.

> 	- It seems that in ucma backlog is checked when a connection request
> 	  arrives. However this is not how TCP handles backlog,
> 	  so socket apps being ported to CMA might hit a problem.

Yes - there are differences between what backlog can mean on sockets versus an 
RDMA interface.  We can't create the connection for the user on an RDMA 
interface, so the best that I could come up with is to queue requests.
  	
> 	Basically TCP uses a two stage backlog to defend against SYN attacks.
> 	When a SYN is received a small amount of state is kept until the full
> 	handshake is completed, at which point a full socket is created and
> 	queued onto the listen sockets accept queue. The second stage uses the
> 	listen() backlog parameter to manage the accept queue. The first stage
> 	queue size is managed using a sysctl, (net.pv4.tcp_max_syn_backlog)
> 	which on a lot of systems defaults to 1024.
> 
> 	  So I think ideally CMA would do the same.

I think that I need a specific example (i.e. a patch) to see how you would treat 
backlog differently.

- Sean



More information about the general mailing list