On 12/13/17 4:19 AM, Jesper Dangaard Brouer wrote:
> +
> +void xdp_rxq_info_unreg(struct xdp_rxq_info *xdp_rxq)
> +{
> +     xdp_rxq->reg_state = REG_STATE_UNREGISTRED;
> +}
> +EXPORT_SYMBOL_GPL(xdp_rxq_info_unreg);
> +
> +void xdp_rxq_info_init(struct xdp_rxq_info *xdp_rxq)
> +{
> +     if (xdp_rxq->reg_state == REG_STATE_REGISTRED) {
> +             WARN(1, "Missing unregister, handled but fix driver\n");
> +             xdp_rxq_info_unreg(xdp_rxq);
> +     }
> +     memset(xdp_rxq, 0, sizeof(*xdp_rxq));
> +     xdp_rxq->queue_index = U32_MAX;
> +     xdp_rxq->reg_state = REG_STATE_NEW;
> +}
> +EXPORT_SYMBOL_GPL(xdp_rxq_info_init);
> +
> +void xdp_rxq_info_reg(struct xdp_rxq_info *xdp_rxq)
> +{
> +     WARN(!xdp_rxq->dev, "Missing net_device from driver");
> +     WARN(xdp_rxq->queue_index == U32_MAX, "Miss queue_index from driver");
> +     WARN(!(xdp_rxq->reg_state == REG_STATE_NEW),"API violation, miss init");
> +     xdp_rxq->reg_state = REG_STATE_REGISTRED;
> +}
> +EXPORT_SYMBOL_GPL(xdp_rxq_info_reg);
> 

Rather than WARN()'s why not make the _reg and _init functions return an
int that indicates an error? For example you don't want to continue if
the dev is expected but missing.

Reply via email to