Hi Shahaf, Please see bellow,
On Wed, Jan 03, 2018 at 09:16:15AM +0200, Shahaf Shuler wrote: > Ethdev Rx offloads API has changed since: > > commit ce17eddefc20 ("ethdev: introduce Rx queue offloads API") > > This commit support the new Rx offloads API. > > Signed-off-by: Shahaf Shuler <shah...@mellanox.com> > Acked-by: Nelio Laranjeiro <nelio.laranje...@6wind.com> > --- I have to remove my acked-by on this patch, there is an issue. <snip/> > +/** > + * Checks if the per-queue offload configuration is valid. > + * > + * @param priv > + * Pointer to private structure. > + * @param offloads > + * Per-queue offloads configuration. > + * > + * @return > + * 1 if the configuration is valid, 0 otherwise. > + */ > +static int > +priv_is_rx_queue_offloads_allowed(struct priv *priv, uint64_t offloads) > +{ > + uint64_t port_offloads = priv->dev->data->dev_conf.rxmode.offloads; > + uint64_t queue_supp_offloads = > + mlx5_priv_get_rx_queue_offloads(priv); > + uint64_t port_supp_offloads = mlx5_priv_get_rx_port_offloads(priv); > + > + if ((offloads & (queue_supp_offloads | port_supp_offloads)) != > + offloads) > + return 0; > + if (((port_offloads ^ offloads) & port_supp_offloads)) port_offloads is wrongly named, it should be device_offloads and this make things clearer. Seems the mask is wrong as port_supp_offloads is a subset of device_offloads. For my understanding you want this statement to be true when the request offloads is not supported, in such situation it should be a negative mask i.e. ~(port_supp_offloads | queue_supp_offloads). > + return 0; > + return 1; > +} The same issue is present in Tx side. Regards, -- NĂ©lio Laranjeiro 6WIND