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
 | 
					 * 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,
 | 
					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)
 | 
									   struct station_info *sinfo)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int ret;
 | 
						int ret;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1546,6 +1546,24 @@ unsigned int ieee80211_get_num_supported_channels(struct wiphy *wiphy)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
EXPORT_SYMBOL(ieee80211_get_num_supported_channels);
 | 
					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 */
 | 
					/* See IEEE 802.1H for LLC/SNAP encapsulation/decapsulation */
 | 
				
			||||||
/* Ethernet-II snap header (RFC1042 for most EtherTypes) */
 | 
					/* Ethernet-II snap header (RFC1042 for most EtherTypes) */
 | 
				
			||||||
const unsigned char rfc1042_header[] __aligned(2) =
 | 
					const unsigned char rfc1042_header[] __aligned(2) =
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue