patches for DPDK stable branches
 help / color / mirror / Atom feed
From: luca.boccassi@gmail.com
To: Robin Jarry <robin.jarry@6wind.com>
Cc: Olivier Matz <olivier.matz@6wind.com>, dpdk stable <stable@dpdk.org>
Subject: [dpdk-stable] patch 'usertools: fix pmdinfo with python 3 and pyelftools>=0.24' has been queued to LTS release 17.11.10
Date: Thu, 19 Dec 2019 14:34:04 +0000
Message-ID: <20191219143447.21506-97-luca.boccassi@gmail.com> (raw)
In-Reply-To: <20191219143447.21506-1-luca.boccassi@gmail.com>

Hi,

FYI, your patch has been queued to LTS release 17.11.10

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/21/19. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Thanks.

Luca Boccassi

---
From 4bb877c4bf4c583f5556865494ff69c3ae57a1b1 Mon Sep 17 00:00:00 2001
From: Robin Jarry <robin.jarry@6wind.com>
Date: Tue, 15 Oct 2019 14:39:17 +0200
Subject: [PATCH] usertools: fix pmdinfo with python 3 and pyelftools>=0.24

[ upstream commit 4da069194ef4578aac7ae10cf05abd992c61723c ]

Running dpdk-pmdinfo.py on Ubuntu 18.04 (bionic) with python 3 and
pyelftools installed produces no output but no error is reported
neither:

  ~$ python3 usertools/dpdk-pmdinfo.py -r build/app/testpmd
  ~$ echo $?
  0

While with python 2, it works:

  ~# python2 usertools/dpdk-pmdinfo.py -r build/app/testpmd
  {"pci_ids": [], "name": "dpio"}
  {"pci_ids": [], "name": "dpbp"}
  {"pci_ids": [], "name": "dpaa2_qdma"}
  .....

On Ubuntu 18.04, pyelftools is version 0.24. The change log of
pyelftools v0.24 says:

 - Symbol/section names are strings internally now, not bytestrings
   (this may affect API usage in Python 3) (#76).

We cannot guess which version of pyelftools is actually being used. The
elftools.__version__ symbol is not consistent with each distro's package
version. For example, on Ubuntu 16.04 (xenial), the .deb package version
is '0.23-2' but elftools.__version__ contains '0.25'. This is certainly
due to partial backports.

To have a more consistent behaviour of this script across all versions
of python, add the unicode_literals future import so that literal
strings are now always "unicode".

Add 2 utility functions to force a string into bytes or bytes into an
unicode string.

Force pyelftools return values to unicode strings (will do nothing with
recent version of pyelftools).

If elffile.get_section_by_name returns None with a unicode section name,
try with the same one encoded as bytes.

Also, replace all open() calls by io.open() which behaves like the
builtin open in python 3. The only non-binary opened file is
/usr/share/hwdata/pci.ids which is UTF-8 encoded text. Explicitly
specify that encoding.

Link: https://github.com/eliben/pyelftools/blob/v0.24/CHANGES#L7
Link: https://github.com/eliben/pyelftools/commit/108eaea9e75a8b5a

Fixes: 54ca545dce4b ("make python scripts python2/3 compliant")

Signed-off-by: Robin Jarry <robin.jarry@6wind.com>
Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
---
 usertools/dpdk-pmdinfo.py | 65 +++++++++++++++++++++++++++------------
 1 file changed, 46 insertions(+), 19 deletions(-)

diff --git a/usertools/dpdk-pmdinfo.py b/usertools/dpdk-pmdinfo.py
index 46c1be081b..0fc51f0cbf 100755
--- a/usertools/dpdk-pmdinfo.py
+++ b/usertools/dpdk-pmdinfo.py
@@ -6,13 +6,15 @@
 #
 # -------------------------------------------------------------------------
 from __future__ import print_function
+from __future__ import unicode_literals
 import json
+import io
 import os
 import platform
 import string
 import sys
 from elftools.common.exceptions import ELFError
-from elftools.common.py3compat import (byte2int, bytes2str, str2bytes)
+from elftools.common.py3compat import byte2int
 from elftools.elf.elffile import ELFFile
 from optparse import OptionParser
 
@@ -211,7 +213,8 @@ class PCIIds:
         """
         Reads the local file
         """
-        self.contents = open(filename).readlines()
+        with io.open(filename, 'r', encoding='utf-8') as f:
+            self.contents = f.readlines()
         self.date = self.findDate(self.contents)
 
     def loadLocal(self):
@@ -265,7 +268,13 @@ class ReadElf(object):
                 return None
         except ValueError:
             # Not a number. Must be a name then
-            return self.elffile.get_section_by_name(str2bytes(spec))
+            section = self.elffile.get_section_by_name(force_unicode(spec))
+            if section is None:
+                # No match with a unicode name.
+                # Some versions of pyelftools (<= 0.23) store internal strings
+                # as bytes. Try again with the name encoded as bytes.
+                section = self.elffile.get_section_by_name(force_bytes(spec))
+            return section
 
     def pretty_print_pmdinfo(self, pmdinfo):
         global pcidb
@@ -337,7 +346,8 @@ class ReadElf(object):
             while endptr < len(data) and byte2int(data[endptr]) != 0:
                 endptr += 1
 
-            mystring = bytes2str(data[dataptr:endptr])
+            # pyelftools may return byte-strings, force decode them
+            mystring = force_unicode(data[dataptr:endptr])
             rc = mystring.find("PMD_INFO_STRING")
             if (rc != -1):
                 self.parse_pmd_info_string(mystring)
@@ -346,9 +356,10 @@ class ReadElf(object):
 
     def find_librte_eal(self, section):
         for tag in section.iter_tags():
-            if tag.entry.d_tag == 'DT_NEEDED':
-                if "librte_eal" in tag.needed:
-                    return tag.needed
+            # pyelftools may return byte-strings, force decode them
+            if force_unicode(tag.entry.d_tag) == 'DT_NEEDED':
+                if "librte_eal" in force_unicode(tag.needed):
+                    return force_unicode(tag.needed)
         return None
 
     def search_for_autoload_path(self):
@@ -371,7 +382,7 @@ class ReadElf(object):
                     return (None, None)
                 if raw_output is False:
                     print("Scanning for autoload path in %s" % library)
-                scanfile = open(library, 'rb')
+                scanfile = io.open(library, 'rb')
                 scanelf = ReadElf(scanfile, sys.stdout)
         except AttributeError:
             # Not a dynamic binary
@@ -401,7 +412,8 @@ class ReadElf(object):
             while endptr < len(data) and byte2int(data[endptr]) != 0:
                 endptr += 1
 
-            mystring = bytes2str(data[dataptr:endptr])
+            # pyelftools may return byte-strings, force decode them
+            mystring = force_unicode(data[dataptr:endptr])
             rc = mystring.find("DPDK_PLUGIN_PATH")
             if (rc != -1):
                 rc = mystring.find("=")
@@ -414,8 +426,9 @@ class ReadElf(object):
 
     def get_dt_runpath(self, dynsec):
         for tag in dynsec.iter_tags():
-            if tag.entry.d_tag == 'DT_RUNPATH':
-                return tag.runpath
+            # pyelftools may return byte-strings, force decode them
+            if force_unicode(tag.entry.d_tag) == 'DT_RUNPATH':
+                return force_unicode(tag.runpath)
         return ""
 
     def process_dt_needed_entries(self):
@@ -436,16 +449,16 @@ class ReadElf(object):
             return
 
         for tag in dynsec.iter_tags():
-            if tag.entry.d_tag == 'DT_NEEDED':
-                rc = tag.needed.find(b"librte_pmd")
-                if (rc != -1):
-                    library = search_file(tag.needed,
+            # pyelftools may return byte-strings, force decode them
+            if force_unicode(tag.entry.d_tag) == 'DT_NEEDED':
+                if 'librte_pmd' in force_unicode(tag.needed):
+                    library = search_file(force_unicode(tag.needed),
                                           runpath + ":" + ldlibpath +
                                           ":/usr/lib64:/lib64:/usr/lib:/lib")
                     if library is not None:
                         if raw_output is False:
                             print("Scanning %s for pmd information" % library)
-                        with open(library, 'rb') as file:
+                        with io.open(library, 'rb') as file:
                             try:
                                 libelf = ReadElf(file, sys.stdout)
                             except ELFError:
@@ -456,6 +469,20 @@ class ReadElf(object):
                             file.close()
 
 
+# compat: remove force_unicode & force_bytes when pyelftools<=0.23 support is
+# dropped.
+def force_unicode(s):
+    if hasattr(s, 'decode') and callable(s.decode):
+        s = s.decode('latin-1')  # same encoding used in pyelftools py3compat
+    return s
+
+
+def force_bytes(s):
+    if hasattr(s, 'encode') and callable(s.encode):
+        s = s.encode('latin-1')  # same encoding used in pyelftools py3compat
+    return s
+
+
 def scan_autoload_path(autoload_path):
     global raw_output
 
@@ -474,7 +501,7 @@ def scan_autoload_path(autoload_path):
             scan_autoload_path(dpath)
         if os.path.isfile(dpath):
             try:
-                file = open(dpath, 'rb')
+                file = io.open(dpath, 'rb')
                 readelf = ReadElf(file, sys.stdout)
             except ELFError:
                 # this is likely not an elf file, skip it
@@ -501,7 +528,7 @@ def scan_for_autoload_pmds(dpdk_path):
             print("Must specify a file name")
         return
 
-    file = open(dpdk_path, 'rb')
+    file = io.open(dpdk_path, 'rb')
     try:
         readelf = ReadElf(file, sys.stdout)
     except ElfError:
@@ -593,7 +620,7 @@ def main(stream=None):
         print("File not found")
         sys.exit(1)
 
-    with open(myelffile, 'rb') as file:
+    with io.open(myelffile, 'rb') as file:
         try:
             readelf = ReadElf(file, sys.stdout)
             readelf.process_dt_needed_entries()
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:30.195909058 +0000
+++ 0097-usertools-fix-pmdinfo-with-python-3-and-pyelftools-0.patch	2019-12-19 14:32:26.225300205 +0000
@@ -1,8 +1,10 @@
-From 4da069194ef4578aac7ae10cf05abd992c61723c Mon Sep 17 00:00:00 2001
+From 4bb877c4bf4c583f5556865494ff69c3ae57a1b1 Mon Sep 17 00:00:00 2001
 From: Robin Jarry <robin.jarry@6wind.com>
 Date: Tue, 15 Oct 2019 14:39:17 +0200
 Subject: [PATCH] usertools: fix pmdinfo with python 3 and pyelftools>=0.24
 
+[ upstream commit 4da069194ef4578aac7ae10cf05abd992c61723c ]
+
 Running dpdk-pmdinfo.py on Ubuntu 18.04 (bionic) with python 3 and
 pyelftools installed produces no output but no error is reported
 neither:
@@ -53,7 +55,6 @@
 Link: https://github.com/eliben/pyelftools/commit/108eaea9e75a8b5a
 
 Fixes: 54ca545dce4b ("make python scripts python2/3 compliant")
-Cc: stable@dpdk.org
 
 Signed-off-by: Robin Jarry <robin.jarry@6wind.com>
 Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
@@ -62,10 +63,10 @@
  1 file changed, 46 insertions(+), 19 deletions(-)
 
 diff --git a/usertools/dpdk-pmdinfo.py b/usertools/dpdk-pmdinfo.py
-index 03623d5b8b..069a3bf124 100755
+index 46c1be081b..0fc51f0cbf 100755
 --- a/usertools/dpdk-pmdinfo.py
 +++ b/usertools/dpdk-pmdinfo.py
-@@ -8,13 +8,15 @@
+@@ -6,13 +6,15 @@
  #
  # -------------------------------------------------------------------------
  from __future__ import print_function
@@ -82,7 +83,7 @@
  from elftools.elf.elffile import ELFFile
  from optparse import OptionParser
  
-@@ -213,7 +215,8 @@ class PCIIds:
+@@ -211,7 +213,8 @@ class PCIIds:
          """
          Reads the local file
          """
@@ -92,7 +93,7 @@
          self.date = self.findDate(self.contents)
  
      def loadLocal(self):
-@@ -267,7 +270,13 @@ class ReadElf(object):
+@@ -265,7 +268,13 @@ class ReadElf(object):
                  return None
          except ValueError:
              # Not a number. Must be a name then
@@ -107,7 +108,7 @@
  
      def pretty_print_pmdinfo(self, pmdinfo):
          global pcidb
-@@ -339,7 +348,8 @@ class ReadElf(object):
+@@ -337,7 +346,8 @@ class ReadElf(object):
              while endptr < len(data) and byte2int(data[endptr]) != 0:
                  endptr += 1
  
@@ -117,7 +118,7 @@
              rc = mystring.find("PMD_INFO_STRING")
              if (rc != -1):
                  self.parse_pmd_info_string(mystring)
-@@ -348,9 +358,10 @@ class ReadElf(object):
+@@ -346,9 +356,10 @@ class ReadElf(object):
  
      def find_librte_eal(self, section):
          for tag in section.iter_tags():
@@ -131,7 +132,7 @@
          return None
  
      def search_for_autoload_path(self):
-@@ -373,7 +384,7 @@ class ReadElf(object):
+@@ -371,7 +382,7 @@ class ReadElf(object):
                      return (None, None)
                  if raw_output is False:
                      print("Scanning for autoload path in %s" % library)
@@ -140,7 +141,7 @@
                  scanelf = ReadElf(scanfile, sys.stdout)
          except AttributeError:
              # Not a dynamic binary
-@@ -403,7 +414,8 @@ class ReadElf(object):
+@@ -401,7 +412,8 @@ class ReadElf(object):
              while endptr < len(data) and byte2int(data[endptr]) != 0:
                  endptr += 1
  
@@ -150,7 +151,7 @@
              rc = mystring.find("DPDK_PLUGIN_PATH")
              if (rc != -1):
                  rc = mystring.find("=")
-@@ -416,8 +428,9 @@ class ReadElf(object):
+@@ -414,8 +426,9 @@ class ReadElf(object):
  
      def get_dt_runpath(self, dynsec):
          for tag in dynsec.iter_tags():
@@ -162,7 +163,7 @@
          return ""
  
      def process_dt_needed_entries(self):
-@@ -438,16 +451,16 @@ class ReadElf(object):
+@@ -436,16 +449,16 @@ class ReadElf(object):
              return
  
          for tag in dynsec.iter_tags():
@@ -184,7 +185,7 @@
                              try:
                                  libelf = ReadElf(file, sys.stdout)
                              except ELFError:
-@@ -458,6 +471,20 @@ class ReadElf(object):
+@@ -456,6 +469,20 @@ class ReadElf(object):
                              file.close()
  
  
@@ -205,7 +206,7 @@
  def scan_autoload_path(autoload_path):
      global raw_output
  
-@@ -476,7 +503,7 @@ def scan_autoload_path(autoload_path):
+@@ -474,7 +501,7 @@ def scan_autoload_path(autoload_path):
              scan_autoload_path(dpath)
          if os.path.isfile(dpath):
              try:
@@ -214,7 +215,7 @@
                  readelf = ReadElf(file, sys.stdout)
              except ELFError:
                  # this is likely not an elf file, skip it
-@@ -503,7 +530,7 @@ def scan_for_autoload_pmds(dpdk_path):
+@@ -501,7 +528,7 @@ def scan_for_autoload_pmds(dpdk_path):
              print("Must specify a file name")
          return
  
@@ -223,7 +224,7 @@
      try:
          readelf = ReadElf(file, sys.stdout)
      except ElfError:
-@@ -595,7 +622,7 @@ def main(stream=None):
+@@ -593,7 +620,7 @@ def main(stream=None):
          print("File not found")
          sys.exit(1)
  

  parent reply	other threads:[~2019-12-19 14:40 UTC|newest]

Thread overview: 145+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-19 14:32 [dpdk-stable] patch 'net/bonding: fix LACP fast queue Rx handler' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'net/bonding: fix unicast packets filtering' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'net/fm10k: fix stats crash in multi-process' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'ethdev: fix endian annotation for SPI item' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'net/af_packet: fix stale sockets' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'net/mlx4: fix build on ppc64' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'net/i40e: remove memory barrier from NEON Rx' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'net/i40e: remove compiler " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'net/ixgbe: remove memory " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'net/ixgbe: remove redundant assignment' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'ethdev: fix typos for ENOTSUP' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'net/ixgbe: fix queue interrupt for X552/557' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'net/ixgbe: enable new PF host mbox version' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'net/ixgbe: fix VF RSS offloads configuration' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'doc: fix format in virtio guide' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'net/mlx: fix build with make and recent gcc' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'test/interrupt: account for race with callback' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'bus/pci: fix Intel IOMMU sysfs access check' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'security: fix doxygen fields' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'crypto/qat: fix digest length in XCBC capability' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'doc: fix AESNI-GCM limitations in crypto guide' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'cryptodev: fix initialization on multi-process' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'drivers/crypto: remove some invalid comments' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'net/i40e: downgrade error log' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'net/mlx5: fix Rx CQ doorbell synchronization on aarch64' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'ethdev: remove redundant device info cleanup before get' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'vhost: fix slave request fd leak' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'net/bonding: fix link speed update in broadcast mode' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'app/testpmd: fix crash on port reset' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'vhost: forbid reallocation when running' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'vhost: fix vring address handling during live migration' " luca.boccassi
2019-12-19 14:32 ` [dpdk-stable] patch 'vhost: protect vring access done by application' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/vhost: fix redundant queue state event' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/virtio: get all pending Rx packets in vectorized paths' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/virtio: fix mbuf data and packet length mismatch' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/cxgbe: fix prefetch for non-coalesced Tx packets' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/ixgbe: fix X553 speed capability' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bonding: fix slave id types' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bonding: fix OOB access in other aggregator modes' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: remove duplicate barrier' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: enforce IO barrier for doorbell command' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix async link handling and update' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix Rx queue count' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix crash in secondary process' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix setting default MAC address' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix multicast filter programming' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/qede: limit Rx ring index read for debug' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'event/sw: fix xstats reset value' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'event/dpaa2: fix default queue configuration' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'service: use log for error messages' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'test/mbuf: fix forged mbuf in clone test' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'test/lpm: fix measured cycles for delete' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'cryptodev: fix checks related to device id' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'doc: fix typo in l2fwd-crypto guide' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'lib/distributor: fix deadlock on aarch64' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'bus/pci: remove useless link dependency on ethdev' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'test/bonding: fix LSC related cases' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/tap: fix blocked Rx packets' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix stats errors handling' " luca.boccassi
2019-12-19 14:56   ` Kalesh Anakkur Purayil
2019-12-24 11:16     ` Luca Boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: return error if setting link up fails' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: remove redundant header file inclusion' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: get default HWRM command timeout from FW' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix coding style' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: remove unnecessary variable assignment' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/dpaa2: set port in mbuf' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix dereference before null check' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: cleanup comments' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: move macro definitions to header file' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix error handling in xstats' " luca.boccassi
2019-12-19 14:57   ` Kalesh Anakkur Purayil
2019-12-24 11:16     ` Luca Boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'vhost: translate incoming log address to GPA' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'vhost: prevent zero copy mode if IOMMU is on' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/virtio: fix descriptor addressed in Tx' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/i40e: fix address of first segment' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/ixgbe: " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'doc: fix a common typo in NIC guides' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'app/testpmd: fix help for loop topology option' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/af_packet: improve Tx statistics accuracy' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/igb: fix global variable multiple definitions' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'test: " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'vfio: fix truncated BAR offset for 32-bit' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'ethdev: fix include of ethernet header file' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix mbuf free when clearing Tx queue' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/i40e: fix exception with multi-driver' " luca.boccassi
2019-12-20  1:45   ` Zhang, AlvinX
2019-12-24 11:16     ` Luca Boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/virtio: reject deferred Rx start' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/virtio: reject deferred Tx " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'vhost: fix IPv4 checksum' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/mlx: fix debug build with icc' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'app/testpmd: fix Tx checksum when TSO enabled' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: expose some missing counters in port stats' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bnxt: fix memory leak' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/virtio: fix Tx checksum offloads' " luca.boccassi
2019-12-19 14:33 ` [dpdk-stable] patch 'net/bonding: use non deprecated PCI API' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'examples/vm_power: fix type of cmdline token in cli' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'examples/l3fwd-power: fix Rx interrupt disabling' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'power: fix socket indicator value' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'examples/vm_power: fix build without i40e' " luca.boccassi
2019-12-19 14:34 ` luca.boccassi [this message]
2019-12-19 14:34 ` [dpdk-stable] patch 'net/dpaa2: add retry and timeout in packet enqueue API' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'mempool/dpaa2: report error on endless loop in mbuf release' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'doc: fix description of versioning macros' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'net/dpaa2: fix possible use of uninitialized vars' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'net/bnxt: remove commented out code' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'crypto/dpaa2_sec: fix length retrieved from hardware' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix GCM IV length' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix SHA256-HMAC digest " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'crypto/openssl: use local copy for session contexts' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'net/fm10k: fix mbuf free in vector Rx' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'net/igb: fix PHY status if PHY reset is not blocked' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'net/bonding: fix port ID check' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'net/qede: fix setting MTU' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'net/qede: fix setting VLAN strip mode' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'net/ixgbe: support packet type with NEON' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'net/ixgbe: fix link status' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'vhost: fix virtqueue not accessible' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'net/virtio-user: fix setting filters' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'net/sfc: fix adapter lock usage on rule creation' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'app/testpmd: block xstats for hidden ports' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'bus/pci: align next mapping address on page boundary' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'test: optimise fd closing in forks' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'doc/guides: clean repeated words' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'lib: fix log typos' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'lib: fix doxygen " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'malloc: fix realloc copy size' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'malloc: fix realloc padded element " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix default configuration' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'net/bnxt: fix crash in xstats get' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'net/bnxt: fix log message level' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'net/bonding: fix selection logic' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'power: handle frequency increase with turbo disabled' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'mk: remove library search path from binary' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'examples/multi_process: fix client crash with sparse ports' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'app/crypto-perf: fix input of AEAD decrypt' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'doc: fix tap guide' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'app/testpmd: use better randomness for Tx split' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'net/ixgbe: fix link status' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'net/e1000: " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'ethdev: limit maximum number of queues' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'event/octeontx: fix partial Rx packet handling' " luca.boccassi
2019-12-19 14:34 ` [dpdk-stable] patch 'test/service: fix wait for service core' " luca.boccassi

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=20191219143447.21506-97-luca.boccassi@gmail.com \
    --to=luca.boccassi@gmail.com \
    --cc=olivier.matz@6wind.com \
    --cc=robin.jarry@6wind.com \
    --cc=stable@dpdk.org \
    /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

patches for DPDK stable branches

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/stable/0 stable/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 stable stable/ https://inbox.dpdk.org/stable \
		stable@dpdk.org
	public-inbox-index stable

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.stable


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git