mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 06:00:52 +07:00
tipc: implement configuration of UDP media MTU
In 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 <ying.xue@windriver.com> Acked-by: Jon Maloy <jon.maloy@ericsson.com> Signed-off-by: GhantaKrishnamurthy MohanKrishna <mohan.krishna.ghanta.krishnamurthy@ericsson.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a4dfa72d0a
commit
901271e040
@ -266,6 +266,7 @@ enum {
|
|||||||
TIPC_NLA_PROP_PRIO, /* u32 */
|
TIPC_NLA_PROP_PRIO, /* u32 */
|
||||||
TIPC_NLA_PROP_TOL, /* u32 */
|
TIPC_NLA_PROP_TOL, /* u32 */
|
||||||
TIPC_NLA_PROP_WIN, /* u32 */
|
TIPC_NLA_PROP_WIN, /* u32 */
|
||||||
|
TIPC_NLA_PROP_MTU, /* u32 */
|
||||||
|
|
||||||
__TIPC_NLA_PROP_MAX,
|
__TIPC_NLA_PROP_MAX,
|
||||||
TIPC_NLA_PROP_MAX = __TIPC_NLA_PROP_MAX - 1
|
TIPC_NLA_PROP_MAX = __TIPC_NLA_PROP_MAX - 1
|
||||||
|
@ -1029,6 +1029,9 @@ static int __tipc_nl_add_media(struct tipc_nl_msg *msg,
|
|||||||
goto prop_msg_full;
|
goto prop_msg_full;
|
||||||
if (nla_put_u32(msg->skb, TIPC_NLA_PROP_WIN, media->window))
|
if (nla_put_u32(msg->skb, TIPC_NLA_PROP_WIN, media->window))
|
||||||
goto prop_msg_full;
|
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, prop);
|
||||||
nla_nest_end(msg->skb, attrs);
|
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]);
|
m->priority = nla_get_u32(props[TIPC_NLA_PROP_PRIO]);
|
||||||
if (props[TIPC_NLA_PROP_WIN])
|
if (props[TIPC_NLA_PROP_WIN])
|
||||||
m->window = nla_get_u32(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;
|
return 0;
|
||||||
|
@ -94,6 +94,8 @@ struct tipc_bearer;
|
|||||||
* @priority: default link (and bearer) priority
|
* @priority: default link (and bearer) priority
|
||||||
* @tolerance: default time (in ms) before declaring link failure
|
* @tolerance: default time (in ms) before declaring link failure
|
||||||
* @window: default window (in packets) before declaring link congestion
|
* @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
|
* @type_id: TIPC media identifier
|
||||||
* @hwaddr_len: TIPC media address len
|
* @hwaddr_len: TIPC media address len
|
||||||
* @name: media name
|
* @name: media name
|
||||||
@ -118,6 +120,7 @@ struct tipc_media {
|
|||||||
u32 priority;
|
u32 priority;
|
||||||
u32 tolerance;
|
u32 tolerance;
|
||||||
u32 window;
|
u32 window;
|
||||||
|
u32 mtu;
|
||||||
u32 type_id;
|
u32 type_id;
|
||||||
u32 hwaddr_len;
|
u32 hwaddr_len;
|
||||||
char name[TIPC_MAX_MEDIA_NAME];
|
char name[TIPC_MAX_MEDIA_NAME];
|
||||||
|
@ -38,9 +38,23 @@
|
|||||||
#ifndef _TIPC_UDP_MEDIA_H
|
#ifndef _TIPC_UDP_MEDIA_H
|
||||||
#define _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_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_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);
|
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
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user