> -----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

Reply via email to