diff mbox series

[ovs-dev] netdev-afxdp: Error when no XDP program loaded.

Message ID 1563922721-122312-1-git-send-email-u9012063@gmail.com
State Changes Requested
Headers show
Series [ovs-dev] netdev-afxdp: Error when no XDP program loaded. | expand

Commit Message

William Tu July 23, 2019, 10:58 p.m. UTC
netdev-afxdp requires XDP program to be loaded.  When prog_id == 0,
it indicates no XDP program, so return error and free resources.

Signed-off-by: William Tu <u9012063@gmail.com>
---
 lib/netdev-afxdp.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Ilya Maximets July 24, 2019, 2:14 p.m. UTC | #1
On 24.07.2019 1:58, William Tu wrote:
> netdev-afxdp requires XDP program to be loaded.  When prog_id == 0,
> it indicates no XDP program, so return error and free resources.
> 
> Signed-off-by: William Tu <u9012063@gmail.com>
> ---
>  lib/netdev-afxdp.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/lib/netdev-afxdp.c b/lib/netdev-afxdp.c
> index 6b0b93e7f432..79c7a442e9cf 100644
> --- a/lib/netdev-afxdp.c
> +++ b/lib/netdev-afxdp.c
> @@ -283,6 +283,12 @@ xsk_configure_socket(struct xsk_umem_info *umem, uint32_t ifindex,
>          free(xsk);
>          return NULL;
>      }
> +    if (!prog_id) {
> +        VLOG_ERR("No XDP program is loaded at ifindex %d", ifindex);
> +        xsk_socket__delete(xsk->xsk);
> +        free(xsk);
> +        return NULL;
> +    }


What do you think about combining this 'if' with the previous error checking
like this:

   if (ret || !prog_id) {
       if (ret) {
           VLOG_ERR("Get XDP prog ID failed (%s)", ovs_strerror(errno));
       } else {
           VLOG_ERR("No XDP program is loaded at ifindex %d", ifindex);
       }
       ...

?
There is less code duplication this way.

Best regards, Ilya Maximets.
William Tu July 24, 2019, 2:38 p.m. UTC | #2
On Wed, Jul 24, 2019 at 05:14:14PM +0300, Ilya Maximets wrote:
> On 24.07.2019 1:58, William Tu wrote:
> > netdev-afxdp requires XDP program to be loaded.  When prog_id == 0,
> > it indicates no XDP program, so return error and free resources.
> > 
> > Signed-off-by: William Tu <u9012063@gmail.com>
> > ---
> >  lib/netdev-afxdp.c | 6 ++++++
> >  1 file changed, 6 insertions(+)
> > 
> > diff --git a/lib/netdev-afxdp.c b/lib/netdev-afxdp.c
> > index 6b0b93e7f432..79c7a442e9cf 100644
> > --- a/lib/netdev-afxdp.c
> > +++ b/lib/netdev-afxdp.c
> > @@ -283,6 +283,12 @@ xsk_configure_socket(struct xsk_umem_info *umem, uint32_t ifindex,
> >          free(xsk);
> >          return NULL;
> >      }
> > +    if (!prog_id) {
> > +        VLOG_ERR("No XDP program is loaded at ifindex %d", ifindex);
> > +        xsk_socket__delete(xsk->xsk);
> > +        free(xsk);
> > +        return NULL;
> > +    }
> 
> 
> What do you think about combining this 'if' with the previous error checking
> like this:
> 
>    if (ret || !prog_id) {
>        if (ret) {
>            VLOG_ERR("Get XDP prog ID failed (%s)", ovs_strerror(errno));
>        } else {
>            VLOG_ERR("No XDP program is loaded at ifindex %d", ifindex);
>        }
>        ...
> 
> ?
> There is less code duplication this way.
> 
> Best regards, Ilya Maximets.
Thanks, I will do that in next version.
William
diff mbox series

Patch

diff --git a/lib/netdev-afxdp.c b/lib/netdev-afxdp.c
index 6b0b93e7f432..79c7a442e9cf 100644
--- a/lib/netdev-afxdp.c
+++ b/lib/netdev-afxdp.c
@@ -283,6 +283,12 @@  xsk_configure_socket(struct xsk_umem_info *umem, uint32_t ifindex,
         free(xsk);
         return NULL;
     }
+    if (!prog_id) {
+        VLOG_ERR("No XDP program is loaded at ifindex %d", ifindex);
+        xsk_socket__delete(xsk->xsk);
+        free(xsk);
+        return NULL;
+    }
 
     while (!xsk_ring_prod__reserve(&xsk->umem->fq,
                                    PROD_NUM_DESCS, &idx)) {