bus/pci/windows: guard against sdk/dpdk guid collision

Message ID 1610490821-2938-1-git-send-email-roretzla@linux.microsoft.com (mailing list archive)
State Superseded, archived
Headers
Series bus/pci/windows: guard against sdk/dpdk guid collision |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/iol-abi-testing success Testing PASS
ci/iol-testing warning Testing issues

Commit Message

Tyler Retzlaff Jan. 12, 2021, 10:33 p.m. UTC
  DEVCLASS and DEVINTERFACE guids are defined/managed by the windows
platform sdk headers.

* hide dpdk defined GUID_DEVCLASS_NETUIO and GUID_DEVINTERFACE_NETUIO if
  the NTDDI_VERSION >= 0x0A00000A
* include <ndisguid.h> for windows sdk defined GUID_DEVINTERFACE_NETUIO

Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
---
 drivers/bus/pci/windows/pci_netuio.c | 2 ++
 drivers/bus/pci/windows/pci_netuio.h | 2 ++
 2 files changed, 4 insertions(+)
  

Comments

Dmitry Kozlyuk Jan. 13, 2021, 5:20 p.m. UTC | #1
On Tue, 12 Jan 2021 14:33:41 -0800, Tyler Retzlaff wrote:
> DEVCLASS and DEVINTERFACE guids are defined/managed by the windows
> platform sdk headers.

Please write names and acronyms in proper case in all human-readable text
(commit subject except topic, commit message, log messages).

> * hide dpdk defined GUID_DEVCLASS_NETUIO and GUID_DEVINTERFACE_NETUIO if
>   the NTDDI_VERSION >= 0x0A00000A
> * include <ndisguid.h> for windows sdk defined GUID_DEVINTERFACE_NETUIO

This translates the code almost verbatim, not needed. Instead you could state
which SDK versions are affected. Suggested wording:

	pci/windows: fix build with SDK 10.0.xxxxx

	NetUIO device class and interface GUIDs are defined in system
	headers starting from platform SDK v10.0.xxxxx. Inspect SDK version
	to avoid redefinition.

	Fixes: hhhhhhhhhhhh ("...")
	Cc: stable@dpdk.org

	Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>

I can't find which "xxxxx" corresponds to NTDDI_WIN10_FE.

"hhhhhhhhhhhh" are 12 chars of the hash of the commit which introduced the
code you fixed. "..." is said commit subject. This info is needed to backport
your fix to stable branch, so that it can also be built with newer SDK. May
not be very important until Windows port gets its users, I mostly tell it to
illustrate the process.

> +#if (! defined(NTDDI_WIN10_FE) || NTDDI_VERSION < NTDDI_WIN10_FE)

Braces are redundant here and DPDK style is to avoid them (see rte_common.h).
  
Tyler Retzlaff Jan. 14, 2021, 7:59 a.m. UTC | #2
On Wed, Jan 13, 2021 at 08:20:34PM +0300, Dmitry Kozlyuk wrote:
> 	pci/windows: fix build with SDK 10.0.xxxxx
> 
> 	NetUIO device class and interface GUIDs are defined in system
> 	headers starting from platform SDK v10.0.xxxxx. Inspect SDK version
> 	to avoid redefinition.
> 
> 	Fixes: hhhhhhhhhhhh ("...")
> 	Cc: stable@dpdk.org
> 
> 	Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
> 
> I can't find which "xxxxx" corresponds to NTDDI_WIN10_FE.

there won't be a specific sdk/kit that corresponds. the best i can offer
is to include in the message the latest sdk/kit version for that platform
version.

also be aware since there is no 1:1 alignment between NTDDI_VERSION and
the sdk/kit build where the conflicting GUID definitions were introduced
there will still be a subset of eal/pre-release kits if installed that will
lead to compilation failure of dpdk even with this change. i'll also add
a note in the commit message about this limitation.

windows doesn't promise api compatibility for pre-release kits and there is
no approved mechanism / versioning to provide such compatibility.

> "hhhhhhhhhhhh" are 12 chars of the hash of the commit which introduced the
> code you fixed. "..." is said commit subject. This info is needed to backport
> your fix to stable branch, so that it can also be built with newer SDK. May
> not be very important until Windows port gets its users, I mostly tell it to
> illustrate the process.

yes, understood this one is definitely appropriate for backport

> > +#if (! defined(NTDDI_WIN10_FE) || NTDDI_VERSION < NTDDI_WIN10_FE)
> 
> Braces are redundant here and DPDK style is to avoid them (see rte_common.h).

yes, sorry will fix. best part is i don't like redundant braces i just added
them because i encounter so many people who do. (can't win really)
  

Patch

diff --git a/drivers/bus/pci/windows/pci_netuio.c b/drivers/bus/pci/windows/pci_netuio.c
index 670194839..e2bf45724 100644
--- a/drivers/bus/pci/windows/pci_netuio.c
+++ b/drivers/bus/pci/windows/pci_netuio.c
@@ -7,6 +7,8 @@ 
 #include <rte_log.h>
 #include <rte_eal.h>
 
+#include <ndisguid.h>
+
 #include "private.h"
 #include "pci_netuio.h"
 
diff --git a/drivers/bus/pci/windows/pci_netuio.h b/drivers/bus/pci/windows/pci_netuio.h
index 9a77806b5..2bf5a201a 100644
--- a/drivers/bus/pci/windows/pci_netuio.h
+++ b/drivers/bus/pci/windows/pci_netuio.h
@@ -5,6 +5,7 @@ 
 #ifndef _PCI_NETUIO_H_
 #define _PCI_NETUIO_H_
 
+#if (! defined(NTDDI_WIN10_FE) || NTDDI_VERSION < NTDDI_WIN10_FE)
 /* GUID definition for device class netUIO */
 DEFINE_GUID(GUID_DEVCLASS_NETUIO, 0x78912bc1, 0xcb8e, 0x4b28,
 	0xa3, 0x29, 0xf3, 0x22, 0xeb, 0xad, 0xbe, 0x0f);
@@ -12,6 +13,7 @@  DEFINE_GUID(GUID_DEVCLASS_NETUIO, 0x78912bc1, 0xcb8e, 0x4b28,
 /* GUID definition for the netuio device interface */
 DEFINE_GUID(GUID_DEVINTERFACE_NETUIO, 0x08336f60, 0x0679, 0x4c6c,
 	0x85, 0xd2, 0xae, 0x7c, 0xed, 0x65, 0xff, 0xf7);
+#endif
 
 /* IOCTL code definitions */
 #define IOCTL_NETUIO_MAP_HW_INTO_USERSPACE \