mac80211: New stat counters for multicast and unicast forwarded frames
This expands on the current fwded_frames stat counter which should be equal to the total of these two new counters. The new counters are called "fwded_mcast" and "fwded_unicast". Signed-off-by: Daniel Walker <dwalker@fifo99.com> Signed-off-by: Javier Cardona <javier@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
		
							parent
							
								
									e5539bcbf6
								
							
						
					
					
						commit
						c8a61a7d33
					
				| @ -116,6 +116,8 @@ IEEE80211_IF_FILE(peer, u.wds.remote_addr, MAC); | ||||
| 
 | ||||
| #ifdef CONFIG_MAC80211_MESH | ||||
| /* Mesh stats attributes */ | ||||
| IEEE80211_IF_FILE(fwded_mcast, u.mesh.mshstats.fwded_mcast, DEC); | ||||
| IEEE80211_IF_FILE(fwded_unicast, u.mesh.mshstats.fwded_unicast, DEC); | ||||
| IEEE80211_IF_FILE(fwded_frames, u.mesh.mshstats.fwded_frames, DEC); | ||||
| IEEE80211_IF_FILE(dropped_frames_ttl, u.mesh.mshstats.dropped_frames_ttl, DEC); | ||||
| IEEE80211_IF_FILE(dropped_frames_no_route, | ||||
| @ -205,6 +207,8 @@ static void add_mesh_stats(struct ieee80211_sub_if_data *sdata) | ||||
| { | ||||
| 	sdata->mesh_stats_dir = debugfs_create_dir("mesh_stats", | ||||
| 				sdata->debugfsdir); | ||||
| 	MESHSTATS_ADD(fwded_mcast); | ||||
| 	MESHSTATS_ADD(fwded_unicast); | ||||
| 	MESHSTATS_ADD(fwded_frames); | ||||
| 	MESHSTATS_ADD(dropped_frames_ttl); | ||||
| 	MESHSTATS_ADD(dropped_frames_no_route); | ||||
| @ -327,6 +331,8 @@ static void del_monitor_files(struct ieee80211_sub_if_data *sdata) | ||||
| 
 | ||||
| static void del_mesh_stats(struct ieee80211_sub_if_data *sdata) | ||||
| { | ||||
| 	MESHSTATS_DEL(fwded_mcast); | ||||
| 	MESHSTATS_DEL(fwded_unicast); | ||||
| 	MESHSTATS_DEL(fwded_frames); | ||||
| 	MESHSTATS_DEL(dropped_frames_ttl); | ||||
| 	MESHSTATS_DEL(dropped_frames_no_route); | ||||
|  | ||||
| @ -212,7 +212,9 @@ struct ieee80211_if_vlan { | ||||
| }; | ||||
| 
 | ||||
| struct mesh_stats { | ||||
| 	__u32 fwded_frames;		/* Mesh forwarded frames */ | ||||
| 	__u32 fwded_mcast;		/* Mesh forwarded multicast frames */ | ||||
| 	__u32 fwded_unicast;		/* Mesh forwarded unicast frames */ | ||||
| 	__u32 fwded_frames;		/* Mesh total forwarded frames */ | ||||
| 	__u32 dropped_frames_ttl;	/* Not transmitted since mesh_ttl == 0*/ | ||||
| 	__u32 dropped_frames_no_route;	/* Not transmitted, no route found */ | ||||
| 	atomic_t estab_plinks; | ||||
| @ -506,6 +508,8 @@ struct ieee80211_sub_if_data { | ||||
| #ifdef CONFIG_MAC80211_MESH | ||||
| 	struct dentry *mesh_stats_dir; | ||||
| 	struct { | ||||
| 		struct dentry *fwded_mcast; | ||||
| 		struct dentry *fwded_unicast; | ||||
| 		struct dentry *fwded_frames; | ||||
| 		struct dentry *dropped_frames_ttl; | ||||
| 		struct dentry *dropped_frames_no_route; | ||||
|  | ||||
| @ -497,6 +497,7 @@ static void hwmp_preq_frame_process(struct ieee80211_sub_if_data *sdata, | ||||
| 				hopcount, ttl, cpu_to_le32(lifetime), | ||||
| 				cpu_to_le32(metric), cpu_to_le32(preq_id), | ||||
| 				sdata); | ||||
| 		ifmsh->mshstats.fwded_mcast++; | ||||
| 		ifmsh->mshstats.fwded_frames++; | ||||
| 	} | ||||
| } | ||||
| @ -555,6 +556,8 @@ static void hwmp_prep_frame_process(struct ieee80211_sub_if_data *sdata, | ||||
| 		cpu_to_le32(lifetime), cpu_to_le32(metric), | ||||
| 		0, sdata); | ||||
| 	rcu_read_unlock(); | ||||
| 
 | ||||
| 	sdata->u.mesh.mshstats.fwded_unicast++; | ||||
| 	sdata->u.mesh.mshstats.fwded_frames++; | ||||
| 	return; | ||||
| 
 | ||||
|  | ||||
| @ -1550,7 +1550,10 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx) | ||||
| 			info->flags |= IEEE80211_TX_INTFL_NEED_TXPROCESSING; | ||||
| 			info->control.vif = &rx->sdata->vif; | ||||
| 			ieee80211_select_queue(local, fwd_skb); | ||||
| 			if (!is_multicast_ether_addr(fwd_hdr->addr1)) { | ||||
| 			if (is_multicast_ether_addr(fwd_hdr->addr1)) | ||||
| 				IEEE80211_IFSTA_MESH_CTR_INC(&sdata->u.mesh, | ||||
| 								fwded_mcast); | ||||
| 			else { | ||||
| 				int err; | ||||
| 				/*
 | ||||
| 				 * Save TA to addr1 to send TA a path error if a | ||||
| @ -1564,6 +1567,9 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx) | ||||
| 				 * later to the pending skb queue.  */ | ||||
| 				if (err) | ||||
| 					return RX_DROP_MONITOR; | ||||
| 
 | ||||
| 				IEEE80211_IFSTA_MESH_CTR_INC(&sdata->u.mesh, | ||||
| 								fwded_unicast); | ||||
| 			} | ||||
| 			IEEE80211_IFSTA_MESH_CTR_INC(&sdata->u.mesh, | ||||
| 						     fwded_frames); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user