All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnon Warshavsky <arnon@qwilt.com>
To: Kevin Traynor <ktraynor@redhat.com>
Cc: Thomas Monjalon <thomas@monjalon.net>,
	"Burakov, Anatoly" <anatoly.burakov@intel.com>,
	"Lu, Wenzhuo" <wenzhuo.lu@intel.com>,
	"Doherty, Declan" <declan.doherty@intel.com>,
	jerin.jacob@caviumnetworks.com,
	Bruce Richardson <bruce.richardson@intel.com>,
	"Yigit, Ferruh" <ferruh.yigit@intel.com>,
	dev@dpdk.org
Subject: Re: [PATCH v4 02/11] bond: replace rte_panic instances in bonding driver
Date: Fri, 20 Apr 2018 16:13:51 +0300	[thread overview]
Message-ID: <CAKy9EB13ss4mk=bp-kuuBeTbx03ufLs1j5SCYfxg83AFiHDO7A@mail.gmail.com> (raw)
In-Reply-To: <dbb280ec-f748-68c6-0e34-0252742bbdf1@redhat.com>

Will do. Thanks

On Thu, Apr 19, 2018 at 8:25 PM, Kevin Traynor <ktraynor@redhat.com> wrote:

> On 04/19/2018 07:01 AM, Arnon Warshavsky wrote:
> > replace panic calls with log and retrun value.
> > Local functions to this file,
> > changing from void to int are non-abi-breaking
> > --
> > v4 - fix split literal strings in log messages
> >
> > Signed-off-by: Arnon Warshavsky <arnon@qwilt.com>
> > ---
> >  drivers/net/bonding/rte_eth_bond_8023ad.c         | 28
> +++++++++++++++--------
> >  drivers/net/bonding/rte_eth_bond_8023ad_private.h |  2 +-
> >  drivers/net/bonding/rte_eth_bond_api.c            | 20 +++++++++++-----
> >  drivers/net/bonding/rte_eth_bond_pmd.c            |  9 +++++---
> >  drivers/net/bonding/rte_eth_bond_private.h        |  2 +-
> >  5 files changed, 40 insertions(+), 21 deletions(-)
> >
> > diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c
> b/drivers/net/bonding/rte_eth_bond_8023ad.c
> > index c452318..7512901 100644
> > --- a/drivers/net/bonding/rte_eth_bond_8023ad.c
> > +++ b/drivers/net/bonding/rte_eth_bond_8023ad.c
> > @@ -893,7 +893,7 @@
> >                       bond_mode_8023ad_periodic_cb, arg);
> >  }
> >
> > -void
> > +int
> >  bond_mode_8023ad_activate_slave(struct rte_eth_dev *bond_dev,
> >                               uint16_t slave_id)
> >  {
> > @@ -939,7 +939,7 @@
> >       timer_cancel(&port->warning_timer);
> >
> >       if (port->mbuf_pool != NULL)
> > -             return;
> > +             return 0;
> >
> >       RTE_ASSERT(port->rx_ring == NULL);
> >       RTE_ASSERT(port->tx_ring == NULL);
> > @@ -968,8 +968,9 @@
> >       /* Any memory allocation failure in initialization is critical
> because
> >        * resources can't be free, so reinitialization is impossible. */
> >       if (port->mbuf_pool == NULL) {
> > -             rte_panic("Slave %u: Failed to create memory pool '%s':
> %s\n",
> > -                     slave_id, mem_name, rte_strerror(rte_errno));
> > +             RTE_LOG(ERR, PMD, "%s() Slave %u: Failed to create memory
> pool '%s': %s\n",
> > +                     __func__, slave_id, mem_name,
> rte_strerror(rte_errno));
> > +             return -1;
> >       }
> >
> >       snprintf(mem_name, RTE_DIM(mem_name), "slave_%u_rx", slave_id);
> > @@ -977,8 +978,9 @@
> >                       rte_align32pow2(BOND_MODE_8023AX_SLAVE_RX_PKTS),
> socket_id, 0);
> >
> >       if (port->rx_ring == NULL) {
> > -             rte_panic("Slave %u: Failed to create rx ring '%s': %s\n",
> slave_id,
> > -                     mem_name, rte_strerror(rte_errno));
> > +             RTE_LOG(ERR, PMD, "%s() Slave %u: Failed to create rx ring
> '%s': %s\n",
> > +                     __func__, slave_id, mem_name,
> rte_strerror(rte_errno));
> > +             return -1;
> >       }
> >
> >       /* TX ring is at least one pkt longer to make room for marker
> packet. */
> > @@ -987,9 +989,12 @@
> >                       rte_align32pow2(BOND_MODE_8023AX_SLAVE_TX_PKTS +
> 1), socket_id, 0);
> >
> >       if (port->tx_ring == NULL) {
> > -             rte_panic("Slave %u: Failed to create tx ring '%s': %s\n",
> slave_id,
> > -                     mem_name, rte_strerror(rte_errno));
> > +             RTE_LOG(ERR, PMD, "%s() Slave %u: Fail to create tx ring
> '%s': %s\n",
> > +                     __func__, slave_id, mem_name,
> rte_strerror(rte_errno));
> > +             return -1;
> >       }
> > +
> > +     return 0;
> >  }
> >
> >  int
> > @@ -1143,9 +1148,12 @@
> >       struct bond_dev_private *internals = bond_dev->data->dev_private;
> >       uint8_t i;
> >
> > -     for (i = 0; i < internals->active_slave_count; i++)
> > -             bond_mode_8023ad_activate_slave(bond_dev,
> > +     for (i = 0; i < internals->active_slave_count; i++) {
> > +             int rc = bond_mode_8023ad_activate_slave(bond_dev,
> >                               internals->active_slaves[i]);
> > +             if (rc != 0)
> > +                     return rc;
> > +     }
> >
> >       return 0;
> >  }
> > diff --git a/drivers/net/bonding/rte_eth_bond_8023ad_private.h
> b/drivers/net/bonding/rte_eth_bond_8023ad_private.h
> > index 0f490a5..96a42f2 100644
> > --- a/drivers/net/bonding/rte_eth_bond_8023ad_private.h
> > +++ b/drivers/net/bonding/rte_eth_bond_8023ad_private.h
> > @@ -263,7 +263,7 @@ struct mode8023ad_private {
> >   * @return
> >   *  0 on success, negative value otherwise.
> >   */
> > -void
> > +int
> >  bond_mode_8023ad_activate_slave(struct rte_eth_dev *dev, uint16_t
> port_id);
> >
> >  /**
> > diff --git a/drivers/net/bonding/rte_eth_bond_api.c
> b/drivers/net/bonding/rte_eth_bond_api.c
> > index aa89425..96aa1ff 100644
> > --- a/drivers/net/bonding/rte_eth_bond_api.c
> > +++ b/drivers/net/bonding/rte_eth_bond_api.c
> > @@ -69,14 +69,15 @@
> >       return 0;
> >  }
> >
> > -void
> > +int
> >  activate_slave(struct rte_eth_dev *eth_dev, uint16_t port_id)
> >  {
> >       struct bond_dev_private *internals = eth_dev->data->dev_private;
> >       uint8_t active_count = internals->active_slave_count;
> >
> >       if (internals->mode == BONDING_MODE_8023AD)
> > -             bond_mode_8023ad_activate_slave(eth_dev, port_id);
> > +             if (bond_mode_8023ad_activate_slave(eth_dev, port_id) !=
> 0)
> > +                     return -1;
> >
> >       if (internals->mode == BONDING_MODE_TLB
> >                       || internals->mode == BONDING_MODE_ALB) {
> > @@ -357,10 +358,17 @@
> >                               bond_ethdev_primary_set(internals,
> >                                                       slave_port_id);
> >
> > -                     if (find_slave_by_id(internals->active_slaves,
> > -                                          internals->active_slave_count,
> > -                                          slave_port_id) ==
> internals->active_slave_count)
> > -                             activate_slave(bonded_eth_dev,
> slave_port_id);
> > +                     int rc =
>
> There's no need for the rc variables, the existing check would suffice here
>
> > +                             find_slave_by_id(internals->active_slaves,
> > +                                     internals->active_slave_count,
> > +                                     slave_port_id);
> > +
> > +                     if (rc == internals->active_slave_count) {
> > +                             int rc = activate_slave(bonded_eth_dev,
> > +                                                     slave_port_id);
> > +                             if (rc != 0)
> > +                                     return -1;
> and this could be
>
> if (activate_slave(bonded_eth_dev, slave_port_id))
>         return -1;
>
> > +                     }
> >               }
> >       }
> >
> > diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c
> b/drivers/net/bonding/rte_eth_bond_pmd.c
> > index 2805c71..2d9052d 100644
> > --- a/drivers/net/bonding/rte_eth_bond_pmd.c
> > +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
> > @@ -1741,8 +1741,10 @@ struct bwg_slave {
> >               /* Any memory allocation failure in initialization is
> critical because
> >                * resources can't be free, so reinitialization is
> impossible. */
> >               if (port->slow_pool == NULL) {
> > -                     rte_panic("Slave %u: Failed to create memory pool
> '%s': %s\n",
> > -                             slave_id, mem_name,
> rte_strerror(rte_errno));
> > +                     RTE_LOG(ERR, PMD, "%s() Slave %u: Failed to create
> memory pool '%s': %s\n",
> > +                             __func__, slave_id,
> > +                             mem_name, rte_strerror(rte_errno));
> > +                     return -1;
> >               }
> >       }
> >
> > @@ -2673,7 +2675,8 @@ struct bwg_slave {
> >                       mac_address_slaves_update(bonded_eth_dev);
> >               }
> >
> > -             activate_slave(bonded_eth_dev, port_id);
> > +             if (activate_slave(bonded_eth_dev, port_id) != 0)
> > +                     return -1;
>
> it's more consistent with the rest of the function to do,
>
> if(activate_slave(bonded_eth_dev, port_id))
>         return rc;
>
> There's other places through the patches where "!= 0" is used but not
> really needed
>
> >
> >               /* If user has defined the primary port then default to
> using it */
> >               if (internals->user_defined_primary_port &&
> > diff --git a/drivers/net/bonding/rte_eth_bond_private.h
> b/drivers/net/bonding/rte_eth_bond_private.h
> > index 94eca88..d99d42c 100644
> > --- a/drivers/net/bonding/rte_eth_bond_private.h
> > +++ b/drivers/net/bonding/rte_eth_bond_private.h
> > @@ -187,7 +187,7 @@ struct bond_dev_private {
> >  void
> >  deactivate_slave(struct rte_eth_dev *eth_dev, uint16_t port_id);
> >
> > -void
> > +int
> >  activate_slave(struct rte_eth_dev *eth_dev, uint16_t port_id);
> >
> >  void
> >
>
>


-- 

*Arnon Warshavsky*
*Qwilt | work: +972-72-2221634 | mobile: +972-50-8583058 | arnon@qwilt.com
<arnon@qwilt.com>*

  reply	other threads:[~2018-04-20 13:13 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-19  6:00 [PATCH v4 00/11] eal: replace calls to rte_panic and refrain from new instances Arnon Warshavsky
2018-04-19  6:00 ` [PATCH v4 01/11] crypto: replace rte_panic instances in crypto driver Arnon Warshavsky
2018-04-19 10:53   ` Trahe, Fiona
2018-04-19 13:49     ` Arnon Warshavsky
2018-04-19  6:01 ` [PATCH v4 02/11] bond: replace rte_panic instances in bonding driver Arnon Warshavsky
2018-04-19 17:25   ` Kevin Traynor
2018-04-20 13:13     ` Arnon Warshavsky [this message]
2018-04-19  6:01 ` [PATCH v4 03/11] e1000: replace rte_panic instances in e1000 driver Arnon Warshavsky
2018-04-19 17:25   ` Kevin Traynor
2018-04-20 13:14     ` Arnon Warshavsky
2018-04-19  6:01 ` [PATCH v4 04/11] ixgbe: replace rte_panic instances in ixgbe driver Arnon Warshavsky
2018-04-19 17:26   ` Kevin Traynor
2018-04-20 13:16     ` Arnon Warshavsky
2018-04-19  6:01 ` [PATCH v4 05/11] eal: replace rte_panic instances in eventdev Arnon Warshavsky
2018-04-19 17:26   ` Kevin Traynor
2018-04-20 13:17     ` Arnon Warshavsky
2018-04-19  6:01 ` [PATCH v4 06/11] kni: replace rte_panic instances in kni Arnon Warshavsky
2018-04-19  6:01 ` [PATCH v4 07/11] eal: replace rte_panic instances in hugepage_info Arnon Warshavsky
2018-04-19 14:03   ` Burakov, Anatoly
2018-04-19 14:09     ` Arnon Warshavsky
2018-04-19 14:45       ` Burakov, Anatoly
2018-04-19 14:50         ` Burakov, Anatoly
2018-04-20 13:11           ` Arnon Warshavsky
2018-04-19 14:36   ` Kevin Traynor
2018-04-20 13:12     ` Arnon Warshavsky
2018-04-19  6:01 ` [PATCH v4 08/11] eal: replace rte_panic instances in interrupts thread Arnon Warshavsky
2018-04-19 17:27   ` Kevin Traynor
2018-04-20 13:18     ` Arnon Warshavsky
2018-04-19  6:01 ` [PATCH v4 09/11] eal: replace rte_panic instances in ethdev Arnon Warshavsky
2018-04-19 17:27   ` Kevin Traynor
2018-04-20 13:23     ` Arnon Warshavsky
2018-04-20 13:56       ` Thomas Monjalon
2018-04-19  6:01 ` [PATCH v4 10/11] eal: replace rte_panic instances in init sequence Arnon Warshavsky
2018-04-19 14:39   ` Burakov, Anatoly
2018-04-19 14:48     ` Arnon Warshavsky
2018-04-19 14:57       ` Burakov, Anatoly
2018-04-19 17:31         ` Kevin Traynor
2018-04-20 13:32           ` Arnon Warshavsky
2018-04-20 13:31         ` Arnon Warshavsky
2018-04-19 17:48   ` Aaron Conole
2018-04-20 13:55     ` Arnon Warshavsky
2018-04-20 14:53       ` Aaron Conole
2018-04-23  8:07         ` Arnon Warshavsky
2018-04-19  6:01 ` [PATCH v4 11/11] devtools: prevent new instances of rte_panic and rte_exit Arnon Warshavsky
2018-04-19 17:52   ` Aaron Conole
2018-04-20 14:01     ` Arnon Warshavsky
2018-04-20 15:41       ` Burakov, Anatoly

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAKy9EB13ss4mk=bp-kuuBeTbx03ufLs1j5SCYfxg83AFiHDO7A@mail.gmail.com' \
    --to=arnon@qwilt.com \
    --cc=anatoly.burakov@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=declan.doherty@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=jerin.jacob@caviumnetworks.com \
    --cc=ktraynor@redhat.com \
    --cc=thomas@monjalon.net \
    --cc=wenzhuo.lu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.