Acked-by: Ethan Jackson <et...@nicira.com>
On Fri, Dec 27, 2013 at 8:03 PM, Ben Pfaff <b...@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 <b...@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@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev