在 2019/2/28 5:32, Parav Pandit 写道: > >> -----Original Message----- >> From: oulijun <oulijun@xxxxxxxxxx> >> Sent: Wednesday, February 27, 2019 2:09 AM >> To: Parav Pandit <parav@xxxxxxxxxxxx>; bvanassche@xxxxxxx; linux- >> rdma@xxxxxxxxxxxxxxx >> Subject: Re: [EXPERIMENTAL v1 0/4] RDMA loopback device >> >> Hi, >> What is the difference between loopback driver and loopback packet in the >> IB protocol? >> > Loopback packet in IB protocol is as you described. > However users almost always needs a physical hardware HCA (IB/RoCE, iwarp). > Iwarp patches are in progress. > > There hasn't been reliable software stack yet for users who want to just run their applications in laptop/vm on single system. > This is often done for unit tests, sanity, stack regression tests. > > Loopback driver mimics the netdev's lo style loopback rdma device in very simple manner. > Its ABI less, where there almost any user space driver at all and still achieves 7Gbps to 80Gbps performance. > > Again rxe and cma can be enhanced, to add lo netdev interface via new netlink command added. > But I have serious doubts that we can make rxe really work perfectly without ABI change, and without major rework. > I am not sure if that is really worth it. If siw reworks the rxe driver, than there is some light of hope. > Thank your detail reply。 I have seen the goal for loopback driver。 But I still want to use this series to ask about the loopback packet problem. The protocol specifies: o10-6.2-1.1: If the CI supports the Loopback Indicator, the CI shall report it through the Query HCA Verb. The CI shall accept the Loopback Indicator as an input modifier to the Create Address Handle, Modify Address Handle, Modify QP and Modify EEC verbs I have checked the create address handle verbs' input modifier. struct rdma_ah_attr { struct ib_global_route grh; u8 sl; u8 static_rate; u8 port_num; u8 ah_flags; enum rdma_ah_attr_type type; union { struct ib_ah_attr ib; struct roce_ah_attr roce; struct opa_ah_attr opa; }; }; and the verb for create ah in protocol specification. input modifiers: ... ... • Loopback Indicator (if the HCA supports Loopback Indicator on Address Handles). DLID and Loopback Indicator are mutually exclusive. ... I don't see why defined the loopback indicator and expose for app? I understand that the loopback indicator should be gived by ofed, the user can configue it. Any other understand? if the user not use lo nedev for loopback and use other nedev for rdma device? thanks >> for the IB protocol description: >> 10.2.2.3 LOOPBACK >> Packet loopback is supported through self addressed packets as described in >> 17.2.2 and C17-18:. Self-addressed packet is a packet whose DLID and SLID >> address the same port of the same CA. Additionally, an HCA can optionally >> support a Loopback Indicator. When Loopback Indicator is supported, both >> Address Handles and QP/EE Address Vectors can use Loopback Indicator >> instead of Destination LID. When reaping completions for Datagrams based >> QPs, the Loopback Indicator is also reported if the origin of the message was >> Loopback. >> >> I always have a question for the above. Why not expsure the loopback >> indicator for user to support loopback packet? >> > It is not useful to expose this and modify all user applications for hw and sw devices. > Core code already does this detection and does the loopback on hw and sw interfaces. > Hence it is not desired to expose this optional part of the spec.