18973a6e770fc891f92daacbc1c92c7cd396fcf7eRandy Dunlap/* 28973a6e770fc891f92daacbc1c92c7cd396fcf7eRandy Dunlap * Contains all definitions needed for the Libertas' MESH implementation. 38973a6e770fc891f92daacbc1c92c7cd396fcf7eRandy Dunlap */ 45e8e8b5759566b76bdf36046ae015796676a423cHolger Schurig#ifndef _LBS_MESH_H_ 55e8e8b5759566b76bdf36046ae015796676a423cHolger Schurig#define _LBS_MESH_H_ 65e8e8b5759566b76bdf36046ae015796676a423cHolger Schurig 75e8e8b5759566b76bdf36046ae015796676a423cHolger Schurig 85e8e8b5759566b76bdf36046ae015796676a423cHolger Schurig#include <net/iw_handler.h> 9ece1e3c61e59ba184150e5aff57bbc6355613e3eHolger Schurig#include <net/lib80211.h> 105e8e8b5759566b76bdf36046ae015796676a423cHolger Schurig 11a6bb1bcebced1eeed6a96f37cda7cbb7cbd6dae6Dan Williams#include "host.h" 1249fee69204035247fd2a5828863fc6f633e829f2Daniel Drake#include "dev.h" 135e8e8b5759566b76bdf36046ae015796676a423cHolger Schurig 144143a23de096910e3ceb0939f41de6ffb8c59475Holger Schurig#ifdef CONFIG_LIBERTAS_MESH 154143a23de096910e3ceb0939f41de6ffb8c59475Holger Schurig 165e8e8b5759566b76bdf36046ae015796676a423cHolger Schurigstruct net_device; 17e0e42da3a4df6f487b59dad608db56e25001bcdbHolger Schurig 18e0e42da3a4df6f487b59dad608db56e25001bcdbHolger Schurigint lbs_init_mesh(struct lbs_private *priv); 1949fee69204035247fd2a5828863fc6f633e829f2Daniel Drakevoid lbs_start_mesh(struct lbs_private *priv); 20e0e42da3a4df6f487b59dad608db56e25001bcdbHolger Schurigint lbs_deinit_mesh(struct lbs_private *priv); 21e0e42da3a4df6f487b59dad608db56e25001bcdbHolger Schurig 22e0e42da3a4df6f487b59dad608db56e25001bcdbHolger Schurigvoid lbs_remove_mesh(struct lbs_private *priv); 23e0e42da3a4df6f487b59dad608db56e25001bcdbHolger Schurig 2449fee69204035247fd2a5828863fc6f633e829f2Daniel Drakestatic inline bool lbs_mesh_activated(struct lbs_private *priv) 2549fee69204035247fd2a5828863fc6f633e829f2Daniel Drake{ 2649fee69204035247fd2a5828863fc6f633e829f2Daniel Drake /* Mesh SSID is only programmed after successful init */ 2749fee69204035247fd2a5828863fc6f633e829f2Daniel Drake return priv->mesh_ssid_len != 0; 2849fee69204035247fd2a5828863fc6f633e829f2Daniel Drake} 2949fee69204035247fd2a5828863fc6f633e829f2Daniel Drake 3049fee69204035247fd2a5828863fc6f633e829f2Daniel Drakeint lbs_mesh_set_channel(struct lbs_private *priv, u8 channel); 31e0e42da3a4df6f487b59dad608db56e25001bcdbHolger Schurig 32e0e42da3a4df6f487b59dad608db56e25001bcdbHolger Schurig/* Sending / Receiving */ 33e0e42da3a4df6f487b59dad608db56e25001bcdbHolger Schurig 34e0e42da3a4df6f487b59dad608db56e25001bcdbHolger Schurigstruct rxpd; 35e0e42da3a4df6f487b59dad608db56e25001bcdbHolger Schurigstruct txpd; 36e0e42da3a4df6f487b59dad608db56e25001bcdbHolger Schurig 37e0e42da3a4df6f487b59dad608db56e25001bcdbHolger Schurigstruct net_device *lbs_mesh_set_dev(struct lbs_private *priv, 38e0e42da3a4df6f487b59dad608db56e25001bcdbHolger Schurig struct net_device *dev, struct rxpd *rxpd); 39e0e42da3a4df6f487b59dad608db56e25001bcdbHolger Schurigvoid lbs_mesh_set_txpd(struct lbs_private *priv, 40e0e42da3a4df6f487b59dad608db56e25001bcdbHolger Schurig struct net_device *dev, struct txpd *txpd); 41e0e42da3a4df6f487b59dad608db56e25001bcdbHolger Schurig 42e0e42da3a4df6f487b59dad608db56e25001bcdbHolger Schurig 43ece1e3c61e59ba184150e5aff57bbc6355613e3eHolger Schurig/* Command handling */ 44ece1e3c61e59ba184150e5aff57bbc6355613e3eHolger Schurig 45ece1e3c61e59ba184150e5aff57bbc6355613e3eHolger Schurigstruct cmd_ds_command; 4655e1ff924414111a6afbfde00375a1302aef9353Holger Schurigstruct cmd_ds_mesh_access; 4755e1ff924414111a6afbfde00375a1302aef9353Holger Schurigstruct cmd_ds_mesh_config; 48ece1e3c61e59ba184150e5aff57bbc6355613e3eHolger Schurig 49e0e42da3a4df6f487b59dad608db56e25001bcdbHolger Schurig 50c7fe64cf4a08561a9e8f57e6018a504881236e34Holger Schurig/* Ethtool statistics */ 51c7fe64cf4a08561a9e8f57e6018a504881236e34Holger Schurig 52c7fe64cf4a08561a9e8f57e6018a504881236e34Holger Schurigstruct ethtool_stats; 53c7fe64cf4a08561a9e8f57e6018a504881236e34Holger Schurig 54c7fe64cf4a08561a9e8f57e6018a504881236e34Holger Schurigvoid lbs_mesh_ethtool_get_stats(struct net_device *dev, 55c7fe64cf4a08561a9e8f57e6018a504881236e34Holger Schurig struct ethtool_stats *stats, uint64_t *data); 56c7fe64cf4a08561a9e8f57e6018a504881236e34Holger Schurigint lbs_mesh_ethtool_get_sset_count(struct net_device *dev, int sset); 57c7fe64cf4a08561a9e8f57e6018a504881236e34Holger Schurigvoid lbs_mesh_ethtool_get_strings(struct net_device *dev, 58c7fe64cf4a08561a9e8f57e6018a504881236e34Holger Schurig uint32_t stringset, uint8_t *s); 59c7fe64cf4a08561a9e8f57e6018a504881236e34Holger Schurig 60c7fe64cf4a08561a9e8f57e6018a504881236e34Holger Schurig 614143a23de096910e3ceb0939f41de6ffb8c59475Holger Schurig#else 624143a23de096910e3ceb0939f41de6ffb8c59475Holger Schurig 634143a23de096910e3ceb0939f41de6ffb8c59475Holger Schurig#define lbs_init_mesh(priv) 644143a23de096910e3ceb0939f41de6ffb8c59475Holger Schurig#define lbs_deinit_mesh(priv) 6549fee69204035247fd2a5828863fc6f633e829f2Daniel Drake#define lbs_start_mesh(priv) 664143a23de096910e3ceb0939f41de6ffb8c59475Holger Schurig#define lbs_add_mesh(priv) 674143a23de096910e3ceb0939f41de6ffb8c59475Holger Schurig#define lbs_remove_mesh(priv) 684143a23de096910e3ceb0939f41de6ffb8c59475Holger Schurig#define lbs_mesh_set_dev(priv, dev, rxpd) (dev) 694143a23de096910e3ceb0939f41de6ffb8c59475Holger Schurig#define lbs_mesh_set_txpd(priv, dev, txpd) 7049fee69204035247fd2a5828863fc6f633e829f2Daniel Drake#define lbs_mesh_set_channel(priv, channel) (0) 7149fee69204035247fd2a5828863fc6f633e829f2Daniel Drake#define lbs_mesh_activated(priv) (false) 724143a23de096910e3ceb0939f41de6ffb8c59475Holger Schurig 734143a23de096910e3ceb0939f41de6ffb8c59475Holger Schurig#endif 744143a23de096910e3ceb0939f41de6ffb8c59475Holger Schurig 754143a23de096910e3ceb0939f41de6ffb8c59475Holger Schurig 76602114ae595af6c89eab149cf9f939e3f7ef4a34Holger Schurig 775e8e8b5759566b76bdf36046ae015796676a423cHolger Schurig#endif 78