> -----Original Message----- > From: Mohan Krishna Ghanta Krishnamurthy > Sent: Monday, April 09, 2018 12:24 > To: [email protected]; Jon Maloy > <[email protected]>; [email protected]; > [email protected]; Mohan Krishna Ghanta Krishnamurthy > <[email protected]> > Subject: [net-next 2/3] tipc: implement configuration of UDP media MTU > > Currently, MTU of UDP bearers are set to default value of 14k.
In the previous commit, we changed the default emulated MTU for UDP bearers to 14k. > > This commit adds the functionality to set/change the default value by > configuring new MTU for UDP media. UDP bearer(s) have to be disabled and > enabled back for the new MTU to take effect. > > Acked-by: Ying Xue <[email protected]> > Acked-by: Jon Maloy <[email protected]> Still acked by me ///jon > Signed-off-by: GhantaKrishnamurthy MohanKrishna > <[email protected]> > --- > include/uapi/linux/tipc_netlink.h | 1 + > net/tipc/bearer.c | 13 +++++++++++++ > net/tipc/bearer.h | 3 +++ > net/tipc/udp_media.h | 14 ++++++++++++++ > 4 files changed, 31 insertions(+) > > diff --git a/include/uapi/linux/tipc_netlink.h > b/include/uapi/linux/tipc_netlink.h > index 0affb682e5e3..85c11982c89b 100644 > --- a/include/uapi/linux/tipc_netlink.h > +++ b/include/uapi/linux/tipc_netlink.h > @@ -266,6 +266,7 @@ enum { > TIPC_NLA_PROP_PRIO, /* u32 */ > TIPC_NLA_PROP_TOL, /* u32 */ > TIPC_NLA_PROP_WIN, /* u32 */ > + TIPC_NLA_PROP_MTU, /* u32 */ > > __TIPC_NLA_PROP_MAX, > TIPC_NLA_PROP_MAX = __TIPC_NLA_PROP_MAX - 1 diff --git > a/net/tipc/bearer.c b/net/tipc/bearer.c index f7d47c89d658..a22caf9e5a18 > 100644 > --- a/net/tipc/bearer.c > +++ b/net/tipc/bearer.c > @@ -1029,6 +1029,9 @@ static int __tipc_nl_add_media(struct tipc_nl_msg > *msg, > goto prop_msg_full; > if (nla_put_u32(msg->skb, TIPC_NLA_PROP_WIN, media->window)) > goto prop_msg_full; > + if (media->type_id == TIPC_MEDIA_TYPE_UDP) > + if (nla_put_u32(msg->skb, TIPC_NLA_PROP_MTU, media- > >mtu)) > + goto prop_msg_full; > > nla_nest_end(msg->skb, prop); > nla_nest_end(msg->skb, attrs); > @@ -1158,6 +1161,16 @@ int __tipc_nl_media_set(struct sk_buff *skb, > struct genl_info *info) > m->priority = > nla_get_u32(props[TIPC_NLA_PROP_PRIO]); > if (props[TIPC_NLA_PROP_WIN]) > m->window = > nla_get_u32(props[TIPC_NLA_PROP_WIN]); > + if (props[TIPC_NLA_PROP_MTU]) { > + if (m->type_id != TIPC_MEDIA_TYPE_UDP) > + return -EINVAL; > +#ifdef CONFIG_TIPC_MEDIA_UDP > + if (tipc_udp_mtu_bad(nla_get_u32 > + (props[TIPC_NLA_PROP_MTU]))) > + return -EINVAL; > + m->mtu = > nla_get_u32(props[TIPC_NLA_PROP_MTU]); > +#endif > + } > } > > return 0; > diff --git a/net/tipc/bearer.h b/net/tipc/bearer.h index > 6efcee63a381..394290cbbb1d 100644 > --- a/net/tipc/bearer.h > +++ b/net/tipc/bearer.h > @@ -94,6 +94,8 @@ struct tipc_bearer; > * @priority: default link (and bearer) priority > * @tolerance: default time (in ms) before declaring link failure > * @window: default window (in packets) before declaring link congestion > + * @mtu: max packet size bearer can support for media type not > + dependent on > + * underlying device MTU > * @type_id: TIPC media identifier > * @hwaddr_len: TIPC media address len > * @name: media name > @@ -118,6 +120,7 @@ struct tipc_media { > u32 priority; > u32 tolerance; > u32 window; > + u32 mtu; > u32 type_id; > u32 hwaddr_len; > char name[TIPC_MAX_MEDIA_NAME]; > diff --git a/net/tipc/udp_media.h b/net/tipc/udp_media.h index > 281bbae87726..e7455cc73e16 100644 > --- a/net/tipc/udp_media.h > +++ b/net/tipc/udp_media.h > @@ -38,9 +38,23 @@ > #ifndef _TIPC_UDP_MEDIA_H > #define _TIPC_UDP_MEDIA_H > > +#include <linux/ip.h> > +#include <linux/udp.h> > + > int tipc_udp_nl_bearer_add(struct tipc_bearer *b, struct nlattr *attr); int > tipc_udp_nl_add_bearer_data(struct tipc_nl_msg *msg, struct tipc_bearer > *b); int tipc_udp_nl_dump_remoteip(struct sk_buff *skb, struct > netlink_callback *cb); > > +/* check if configured MTU is too low for tipc headers */ static inline > +bool tipc_udp_mtu_bad(u32 mtu) { > + if (mtu >= (TIPC_MIN_BEARER_MTU + sizeof(struct iphdr) + > + sizeof(struct udphdr))) > + return false; > + > + pr_warn("MTU too low for tipc bearer\n"); > + return true; > +} > + > #endif > #endif > -- > 2.1.4 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ tipc-discussion mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/tipc-discussion
