[Kernel-packages] [Bug 1758662] Re: [Bionic] mlx4 ETH - mlnx_qos failed when set some TC to vendor

2018-04-13 Thread Launchpad Bug Tracker
This bug was fixed in the package linux - 4.15.0-15.16

---
linux (4.15.0-15.16) bionic; urgency=medium

  * linux: 4.15.0-15.16 -proposed tracker (LP: #1761177)

  * FFe: Enable configuring resume offset via sysfs (LP: #1760106)
- PM / hibernate: Make passing hibernate offsets more friendly

  * /dev/bcache/by-uuid links not created after reboot (LP: #1729145)
- SAUCE: (no-up) bcache: decouple emitting a cached_dev CHANGE uevent

  * Ubuntu18.04:POWER9:DD2.2 - Unable to start a KVM guest with default machine
type(pseries-bionic) complaining "KVM implementation does not support
Transactional Memory, try cap-htm=off" (kvm) (LP: #1752026)
- powerpc: Use feature bit for RTC presence rather than timebase presence
- powerpc: Book E: Remove unused CPU_FTR_L2CSR bit
- powerpc: Free up CPU feature bits on 64-bit machines
- powerpc: Add CPU feature bits for TM bug workarounds on POWER9 v2.2
- powerpc/powernv: Provide a way to force a core into SMT4 mode
- KVM: PPC: Book3S HV: Work around transactional memory bugs in POWER9
- KVM: PPC: Book3S HV: Work around XER[SO] bug in fake suspend mode
- KVM: PPC: Book3S HV: Work around TEXASR bug in fake suspend state

  * Important Kernel fixes to be backported for Power9 (kvm) (LP: #1758910)
- powerpc/mm: Fixup tlbie vs store ordering issue on POWER9

  * Ubuntu 18.04 - IO Hang on some namespaces when running HTX with 16
namespaces  (Bolt / NVMe) (LP: #1757497)
- powerpc/64s: Fix lost pending interrupt due to race causing lost update to
  irq_happened

  * fwts-efi-runtime-dkms 18.03.00-0ubuntu1: fwts-efi-runtime-dkms kernel module
failed to build (LP: #1760876)
- [Packaging] include the retpoline extractor in the headers

linux (4.15.0-14.15) bionic; urgency=medium

  * linux: 4.15.0-14.15 -proposed tracker (LP: #1760678)

  * [Bionic] mlx4 ETH - mlnx_qos failed when set some TC to vendor
(LP: #1758662)
- net/mlx4_en: Change default QoS settings

  * AT_BASE_PLATFORM in AUXV is absent on kernels available on Ubuntu 17.10
(LP: #1759312)
- powerpc/64s: Fix NULL AT_BASE_PLATFORM when using DT CPU features

  * Bionic update to 4.15.15 stable release (LP: #1760585)
- net: dsa: Fix dsa_is_user_port() test inversion
- openvswitch: meter: fix the incorrect calculation of max delta_t
- qed: Fix MPA unalign flow in case header is split across two packets.
- tcp: purge write queue upon aborting the connection
- qed: Fix non TCP packets should be dropped on iWARP ll2 connection
- sysfs: symlink: export sysfs_create_link_nowarn()
- net: phy: relax error checking when creating sysfs link netdev->phydev
- devlink: Remove redundant free on error path
- macvlan: filter out unsupported feature flags
- net: ipv6: keep sk status consistent after datagram connect failure
- ipv6: old_dport should be a __be16 in __ip6_datagram_connect()
- ipv6: sr: fix NULL pointer dereference when setting encap source address
- ipv6: sr: fix scheduling in RCU when creating seg6 lwtunnel state
- mlxsw: spectrum_buffers: Set a minimum quota for CPU port traffic
- net: phy: Tell caller result of phy_change()
- ipv6: Reflect MTU changes on PMTU of exceptions for MTU-less routes
- net sched actions: return explicit error when tunnel_key mode is not
  specified
- ppp: avoid loop in xmit recursion detection code
- rhashtable: Fix rhlist duplicates insertion
- test_rhashtable: add test case for rhltable with duplicate objects
- kcm: lock lower socket in kcm_attach
- sch_netem: fix skb leak in netem_enqueue()
- ieee802154: 6lowpan: fix possible NULL deref in lowpan_device_event()
- net: use skb_to_full_sk() in skb_update_prio()
- net: Fix hlist corruptions in inet_evict_bucket()
- s390/qeth: free netdevice when removing a card
- s390/qeth: when thread completes, wake up all waiters
- s390/qeth: lock read device while queueing next buffer
- s390/qeth: on channel error, reject further cmd requests
- soc/fsl/qbman: fix issue in qman_delete_cgr_safe()
- dpaa_eth: fix error in dpaa_remove()
- dpaa_eth: remove duplicate initialization
- dpaa_eth: increment the RX dropped counter when needed
- dpaa_eth: remove duplicate increment of the tx_errors counter
- dccp: check sk for closed state in dccp_sendmsg()
- ipv6: fix access to non-linear packet in ndisc_fill_redirect_hdr_option()
- l2tp: do not accept arbitrary sockets
- net: ethernet: arc: Fix a potential memory leak if an optional regulator 
is
  deferred
- net: ethernet: ti: cpsw: add check for in-band mode setting with RGMII PHY
  interface
- net: fec: Fix unbalanced PM runtime calls
- net/iucv: Free memory obtained by kzalloc
- netlink: avoid a double skb free in genlmsg_mcast()
- net: Only honor ifindex in IP_PKTINFO if non-0
- net: systemport: Rewrite __bcm_sysport_tx_reclaim()
- qed

[Kernel-packages] [Bug 1758662] Re: [Bionic] mlx4 ETH - mlnx_qos failed when set some TC to vendor

2018-04-02 Thread Seth Forshee
** Changed in: linux (Ubuntu Bionic)
   Status: In Progress => Fix Committed

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1758662

Title:
  [Bionic] mlx4 ETH - mlnx_qos failed when set some TC to vendor

Status in linux package in Ubuntu:
  Fix Committed
Status in linux source package in Bionic:
  Fix Committed

Bug description:
  reproduce:
  [root@reg-l-vrt-41018-010 ~]# /usr/bin/mlnx_qos -i ens8 -s 
vendor,ets,vendor,ets,ets,strict,ets,vendor -t 0,36,0,55,4,0,5,0
  Netlink error: Bad value. see dmesg.

  [root@reg-l-vrt-41018-010 ~]# dmesg
  [69718.992299] mlx4_en: ens8: TC[0]: Not supported TSA: 255

  
  There is a upstream commit that fix the issue, please add it to bionic 

  commit a42b63c1ac1986f17f71bc91a6b0aaa14d4dae71  
  Author: Moni Shoua   
  Date:   Thu Dec 28 16:26:11 2017 +0200   

  net/mlx4_en: Change default QoS settings
  
  Change the default mapping between TC and TCG as follows:
   
  Prio | TC/TCG
   |  from to  
   |(set by FW)  (set by SW)   
  -+---
  0|  0/0  0/7 
  1|  1/0  0/6 
  2|  2/0  0/5 
  3|  3/0  0/4 
  4|  4/0  0/3 
  5|  5/0  0/2 
  6|  6/0  0/1 
  7|  7/0  0/0 
   
  These new settings cause that a pause frame for any prio stops
  traffic for all prios.

  Fixes: 564c274c3df0 ("net/mlx4_en: DCB QoS support")  
  Signed-off-by: Moni Shoua 
  Signed-off-by: Maor Gottlieb  
  Signed-off-by: Tariq Toukan  
  Signed-off-by: David S. Miller   

  diff --git a/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c 
b/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c
  index 5f41dc9..1a0c3bf8 100644
  
  --- a/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c  
  
  +++ b/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c
  @@ -310,6 +310,7 @@ static int mlx4_en_ets_validate(struct mlx4_en_priv 
*priv, struct ieee_ets *ets)
  }

  switch (ets->tc_tsa[i]) {
  + case IEEE_8021QAZ_TSA_VENDOR:
  case IEEE_8021QAZ_TSA_STRICT:
  break;
  case IEEE_8021QAZ_TSA_ETS:
  @@ -347,6 +348,10 @@ static int mlx4_en_config_port_scheduler(struct 
mlx4_en_priv *priv,
  /* higher TC means higher priority => lower pg */
  for (i = IEEE_8021QAZ_MAX_TCS - 1; i >= 0; i--) {
  switch (ets->tc_tsa[i]) {
  + case IEEE_8021QAZ_TSA_VENDOR:
  + pg[i] = MLX4_EN_TC_VENDOR;
  + tc_tx_bw[i] = MLX4_EN_BW_MAX;
  + break;
  case IEEE_8021QAZ_TSA_STRICT:
  pg[i] = num_strict++;
  tc_tx_bw[i] = MLX4_EN_BW_MAX;
  diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c 
b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
  index 99051a2..21bc17f 100644
  --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
  +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
  @@ -3336,6 +3336,13 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int 
port,
  priv->msg_enable = MLX4_EN_MSG_LEVEL;
   #ifdef CONFIG_MLX4_EN_DCB
  if (!mlx4_is_slave(priv->mdev->dev)) {
  + u8 prio;
  +
  + for (prio = 0; prio < IEEE_8021QAZ_MAX_TCS; ++prio) {
  + priv->ets.prio_tc[prio] = prio;
  + priv->ets.tc_tsa[prio]  = IEEE_8021QAZ_TSA_VENDOR;
  + }
  +
  priv->dcbx_cap = DCB_CAP_DCBX_VER_CEE | DCB_CAP_DCBX_HOST |
  DCB_CAP_DCBX_VER_IEEE;
  priv->flags |= MLX4_EN_DCB_ENABLED;
  diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h 
b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
  index 2b72677..7db3d0d 100644
  --- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
  +++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
  @@ -479,6 +479,7 @@ struct mlx4_en_frag_info {
   #define MLX4_EN_BW_MIN 1
   #define MLX4_EN_BW_MAX 1

[Kernel-packages] [Bug 1758662] Re: [Bionic] mlx4 ETH - mlnx_qos failed when set some TC to vendor

2018-04-02 Thread Talat Batheesh
After testing the build, the issue didn't reproduced.
Thanks.

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1758662

Title:
  [Bionic] mlx4 ETH - mlnx_qos failed when set some TC to vendor

Status in linux package in Ubuntu:
  In Progress
Status in linux source package in Bionic:
  In Progress

Bug description:
  reproduce:
  [root@reg-l-vrt-41018-010 ~]# /usr/bin/mlnx_qos -i ens8 -s 
vendor,ets,vendor,ets,ets,strict,ets,vendor -t 0,36,0,55,4,0,5,0
  Netlink error: Bad value. see dmesg.

  [root@reg-l-vrt-41018-010 ~]# dmesg
  [69718.992299] mlx4_en: ens8: TC[0]: Not supported TSA: 255

  
  There is a upstream commit that fix the issue, please add it to bionic 

  commit a42b63c1ac1986f17f71bc91a6b0aaa14d4dae71  
  Author: Moni Shoua   
  Date:   Thu Dec 28 16:26:11 2017 +0200   

  net/mlx4_en: Change default QoS settings
  
  Change the default mapping between TC and TCG as follows:
   
  Prio | TC/TCG
   |  from to  
   |(set by FW)  (set by SW)   
  -+---
  0|  0/0  0/7 
  1|  1/0  0/6 
  2|  2/0  0/5 
  3|  3/0  0/4 
  4|  4/0  0/3 
  5|  5/0  0/2 
  6|  6/0  0/1 
  7|  7/0  0/0 
   
  These new settings cause that a pause frame for any prio stops
  traffic for all prios.

  Fixes: 564c274c3df0 ("net/mlx4_en: DCB QoS support")  
  Signed-off-by: Moni Shoua 
  Signed-off-by: Maor Gottlieb  
  Signed-off-by: Tariq Toukan  
  Signed-off-by: David S. Miller   

  diff --git a/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c 
b/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c
  index 5f41dc9..1a0c3bf8 100644
  
  --- a/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c  
  
  +++ b/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c
  @@ -310,6 +310,7 @@ static int mlx4_en_ets_validate(struct mlx4_en_priv 
*priv, struct ieee_ets *ets)
  }

  switch (ets->tc_tsa[i]) {
  + case IEEE_8021QAZ_TSA_VENDOR:
  case IEEE_8021QAZ_TSA_STRICT:
  break;
  case IEEE_8021QAZ_TSA_ETS:
  @@ -347,6 +348,10 @@ static int mlx4_en_config_port_scheduler(struct 
mlx4_en_priv *priv,
  /* higher TC means higher priority => lower pg */
  for (i = IEEE_8021QAZ_MAX_TCS - 1; i >= 0; i--) {
  switch (ets->tc_tsa[i]) {
  + case IEEE_8021QAZ_TSA_VENDOR:
  + pg[i] = MLX4_EN_TC_VENDOR;
  + tc_tx_bw[i] = MLX4_EN_BW_MAX;
  + break;
  case IEEE_8021QAZ_TSA_STRICT:
  pg[i] = num_strict++;
  tc_tx_bw[i] = MLX4_EN_BW_MAX;
  diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c 
b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
  index 99051a2..21bc17f 100644
  --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
  +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
  @@ -3336,6 +3336,13 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int 
port,
  priv->msg_enable = MLX4_EN_MSG_LEVEL;
   #ifdef CONFIG_MLX4_EN_DCB
  if (!mlx4_is_slave(priv->mdev->dev)) {
  + u8 prio;
  +
  + for (prio = 0; prio < IEEE_8021QAZ_MAX_TCS; ++prio) {
  + priv->ets.prio_tc[prio] = prio;
  + priv->ets.tc_tsa[prio]  = IEEE_8021QAZ_TSA_VENDOR;
  + }
  +
  priv->dcbx_cap = DCB_CAP_DCBX_VER_CEE | DCB_CAP_DCBX_HOST |
  DCB_CAP_DCBX_VER_IEEE;
  priv->flags |= MLX4_EN_DCB_ENABLED;
  diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h 
b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
  index 2b72677..7db3d0d 100644
  --- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
  +++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
  @@ -479,6 +479,7 @@ struct mlx4_en_frag_info {
   #define MLX4_EN_BW_MIN 1
   #define MLX4_EN_BW_MAX 100 /* Utilize 100% of t

[Kernel-packages] [Bug 1758662] Re: [Bionic] mlx4 ETH - mlnx_qos failed when set some TC to vendor

2018-03-29 Thread Talat Batheesh
Thank you, 
will test and update.

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1758662

Title:
  [Bionic] mlx4 ETH - mlnx_qos failed when set some TC to vendor

Status in linux package in Ubuntu:
  In Progress
Status in linux source package in Bionic:
  In Progress

Bug description:
  reproduce:
  [root@reg-l-vrt-41018-010 ~]# /usr/bin/mlnx_qos -i ens8 -s 
vendor,ets,vendor,ets,ets,strict,ets,vendor -t 0,36,0,55,4,0,5,0
  Netlink error: Bad value. see dmesg.

  [root@reg-l-vrt-41018-010 ~]# dmesg
  [69718.992299] mlx4_en: ens8: TC[0]: Not supported TSA: 255

  
  There is a upstream commit that fix the issue, please add it to bionic 

  commit a42b63c1ac1986f17f71bc91a6b0aaa14d4dae71  
  Author: Moni Shoua   
  Date:   Thu Dec 28 16:26:11 2017 +0200   

  net/mlx4_en: Change default QoS settings
  
  Change the default mapping between TC and TCG as follows:
   
  Prio | TC/TCG
   |  from to  
   |(set by FW)  (set by SW)   
  -+---
  0|  0/0  0/7 
  1|  1/0  0/6 
  2|  2/0  0/5 
  3|  3/0  0/4 
  4|  4/0  0/3 
  5|  5/0  0/2 
  6|  6/0  0/1 
  7|  7/0  0/0 
   
  These new settings cause that a pause frame for any prio stops
  traffic for all prios.

  Fixes: 564c274c3df0 ("net/mlx4_en: DCB QoS support")  
  Signed-off-by: Moni Shoua 
  Signed-off-by: Maor Gottlieb  
  Signed-off-by: Tariq Toukan  
  Signed-off-by: David S. Miller   

  diff --git a/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c 
b/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c
  index 5f41dc9..1a0c3bf8 100644
  
  --- a/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c  
  
  +++ b/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c
  @@ -310,6 +310,7 @@ static int mlx4_en_ets_validate(struct mlx4_en_priv 
*priv, struct ieee_ets *ets)
  }

  switch (ets->tc_tsa[i]) {
  + case IEEE_8021QAZ_TSA_VENDOR:
  case IEEE_8021QAZ_TSA_STRICT:
  break;
  case IEEE_8021QAZ_TSA_ETS:
  @@ -347,6 +348,10 @@ static int mlx4_en_config_port_scheduler(struct 
mlx4_en_priv *priv,
  /* higher TC means higher priority => lower pg */
  for (i = IEEE_8021QAZ_MAX_TCS - 1; i >= 0; i--) {
  switch (ets->tc_tsa[i]) {
  + case IEEE_8021QAZ_TSA_VENDOR:
  + pg[i] = MLX4_EN_TC_VENDOR;
  + tc_tx_bw[i] = MLX4_EN_BW_MAX;
  + break;
  case IEEE_8021QAZ_TSA_STRICT:
  pg[i] = num_strict++;
  tc_tx_bw[i] = MLX4_EN_BW_MAX;
  diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c 
b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
  index 99051a2..21bc17f 100644
  --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
  +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
  @@ -3336,6 +3336,13 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int 
port,
  priv->msg_enable = MLX4_EN_MSG_LEVEL;
   #ifdef CONFIG_MLX4_EN_DCB
  if (!mlx4_is_slave(priv->mdev->dev)) {
  + u8 prio;
  +
  + for (prio = 0; prio < IEEE_8021QAZ_MAX_TCS; ++prio) {
  + priv->ets.prio_tc[prio] = prio;
  + priv->ets.tc_tsa[prio]  = IEEE_8021QAZ_TSA_VENDOR;
  + }
  +
  priv->dcbx_cap = DCB_CAP_DCBX_VER_CEE | DCB_CAP_DCBX_HOST |
  DCB_CAP_DCBX_VER_IEEE;
  priv->flags |= MLX4_EN_DCB_ENABLED;
  diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h 
b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
  index 2b72677..7db3d0d 100644
  --- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
  +++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
  @@ -479,6 +479,7 @@ struct mlx4_en_frag_info {
   #define MLX4_EN_BW_MIN 1
   #define MLX4_EN_BW_MAX 100 /* Utilize 100% of the line */

  +#define MLX4_

[Kernel-packages] [Bug 1758662] Re: [Bionic] mlx4 ETH - mlnx_qos failed when set some TC to vendor

2018-03-27 Thread Joseph Salisbury
I built a test kernel with commit a42b63c1ac1986f17f71bc91a6b0aaa14d4dae71.  
The test kernel can be downloaded from:
http://kernel.ubuntu.com/~jsalisbury/lp1758662

Can you test this kernel and see if it resolves this bug?

Note, to test this kernel, you need to install both the linux-image and
linux-image-extra .deb packages.

Thanks in advance!

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1758662

Title:
  [Bionic] mlx4 ETH - mlnx_qos failed when set some TC to vendor

Status in linux package in Ubuntu:
  In Progress
Status in linux source package in Bionic:
  In Progress

Bug description:
  reproduce:
  [root@reg-l-vrt-41018-010 ~]# /usr/bin/mlnx_qos -i ens8 -s 
vendor,ets,vendor,ets,ets,strict,ets,vendor -t 0,36,0,55,4,0,5,0
  Netlink error: Bad value. see dmesg.

  [root@reg-l-vrt-41018-010 ~]# dmesg
  [69718.992299] mlx4_en: ens8: TC[0]: Not supported TSA: 255

  
  There is a upstream commit that fix the issue, please add it to bionic 

  commit a42b63c1ac1986f17f71bc91a6b0aaa14d4dae71  
  Author: Moni Shoua   
  Date:   Thu Dec 28 16:26:11 2017 +0200   

  net/mlx4_en: Change default QoS settings
  
  Change the default mapping between TC and TCG as follows:
   
  Prio | TC/TCG
   |  from to  
   |(set by FW)  (set by SW)   
  -+---
  0|  0/0  0/7 
  1|  1/0  0/6 
  2|  2/0  0/5 
  3|  3/0  0/4 
  4|  4/0  0/3 
  5|  5/0  0/2 
  6|  6/0  0/1 
  7|  7/0  0/0 
   
  These new settings cause that a pause frame for any prio stops
  traffic for all prios.

  Fixes: 564c274c3df0 ("net/mlx4_en: DCB QoS support")  
  Signed-off-by: Moni Shoua 
  Signed-off-by: Maor Gottlieb  
  Signed-off-by: Tariq Toukan  
  Signed-off-by: David S. Miller   

  diff --git a/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c 
b/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c
  index 5f41dc9..1a0c3bf8 100644
  
  --- a/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c  
  
  +++ b/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c
  @@ -310,6 +310,7 @@ static int mlx4_en_ets_validate(struct mlx4_en_priv 
*priv, struct ieee_ets *ets)
  }

  switch (ets->tc_tsa[i]) {
  + case IEEE_8021QAZ_TSA_VENDOR:
  case IEEE_8021QAZ_TSA_STRICT:
  break;
  case IEEE_8021QAZ_TSA_ETS:
  @@ -347,6 +348,10 @@ static int mlx4_en_config_port_scheduler(struct 
mlx4_en_priv *priv,
  /* higher TC means higher priority => lower pg */
  for (i = IEEE_8021QAZ_MAX_TCS - 1; i >= 0; i--) {
  switch (ets->tc_tsa[i]) {
  + case IEEE_8021QAZ_TSA_VENDOR:
  + pg[i] = MLX4_EN_TC_VENDOR;
  + tc_tx_bw[i] = MLX4_EN_BW_MAX;
  + break;
  case IEEE_8021QAZ_TSA_STRICT:
  pg[i] = num_strict++;
  tc_tx_bw[i] = MLX4_EN_BW_MAX;
  diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c 
b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
  index 99051a2..21bc17f 100644
  --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
  +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
  @@ -3336,6 +3336,13 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int 
port,
  priv->msg_enable = MLX4_EN_MSG_LEVEL;
   #ifdef CONFIG_MLX4_EN_DCB
  if (!mlx4_is_slave(priv->mdev->dev)) {
  + u8 prio;
  +
  + for (prio = 0; prio < IEEE_8021QAZ_MAX_TCS; ++prio) {
  + priv->ets.prio_tc[prio] = prio;
  + priv->ets.tc_tsa[prio]  = IEEE_8021QAZ_TSA_VENDOR;
  + }
  +
  priv->dcbx_cap = DCB_CAP_DCBX_VER_CEE | DCB_CAP_DCBX_HOST |
  DCB_CAP_DCBX_VER_IEEE;
  priv->flags |= MLX4_EN_DCB_ENABLED;
  diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h 
b/drivers/net/ethernet/m

[Kernel-packages] [Bug 1758662] Re: [Bionic] mlx4 ETH - mlnx_qos failed when set some TC to vendor

2018-03-27 Thread Joseph Salisbury
** Changed in: linux (Ubuntu)
   Importance: Undecided => Medium

** Also affects: linux (Ubuntu Bionic)
   Importance: Medium
   Status: Incomplete

** Changed in: linux (Ubuntu Bionic)
 Assignee: (unassigned) => Joseph Salisbury (jsalisbury)

** Changed in: linux (Ubuntu Bionic)
   Status: Incomplete => In Progress

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1758662

Title:
  [Bionic] mlx4 ETH - mlnx_qos failed when set some TC to vendor

Status in linux package in Ubuntu:
  In Progress
Status in linux source package in Bionic:
  In Progress

Bug description:
  reproduce:
  [root@reg-l-vrt-41018-010 ~]# /usr/bin/mlnx_qos -i ens8 -s 
vendor,ets,vendor,ets,ets,strict,ets,vendor -t 0,36,0,55,4,0,5,0
  Netlink error: Bad value. see dmesg.

  [root@reg-l-vrt-41018-010 ~]# dmesg
  [69718.992299] mlx4_en: ens8: TC[0]: Not supported TSA: 255

  
  There is a upstream commit that fix the issue, please add it to bionic 

  commit a42b63c1ac1986f17f71bc91a6b0aaa14d4dae71  
  Author: Moni Shoua   
  Date:   Thu Dec 28 16:26:11 2017 +0200   

  net/mlx4_en: Change default QoS settings
  
  Change the default mapping between TC and TCG as follows:
   
  Prio | TC/TCG
   |  from to  
   |(set by FW)  (set by SW)   
  -+---
  0|  0/0  0/7 
  1|  1/0  0/6 
  2|  2/0  0/5 
  3|  3/0  0/4 
  4|  4/0  0/3 
  5|  5/0  0/2 
  6|  6/0  0/1 
  7|  7/0  0/0 
   
  These new settings cause that a pause frame for any prio stops
  traffic for all prios.

  Fixes: 564c274c3df0 ("net/mlx4_en: DCB QoS support")  
  Signed-off-by: Moni Shoua 
  Signed-off-by: Maor Gottlieb  
  Signed-off-by: Tariq Toukan  
  Signed-off-by: David S. Miller   

  diff --git a/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c 
b/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c
  index 5f41dc9..1a0c3bf8 100644
  
  --- a/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c  
  
  +++ b/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c
  @@ -310,6 +310,7 @@ static int mlx4_en_ets_validate(struct mlx4_en_priv 
*priv, struct ieee_ets *ets)
  }

  switch (ets->tc_tsa[i]) {
  + case IEEE_8021QAZ_TSA_VENDOR:
  case IEEE_8021QAZ_TSA_STRICT:
  break;
  case IEEE_8021QAZ_TSA_ETS:
  @@ -347,6 +348,10 @@ static int mlx4_en_config_port_scheduler(struct 
mlx4_en_priv *priv,
  /* higher TC means higher priority => lower pg */
  for (i = IEEE_8021QAZ_MAX_TCS - 1; i >= 0; i--) {
  switch (ets->tc_tsa[i]) {
  + case IEEE_8021QAZ_TSA_VENDOR:
  + pg[i] = MLX4_EN_TC_VENDOR;
  + tc_tx_bw[i] = MLX4_EN_BW_MAX;
  + break;
  case IEEE_8021QAZ_TSA_STRICT:
  pg[i] = num_strict++;
  tc_tx_bw[i] = MLX4_EN_BW_MAX;
  diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c 
b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
  index 99051a2..21bc17f 100644
  --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
  +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
  @@ -3336,6 +3336,13 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int 
port,
  priv->msg_enable = MLX4_EN_MSG_LEVEL;
   #ifdef CONFIG_MLX4_EN_DCB
  if (!mlx4_is_slave(priv->mdev->dev)) {
  + u8 prio;
  +
  + for (prio = 0; prio < IEEE_8021QAZ_MAX_TCS; ++prio) {
  + priv->ets.prio_tc[prio] = prio;
  + priv->ets.tc_tsa[prio]  = IEEE_8021QAZ_TSA_VENDOR;
  + }
  +
  priv->dcbx_cap = DCB_CAP_DCBX_VER_CEE | DCB_CAP_DCBX_HOST |
  DCB_CAP_DCBX_VER_IEEE;
  priv->flags |= MLX4_EN_DCB_ENABLED;
  diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h 
b/drivers/net/ethernet/mellanox/mlx4/mlx4_e