From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Ahern Subject: Re: [bpf-next V1-RFC PATCH 01/14] xdp: base API for new XDP rx-queue info concept Date: Wed, 13 Dec 2017 19:34:40 -0700 Message-ID: <3b781865-be2a-740b-8403-fe47fea929bc@gmail.com> References: <151316391502.14967.13292358380181773729.stgit@firesoul> <151316396600.14967.5648145904814220715.stgit@firesoul> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, gospo@broadcom.com, bjorn.topel@intel.com, michael.chan@broadcom.com To: Jesper Dangaard Brouer , Daniel Borkmann , Alexei Starovoitov Return-path: Received: from mail-it0-f45.google.com ([209.85.214.45]:35001 "EHLO mail-it0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751798AbdLNCel (ORCPT ); Wed, 13 Dec 2017 21:34:41 -0500 Received: by mail-it0-f45.google.com with SMTP id f143so7617827itb.0 for ; Wed, 13 Dec 2017 18:34:41 -0800 (PST) In-Reply-To: <151316396600.14967.5648145904814220715.stgit@firesoul> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: 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.