[dpdk-dev] [PATCH v11 0/8] ethdev: 100G and link speed API refactoring

Marc marcdevel at gmail.com
Sat Mar 26 02:25:12 CET 2016


On 25 March 2016 at 22:30, Marc <marcdevel at gmail.com> wrote:

>
>
> On 25 March 2016 at 21:41, Marc <marcdevel at gmail.com> wrote:
>
>>
>> On 25 March 2016 at 16:07, Zhang, Helin <helin.zhang at intel.com> wrote:
>>
>>> Hi Thomas
>>>
>>> Beilei is investigating that, she will give her findings soon later, and
>>> possibly a fix after validating that.
>>> Thanks!
>>>
>>>
>> I will try to reproduce this on my side too with the latest v12. I could
>> not try latest patchsets, but i40 (XL710) and igb (82540EM) were working on
>> my side for previous versions. Which exact NICs were used to test the
>> patchset for igb?
>>
>
> I am able to reproduce it straight away by applying v12. The problem is
> testpmd and in general existing applications have the default value of 0 as
> link_speeds for autoneg.
>
> From v9 to v10 patchset the values ETH_LINK_SPEED_AUTONEG and
> ETH_LINK_SPEED_FIXED were flipped. Reverting this makes it work:
>
> marc at Beluga:~/personal/dpdk/tools$ git diff
> diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
> index ef2502a..fb247a7 100644
> --- a/lib/librte_ether/rte_ethdev.h
> +++ b/lib/librte_ether/rte_ethdev.h
> @@ -244,8 +244,8 @@ struct rte_eth_stats {
>  /**
>   * Device supported speeds bitmap flags
>   */
> -#define ETH_LINK_SPEED_FIXED    (0 <<  0)  /**< Disable autoneg (fixed
> speed) */
> -#define ETH_LINK_SPEED_AUTONEG  (1 <<  0)  /**< Autonegotiate (all
> speeds) */
> +#define ETH_LINK_SPEED_AUTONEG  (0 <<  0)  /**< Autonegotiate (all
> speeds) */
> +#define ETH_LINK_SPEED_FIXED    (1 <<  0)  /**< Disable autoneg (fixed
> speed) */
>  #define ETH_LINK_SPEED_10M_HD   (1 <<  1)  /**<  10 Mbps half-duplex */
>  #define ETH_LINK_SPEED_10M      (1 <<  2)  /**<  10 Mbps full-duplex */
>  #define ETH_LINK_SPEED_100M_HD  (1 <<  3)  /**< 100 Mbps half-duplex */
>
> I think having autoneg == 0 is better. Do you agree Thomas?
>
> With this change my current NIC (I218-LM) is able to initialize:
>
> Option: 27
>
>   Enter hex bitmask of cores to execute testpmd app on
>   Example: to execute app on cores 0 to 7, enter 0xff
> bitmask: 0x3
> Launching app
> EAL: Detected lcore 0 as core 0 on socket 0
> EAL: Detected lcore 1 as core 0 on socket 0
> EAL: Detected lcore 2 as core 1 on socket 0
> EAL: Detected lcore 3 as core 1 on socket 0
> EAL: Support maximum 128 logical core(s) by configuration.
> EAL: Detected 4 lcore(s)
> EAL: Probing VFIO support...
> EAL: Module /sys/module/vfio_pci not found! error 2 (No such file or
> directory)
> EAL: VFIO modules not loaded, skipping VFIO support...
> EAL: Setting up physically contiguous memory...
> EAL: Ask a virtual area of 0x26800000 bytes
> EAL: Virtual area found at 0x7f33ef800000 (size = 0x26800000)
> EAL: Ask a virtual area of 0x6e00000 bytes
> EAL: Virtual area found at 0x7f33e8800000 (size = 0x6e00000)
> EAL: Ask a virtual area of 0x800000 bytes
> EAL: Virtual area found at 0x7f33e7e00000 (size = 0x800000)
> EAL: Ask a virtual area of 0x4400000 bytes
> EAL: Virtual area found at 0x7f33e3800000 (size = 0x4400000)
> EAL: Ask a virtual area of 0xe00000 bytes
> EAL: Virtual area found at 0x7f33e2800000 (size = 0xe00000)
> EAL: Ask a virtual area of 0x600000 bytes
> EAL: Virtual area found at 0x7f33e2000000 (size = 0x600000)
> EAL: Ask a virtual area of 0x200000 bytes
> EAL: Virtual area found at 0x7f33e1c00000 (size = 0x200000)
> EAL: Ask a virtual area of 0x43600000 bytes
> EAL: Virtual area found at 0x7f339e400000 (size = 0x43600000)
> EAL: Ask a virtual area of 0x8e00000 bytes
> EAL: Virtual area found at 0x7f3395400000 (size = 0x8e00000)
> EAL: Ask a virtual area of 0x200000 bytes
> EAL: Virtual area found at 0x7f3395000000 (size = 0x200000)
> EAL: Ask a virtual area of 0x200000 bytes
> EAL: Virtual area found at 0x7f3394c00000 (size = 0x200000)
> EAL: Requesting 1024 pages of size 2MB from socket 0
> EAL: TSC frequency is ~2593996 KHz
> EAL: Master lcore 0 is ready (tid=180078c0;cpuset=[0])
> EAL: lcore 1 is ready (tid=94bff700;cpuset=[1])
> EAL: PCI device 0000:00:19.0 on NUMA socket -1
> EAL:   probe driver: 8086:15a2 rte_em_pmd
> EAL:   PCI memory mapped at 0x7f3416000000
> EAL:   PCI memory mapped at 0x7f3416020000
> PMD: eth_em_dev_init(): port_id 0 vendorID=0x8086 deviceID=0x15a2
> Interactive-mode selected
> Configuring Port 0 (socket 0)
> PMD: eth_em_tx_queue_setup(): sw_ring=0x7f33e210efc0
> hw_ring=0x7f33e21110c0 dma_addr=0x745110c0
> PMD: eth_em_rx_queue_setup(): sw_ring=0x7f33e20fea80
> hw_ring=0x7f33e20fef80 dma_addr=0x744fef80
> PMD: eth_em_start(): <<
>
> I am troubleshooting link status reporting, which seems not correct with
> l2fwd. I will also double check that fixed speed and autoneg with subset of
> speeds work.
>

