These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / net / xen-netback / xenbus.c
index ec383b0..56ebd82 100644 (file)
@@ -327,6 +327,14 @@ static int netback_probe(struct xenbus_device *dev,
                        goto abort_transaction;
                }
 
+               /* We support multicast-control. */
+               err = xenbus_printf(xbt, dev->nodename,
+                                   "feature-multicast-control", "%d", 1);
+               if (err) {
+                       message = "writing feature-multicast-control";
+                       goto abort_transaction;
+               }
+
                err = xenbus_transaction_end(xbt, 0);
        } while (err == -EAGAIN);
 
@@ -780,6 +788,12 @@ static void connect(struct backend_info *be)
        /* Use the number of queues requested by the frontend */
        be->vif->queues = vzalloc(requested_num_queues *
                                  sizeof(struct xenvif_queue));
+       if (!be->vif->queues) {
+               xenbus_dev_fatal(dev, -ENOMEM,
+                                "allocating queues");
+               return;
+       }
+
        be->vif->num_queues = requested_num_queues;
        be->vif->stalled_queues = requested_num_queues;
 
@@ -1016,6 +1030,11 @@ static int read_xenbus_vif_flags(struct backend_info *be)
                val = 0;
        vif->ipv6_csum = !!val;
 
+       if (xenbus_scanf(XBT_NIL, dev->otherend, "request-multicast-control",
+                        "%d", &val) < 0)
+               val = 0;
+       vif->multicast_control = !!val;
+
        return 0;
 }