X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fnetdev-linux.c;h=06f739cdc0f9ca39a0229776e7ad93ddb309aa58;hb=cb49ee4fd15e1b24aaae4a2d25f3dd538734b4df;hp=2ea411dcdab3656ad0c17a5fd70f98da86561766;hpb=d5590e7e4114253bc5b84b494dba18be24e6073f;p=openvswitch diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c index 2ea411dc..06f739cd 100644 --- a/lib/netdev-linux.c +++ b/lib/netdev-linux.c @@ -487,8 +487,9 @@ netdev_linux_cache_cb(const struct rtnetlink_change *change, /* Creates the netdev device of 'type' with 'name'. */ static int -netdev_linux_create_system(const char *name, const char *type OVS_UNUSED, - const struct shash *args, struct netdev_dev **netdev_devp) +netdev_linux_create_system(const struct netdev_class *class OVS_UNUSED, + const char *name, const struct shash *args, + struct netdev_dev **netdev_devp) { struct netdev_dev_linux *netdev_dev; int error; @@ -520,8 +521,9 @@ netdev_linux_create_system(const char *name, const char *type OVS_UNUSED, * buffers, across all readers. Therefore once data is read it will * be unavailable to other reads for tap devices. */ static int -netdev_linux_create_tap(const char *name, const char *type OVS_UNUSED, - const struct shash *args, struct netdev_dev **netdev_devp) +netdev_linux_create_tap(const struct netdev_class *class OVS_UNUSED, + const char *name, const struct shash *args, + struct netdev_dev **netdev_devp) { struct netdev_dev_linux *netdev_dev; struct tap_state *state; @@ -2413,13 +2415,13 @@ htb_parse_class_details__(struct netdev *netdev, const char *priority_s = shash_find_data(details, "priority"); int mtu; - /* min-rate */ + /* min-rate. Don't allow a min-rate below 1500 bytes/s. */ if (!min_rate_s) { /* min-rate is required. */ return EINVAL; } hc->min_rate = strtoull(min_rate_s, NULL, 10) / 8; - hc->min_rate = MAX(hc->min_rate, 0); + hc->min_rate = MAX(hc->min_rate, 1500); hc->min_rate = MIN(hc->min_rate, htb->max_rate); /* max-rate */ @@ -2936,7 +2938,7 @@ tc_bytes_to_ticks(unsigned int rate, unsigned int size) if (!buffer_hz) { read_psched(); } - return ((unsigned long long int) ticks_per_s * size) / rate; + return rate ? ((unsigned long long int) ticks_per_s * size) / rate : 0; } /* Returns the number of bytes that need to be reserved for qdisc buffering at @@ -3282,9 +3284,7 @@ tc_put_rtab(struct ofpbuf *msg, uint16_t type, const struct tc_ratespec *rate) /* Calculates the proper value of 'buffer' or 'cbuffer' in HTB options given a * rate of 'Bps' bytes per second, the specified 'mtu', and a user-requested * burst size of 'burst_bytes'. (If no value was requested, a 'burst_bytes' of - * 0 is fine.) - * - * This */ + * 0 is fine.) */ static int tc_calc_buffer(unsigned int Bps, int mtu, uint64_t burst_bytes) {