Fixed and tested (with I218-LM only) for autoneg (all speeds and subset),
fixed speed and link reporting:

* (unrelated) I found what appears to be a bug in the e1000 base driver,
not reporting changes on link negociation when it is triggered by the peer
(randomly). The behaviour is the same as current master HEAD, so I will
report it separately.

* (unrelated) l2fwd, also in current HEAD, shows a misleading trace "Port
down" at startup, when actually the port is not yet started (or ready).

* From v9 to v10 patchset the values ETH_LINK_SPEED_AUTONEG and
ETH_LINK_SPEED_FIXED were flipped. Reverting this makes it work.

* Setting link to fixed speed was not working after flipping back values
_AUTONEG and _FIXED, since conditions were modified from v9 -> v10
accordingly. Also link reading autoneg flag was incorrect after that. Fixed
for all drivers => NEEDS TESTING, specially for Intel NICs ixgbe and i40e.

* Found two existing bugs in the patchset for e1000 (igb and em), both
fixed:
  - Link reading was always reporting Full duplex.
  - Setting a fixed speed was incorrectly accepting more than 1 speed in
the bitmap.

Attached the set of changes over v12 that will be merged in patch #6 of the
series in v13, for easier reviewing.

Marc

marc at Beluga:~/personal/dpdk$ git diff
328addc166c7217134858fc65febebbd8ddffe7d > v12_fixes.patch
marc at Beluga:~/personal/dpdk$ cat v12_fixes.patch
diff --git a/drivers/net/bnx2x/bnx2x_ethdev.c
b/drivers/net/bnx2x/bnx2x_ethdev.c
index af84175..071b44f 100644
--- a/drivers/net/bnx2x/bnx2x_ethdev.c
+++ b/drivers/net/bnx2x/bnx2x_ethdev.c
@@ -45,8 +45,8 @@ bnx2x_link_update(struct rte_eth_dev *dev)
  dev->data->dev_link.link_duplex = ETH_LINK_HALF_DUPLEX;
  break;
  }
