[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