This reverts commit 2996e6be19a13199ded7c2aa21039cca97318e01
and some parts of 2636dc8c4de83cd37bc0680a6fbc3f6d25023bd7.
Conflicts:
tests/virnetdevbandwidthtest.c: New test has been introduced since
then.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/libvirt_private.syms | 1 -
src/network/bridge_driver.c | 25 +-----------
src/util/virnetdevbandwidth.c | 84 --------------------------------------
src/util/virnetdevbandwidth.h | 6 ---
tests/virnetdevbandwidthtest.c | 91 ------------------------------------------
5 files changed, 2 insertions(+), 205 deletions(-)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 7655247..45f3117 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1470,7 +1470,6 @@ virNetDevBandwidthClear;
virNetDevBandwidthCopy;
virNetDevBandwidthEqual;
virNetDevBandwidthFree;
-virNetDevBandwidthMinimal;
virNetDevBandwidthPlug;
virNetDevBandwidthSet;
virNetDevBandwidthUnplug;
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index 6bdd1d6..0b43a67 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -3284,30 +3284,9 @@ networkAllocateActualDevice(virDomainNetDefPtr iface)
else if (portgroup && portgroup->bandwidth)
bandwidth = portgroup->bandwidth;
- /* For bridgeless networks we must take into account any QoS set to them.
- * This is, however, a bit tricky. With bridged network there are two
- * points where QoS can be set: domain's interface and the bridge. The
- * limits on those differ (in general) in which case the lower limit gets
- * into effect. For example, if domain's interface average is 10Mbps but
- * the network's is just 1Mbps, the domain will not be able to send data
- * any faster than 1Mbps. However, on bridgeless networks we can't just set
- * those two points and let kernel do its job since we have only single
- * point. Therefore, we must combine the QoS settings from both domain's
- * interface and network and choose the minimal value from pairs.
- */
- if (netdef->forward.type == VIR_NETWORK_FORWARD_PRIVATE ||
- netdef->forward.type == VIR_NETWORK_FORWARD_VEPA ||
- netdef->forward.type == VIR_NETWORK_FORWARD_PASSTHROUGH ||
- netdef->forward.type == VIR_NETWORK_FORWARD_HOSTDEV) {
- if (virNetDevBandwidthMinimal(&iface->data.network.actual->bandwidth,
- bandwidth,
- netdef->bandwidth) < 0)
- goto error;
- } else if (bandwidth &&
- virNetDevBandwidthCopy(&iface->data.network.actual->bandwidth,
- bandwidth) < 0) {
+ if (bandwidth &&
virNetDevBandwidthCopy(&iface->data.network.actual->bandwidth,
+ bandwidth) < 0)
goto error;
- }
/* copy appropriate vlan info to actualNet */
if (iface->vlan.nTags > 0)
diff --git a/src/util/virnetdevbandwidth.c b/src/util/virnetdevbandwidth.c
index 273c2db..ed6a19d 100644
--- a/src/util/virnetdevbandwidth.c
+++ b/src/util/virnetdevbandwidth.c
@@ -27,7 +27,6 @@
#include "viralloc.h"
#include "virerror.h"
#include "virstring.h"
-#include "virutil.h"
#define VIR_FROM_THIS VIR_FROM_NONE
@@ -589,86 +588,3 @@ cleanup:
VIR_FREE(ceil);
return ret;
}
-
-static void
-virNetDevBandwidthRateMinimal(virNetDevBandwidthRatePtr result,
- virNetDevBandwidthRatePtr band1,
- virNetDevBandwidthRatePtr band2)
-{
- if (!band1 || !band2) {
- memcpy(result, band1 ? band1 : band2, sizeof(*result));
- return;
- }
-
- /* We can't do a simple MIN() here, because zero value doesn't mean the
- * narrowest limit, but an unset value. Hence we need symmetric F(a, b)
- * so that:
- * F(a, 0) = F(0, a) = a; special corner case: F(0, 0) = 0
- * F(a, b) = MIN(a, b) for a != 0 and b != 0
- */
-#define NON_ZERO_MIN(a, b) \
- ((a) && (b) ? MIN(a, b) : (a) ? (a) : (b))
-
- result->average = NON_ZERO_MIN(band1->average, band2->average);
- result->peak = NON_ZERO_MIN(band1->peak, band2->peak);
- result->floor = NON_ZERO_MIN(band1->floor, band2->floor);
- result->burst = NON_ZERO_MIN(band1->burst, band2->burst);
-}
-
-/**
- * virNetDevBandwidthMinimal:
- * @result: the minimal intersect of @band1 and @band2
- * @band1: the first bandwidth
- * @band2: the second bandwidth
- *
- * Combine the two bandwidths into one with choosing the minimal value for each
- * pair of items within bandwidth structure. The resulting bandwidth is stored
- * into @result. In case of both @band1 and @band2 being NULL pointers, the
- * @ret is set to NULL as well as there's no bandwidth to calculate (this is
- * not considered an error). The caller is responsible for freeing @result when
- * no longer needed.
- *
- * Returns 0 on success, -1 otherwise.
- */
-int
-virNetDevBandwidthMinimal(virNetDevBandwidthPtr *result,
- virNetDevBandwidthPtr band1,
- virNetDevBandwidthPtr band2)
-{
- int ret = -1;
-
- if (!band1 && !band2) {
- /* Nothing to compute */
- *result = NULL;
- return 0;
- }
-
- if (!band1 || !band2) {
- /* Sweet, one of the args is NULL. The non-NULL one
- * is our minimum then. */
- return virNetDevBandwidthCopy(result, band1 ? band1 : band2);
- }
-
- if (VIR_ALLOC(*result) < 0)
- goto cleanup;
-
- if (band1->in || band2->in) {
- if (VIR_ALLOC((*result)->in) < 0)
- goto cleanup;
-
- virNetDevBandwidthRateMinimal((*result)->in, band1->in, band2->in);
- }
-
- if (band1->out || band2->out) {
- if (VIR_ALLOC((*result)->out) < 0)
- goto cleanup;
-
- virNetDevBandwidthRateMinimal((*result)->out, band1->out, band2->out);
- }
-
- ret = 0;
-cleanup:
- if (ret < 0)
- VIR_FREE(*result);
- return ret;
-}
diff --git a/src/util/virnetdevbandwidth.h b/src/util/virnetdevbandwidth.h
index ea40df4..4606a07 100644
--- a/src/util/virnetdevbandwidth.h
+++ b/src/util/virnetdevbandwidth.h
@@ -74,10 +74,4 @@ int virNetDevBandwidthUpdateRate(const char *ifname,
unsigned long long new_rate)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
ATTRIBUTE_RETURN_CHECK;
-
-int
-virNetDevBandwidthMinimal(virNetDevBandwidthPtr *result,
- virNetDevBandwidthPtr band1,
- virNetDevBandwidthPtr band2)
- ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
#endif /* __VIR_NETDEV_BANDWIDTH_H__ */
diff --git a/tests/virnetdevbandwidthtest.c b/tests/virnetdevbandwidthtest.c
index 345a0dd..609deb8 100644
--- a/tests/virnetdevbandwidthtest.c
+++ b/tests/virnetdevbandwidthtest.c
@@ -62,56 +62,6 @@ struct testSetStruct {
} while (0)
static int
-testVirNetDevBandwidthMinimal(const void *data)
-{
- int ret = -1;
- const struct testMinimalStruct *info = data;
- virNetDevBandwidthPtr expected_result = NULL, result = NULL,
- band1 = NULL, band2 = NULL;
-
-
- /* Parse given XMLs */
- PARSE(info->expected_result, expected_result);
- PARSE(info->band1, band1);
- PARSE(info->band2, band2);
-
- if (virNetDevBandwidthMinimal(&result, band1, band2) < 0)
- goto cleanup;
-
- if (!virNetDevBandwidthEqual(expected_result, result)) {
- virBuffer exp_buf = VIR_BUFFER_INITIALIZER,
- res_buf = VIR_BUFFER_INITIALIZER;
- char *exp = NULL, *res = NULL;
-
- fprintf(stderr, "expected_result != result");
-
- if (virNetDevBandwidthFormat(expected_result, &exp_buf) < 0 ||
- virNetDevBandwidthFormat(result, &res_buf) < 0 ||
- !(exp = virBufferContentAndReset(&exp_buf)) ||
- !(res = virBufferContentAndReset(&res_buf))) {
- fprintf(stderr, "Failed to fail");
- virBufferFreeAndReset(&exp_buf);
- virBufferFreeAndReset(&res_buf);
- VIR_FREE(exp);
- VIR_FREE(res);
- goto cleanup;
- }
-
- virtTestDifference(stderr, exp, res);
- VIR_FREE(exp);
- VIR_FREE(res);
- }
-
- ret = 0;
-cleanup:
- virNetDevBandwidthFree(expected_result);
- virNetDevBandwidthFree(result);
- virNetDevBandwidthFree(band1);
- virNetDevBandwidthFree(band2);
- return ret;
-}
-
-static int
testVirNetDevBandwidthSet(const void *data)
{
int ret = -1;
@@ -159,15 +109,6 @@ mymain(void)
{
int ret = 0;
-#define DO_TEST_MINIMAL(r, ...) \
- do { \
- struct testMinimalStruct data = {r, __VA_ARGS__}; \
- if (virtTestRun("virNetDevBandwidthMinimal", \
- testVirNetDevBandwidthMinimal, \
- &data) < 0) \
- ret = -1; \
- } while (0)
-
#define DO_TEST_SET(Band, Exp_cmd, ...) \
do { \
struct testSetStruct data = {.band = Band, \
@@ -180,38 +121,6 @@ mymain(void)
} while (0)
- DO_TEST_MINIMAL(NULL, NULL, NULL);
-
- DO_TEST_MINIMAL("<bandwidth>"
- " <inbound average='1000' peak='5000'
burst='5120'/>"
- " <outbound average='128' peak='256'
burst='256'/>"
- "</bandwidth>",
- .band1 = "<bandwidth>"
- " <inbound average='1000' peak='5000'
burst='5120'/>"
- " <outbound average='128' peak='256'
burst='256'/>"
- "</bandwidth>");
-
- DO_TEST_MINIMAL("<bandwidth>"
- " <inbound average='1000' peak='5000'
burst='5120'/>"
- " <outbound average='128' peak='256'
burst='256'/>"
- "</bandwidth>",
- .band2 = "<bandwidth>"
- " <inbound average='1000' peak='5000'
burst='5120'/>"
- " <outbound average='128' peak='256'
burst='256'/>"
- "</bandwidth>");
- DO_TEST_MINIMAL("<bandwidth>"
- " <inbound average='1' peak='2'
floor='3' burst='4'/>"
- " <outbound average='5' peak='6'
burst='7'/>"
- "</bandwidth>",
- "<bandwidth>"
- " <inbound average='1' peak='2'
burst='4'/>"
- " <outbound average='0'
burst='7'/>"
- "</bandwidth>",
- "<bandwidth>"
- " <inbound average='1' peak='2'
floor='3'/>"
- " <outbound average='5' peak='6'/>"
- "</bandwidth>");
-
DO_TEST_SET(("<bandwidth>"
" <inbound average='1' peak='2'
floor='3' burst='4'/>"
" <outbound average='5' peak='6'
burst='7'/>"
--
1.8.5.2