[dpdk-dev] [PATCH v9 3/4] ethdev: redesign link speed config API

Nélio Laranjeiro nelio.laranjeiro at 6wind.com
Wed Mar 9 11:20:40 CET 2016


On Wed, Mar 09, 2016 at 11:09:55AM +0100, Marc wrote:
>    On 9 March 2016 at 09:45, Nélio Laranjeiro <[1]nelio.laranjeiro at 6wind.com>
>    wrote:
> 
>      Hi Marc,
> 
>      A small remark bellow.
>      On Tue, Mar 01, 2016 at 01:45:50AM +0100, Marc Sune wrote:
>      > This patch redesigns the API to set the link speed/s configure
>      > for an ethernet port. Specifically:
>      >
>      > - it allows to define a set of advertised speeds for
>      >   auto-negociation.
>      > - it allows to disable link auto-negociation (single fixed speed).
>      > - default: auto-negociate all supported speeds.
>      >
>      > Other changes:
>      >
>      > * Added utility MACROs ETH_SPEED_NUM_XXX with the numeric
>      >   values of all supported link speeds, in Mbps.
>      > * Converted link_speed to uint32_t to accomodate 100G speeds
>      >   and beyond (bug).
>      > * Added autoneg flag in struct rte_eth_link to indicate if
>      >   link speed was a result of auto-negociation or was fixed
>      >   by configuration.
>      > * Added utility function to convert numeric speeds to bitmap
>      >   fields.
>      > * Added rte_eth_speed_to_bm_flag() to version map.
>      >
>      > Signed-off-by: Marc Sune <[2]marcdevel at gmail.com>
>      > ---
>      >  app/test-pipeline/init.c                  |   2 +-
>      >  app/test-pmd/cmdline.c                    | 124
>      +++++++++++++++---------------
>      >  app/test-pmd/config.c                     |   4 +-
>      >  app/test/virtual_pmd.c                    |   4 +-
>      >  drivers/net/af_packet/rte_eth_af_packet.c |   5 +-
>      >  drivers/net/bnx2x/bnx2x_ethdev.c          |   8 +-
>      >  drivers/net/bonding/rte_eth_bond_8023ad.c |  14 ++--
>      >  drivers/net/cxgbe/base/t4_hw.c            |   8 +-
>      >  drivers/net/cxgbe/cxgbe_ethdev.c          |   2 +-
>      >  drivers/net/e1000/em_ethdev.c             | 116
>      ++++++++++++++--------------
>      >  drivers/net/e1000/igb_ethdev.c            | 111
>      +++++++++++++-------------
>      >  drivers/net/fm10k/fm10k_ethdev.c          |   8 +-
>      >  drivers/net/i40e/i40e_ethdev.c            |  73 +++++++++---------
>      >  drivers/net/i40e/i40e_ethdev_vf.c         |  11 +--
>      >  drivers/net/ixgbe/ixgbe_ethdev.c          |  78 ++++++++-----------
>      >  drivers/net/mlx4/mlx4.c                   |   6 +-
>      >  drivers/net/mlx5/mlx5_ethdev.c            |  10 +--
>      >  drivers/net/mpipe/mpipe_tilegx.c          |   6 +-
>      >  drivers/net/nfp/nfp_net.c                 |   4 +-
>      >  drivers/net/null/rte_eth_null.c           |   5 +-
>      >  drivers/net/pcap/rte_eth_pcap.c           |   9 ++-
>      >  drivers/net/ring/rte_eth_ring.c           |   5 +-
>      >  drivers/net/virtio/virtio_ethdev.c        |   2 +-
>      >  drivers/net/virtio/virtio_ethdev.h        |   2 -
>      >  drivers/net/vmxnet3/vmxnet3_ethdev.c      |   5 +-
>      >  drivers/net/xenvirt/rte_eth_xenvirt.c     |   5 +-
>      >  examples/ip_pipeline/config_parse.c       |   3 +-
>      >  lib/librte_ether/rte_ethdev.c             |  49 ++++++++++++
>      >  lib/librte_ether/rte_ethdev.h             | 113
>      +++++++++++++++++----------
>      >  lib/librte_ether/rte_ether_version.map    |   6 ++
>      >  30 files changed, 448 insertions(+), 350 deletions(-)
>      >
>      > diff --git a/app/test-pipeline/init.c b/app/test-pipeline/init.c
>      > index db2196b..6a69fe2 100644
>      > --- a/app/test-pipeline/init.c
>      > +++ b/app/test-pipeline/init.c
>      > @@ -200,7 +200,7 @@ app_ports_check_link(void)
>      >               port = (uint8_t) app.ports[i];
>      >               memset(&link, 0, sizeof(link));
>      >               rte_eth_link_get_nowait(port, &link);
>      > -             RTE_LOG(INFO, USER1, "Port %u (%u Gbps) %s\n",
>      > +             RTE_LOG(INFO, USER1, "Port %u (%d Gbps) %s\n",
>      >                       port,
>      >                       link.link_speed / 1000,
>      >                       link.link_status ? "UP" : "DOWN");
>      > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
>      > index 52e9f5f..57ad25f 100644
>      > --- a/app/test-pmd/cmdline.c
>      > +++ b/app/test-pmd/cmdline.c
>      > @@ -956,14 +956,65 @@ struct cmd_config_speed_all {
>      >       cmdline_fixed_string_t value2;
>      >  };
>      >
>      > +static int
>      > +parse_and_check_speed_duplex(char *value1, char *value2, uint32_t
>      *link_speed)
> 
>      "value" variables should have the more friendly name, we need to read
>      the
>      code to understand what is value1 and value2.
> 
>    Hello,
>    Ok, but note that the entire source code of cmdline.c uses value1 and
>    value2 to reference speed and duplex mode. This is not something I
>    introduced in this patch.
>    Marc

Ok, I did not look in the whole file only in your patch.  You kept
the logic of the file, it is good for me.

>      >[...]
>      --
>      Nélio Laranjeiro
>      6WIND
> 
> References
> 
>    Visible links
>    1. mailto:nelio.laranjeiro at 6wind.com
>    2. mailto:marcdevel at gmail.com

-- 
Nélio Laranjeiro
6WIND


More information about the dev mailing list