linux/drivers/net/wireless/libertas/mesh.h
<<
>>
Prefs
   1/*
   2 * Contains all definitions needed for the Libertas' MESH implementation.
   3 */
   4#ifndef _LBS_MESH_H_
   5#define _LBS_MESH_H_
   6
   7
   8#include <net/iw_handler.h>
   9#include <net/lib80211.h>
  10
  11#include "host.h"
  12
  13#ifdef CONFIG_LIBERTAS_MESH
  14
  15/* Mesh statistics */
  16struct lbs_mesh_stats {
  17        u32     fwd_bcast_cnt;          /* Fwd: Broadcast counter */
  18        u32     fwd_unicast_cnt;        /* Fwd: Unicast counter */
  19        u32     fwd_drop_ttl;           /* Fwd: TTL zero */
  20        u32     fwd_drop_rbt;           /* Fwd: Recently Broadcasted */
  21        u32     fwd_drop_noroute;       /* Fwd: No route to Destination */
  22        u32     fwd_drop_nobuf;         /* Fwd: Run out of internal buffers */
  23        u32     drop_blind;             /* Rx:  Dropped by blinding table */
  24        u32     tx_failed_cnt;          /* Tx:  Failed transmissions */
  25};
  26
  27
  28struct net_device;
  29struct lbs_private;
  30
  31int lbs_init_mesh(struct lbs_private *priv);
  32int lbs_deinit_mesh(struct lbs_private *priv);
  33
  34int lbs_add_mesh(struct lbs_private *priv);
  35void lbs_remove_mesh(struct lbs_private *priv);
  36
  37
  38/* Sending / Receiving */
  39
  40struct rxpd;
  41struct txpd;
  42
  43struct net_device *lbs_mesh_set_dev(struct lbs_private *priv,
  44        struct net_device *dev, struct rxpd *rxpd);
  45void lbs_mesh_set_txpd(struct lbs_private *priv,
  46        struct net_device *dev, struct txpd *txpd);
  47
  48
  49/* Command handling */
  50
  51struct cmd_ds_command;
  52struct cmd_ds_mesh_access;
  53struct cmd_ds_mesh_config;
  54
  55int lbs_mesh_bt_add_del(struct lbs_private *priv, bool add, u8 *addr1);
  56int lbs_mesh_bt_reset(struct lbs_private *priv);
  57int lbs_mesh_bt_get_inverted(struct lbs_private *priv, bool *inverted);
  58int lbs_mesh_bt_set_inverted(struct lbs_private *priv, bool inverted);
  59int lbs_mesh_bt_get_entry(struct lbs_private *priv, u32 id, u8 *addr1);
  60
  61int lbs_cmd_fwt_access(struct lbs_private *priv, u16 cmd_action,
  62                        struct cmd_ds_fwt_access *cmd);
  63
  64int lbs_mesh_access(struct lbs_private *priv, uint16_t cmd_action,
  65                    struct cmd_ds_mesh_access *cmd);
  66int lbs_mesh_config_send(struct lbs_private *priv,
  67                         struct cmd_ds_mesh_config *cmd,
  68                         uint16_t action, uint16_t type);
  69int lbs_mesh_config(struct lbs_private *priv, uint16_t enable, uint16_t chan);
  70
  71
  72
  73/* Persistent configuration */
  74
  75void lbs_persist_config_init(struct net_device *net);
  76void lbs_persist_config_remove(struct net_device *net);
  77
  78
  79/* Ethtool statistics */
  80
  81struct ethtool_stats;
  82
  83void lbs_mesh_ethtool_get_stats(struct net_device *dev,
  84        struct ethtool_stats *stats, uint64_t *data);
  85int lbs_mesh_ethtool_get_sset_count(struct net_device *dev, int sset);
  86void lbs_mesh_ethtool_get_strings(struct net_device *dev,
  87        uint32_t stringset, uint8_t *s);
  88
  89
  90/* Accessors */
  91
  92#define lbs_mesh_open(priv) (priv->mesh_open)
  93#define lbs_mesh_connected(priv) (priv->mesh_connect_status == LBS_CONNECTED)
  94
  95#else
  96
  97#define lbs_init_mesh(priv)
  98#define lbs_deinit_mesh(priv)
  99#define lbs_add_mesh(priv)
 100#define lbs_remove_mesh(priv)
 101#define lbs_mesh_set_dev(priv, dev, rxpd) (dev)
 102#define lbs_mesh_set_txpd(priv, dev, txpd)
 103#define lbs_mesh_config(priv, enable, chan)
 104#define lbs_mesh_open(priv) (0)
 105#define lbs_mesh_connected(priv) (0)
 106
 107#endif
 108
 109
 110
 111#endif
 112