On Thu, 2017-11-09 at 19:31 +0200, Sagi Grimberg wrote: > > > +static int ib_alloc_cqs(struct ib_device *dev, int nr_cqes, > > > + enum ib_poll_context poll_ctx) > > > +{ > > > + LIST_HEAD(tmp_list); > > > + struct ib_cq *cq; > > > + unsigned long flags; > > > + int nr_cqs, ret, i; > > > + > > > + /* > > > + * Allocated at least as many CQEs as requested, and otherwise > > > + * a reasonable batch size so that we can share CQs between > > > + * multiple users instead of allocating a larger number of CQs. > > > + */ > > > + nr_cqes = max(nr_cqes, min(dev->attrs.max_cqe, IB_CQE_BATCH)); > > > > did you mean min() ? > > No, I meant max. If we choose the CQ size, we choose the min between the > default and the device capability, if the user chooses, we rely that it > asked for no more than the device capability (and if not, allocation > will fail, as it should). Hello Sagi, How about the following: min(dev->attrs.max_cqe, max(nr_cqes, IB_CQE_BATCH)) Bart. ��.n��������+%������w��{.n�����{���fk��ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f