1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Contains all definitions needed for the Libertas' MESH implementation. 4 */ 5 #ifndef _LBS_MESH_H_ 6 #define _LBS_MESH_H_ 7 8 9 #include <net/iw_handler.h> 10 11 #include "host.h" 12 #include "dev.h" 13 14 #ifdef CONFIG_LIBERTAS_MESH 15 16 struct net_device; 17 18 void lbs_init_mesh(struct lbs_private *priv); 19 void lbs_start_mesh(struct lbs_private *priv); 20 int lbs_deinit_mesh(struct lbs_private *priv); 21 22 void lbs_remove_mesh(struct lbs_private *priv); 23 24 static inline bool lbs_mesh_activated(struct lbs_private *priv) 25 { 26 return !!priv->mesh_tlv; 27 } 28 29 int lbs_mesh_set_channel(struct lbs_private *priv, u8 channel); 30 31 /* Sending / Receiving */ 32 33 struct rxpd; 34 struct txpd; 35 36 struct net_device *lbs_mesh_set_dev(struct lbs_private *priv, 37 struct net_device *dev, struct rxpd *rxpd); 38 void lbs_mesh_set_txpd(struct lbs_private *priv, 39 struct net_device *dev, struct txpd *txpd); 40 41 42 /* Command handling */ 43 44 struct cmd_ds_command; 45 struct cmd_ds_mesh_access; 46 struct cmd_ds_mesh_config; 47 48 49 /* Ethtool statistics */ 50 51 struct ethtool_stats; 52 53 void lbs_mesh_ethtool_get_stats(struct net_device *dev, 54 struct ethtool_stats *stats, uint64_t *data); 55 int lbs_mesh_ethtool_get_sset_count(struct net_device *dev, int sset); 56 void lbs_mesh_ethtool_get_strings(struct net_device *dev, 57 uint32_t stringset, uint8_t *s); 58 59 60 #else 61 62 #define lbs_init_mesh(priv) do { } while (0) 63 #define lbs_deinit_mesh(priv) do { } while (0) 64 #define lbs_start_mesh(priv) do { } while (0) 65 #define lbs_add_mesh(priv) do { } while (0) 66 #define lbs_remove_mesh(priv) do { } while (0) 67 #define lbs_mesh_set_dev(priv, dev, rxpd) (dev) 68 #define lbs_mesh_set_txpd(priv, dev, txpd) do { } while (0) 69 #define lbs_mesh_set_channel(priv, channel) (0) 70 #define lbs_mesh_activated(priv) (false) 71 72 #endif 73 74 75 76 #endif 77