18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Contains all definitions needed for the Libertas' MESH implementation. 48c2ecf20Sopenharmony_ci */ 58c2ecf20Sopenharmony_ci#ifndef _LBS_MESH_H_ 68c2ecf20Sopenharmony_ci#define _LBS_MESH_H_ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci#include <net/iw_handler.h> 108c2ecf20Sopenharmony_ci#include <net/lib80211.h> 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci#include "host.h" 138c2ecf20Sopenharmony_ci#include "dev.h" 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci#ifdef CONFIG_LIBERTAS_MESH 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_cistruct net_device; 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_civoid lbs_init_mesh(struct lbs_private *priv); 208c2ecf20Sopenharmony_civoid lbs_start_mesh(struct lbs_private *priv); 218c2ecf20Sopenharmony_ciint lbs_deinit_mesh(struct lbs_private *priv); 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_civoid lbs_remove_mesh(struct lbs_private *priv); 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_cistatic inline bool lbs_mesh_activated(struct lbs_private *priv) 268c2ecf20Sopenharmony_ci{ 278c2ecf20Sopenharmony_ci return !!priv->mesh_tlv; 288c2ecf20Sopenharmony_ci} 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ciint lbs_mesh_set_channel(struct lbs_private *priv, u8 channel); 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci/* Sending / Receiving */ 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_cistruct rxpd; 358c2ecf20Sopenharmony_cistruct txpd; 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_cistruct net_device *lbs_mesh_set_dev(struct lbs_private *priv, 388c2ecf20Sopenharmony_ci struct net_device *dev, struct rxpd *rxpd); 398c2ecf20Sopenharmony_civoid lbs_mesh_set_txpd(struct lbs_private *priv, 408c2ecf20Sopenharmony_ci struct net_device *dev, struct txpd *txpd); 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ci/* Command handling */ 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_cistruct cmd_ds_command; 468c2ecf20Sopenharmony_cistruct cmd_ds_mesh_access; 478c2ecf20Sopenharmony_cistruct cmd_ds_mesh_config; 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ci/* Ethtool statistics */ 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_cistruct ethtool_stats; 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_civoid lbs_mesh_ethtool_get_stats(struct net_device *dev, 558c2ecf20Sopenharmony_ci struct ethtool_stats *stats, uint64_t *data); 568c2ecf20Sopenharmony_ciint lbs_mesh_ethtool_get_sset_count(struct net_device *dev, int sset); 578c2ecf20Sopenharmony_civoid lbs_mesh_ethtool_get_strings(struct net_device *dev, 588c2ecf20Sopenharmony_ci uint32_t stringset, uint8_t *s); 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci#else 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ci#define lbs_init_mesh(priv) 648c2ecf20Sopenharmony_ci#define lbs_deinit_mesh(priv) 658c2ecf20Sopenharmony_ci#define lbs_start_mesh(priv) 668c2ecf20Sopenharmony_ci#define lbs_add_mesh(priv) 678c2ecf20Sopenharmony_ci#define lbs_remove_mesh(priv) 688c2ecf20Sopenharmony_ci#define lbs_mesh_set_dev(priv, dev, rxpd) (dev) 698c2ecf20Sopenharmony_ci#define lbs_mesh_set_txpd(priv, dev, txpd) 708c2ecf20Sopenharmony_ci#define lbs_mesh_set_channel(priv, channel) (0) 718c2ecf20Sopenharmony_ci#define lbs_mesh_activated(priv) (false) 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_ci#endif 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_ci 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ci#endif 78