-
Notifications
You must be signed in to change notification settings - Fork 652
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ibacm: Allocate end-point addresses dynamically
ibacm has a fixed number (4) of end-point addresses. An endpoint is associated with the node GUID. Hence, if a system is brought up with VFs enabled, ibacm will not be able to handle the end-point addresses. Also, if a port is assigned an IPv4 address and scope link-local and global IPv6 addresses, and the device has two ports, six addresses must be supported by ibacm. Now, consider the combination of multiple VFs instantiated and a multitude of addresses assigned to each, it is hard to come up with a hard limit. Hence, we need to allocate the number of end-point addresses dynamically. Please note that in acm, it is only the main thread that accesses the end-point's addr_info struct. Hence the access is single-threaded and no locking is required. When adding an address, the default provider, acmp, saves a pointer into ibacm's acmc_ep addr_info attribute. But this is now re-allocated. This subtle issue is fixed in acmp by changing the addr pointer to an addr struct in struct acmp_addr and copying to it. Signed-off-by: Håkon Bugge <[email protected]>
- Loading branch information
1 parent
bcd76b2
commit c5ebe32
Showing
1 changed file
with
120 additions
and
54 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters