diff options
Diffstat (limited to 'net/tipc/bcast.c')
| -rw-r--r-- | net/tipc/bcast.c | 126 | 
1 files changed, 4 insertions, 122 deletions
| diff --git a/net/tipc/bcast.c b/net/tipc/bcast.c index 9dc239dfe192..e401108360a2 100644 --- a/net/tipc/bcast.c +++ b/net/tipc/bcast.c @@ -332,131 +332,15 @@ void tipc_bcast_remove_peer(struct net *net, struct tipc_link *rcv_l)  		tipc_sk_rcv(net, inputq);  } -static int __tipc_nl_add_bc_link_stat(struct sk_buff *skb, -				      struct tipc_stats *stats) -{ -	int i; -	struct nlattr *nest; - -	struct nla_map { -		__u32 key; -		__u32 val; -	}; - -	struct nla_map map[] = { -		{TIPC_NLA_STATS_RX_INFO, stats->recv_info}, -		{TIPC_NLA_STATS_RX_FRAGMENTS, stats->recv_fragments}, -		{TIPC_NLA_STATS_RX_FRAGMENTED, stats->recv_fragmented}, -		{TIPC_NLA_STATS_RX_BUNDLES, stats->recv_bundles}, -		{TIPC_NLA_STATS_RX_BUNDLED, stats->recv_bundled}, -		{TIPC_NLA_STATS_TX_INFO, stats->sent_info}, -		{TIPC_NLA_STATS_TX_FRAGMENTS, stats->sent_fragments}, -		{TIPC_NLA_STATS_TX_FRAGMENTED, stats->sent_fragmented}, -		{TIPC_NLA_STATS_TX_BUNDLES, stats->sent_bundles}, -		{TIPC_NLA_STATS_TX_BUNDLED, stats->sent_bundled}, -		{TIPC_NLA_STATS_RX_NACKS, stats->recv_nacks}, -		{TIPC_NLA_STATS_RX_DEFERRED, stats->deferred_recv}, -		{TIPC_NLA_STATS_TX_NACKS, stats->sent_nacks}, -		{TIPC_NLA_STATS_TX_ACKS, stats->sent_acks}, -		{TIPC_NLA_STATS_RETRANSMITTED, stats->retransmitted}, -		{TIPC_NLA_STATS_DUPLICATES, stats->duplicates}, -		{TIPC_NLA_STATS_LINK_CONGS, stats->link_congs}, -		{TIPC_NLA_STATS_MAX_QUEUE, stats->max_queue_sz}, -		{TIPC_NLA_STATS_AVG_QUEUE, stats->queue_sz_counts ? -			(stats->accu_queue_sz / stats->queue_sz_counts) : 0} -	}; - -	nest = nla_nest_start(skb, TIPC_NLA_LINK_STATS); -	if (!nest) -		return -EMSGSIZE; - -	for (i = 0; i <  ARRAY_SIZE(map); i++) -		if (nla_put_u32(skb, map[i].key, map[i].val)) -			goto msg_full; - -	nla_nest_end(skb, nest); - -	return 0; -msg_full: -	nla_nest_cancel(skb, nest); - -	return -EMSGSIZE; -} - -int tipc_nl_add_bc_link(struct net *net, struct tipc_nl_msg *msg) -{ -	int err; -	void *hdr; -	struct nlattr *attrs; -	struct nlattr *prop; -	struct tipc_net *tn = net_generic(net, tipc_net_id); -	struct tipc_link *bcl = tn->bcl; - -	if (!bcl) -		return 0; - -	tipc_bcast_lock(net); - -	hdr = genlmsg_put(msg->skb, msg->portid, msg->seq, &tipc_genl_family, -			  NLM_F_MULTI, TIPC_NL_LINK_GET); -	if (!hdr) -		return -EMSGSIZE; - -	attrs = nla_nest_start(msg->skb, TIPC_NLA_LINK); -	if (!attrs) -		goto msg_full; - -	/* The broadcast link is always up */ -	if (nla_put_flag(msg->skb, TIPC_NLA_LINK_UP)) -		goto attr_msg_full; - -	if (nla_put_flag(msg->skb, TIPC_NLA_LINK_BROADCAST)) -		goto attr_msg_full; -	if (nla_put_string(msg->skb, TIPC_NLA_LINK_NAME, bcl->name)) -		goto attr_msg_full; -	if (nla_put_u32(msg->skb, TIPC_NLA_LINK_RX, bcl->rcv_nxt)) -		goto attr_msg_full; -	if (nla_put_u32(msg->skb, TIPC_NLA_LINK_TX, bcl->snd_nxt)) -		goto attr_msg_full; - -	prop = nla_nest_start(msg->skb, TIPC_NLA_LINK_PROP); -	if (!prop) -		goto attr_msg_full; -	if (nla_put_u32(msg->skb, TIPC_NLA_PROP_WIN, bcl->window)) -		goto prop_msg_full; -	nla_nest_end(msg->skb, prop); - -	err = __tipc_nl_add_bc_link_stat(msg->skb, &bcl->stats); -	if (err) -		goto attr_msg_full; - -	tipc_bcast_unlock(net); -	nla_nest_end(msg->skb, attrs); -	genlmsg_end(msg->skb, hdr); - -	return 0; - -prop_msg_full: -	nla_nest_cancel(msg->skb, prop); -attr_msg_full: -	nla_nest_cancel(msg->skb, attrs); -msg_full: -	tipc_bcast_unlock(net); -	genlmsg_cancel(msg->skb, hdr); - -	return -EMSGSIZE; -} -  int tipc_bclink_reset_stats(struct net *net)  { -	struct tipc_net *tn = net_generic(net, tipc_net_id); -	struct tipc_link *bcl = tn->bcl; +	struct tipc_link *l = tipc_bc_sndlink(net); -	if (!bcl) +	if (!l)  		return -ENOPROTOOPT;  	tipc_bcast_lock(net); -	memset(&bcl->stats, 0, sizeof(bcl->stats)); +	tipc_link_reset_stats(l);  	tipc_bcast_unlock(net);  	return 0;  } @@ -530,9 +414,7 @@ enomem:  void tipc_bcast_reinit(struct net *net)  { -	struct tipc_bc_base *b = tipc_bc_base(net); - -	msg_set_prevnode(b->link->pmsg, tipc_own_addr(net)); +	tipc_link_reinit(tipc_bc_sndlink(net), tipc_own_addr(net));  }  void tipc_bcast_stop(struct net *net) | 
