linux/drivers/staging/wimax/wimax-internal.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * Linux WiMAX
   4 * Internal API for kernel space WiMAX stack
   5 *
   6 * Copyright (C) 2007 Intel Corporation <linux-wimax@intel.com>
   7 * Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
   8 *
   9 * This header file is for declarations and definitions internal to
  10 * the WiMAX stack. For public APIs and documentation, see
  11 * include/net/wimax.h and include/linux/wimax.h.
  12 */
  13
  14#ifndef __WIMAX_INTERNAL_H__
  15#define __WIMAX_INTERNAL_H__
  16#ifdef __KERNEL__
  17
  18#ifdef pr_fmt
  19#undef pr_fmt
  20#endif
  21
  22#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
  23
  24#include <linux/device.h>
  25#include "net-wimax.h"
  26
  27
  28/*
  29 * Decide if a (locked) device is ready for use
  30 *
  31 * Before using the device structure, it must be locked
  32 * (wimax_dev->mutex). As well, most operations need to call this
  33 * function to check if the state is the right one.
  34 *
  35 * An error value will be returned if the state is not the right
  36 * one. In that case, the caller should not attempt to use the device
  37 * and just unlock it.
  38 */
  39static inline __must_check
  40int wimax_dev_is_ready(struct wimax_dev *wimax_dev)
  41{
  42        if (wimax_dev->state == __WIMAX_ST_NULL)
  43                return -EINVAL; /* Device is not even registered! */
  44        if (wimax_dev->state == WIMAX_ST_DOWN)
  45                return -ENOMEDIUM;
  46        if (wimax_dev->state == __WIMAX_ST_QUIESCING)
  47                return -ESHUTDOWN;
  48        return 0;
  49}
  50
  51
  52static inline
  53void __wimax_state_set(struct wimax_dev *wimax_dev, enum wimax_st state)
  54{
  55        wimax_dev->state = state;
  56}
  57void __wimax_state_change(struct wimax_dev *, enum wimax_st);
  58
  59#ifdef CONFIG_DEBUG_FS
  60void wimax_debugfs_add(struct wimax_dev *);
  61void wimax_debugfs_rm(struct wimax_dev *);
  62#else
  63static inline void wimax_debugfs_add(struct wimax_dev *wimax_dev) {}
  64static inline void wimax_debugfs_rm(struct wimax_dev *wimax_dev) {}
  65#endif
  66
  67void wimax_id_table_add(struct wimax_dev *);
  68struct wimax_dev *wimax_dev_get_by_genl_info(struct genl_info *, int);
  69void wimax_id_table_rm(struct wimax_dev *);
  70void wimax_id_table_release(void);
  71
  72int wimax_rfkill_add(struct wimax_dev *);
  73void wimax_rfkill_rm(struct wimax_dev *);
  74
  75/* generic netlink */
  76extern struct genl_family wimax_gnl_family;
  77
  78/* ops */
  79int wimax_gnl_doit_msg_from_user(struct sk_buff *skb, struct genl_info *info);
  80int wimax_gnl_doit_reset(struct sk_buff *skb, struct genl_info *info);
  81int wimax_gnl_doit_rfkill(struct sk_buff *skb, struct genl_info *info);
  82int wimax_gnl_doit_state_get(struct sk_buff *skb, struct genl_info *info);
  83
  84#endif /* #ifdef __KERNEL__ */
  85#endif /* #ifndef __WIMAX_INTERNAL_H__ */
  86