mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	cfg80211: implement cfg80211_get_station cfg80211 API
Implement and export the new cfg80211_get_station() API. This utility can be used by other kernel modules to obtain detailed information about a given wireless station. It will be in particular useful to batman-adv which will implement a wireless rate based metric. Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
		
							parent
							
								
									cca674d47e
								
							
						
					
					
						commit
						7406353d43
					
				
					 3 changed files with 32 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -1074,6 +1074,19 @@ struct station_info {
 | 
			
		|||
	 */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * cfg80211_get_station - retrieve information about a given station
 | 
			
		||||
 * @dev: the device where the station is supposed to be connected to
 | 
			
		||||
 * @mac_addr: the mac address of the station of interest
 | 
			
		||||
 * @sinfo: pointer to the structure to fill with the information
 | 
			
		||||
 *
 | 
			
		||||
 * Returns 0 on success and sinfo is filled with the available information
 | 
			
		||||
 * otherwise returns a negative error code and the content of sinfo has to be
 | 
			
		||||
 * considered undefined.
 | 
			
		||||
 */
 | 
			
		||||
int cfg80211_get_station(struct net_device *dev, const u8 *mac_addr,
 | 
			
		||||
			 struct station_info *sinfo);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * enum monitor_flags - monitor flags
 | 
			
		||||
 *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -199,7 +199,7 @@ static inline int rdev_change_station(struct cfg80211_registered_device *rdev,
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
static inline int rdev_get_station(struct cfg80211_registered_device *rdev,
 | 
			
		||||
				   struct net_device *dev, u8 *mac,
 | 
			
		||||
				   struct net_device *dev, const u8 *mac,
 | 
			
		||||
				   struct station_info *sinfo)
 | 
			
		||||
{
 | 
			
		||||
	int ret;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1546,6 +1546,24 @@ unsigned int ieee80211_get_num_supported_channels(struct wiphy *wiphy)
 | 
			
		|||
}
 | 
			
		||||
EXPORT_SYMBOL(ieee80211_get_num_supported_channels);
 | 
			
		||||
 | 
			
		||||
int cfg80211_get_station(struct net_device *dev, const u8 *mac_addr,
 | 
			
		||||
			 struct station_info *sinfo)
 | 
			
		||||
{
 | 
			
		||||
	struct cfg80211_registered_device *rdev;
 | 
			
		||||
	struct wireless_dev *wdev;
 | 
			
		||||
 | 
			
		||||
	wdev = dev->ieee80211_ptr;
 | 
			
		||||
	if (!wdev)
 | 
			
		||||
		return -EOPNOTSUPP;
 | 
			
		||||
 | 
			
		||||
	rdev = wiphy_to_rdev(wdev->wiphy);
 | 
			
		||||
	if (!rdev->ops->get_station)
 | 
			
		||||
		return -EOPNOTSUPP;
 | 
			
		||||
 | 
			
		||||
	return rdev_get_station(rdev, dev, mac_addr, sinfo);
 | 
			
		||||
}
 | 
			
		||||
EXPORT_SYMBOL(cfg80211_get_station);
 | 
			
		||||
 | 
			
		||||
/* See IEEE 802.1H for LLC/SNAP encapsulation/decapsulation */
 | 
			
		||||
/* Ethernet-II snap header (RFC1042 for most EtherTypes) */
 | 
			
		||||
const unsigned char rfc1042_header[] __aligned(2) =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue