| 
									
										
										
										
											2011-04-26 15:25:29 -07:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Contains all definitions needed for the Libertas' MESH implementation. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2009-11-25 13:09:32 +01:00
										 |  |  | #ifndef _LBS_MESH_H_
 | 
					
						
							|  |  |  | #define _LBS_MESH_H_
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <net/iw_handler.h>
 | 
					
						
							| 
									
										
										
										
											2009-11-25 13:11:16 +01:00
										 |  |  | #include <net/lib80211.h>
 | 
					
						
							| 
									
										
										
										
											2009-11-25 13:09:32 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-27 13:03:46 -07:00
										 |  |  | #include "host.h"
 | 
					
						
							| 
									
										
										
										
											2011-07-21 20:43:17 +01:00
										 |  |  | #include "dev.h"
 | 
					
						
							| 
									
										
										
										
											2009-11-25 13:09:32 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-02 15:26:02 +01:00
										 |  |  | #ifdef CONFIG_LIBERTAS_MESH
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-25 13:09:32 +01:00
										 |  |  | struct net_device; | 
					
						
							| 
									
										
										
										
											2009-11-25 13:10:15 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | int lbs_init_mesh(struct lbs_private *priv); | 
					
						
							| 
									
										
										
										
											2011-07-21 20:43:17 +01:00
										 |  |  | void lbs_start_mesh(struct lbs_private *priv); | 
					
						
							| 
									
										
										
										
											2009-11-25 13:10:15 +01:00
										 |  |  | int lbs_deinit_mesh(struct lbs_private *priv); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void lbs_remove_mesh(struct lbs_private *priv); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-21 20:43:17 +01:00
										 |  |  | static inline bool lbs_mesh_activated(struct lbs_private *priv) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	/* Mesh SSID is only programmed after successful init */ | 
					
						
							|  |  |  | 	return priv->mesh_ssid_len != 0; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int lbs_mesh_set_channel(struct lbs_private *priv, u8 channel); | 
					
						
							| 
									
										
										
										
											2009-11-25 13:10:15 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* Sending / Receiving */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct rxpd; | 
					
						
							|  |  |  | struct txpd; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct net_device *lbs_mesh_set_dev(struct lbs_private *priv, | 
					
						
							|  |  |  | 	struct net_device *dev, struct rxpd *rxpd); | 
					
						
							|  |  |  | void lbs_mesh_set_txpd(struct lbs_private *priv, | 
					
						
							|  |  |  | 	struct net_device *dev, struct txpd *txpd); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-25 13:11:16 +01:00
										 |  |  | /* Command handling */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct cmd_ds_command; | 
					
						
							| 
									
										
										
										
											2009-12-02 15:25:58 +01:00
										 |  |  | struct cmd_ds_mesh_access; | 
					
						
							|  |  |  | struct cmd_ds_mesh_config; | 
					
						
							| 
									
										
										
										
											2009-11-25 13:11:16 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-25 13:10:15 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-25 13:10:49 +01:00
										 |  |  | /* Ethtool statistics */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct ethtool_stats; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void lbs_mesh_ethtool_get_stats(struct net_device *dev, | 
					
						
							|  |  |  | 	struct ethtool_stats *stats, uint64_t *data); | 
					
						
							|  |  |  | int lbs_mesh_ethtool_get_sset_count(struct net_device *dev, int sset); | 
					
						
							|  |  |  | void lbs_mesh_ethtool_get_strings(struct net_device *dev, | 
					
						
							|  |  |  | 	uint32_t stringset, uint8_t *s); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-02 15:26:02 +01:00
										 |  |  | #else
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define lbs_init_mesh(priv)
 | 
					
						
							|  |  |  | #define lbs_deinit_mesh(priv)
 | 
					
						
							| 
									
										
										
										
											2011-07-21 20:43:17 +01:00
										 |  |  | #define lbs_start_mesh(priv)
 | 
					
						
							| 
									
										
										
										
											2009-12-02 15:26:02 +01:00
										 |  |  | #define lbs_add_mesh(priv)
 | 
					
						
							|  |  |  | #define lbs_remove_mesh(priv)
 | 
					
						
							|  |  |  | #define lbs_mesh_set_dev(priv, dev, rxpd) (dev)
 | 
					
						
							|  |  |  | #define lbs_mesh_set_txpd(priv, dev, txpd)
 | 
					
						
							| 
									
										
										
										
											2011-07-21 20:43:17 +01:00
										 |  |  | #define lbs_mesh_set_channel(priv, channel) (0)
 | 
					
						
							|  |  |  | #define lbs_mesh_activated(priv) (false)
 | 
					
						
							| 
									
										
										
										
											2009-12-02 15:26:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-02 15:26:01 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-25 13:09:32 +01:00
										 |  |  | #endif
 |