[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [XENVIF PATCH v2] Fix argument to ControllerSetHashAlgorithm



Reviewed-by: Owen Smith <owen.smith@xxxxxxxxx>

On Wed, Jul 23, 2025 at 10:02 AM Tu Dinh <ngoc-tu.dinh@xxxxxxxxxx> wrote:
ControllerSetHashAlgorithm expects a XEN_NETIF_CTRL_HASH_ALGORITHM_*
whereas Hash->Algorithm is of type XENVIF_PACKET_HASH_ALGORITHM.

These two enums are not aligned so translate them manually.

Also treat XENVIF_PACKET_HASH_ALGORITHM_UNSPECIFIED the same as
XENVIF_PACKET_HASH_ALGORITHM_NONE, but return STATUS_NOT_SUPPORTED when
an unsupported Hash->Algorithm is supplied.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@xxxxxxxxxx>
---
v2: Treat XENVIF_PACKET_HASH_ALGORITHM_UNSPECIFIED the same as
XENVIF_PACKET_HASH_ALGORITHM_NONE.
---
 src/xenvif/frontend.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index 79b04fb..90ec2b1 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -1883,6 +1883,7 @@ __FrontendUpdateHash(
 {
     PXENVIF_CONTROLLER      Controller;
     ULONG                   Zero = 0;
+    ULONG                   NetifAlgorithm;
     ULONG                   Size;
     PULONG                  Mapping;
     ULONG                   Flags;
@@ -1892,30 +1893,30 @@ __FrontendUpdateHash(

     switch (Hash->Algorithm) {
     case XENVIF_PACKET_HASH_ALGORITHM_NONE:
+    case XENVIF_PACKET_HASH_ALGORITHM_UNSPECIFIED:
+        NetifAlgorithm = XEN_NETIF_CTRL_HASH_ALGORITHM_NONE;
         Size = 1;
         Mapping = &Zero;
         Flags = 0;
         break;

     case XENVIF_PACKET_HASH_ALGORITHM_TOEPLITZ:
+        NetifAlgorithm = XEN_NETIF_CTRL_HASH_ALGORITHM_TOEPLITZ;
         Size = Hash->Size;
         Mapping = Hash->Mapping;
         Flags = Hash->Flags;
         break;

-    case XENVIF_PACKET_HASH_ALGORITHM_UNSPECIFIED:
     default:
-        (VOID) ControllerSetHashAlgorithm(Controller,
-                                          XEN_NETIF_CTRL_HASH_ALGORITHM_NONE);
-        goto done;
+        return STATUS_NOT_SUPPORTED;
     }

     status = ControllerSetHashAlgorithm(Controller,
-                                        Hash->Algorithm);
+                                        NetifAlgorithm);
     if (!NT_SUCCESS(status))
         goto fail1;

-    if (Hash->Algorithm == XEN_NETIF_CTRL_HASH_ALGORITHM_NONE)
+    if (NetifAlgorithm == XEN_NETIF_CTRL_HASH_ALGORITHM_NONE)
         goto done;

     status = ControllerSetHashMappingSize(Controller, Size);
--
2.50.1.windows.1



Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.