]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
nodedev: add qeth layer2 and layer3 device types
authorBoris Fiuczynski <fiuczy@linux.ibm.com>
Tue, 4 Feb 2025 17:11:43 +0000 (18:11 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 5 Feb 2025 16:56:42 +0000 (17:56 +0100)
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/conf/node_device_conf.c
src/conf/node_device_conf.h
src/conf/schemas/nodedev.rng
src/node_device/node_device_udev.c

index cb33e153c6b1bcc0ff1905e810ce7d6e4c4ba06b..88486a5f2d0ada936cf7a5355b8b5e35cee82729 100644 (file)
@@ -78,6 +78,8 @@ VIR_ENUM_IMPL(virNodeDevCap,
 VIR_ENUM_IMPL(virNodeDevCCWGroupCap,
               VIR_NODE_DEV_CAP_CCWGROUP_LAST,
               "qeth_generic",
+              "qeth_layer2",
+              "qeth_layer3",
 );
 
 VIR_ENUM_IMPL(virNodeDevNetCap,
@@ -732,6 +734,8 @@ virNodeDeviceCapCCWGroupDefFormat(virBuffer *buf,
     virBufferAdjustIndent(buf, 2);
     switch (ccwgroup_dev.type) {
     case VIR_NODE_DEV_CAP_CCWGROUP_QETH_GENERIC:
+    case VIR_NODE_DEV_CAP_CCWGROUP_QETH_LAYER2:
+    case VIR_NODE_DEV_CAP_CCWGROUP_QETH_LAYER3:
         virNodeDeviceCapCCWGroupQethFormat(buf, &ccwgroup_dev.qeth);
         break;
     case VIR_NODE_DEV_CAP_CCWGROUP_LAST:
@@ -1510,6 +1514,8 @@ virNodeDevCapCCWGroupParseXML(xmlXPathContextPtr ctxt,
 
     switch (ccwgroup_dev->type) {
     case VIR_NODE_DEV_CAP_CCWGROUP_QETH_GENERIC:
+    case VIR_NODE_DEV_CAP_CCWGROUP_QETH_LAYER2:
+    case VIR_NODE_DEV_CAP_CCWGROUP_QETH_LAYER3:
         if (virNodeDevCapCCWGroupQethParseXML(ctxt, cap_node, &ccwgroup_dev->qeth) < 0)
             return -1;
         break;
@@ -2866,6 +2872,8 @@ virNodeDevCapsDefFree(virNodeDevCapsDef *caps)
         g_free(data->ccwgroup_dev.members);
         switch (data->ccwgroup_dev.type) {
         case VIR_NODE_DEV_CAP_CCWGROUP_QETH_GENERIC:
+        case VIR_NODE_DEV_CAP_CCWGROUP_QETH_LAYER2:
+        case VIR_NODE_DEV_CAP_CCWGROUP_QETH_LAYER3:
             virCCWGroupTypeQethFree(&data->ccwgroup_dev.qeth);
             break;
         case VIR_NODE_DEV_CAP_CCWGROUP_LAST:
index e86b883d5e963c89c10d81258637103b2600ca53..b98fb750ce75686889772a301949445fb23c759d 100644 (file)
@@ -80,6 +80,8 @@ typedef enum {
 typedef enum {
     /* Keep in sync with VIR_ENUM_IMPL in node_device_conf.c */
     VIR_NODE_DEV_CAP_CCWGROUP_QETH_GENERIC,     /* s390 CCWGROUP QETH generic device */
+    VIR_NODE_DEV_CAP_CCWGROUP_QETH_LAYER2,      /* s390 CCWGROUP QETH layer 2 device */
+    VIR_NODE_DEV_CAP_CCWGROUP_QETH_LAYER3,      /* s390 CCWGROUP QETH layer 3 device */
     VIR_NODE_DEV_CAP_CCWGROUP_LAST
 } virNodeDevCCWGroupCapType;
 
index f52c6ab7523fcc5a613c3adcb2ed6608ebeefb4b..31ce517e4d562d20033051288a708c5d64b21fd5 100644 (file)
 
   <define name="capccwgrouptypeqeth">
     <attribute name="type">
-      <value>qeth_generic</value>
+      <choice>
+        <value>qeth_generic</value>
+        <value>qeth_layer2</value>
+        <value>qeth_layer3</value>
+      </choice>
     </attribute>
     <interleave>
       <element name="card_type"><text/></element>
index ba5727ed8f4aa73bad38ea16984c77d9eefb19f5..082f9d5cf00900d4ea643206dda5c55578dcfb3b 100644 (file)
@@ -1410,6 +1410,8 @@ udevProcessCCWGroup(struct udev_device *device,
 
     switch (data->ccwgroup_dev.type) {
     case VIR_NODE_DEV_CAP_CCWGROUP_QETH_GENERIC:
+    case VIR_NODE_DEV_CAP_CCWGROUP_QETH_LAYER2:
+    case VIR_NODE_DEV_CAP_CCWGROUP_QETH_LAYER3:
         {
             virCCWGroupTypeQeth *qeth = &data->ccwgroup_dev.qeth;
             /* process qeth device information */
@@ -1487,7 +1489,9 @@ udevGetDeviceType(struct udev_device *device,
             *type = VIR_NODE_DEV_CAP_AP_CARD;
         else if (STREQ(devtype, "ap_queue"))
             *type = VIR_NODE_DEV_CAP_AP_QUEUE;
-        else if (STREQ(devtype, "qeth_generic"))
+        else if (STREQ(devtype, "qeth_generic") ||
+                 STREQ(devtype, "qeth_layer2") ||
+                 STREQ(devtype, "qeth_layer3"))
             *type = VIR_NODE_DEV_CAP_CCWGROUP_DEV;
     } else {
         /* PCI devices don't set the DEVTYPE property. */