On Sun, Feb 28, 2016 at 06:03:36PM +0200, Matan Barak (External) wrote: > >The manual page and rc_pingpong do different things. > > There are two options to use the API. They are both described well in the > man page. This example uses the more trivial and easy-to-use way. Gross. > >This still looks like a horrible user API. > > > > Why do you think so? By my count it scores about a 2 on the Rusty API scale, which is pretty bad. > We want to present a completion structure that could be extended, without > adding the overhead of setting unnecessary fields and without risking that > adding future attributes will make the completion be bigger than a cache > line (and create a great penalty). This also came up in the earlier > libibverbs API discussion. This series trade cache line efficiency for computation efficiency, and it isn't at all clear to me that is going to be a win. Better include some good benchmarks. Hint: Cacheline size is much less important if the cache lines are resident and dirty, and the driver writes make them dirty. The driver should be dirtying them in a way that avoids a RMW penalty. > We could introduce a verb for every new field (poll_cq_ts), but what will a > user do if he wants new_feature_a and new_feature_b from the same > completion? In addition, polluting libibverbs with so many polling verbs is > (to say the least) awkward. As opposed to asking the user to hand craft structures and use ugly awkward macros? I'd say give it another think and try and make the user facing API saner. Jason -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html