#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/if_ether.h>
#include <linux/nospec.h>
#include "core.h"
#include "bus.h"
#include "trans.h"
#include "commands.h"
#include "cfg80211.h"
#include "event.h"
#include "util.h"
#include "switchdev.h"
#define QTNF_PRIMARY_VIF_IDX …
static bool slave_radar = …;
module_param(slave_radar, bool, 0644);
MODULE_PARM_DESC(…) …;
static bool dfs_offload;
module_param(dfs_offload, bool, 0644);
MODULE_PARM_DESC(…) …;
static struct dentry *qtnf_debugfs_dir;
bool qtnf_slave_radar_get(void)
{ … }
bool qtnf_dfs_offload_get(void)
{ … }
struct qtnf_wmac *qtnf_core_get_mac(const struct qtnf_bus *bus, u8 macid)
{ … }
static int qtnf_netdev_open(struct net_device *ndev)
{ … }
static int qtnf_netdev_close(struct net_device *ndev)
{ … }
static void qtnf_packet_send_hi_pri(struct sk_buff *skb)
{ … }
static netdev_tx_t
qtnf_netdev_hard_start_xmit(struct sk_buff *skb, struct net_device *ndev)
{ … }
static void qtnf_netdev_tx_timeout(struct net_device *ndev, unsigned int txqueue)
{ … }
static int qtnf_netdev_set_mac_address(struct net_device *ndev, void *addr)
{ … }
static int qtnf_netdev_port_parent_id(struct net_device *ndev,
struct netdev_phys_item_id *ppid)
{ … }
const struct net_device_ops qtnf_netdev_ops = …;
static int qtnf_mac_init_single_band(struct wiphy *wiphy,
struct qtnf_wmac *mac,
enum nl80211_band band)
{ … }
static int qtnf_mac_init_bands(struct qtnf_wmac *mac)
{ … }
struct qtnf_vif *qtnf_mac_get_free_vif(struct qtnf_wmac *mac)
{ … }
struct qtnf_vif *qtnf_mac_get_base_vif(struct qtnf_wmac *mac)
{ … }
void qtnf_mac_iface_comb_free(struct qtnf_wmac *mac)
{ … }
void qtnf_mac_ext_caps_free(struct qtnf_wmac *mac)
{ … }
static void qtnf_vif_reset_handler(struct work_struct *work)
{ … }
static void qtnf_mac_init_primary_intf(struct qtnf_wmac *mac)
{ … }
static void qtnf_mac_scan_finish(struct qtnf_wmac *mac, bool aborted)
{ … }
void qtnf_scan_done(struct qtnf_wmac *mac, bool aborted)
{ … }
static void qtnf_mac_scan_timeout(struct work_struct *work)
{ … }
static void qtnf_vif_send_data_high_pri(struct work_struct *work)
{ … }
static struct qtnf_wmac *qtnf_core_mac_alloc(struct qtnf_bus *bus,
unsigned int macid)
{ … }
static const struct ethtool_ops qtnf_ethtool_ops = …;
int qtnf_core_net_attach(struct qtnf_wmac *mac, struct qtnf_vif *vif,
const char *name, unsigned char name_assign_type)
{ … }
static void qtnf_core_mac_detach(struct qtnf_bus *bus, unsigned int macid)
{ … }
static int qtnf_core_mac_attach(struct qtnf_bus *bus, unsigned int macid)
{ … }
bool qtnf_netdev_is_qtn(const struct net_device *ndev)
{ … }
static int qtnf_check_br_ports(struct net_device *dev,
struct netdev_nested_priv *priv)
{ … }
static int qtnf_core_netdevice_event(struct notifier_block *nb,
unsigned long event, void *ptr)
{ … }
int qtnf_core_attach(struct qtnf_bus *bus)
{ … }
EXPORT_SYMBOL_GPL(…);
void qtnf_core_detach(struct qtnf_bus *bus)
{ … }
EXPORT_SYMBOL_GPL(…);
static inline int qtnf_is_frame_meta_magic_valid(struct qtnf_frame_meta_info *m)
{ … }
struct net_device *qtnf_classify_skb(struct qtnf_bus *bus, struct sk_buff *skb)
{ … }
EXPORT_SYMBOL_GPL(…);
void qtnf_wake_all_queues(struct net_device *ndev)
{ … }
EXPORT_SYMBOL_GPL(…);
struct dentry *qtnf_get_debugfs_dir(void)
{ … }
EXPORT_SYMBOL_GPL(…);
static int __init qtnf_core_register(void)
{ … }
static void __exit qtnf_core_exit(void)
{ … }
module_init(…) …;
module_exit(qtnf_core_exit);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;