- dev->data->dev_link.link_autoneg = (dev->data->dev_conf.link_speeds &
- ETH_LINK_SPEED_AUTONEG);
+ dev->data->dev_link.link_autoneg = !(dev->data->dev_conf.link_speeds &
+ ETH_LINK_SPEED_FIXED);
  dev->data->dev_link.link_status = sc->link_vars.link_up;
 }

diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c
index 3e26ab0..9fb59a2 100644
--- a/drivers/net/e1000/em_ethdev.c
+++ b/drivers/net/e1000/em_ethdev.c
@@ -620,14 +620,14 @@ eth_em_start(struct rte_eth_dev *dev)
  hw->phy.autoneg_advertised = E1000_ALL_SPEED_DUPLEX;
  } else {
  num_speeds = 0;
- autoneg = (*speeds & ETH_LINK_SPEED_AUTONEG);
+ autoneg = (*speeds & ETH_LINK_SPEED_FIXED) == 0;

  /* Reset */
  hw->phy.autoneg_advertised = 0;

  if (*speeds & ~(ETH_LINK_SPEED_10M_HD | ETH_LINK_SPEED_10M |
  ETH_LINK_SPEED_100M_HD | ETH_LINK_SPEED_100M |
- ETH_LINK_SPEED_1G)) {
+ ETH_LINK_SPEED_1G | ETH_LINK_SPEED_FIXED)) {
  num_speeds = -1;
  goto error_invalid_config;
  }
@@ -651,7 +651,7 @@ eth_em_start(struct rte_eth_dev *dev)
  hw->phy.autoneg_advertised |= ADVERTISE_1000_FULL;
  num_speeds++;
  }
- if (num_speeds == 0 || (!autoneg && (num_speeds > 2)))
+ if (num_speeds == 0 || (!autoneg && (num_speeds > 1)))
  goto error_invalid_config;
  }

@@ -1100,14 +1100,18 @@ eth_em_link_update(struct rte_eth_dev *dev, int
wait_to_complete)
  if (link_check && (link.link_status == ETH_LINK_DOWN)) {
  uint16_t duplex, speed;
  hw->mac.ops.get_link_up_info(hw, &speed, &duplex);
- link.link_duplex = duplex ? ETH_LINK_FULL_DUPLEX :
+ link.link_duplex = (duplex == FULL_DUPLEX) ?
+ ETH_LINK_FULL_DUPLEX :
  ETH_LINK_HALF_DUPLEX;
  link.link_speed = speed;
  link.link_status = ETH_LINK_UP;
+ link.link_autoneg = !(dev->data->dev_conf.link_speeds &
+ ETH_LINK_SPEED_FIXED);
  } else if (!link_check && (link.link_status == ETH_LINK_UP)) {
  link.link_speed = 0;
  link.link_duplex = ETH_LINK_HALF_DUPLEX;
  link.link_status = ETH_LINK_DOWN;
+ link.link_autoneg = ETH_LINK_SPEED_FIXED;
  }
  rte_em_dev_atomic_write_link_status(dev, &link);

diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c
index ced864c..e0053fe 100644
--- a/drivers/net/e1000/igb_ethdev.c
+++ b/drivers/net/e1000/igb_ethdev.c
@@ -1241,14 +1241,14 @@ eth_igb_start(struct rte_eth_dev *dev)
  hw->phy.autoneg_advertised = E1000_ALL_SPEED_DUPLEX;
  } else {
  num_speeds = 0;
- autoneg = (*speeds & ETH_LINK_SPEED_AUTONEG);
+ autoneg = (*speeds & ETH_LINK_SPEED_FIXED) == 0;

  /* Reset */
  hw->phy.autoneg_advertised = 0;

  if (*speeds & ~(ETH_LINK_SPEED_10M_HD | ETH_LINK_SPEED_10M |
  ETH_LINK_SPEED_100M_HD | ETH_LINK_SPEED_100M |
- ETH_LINK_SPEED_1G)) {
+ ETH_LINK_SPEED_1G | ETH_LINK_SPEED_FIXED)) {
  num_speeds = -1;
  goto error_invalid_config;
  }
