[ovs-dev] [dpif-netdev 07/15] dpif-netdev: Remove max_mtu tracking.

Ethan Jackson ethan at nicira.com
Wed Jan 8 23:15:39 UTC 2014


Acked-by: Ethan Jackson <ethan at nicira.com>


On Fri, Dec 27, 2013 at 8:03 PM, Ben Pfaff <blp at nicira.com> wrote:
> Normally all the ports have the same mtu anyhow, so there is little
> advantage in keeping track of the maximum mtu on a per-bridge basis.  In
> upcoming commits, tracking mtu will require more locking and present
> even less advantage (because the packet buffer will become per-thread, so
> that reallocating once per thread becomes essentially a null cost).
>
> Signed-off-by: Ben Pfaff <blp at nicira.com>
> ---
>  lib/dpif-netdev.c |   20 ++++++++------------
>  1 file changed, 8 insertions(+), 12 deletions(-)
>
> diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
> index 03121ec..b890e4f 100644
> --- a/lib/dpif-netdev.c
> +++ b/lib/dpif-netdev.c
> @@ -93,7 +93,6 @@ struct dp_netdev {
>      char *name;
>      int open_cnt;
>      bool destroyed;
> -    int max_mtu;                /* Maximum MTU of any port added so far. */
>
>      struct dp_netdev_queue queues[N_QUEUES];
>      struct classifier cls;      /* Classifier. */
> @@ -288,7 +287,6 @@ create_dp_netdev(const char *name, const struct dpif_class *class,
>      dp->class = class;
>      dp->name = xstrdup(name);
>      dp->open_cnt = 0;
> -    dp->max_mtu = ETH_PAYLOAD_MAX;
>      for (i = 0; i < N_QUEUES; i++) {
>          dp->queues[i].head = dp->queues[i].tail = 0;
>      }
> @@ -433,7 +431,6 @@ do_add_port(struct dp_netdev *dp, const char *devname, const char *type,
>      struct netdev_rx *rx;
>      enum netdev_flags flags;
>      const char *open_type;
> -    int mtu;
>      int error;
>
>      /* XXX reject devices already in some dp_netdev. */
> @@ -476,11 +473,6 @@ do_add_port(struct dp_netdev *dp, const char *devname, const char *type,
>      port->rx = rx;
>      port->type = xstrdup(type);
>
> -    error = netdev_get_mtu(netdev, &mtu);
> -    if (!error && mtu > dp->max_mtu) {
> -        dp->max_mtu = mtu;
> -    }
> -
>      hmap_insert(&dp->ports, &port->node, hash_int(odp_to_u32(port_no), 0));
>      seq_change(dp->port_seq);
>
> @@ -1301,18 +1293,22 @@ dpif_netdev_run(struct dpif *dpif)
>      struct dp_netdev_port *port;
>      struct dp_netdev *dp;
>      struct ofpbuf packet;
> -    size_t buf_size;
>
>      ovs_mutex_lock(&dp_netdev_mutex);
>      dp = get_dp_netdev(dpif);
>      ofpbuf_init(&packet, 0);
>
> -    buf_size = DP_NETDEV_HEADROOM + VLAN_ETH_HEADER_LEN + dp->max_mtu;
> -
>      HMAP_FOR_EACH (port, node, &dp->ports) {
> +        int buf_size;
>          int error;
> +        int mtu;
> +
> +        error = netdev_get_mtu(port->netdev, &mtu);
> +        if (error) {
> +            mtu = ETH_PAYLOAD_MAX;
> +        }
> +        buf_size = DP_NETDEV_HEADROOM + VLAN_ETH_HEADER_LEN + mtu;
>
> -        /* Reset packet contents. Packet data may have been stolen. */
>          ofpbuf_clear(&packet);
>          ofpbuf_reserve_with_tailroom(&packet, DP_NETDEV_HEADROOM, buf_size);
>
> --
> 1.7.10.4
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev



More information about the dev mailing list