@(#)contract 1.8 @(#) /shared/sac/arc/ARC-Templates/contract [1.8 06/12/06] CONTRACT ALLOWING/REQUIRING SPECIAL ARRANGEMENTS FOR INTERFACES 0. Number: PSARC/2010/043-01 1. This contract is between a SUPPLIER of INTERFACES and a CONSUMER of those INTERFACES, both of whom are entities within Sun Microsystems, Incorporated. 2. The SUPPLIER (definer and/or implementor) is identified by the following: Product or Bundle: Open Fabrics User Verbs (OFUV) Consolidation: ON Department or Group: Solaris Core Technology, IB Bugster Product/Category/SubCategory: Solaris/ib_sw/sol_ofs Responsible Manager: lii.chen@sun.com 3. The CONSUMER is identified by the following: Product or Bundle: RDSv3 - Reliable Datagram Service version 3 driver Consolidation: ON Department or Group: Solaris Core Technology, IB Bugster Product/Category/SubCategory: Solaris/ib_sw/rds-ib Responsible Manager: lii.chen@sun.com 4. The INTERFACES are: All the following are project private: struct ib_pd *ib_alloc_pd(struct ib_device *); int ib_dealloc_pd(struct ib_pd *); int ib_register_client(struct ib_client *); void ib_unregister_client(struct ib_client *); void *ib_get_client_data(struct ib_device *, struct ib_client *); void ib_set_client_data(struct ib_device *, struct ib_client *, void *); struct ib_qp *ib_create_qp(struct ib_pd *, struct ib_qp_init_attr *); int ib_modify_qp(struct ib_qp *, struct ib_qp_attr *, int); int ib_destroy_qp(struct ib_qp *); struct ib_cq *ib_create_cq(struct ib_device *, ib_comp_handler, void (*event_handler)(struct ib_event *, void *), void *, int, int); int ib_destroy_cq(struct ib_cq *); int ib_req_notify_cq(struct ib_cq *, enum ib_cq_notify_flags); int ib_poll_cq(struct ib_cq *, int, struct ib_wc *); int ib_query_device(struct ib_device *, struct ib_device_attr *); void ib_addr_get_sgid(struct rdma_dev_addr *, union ib_gid *); void ib_addr_set_sgid(struct rdma_dev_addr *, union ib_gid *); void ib_addr_get_dgid(struct rdma_dev_addr *, union ib_gid *); The above functions are imported from the Open Fabrics kernel IB VERBs. The functions in question are only implemented just enough to the extent of RDSv3 driver requirements. So it's not ready for general kernel consumers. 5. The ARC controlling these INTERFACES is: PSARC 6. The CASE describing (Exporting) these INTERFACES is: PSARC/2009/421 7. The following SPECIAL ARRANGEMENTS are made which modify the rules imposed by the stability levels listed in section 4 above: _Y_ 7a. Although the stability level doesn't normally restrict it, SUPPLIER promises to only modify INTERFACES in an incompatible way as follows: Only after reviewing INTERFACES with the CONSUMER. _N_ 7b. Although the stability level doesn't normally allow it, CONSUMER will expose INTERFACES to a PARTNER, which is external to Sun, namely: Name of Company: Name of Department or Group within Company: Responsible Manager: _N_ 7c. Although the stability level doesn't normally allow it, CONSUMER will import INTERFACES from a separate consolidation. _Y_ 7d. If SUPPLIER decides to change (including replace or remove) any portion of the INTERFACES, SUPPLIER will notify CONSUMER of the proposed new version, no later than the application for ARC approval of the new version. If SUPPLIER and CONSUMER are contained in the same consolidation, they have the option of arranging for simultaneous conversion to the new interfaces. If this is not possible, or if they are not in the same consolidation, then SUPPLIER will either make best effort to work with CONSUMER so that CONSUMER can detect which version of INTERFACES is being supplied, or else SUPPLIER will make best effort to supply both old and new versions of INTERFACES. If SUPPLIER cannot make both versions of INTERFACES available, and SUPPLIER and CONSUMER cannot devise a method whereby CONSUMER can detect which version of INTERFACES is being supplied, and the old version of CONSUMER will not run with the new version of SUPPLIER, then either the EOL process must be followed by SUPPLIER, or else a major release of SUPPLIER will be required, or the change will not be allowed. 8. If CONSUMER requires changes in INTERFACES, SUPPLIER will make best effort to accommodate such changes, which shall then be treated in accordance with paragraph 7 above. 9. Notwithstanding paragraphs 7 and 8, a change to any portion of the INTERFACES shall be regarded as a completely new set of INTERFACES which require both ARC approval and execution of a new contract. 10. SUPPLIER and CONSUMER agree that evolution of INTERFACES shall be handled as follows: The SUPPLIER will inform the CONSUMER and agree on the schedule of the change with the CONSUMER. 11. SUPPLIER and CONSUMER agree that INTERFACES will be supported as follows: SUPPLIER will provide unit testing for all INTERFACES. Bugs will reported and responded to through the normal bug tracking (bugster) process. 12. SUPPLIER and CONSUMER agree that INTERFACES will be documented as follows: SUPPLIER will provide design documents and pointers to OFED documentation for functions ported from OFED. 13. SUPPLIER and CONSUMER agree that changes to the INTERFACES will be tested as follows: SUPPLIER will provide unit testing functional testing. CONSUMER will provide system-level testing. 14. SUPPLIER and CONSUMER agree that this contract can be terminated as follows: The contract can be terminated at EOL of the sol_ofs module, or by mutual consent of the SUPPLIER and the CONSUMER or if the interfaces in question are promoted to Consolidation Private. 15. This contract is not valid until "signed" via agreement from the SUPPLIER and CONSUMER, and approved by the ARC CASE referenced by this contract. E-mail agreement to the contract should be archived in the mail archive of CASE; verbal agreement to the contract should be noted in the meeting minutes. This contract remains valid until superseded or invalidated. For SUPPLIER: Brendan Doyle Date: 2010/02/01 For CONSUMER: Sherman Pun Date: 2010/02/01 For ARC: Ted Kim Date: 2010/02/15 A copy of this contract shall be deposited in the CASE directory as "contract-" or in a "contracts" subdirectory. 16. (Not to be filled in until superseded or invalidated.) This contract was superseded or invalidated by CASE: For ARC: Date: