<br><font size=2 face="sans-serif">One HCA could support 256 ports. The
current implementation doesn't support partially successful ports, which
would be a waste if any of the port failure. And after adding some break
points to induce errors in each client during registration, some of the
potential problems will be triggered. Here is my proposal to enable partial
ports. Basically the upper user's physical ports number is going to replaced
by the successful ports bitmap of the client it depends on. I have done
some research on each client for enabling partially ports on HCA, and created
some patches and tested the idea. Please correct if my understanding is
wrong. Also if you have other idea, please share.</font>
<br>
<br><font size=2 face="sans-serif">cache_client: This client allows partially
ports. But ib_cache_update() might fail on a port whose pkey_cache, gid_cache
fail to be generated, so all the upper level users can be only allowed
on the successful ports not the HCA's physical ports number. There are
9 upper users there, they are: ib_srp,ib_sdp,ib_uverbs,ib_umad,ib_cm, ib_ipoib,ib_sa,ib_mad.
</font>
<br>
<br><font size=2 face="sans-serif">mad_client: This client doesn't allow
partially ports. I would like to suggestion only enable the ports when
both QP0&QP1 are successful. Don't know where QP0 can be used while
QP1 is absent. (You can tell me if there is a case.) The upper users are
ib_umad, ib_cm, ib_sa. </font>
<br>
<br><font size=2 face="sans-serif">cm_client: This client doesn't allow
partial ports. To enable partial ports, these upper users ib_ucm, ib_srp,
ib_sdp can be only allowed on the successful ports.</font>
<br>
<br><font size=2 face="sans-serif">sa_client: This client doesn't allow
partial ports. To enable partial ports, these upper users ib_ipoib, ib_srp,
ib_sdp, ib_at can be only allowed on the successful ports.</font>
<br>
<br><font size=2 face="sans-serif">ipoib_client: This client does allow
partial ports.</font>
<br>
<br><font size=2 face="sans-serif">The number of physical ports should
be replaced by each client's successful ports. For example ipoib_client
will be allowed on sa_client ports bitmap, sa_client will be allowed on
mad_client ports bitmap, mad_client will be allowed on cache_client ports
bitmap.</font>
<br>
<br><font size=2 face="sans-serif">Adding bitmap field is not necessary,
the ib_cache, ib_device, ib_sa_device, cm_device stored all the ports info.
ib_uat & kdapl & ib_ping should be updated too.</font>
<br>
<br><font size=2 face="sans-serif">Thanks<br>
Shirley Ma<br>
IBM Linux Technology Center<br>
15300 SW Koll Parkway<br>
Beaverton, OR 97006-6063<br>
Phone(Fax): (503) 578-7638</font>