@@ -1272,7 +1272,7 @@ eth_igb_start(struct rte_eth_dev *dev)
  hw->phy.autoneg_advertised |= ADVERTISE_1000_FULL;
  num_speeds++;
  }
- if (num_speeds == 0 || (!autoneg && (num_speeds > 2)))
+ if (num_speeds == 0 || (!autoneg && (num_speeds > 1)))
  goto error_invalid_config;
  }

@@ -2063,12 +2063,13 @@ eth_igb_link_update(struct rte_eth_dev *dev, int
wait_to_complete)
  if (link_check) {
  uint16_t duplex, speed;
  hw->mac.ops.get_link_up_info(hw, &speed, &duplex);
- link.link_duplex = duplex ? ETH_LINK_FULL_DUPLEX :
+ link.link_duplex = (duplex == FULL_DUPLEX) ?
+ ETH_LINK_FULL_DUPLEX :
  ETH_LINK_HALF_DUPLEX;
  link.link_speed = speed;
  link.link_status = ETH_LINK_UP;
- link.link_autoneg = (dev->data->dev_conf.link_speeds &
- ETH_LINK_SPEED_AUTONEG);
+ link.link_autoneg = !(dev->data->dev_conf.link_speeds &
+ ETH_LINK_SPEED_FIXED);
  } else if (!link_check) {
  link.link_speed = 0;
  link.link_duplex = ETH_LINK_HALF_DUPLEX;
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 87bc767..c9ef417 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -1422,7 +1422,7 @@ i40e_apply_link_speed(struct rte_eth_dev *dev)

  speed = i40e_parse_link_speeds(conf->link_speeds);
  abilities |= I40E_AQ_PHY_ENABLE_ATOMIC_LINK;
- if (conf->link_speeds & ETH_LINK_SPEED_AUTONEG)
+ if (!(conf->link_speeds & ETH_LINK_SPEED_FIXED))
  abilities |= I40E_AQ_PHY_AN_ENABLED;
  else
  abilities |= I40E_AQ_PHY_LINK_ENABLED;
@@ -1442,7 +1442,7 @@ i40e_dev_start(struct rte_eth_dev *dev)

  hw->adapter_stopped = 0;

- if (!(dev->data->dev_conf.link_speeds & ETH_LINK_SPEED_AUTONEG)) {
+ if (dev->data->dev_conf.link_speeds & ETH_LINK_SPEED_FIXED) {
  PMD_INIT_LOG(ERR, "Invalid link_speeds for port %hhu; autonegotiation
disabled",
      dev->data->port_id);
  return -EINVAL;
@@ -1806,8 +1806,8 @@ i40e_dev_link_update(struct rte_eth_dev *dev,
  break;
  }

- link.link_autoneg = (dev->data->dev_conf.link_speeds &
- ETH_LINK_SPEED_AUTONEG);
+ link.link_autoneg = !(dev->data->dev_conf.link_speeds &
+ ETH_LINK_SPEED_FIXED);

 out:
  rte_i40e_dev_atomic_write_link_status(dev, &link);
diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c
b/drivers/net/ixgbe/ixgbe_ethdev.c
index ff23d7d..6cc2da0 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -2098,9 +2098,12 @@ ixgbe_dev_start(struct rte_eth_dev *dev)

  PMD_INIT_FUNC_TRACE();

- /* IXGBE devices don't support half duplex */
- if (!(dev->data->dev_conf.link_speeds & ETH_LINK_SPEED_AUTONEG)) {
- PMD_INIT_LOG(ERR, "Invalid link_speeds for port %hhu; autonegotiation
disabled",
+ /* IXGBE devices don't support:
+ *    - half duplex (checked afterwards for valid speeds)
+ *    - fixed speed: TODO implement
+ */
+ if (dev->data->dev_conf.link_speeds & ETH_LINK_SPEED_FIXED) {
+ PMD_INIT_LOG(ERR, "Invalid link_speeds for port %hhu; fix speed not
supported",
      dev->data->port_id);
  return -EINVAL;
  }
diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c
index 43ac763..81528c9 100644
--- a/drivers/net/mlx4/mlx4.c
+++ b/drivers/net/mlx4/mlx4.c
@@ -4721,8 +4721,8 @@ mlx4_link_update_unlocked(struct rte_eth_dev *dev,
int wait_to_complete)
  dev_link.link_speed = link_speed;
  dev_link.link_duplex = ((edata.duplex == DUPLEX_HALF) ?
  ETH_LINK_HALF_DUPLEX : ETH_LINK_FULL_DUPLEX);
- dev_link.link_autoneg = (dev->data->dev_conf.link_speeds &
- ETH_LINK_SPEED_AUTONEG);
+ dev_link.link_autoneg = !(dev->data->dev_conf.link_speeds &
+ ETH_LINK_SPEED_FIXED);
  if (memcmp(&dev_link, &dev->data->dev_link, sizeof(dev_link))) {
  /* Link status changed. */
  dev->data->dev_link = dev_link;
diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
index 477939f..36b369e 100644
--- a/drivers/net/mlx5/mlx5_ethdev.c
+++ b/drivers/net/mlx5/mlx5_ethdev.c
@@ -630,6 +630,8 @@ mlx5_link_update_unlocked(struct rte_eth_dev *dev, int
wait_to_complete)
  dev_link.link_speed = link_speed;
  dev_link.link_duplex = ((edata.duplex == DUPLEX_HALF) ?
  ETH_LINK_HALF_DUPLEX : ETH_LINK_FULL_DUPLEX);
+ dev_link.link_autoneg = !(dev->data->dev_conf.link_speeds &
+ ETH_LINK_SPEED_FIXED);
  if (memcmp(&dev_link, &dev->data->dev_link, sizeof(dev_link))) {
  /* Link status changed. */
  dev->data->dev_link = dev_link;
diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
index ef2502a..fb247a7 100644
--- a/lib/librte_ether/rte_ethdev.h
+++ b/lib/librte_ether/rte_ethdev.h
@@ -244,8 +244,8 @@ struct rte_eth_stats {
 /**
  * Device supported speeds bitmap flags
  */
-#define ETH_LINK_SPEED_FIXED    (0 <<  0)  /**< Disable autoneg (fixed
speed) */
-#define ETH_LINK_SPEED_AUTONEG  (1 <<  0)  /**< Autonegotiate (all speeds)
*/
+#define ETH_LINK_SPEED_AUTONEG  (0 <<  0)  /**< Autonegotiate (all speeds)
*/
+#define ETH_LINK_SPEED_FIXED    (1 <<  0)  /**< Disable autoneg (fixed
speed) */
 #define ETH_LINK_SPEED_10M_HD   (1 <<  1)  /**<  10 Mbps half-duplex */
 #define ETH_LINK_SPEED_10M      (1 <<  2)  /**<  10 Mbps full-duplex */
 #define ETH_LINK_SPEED_100M_HD  (1 <<  3)  /**< 100 Mbps half-duplex */



>
> @Thomas: once I've fixed this shall I submit v13 or should we wait for
> more feedback from the rest of untested NICs? This patchset needs to be
> tested by all drivers, at least.
>
> marc
>
>
>> Marc
>>
>>
>>> Regards,
>>> Helin
>>>
>>> > -----Original Message-----
>>> > From: Thomas Monjalon [mailto:thomas.monjalon at 6wind.com]
>>> > Sent: Friday, March 25, 2016 5:36 PM
>>> > To: Xu, Qian Q <qian.q.xu at intel.com>
>>> > Cc: dev at dpdk.org; Marc <marcdevel at gmail.com>; Ananyev, Konstantin
>>> > <konstantin.ananyev at intel.com>; Lu, Wenzhuo <wenzhuo.lu at intel.com>;
>>> > Zhang, Helin <helin.zhang at intel.com>; Richardson, Bruce
>>> > <bruce.richardson at intel.com>; Glynn, Michael J <
>>> michael.j.glynn at intel.com>
>>> > Subject: Re: [dpdk-dev] [PATCH v11 0/8] ethdev: 100G and link speed API
>>> > refactoring
>>> >
>>> > Is there someone investigating the issue?
>>> > I think it should be simple to fix for someone mastering these Intel
>>> drivers.
>>> >
>>> > 2016-03-25 01:02, Xu, Qian Q:
>>> > > Marc
>>> > > #Test1 is just a simple test. Just launch testpmd with these nic
>>> port.
>>> > > ./testpmd –c 0x3 –n 4 -- -i
>>> > >
>>> > > Thanks
>>> > > Qian
>>> > >
>>> > > From: marc.sune at gmail.com [mailto:marc.sune at gmail.com] On Behalf Of
>>> > > Marc
>>> > > Sent: Thursday, March 24, 2016 3:48 PM
>>> > > To: Xu, Qian Q
>>> > > Cc: Thomas Monjalon; Ananyev, Konstantin; Lu, Wenzhuo; Zhang, Helin;
>>> > > Richardson, Bruce; dev at dpdk.org
>>> > > Subject: Re: [dpdk-dev] [PATCH v11 0/8] ethdev: 100G and link speed
>>> > > API refactoring
>>> > >
>>> > >
>>> > >
>>> > > On 24 March 2016 at 07:21, Xu, Qian Q
>>> > <qian.q.xu at intel.com<mailto:qian.q.xu at intel.com>> wrote:
>>> > > Marc
>>> > > I didn’t quite get your points, I observed that after applying this
>>> patchset, all
>>> > intel nic can’t be started, maybe something wrong happened when you
>>> check
>>> > the duplex/autoneg value for different NICs. If we want to merge the
>>> patchset in
>>> > RC2, we need fix them. Maybe not an easy job in several days.
>>> > >
>>> > > Is this test#1 one of the tests contained in the DPDK repository or
>>> is it an
>>> > internal test?
>>> > >
>>> > > Marc
>>> > >
>>> > >
>>> > >
>>> > > Thanks
>>> > > Qian
>>> > >
>>> > > From: marc.sune at gmail.com<mailto:marc.sune at gmail.com>
>>> > > [mailto:marc.sune at gmail.com<mailto:marc.sune at gmail.com>] On Behalf
>>> Of
>>> > > Marc
>>> > > Sent: Thursday, March 24, 2016 4:54 AM
>>> > > To: Xu, Qian Q
>>> > > Cc: Thomas Monjalon; Ananyev, Konstantin; Lu, Wenzhuo; Zhang, Helin;
>>> > > Richardson, Bruce; dev at dpdk.org<mailto:dev at dpdk.org>
>>> > >
>>> > > Subject: Re: [dpdk-dev] [PATCH v11 0/8] ethdev: 100G and link speed
>>> > > API refactoring
>>> > >
>>> > > Qian,
>>> > >
>>> > > On 23 March 2016 at 02:18, Xu, Qian Q
>>> > <qian.q.xu at intel.com<mailto:qian.q.xu at intel.com>> wrote:
>>> > > We have tested with intel nic and found port can't be started for all
>>> > nics:ixgbe/i40e/igb/bonding, see attached mail for more details.
>>> Please check
>>> > and fix it.
>>> > >
>>> > >
>>> > > Thanks
>>> > > Qian
>>> > >
>>> > > -----Original Message-----
>>> > > From: dev [mailto:dev-bounces at dpdk.org<mailto:dev-bounces at dpdk.org>]
>>> > > On Behalf Of Thomas Monjalon
>>> > > Sent: Wednesday, March 23, 2016 3:59 AM
>>> > > To: Ananyev, Konstantin; Lu, Wenzhuo; Zhang, Helin
>>> > > Cc: marcdevel at gmail.com<mailto:marcdevel at gmail.com>; Richardson,
>>> > > Bruce; dev at dpdk.org<mailto:dev at dpdk.org>
>>> > > Subject: Re: [dpdk-dev] [PATCH v11 0/8] ethdev: 100G and link speed
>>> > > API refactoring
>>> > >
>>> > > 2016-03-17 19:08, Thomas Monjalon:
>>> > > > There are still too few tests and reviews, especially for
>>> > > > autonegotiation with Intel devices (patch #6).
>>> > > > I would not be surprised to see some bugs in this rework.
>>> > >
>>> > > Any feedback about autoneg in e1000/ixgbe/i40e?
>>> > > Has it been tested before its integration in RC2?
>>> > >
>>> > > > The capabilities must be adapted per device. It can be improved in
>>> a
>>> > > > separate patch.
>>> > > >
>>> > > > It will be integrated in 16.04-rc2.
>>> > > > Please test and review shortly, thanks!
>>> > >
>>> > >
>>> > > ---------- Forwarded message ----------
>>> > > From: "Xu, Qian Q" <qian.q.xu at intel.com<mailto:qian.q.xu at intel.com>>
>>> > > To: "Cao, Waterman"
>>> > > <waterman.cao at intel.com<mailto:waterman.cao at intel.com>>, "Glynn,
>>> > > Michael J"
>>> > > <michael.j.glynn at intel.com<mailto:michael.j.glynn at intel.com>>
>>> > > Cc: "Richardson, Bruce"
>>> > > <bruce.richardson at intel.com<mailto:bruce.richardson at intel.com>>,
>>> "Zhu,
>>> > > Heqing" <heqing.zhu at intel.com<mailto:heqing.zhu at intel.com>>,
>>> > > "O'Driscoll, Tim"
>>> > > <tim.odriscoll at intel.com<mailto:tim.odriscoll at intel.com>>,
>>> "Mcnamara,
>>> > > John" <john.mcnamara at intel.com<mailto:john.mcnamara at intel.com>>,
>>> "Xu,
>>> > > HuilongX" <huilongx.xu at intel.com<mailto:huilongx.xu at intel.com>>,
>>> "Fu,
>>> > > JingguoX" <jingguox.fu at intel.com<mailto:jingguox.fu at intel.com>>,
>>> "Xu,
>>> > > Qian Q" <qian.q.xu at intel.com<mailto:qian.q.xu at intel.com>>, "Zhang,
>>> > > Helin" <helin.zhang at intel.com<mailto:helin.zhang at intel.com>>
>>> > > Date: Tue, 22 Mar 2016 06:41:37 +0000
>>> > > Subject: RE: DPDK link speed with Intel devices Hi, all We have
>>> worked
>>> > > out the basic test cases for the patchset.
>>> > > 1. Test the link speed on major Intel NICs to see if the speed is
>>> right.
>>> > > 2. Test the auto-negoation on major Intel NICs to ensure it's
>>> working.
>>> > > Nic covered: ixgbe, igb, i40e, fm10k, bonding(SW), virtio(SW)
>>> > >
>>> > > When we run the Test#1 for all major NICs. We found that all these
>>> NIC port(igb,
>>> > ixgbe, i40e, fm10k) can't be started. Pls check, if the patch is
>>> applied, all INTEL
>>> > port can't be start, terrible things!
>>> > >
>>> > > Interactive-mode selected
>>> > > Configuring Port 0 (socket 0)
>>> > > PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f13e99e3440
>>> > > hw_ring=0x7f13e99e5480 dma_addr=0x8299e5480
>>> > > PMD: ixgbe_set_tx_function(): Using simple tx code path
>>> > > PMD: ixgbe_set_tx_function(): Vector tx enabled.
>>> > > PMD: ixgbe_dev_rx_queue_setup(): sw_ring=0x7f13ffcb8080
>>> > > sw_sc_ring=0x7f13ffcbaac0 hw_ring=0x7f13e99d3380 dma_addr=0x8299d3380
>>> > > PMD: ixgbe_dev_start(): Invalid link_speeds for port 0;
>>> > > autonegotiation disabled Fail to start port 0 Configuring Port 1
>>> > > (socket 0)
>>> > > PMD: i40e_set_tx_function_flag(): Vector tx can be enabled on this
>>> txq.
>>> > > PMD: i40e_dev_rx_queue_setup(): Rx Burst Bulk Alloc Preconditions are
>>> > satisfied. Rx Burst Bulk Alloc function will be used on port=1,
>>> queue=0.
>>> > > PMD: i40e_dev_start(): Invalid link_speeds for port 1;
>>> autonegotiation
>>> > > disabled
>>> > >
>>> > >
>>> > > Just to double-check; is the test#1 adapted to the _new_ API that
>>> ethdev has
>>> > to set link speeds? For the output it seems autoneg is disabled =>
>>> fixed speed,
>>> > hence the new bitmaps have to be used.
>>> > >
>>> > > (I am not claiming patchset is bug free; there might be issues still)
>>> > >
>>> > > Regards
>>> > > marc
>>> > >
>>> > > Fail to start port 1
>>> > > Please stop the ports first
>>> > > Done
>>> > >
>>> > > Thanks
>>> > > Qian
>>> > >
>>> > >
>>> > > -----Original Message-----
>>> > > From: Cao, Waterman
>>> > > Sent: Tuesday, March 22, 2016 11:06 AM
>>> > > To: Glynn, Michael J
>>> > > Cc: Richardson, Bruce; Zhu, Heqing; O'Driscoll, Tim; Mcnamara, John;
>>> > > Xu, Qian Q; Cao, Waterman
>>> > > Subject: RE: DPDK link speed with Intel devices
>>> > >
>>> > > Hi Mike,
>>> > >
>>> > >         We just knew this patch set last week.
>>> > >         Since this patch set is required to test with a lot of NIC,
>>> we need
>>> > more document from Dev about this patch.
>>> > >         Currently, Qian is working on with Wenzhuo on it now.
>>> > >
>>> > > Waterman
>>> > >
>>> > >
>>> > > -----Original Message-----
>>> > > From: Glynn, Michael J
>>> > > Sent: Tuesday, March 22, 2016 1:31 AM
>>> > > To: Cao, Waterman
>>> > > <waterman.cao at intel.com<mailto:waterman.cao at intel.com>>
>>> > > Cc: Richardson, Bruce
>>> > > <bruce.richardson at intel.com<mailto:bruce.richardson at intel.com>>;
>>> Zhu,
>>> > > Heqing <heqing.zhu at intel.com<mailto:heqing.zhu at intel.com>>;
>>> > > O'Driscoll, Tim
>>> > > <tim.odriscoll at intel.com<mailto:tim.odriscoll at intel.com>>; Mcnamara,
>>> > > John <john.mcnamara at intel.com<mailto:john.mcnamara at intel.com>>
>>> > > Subject: FW: DPDK link speed with Intel devices
>>> > > Importance: High
>>> > >
>>> > > Hi Waterman, all
>>> > >
>>> > > See below - are you aware? And if so where are we with
>>> testing/resolution?
>>> > >
>>> > > Regards
>>> > > Mike
>>> > >
>>> > >
>>> > >
>>> > > -----Original Message-----
>>> > > From: Thomas Monjalon
>>> > >
>>> > [mailto:thomas.monjalon at 6wind.com<mailto:thomas.monjalon at 6wind.com>]
>>> > > Sent: Monday, March 21, 2016 2:19 PM
>>> > > To: O'Driscoll, Tim
>>> > > <tim.odriscoll at intel.com<mailto:tim.odriscoll at intel.com>>; Glynn,
>>> > > Michael J
>>> > > <michael.j.glynn at intel.com<mailto:michael.j.glynn at intel.com>>; Zhu,
>>> > > Heqing <heqing.zhu at intel.com<mailto:heqing.zhu at intel.com>>
>>> > > Cc: vincent.jardin at 6wind.com<mailto:vincent.jardin at 6wind.com>
>>> > > Subject: DPDK link speed with Intel devices
>>> > >
>>> > > Hi,
>>> > >
>>> > > We are still waiting for test feedbacks for this important patchset:
>>> > >         ethdev: 100G and link speed API refactoring It is possible
>>> that it
>>> > breaks the autonegotiation in e1000/ixgbe/i40e.
>>> > >
>>> > > Thanks for taking care.
>>> > >
>>> > >
>>> >
>>>
>>>
>>
>


More information about the dev mailing list