hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/drivers/net/wireless/quantenna/qtnfmac/core.h
....@@ -1,18 +1,5 @@
1
-/*
2
- * Copyright (c) 2015-2016 Quantenna Communications, Inc.
3
- * All rights reserved.
4
- *
5
- * This program is free software; you can redistribute it and/or
6
- * modify it under the terms of the GNU General Public License
7
- * as published by the Free Software Foundation; either version 2
8
- * of the License, or (at your option) any later version.
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- * GNU General Public License for more details.
14
- *
15
- */
1
+/* SPDX-License-Identifier: GPL-2.0+ */
2
+/* Copyright (c) 2015-2016 Quantenna Communications. All rights reserved. */
163
174 #ifndef _QTN_FMAC_CORE_H_
185 #define _QTN_FMAC_CORE_H_
....@@ -33,9 +20,11 @@
3320 #include <linux/ctype.h>
3421 #include <linux/workqueue.h>
3522 #include <linux/slab.h>
23
+#include <linux/platform_device.h>
3624
3725 #include "qlink.h"
3826 #include "trans.h"
27
+#include "qlink_util.h"
3928
4029 #undef pr_fmt
4130 #define pr_fmt(fmt) KBUILD_MODNAME ": %s: " fmt, __func__
....@@ -64,12 +53,6 @@
6453 atomic_t size;
6554 };
6655
67
-enum qtnf_sta_state {
68
- QTNF_STA_DISCONNECTED,
69
- QTNF_STA_CONNECTING,
70
- QTNF_STA_CONNECTED
71
-};
72
-
7356 struct qtnf_vif {
7457 struct wireless_dev wdev;
7558 u8 bssid[ETH_ALEN];
....@@ -77,12 +60,13 @@
7760 u8 vifid;
7861 u8 bss_priority;
7962 u8 bss_status;
80
- enum qtnf_sta_state sta_state;
8163 u16 mgmt_frames_bitmask;
8264 struct net_device *netdev;
8365 struct qtnf_wmac *mac;
8466
8567 struct work_struct reset_work;
68
+ struct work_struct high_pri_tx_work;
69
+ struct sk_buff_head high_pri_tx_queue;
8670 struct qtnf_sta_list sta_list;
8771 unsigned long cons_tx_timeout_cnt;
8872 int generation;
....@@ -92,7 +76,6 @@
9276
9377 struct qtnf_mac_info {
9478 u8 bands_cap;
95
- u8 dev_mac[ETH_ALEN];
9679 u8 num_tx_chain;
9780 u8 num_rx_chain;
9881 u16 max_ap_assoc_sta;
....@@ -102,7 +85,8 @@
10285 u8 sretry_limit;
10386 u8 coverage_class;
10487 u8 radar_detect_widths;
105
- u32 max_acl_mac_addrs;
88
+ u8 max_scan_ssids;
89
+ u16 max_acl_mac_addrs;
10690 struct ieee80211_ht_cap ht_cap_mod_mask;
10791 struct ieee80211_vht_cap vht_cap_mod_mask;
10892 struct ieee80211_iface_combination *if_comb;
....@@ -111,15 +95,6 @@
11195 u8 *extended_capabilities_mask;
11296 u8 extended_capabilities_len;
11397 struct wiphy_wowlan_support *wowlan;
114
-};
115
-
116
-struct qtnf_chan_stats {
117
- u32 chan_num;
118
- u32 cca_tx;
119
- u32 cca_rx;
120
- u32 cca_busy;
121
- u32 cca_try;
122
- s8 chan_noise;
12398 };
12499
125100 struct qtnf_wmac {
....@@ -132,32 +107,34 @@
132107 struct cfg80211_scan_request *scan_req;
133108 struct mutex mac_lock; /* lock during wmac speicific ops */
134109 struct delayed_work scan_timeout;
110
+ struct ieee80211_regdomain *rd;
111
+ struct platform_device *pdev;
135112 };
136113
137114 struct qtnf_hw_info {
138
- u16 ql_proto_ver;
115
+ u32 ql_proto_ver;
139116 u8 num_mac;
140117 u8 mac_bitmap;
141118 u32 fw_ver;
142
- u32 hw_capab;
143
- struct ieee80211_regdomain *rd;
144119 u8 total_tx_chain;
145120 u8 total_rx_chain;
146121 char fw_version[ETHTOOL_FWVERS_LEN];
147122 u32 hw_version;
148
- u8 max_scan_ssids;
123
+ u8 hw_capab[QLINK_HW_CAPAB_NUM / BITS_PER_BYTE + 1];
149124 };
150125
151126 struct qtnf_vif *qtnf_mac_get_free_vif(struct qtnf_wmac *mac);
152127 struct qtnf_vif *qtnf_mac_get_base_vif(struct qtnf_wmac *mac);
153128 void qtnf_mac_iface_comb_free(struct qtnf_wmac *mac);
154129 void qtnf_mac_ext_caps_free(struct qtnf_wmac *mac);
155
-struct wiphy *qtnf_wiphy_allocate(struct qtnf_bus *bus);
130
+bool qtnf_slave_radar_get(void);
131
+bool qtnf_dfs_offload_get(void);
132
+struct wiphy *qtnf_wiphy_allocate(struct qtnf_bus *bus,
133
+ struct platform_device *pdev);
156134 int qtnf_core_net_attach(struct qtnf_wmac *mac, struct qtnf_vif *priv,
157135 const char *name, unsigned char name_assign_type);
158136 void qtnf_main_work_queue(struct work_struct *work);
159137 int qtnf_cmd_send_update_phy_params(struct qtnf_wmac *mac, u32 changed);
160
-int qtnf_cmd_send_get_phy_params(struct qtnf_wmac *mac);
161138
162139 struct qtnf_wmac *qtnf_core_get_mac(const struct qtnf_bus *bus, u8 macid);
163140 struct net_device *qtnf_classify_skb(struct qtnf_bus *bus, struct sk_buff *skb);
....@@ -169,10 +146,19 @@
169146
170147 void qtnf_netdev_updown(struct net_device *ndev, bool up);
171148 void qtnf_scan_done(struct qtnf_wmac *mac, bool aborted);
149
+struct dentry *qtnf_get_debugfs_dir(void);
150
+bool qtnf_netdev_is_qtn(const struct net_device *ndev);
172151
173152 static inline struct qtnf_vif *qtnf_netdev_get_priv(struct net_device *dev)
174153 {
175154 return *((void **)netdev_priv(dev));
176155 }
177156
157
+static inline bool qtnf_hwcap_is_set(const struct qtnf_hw_info *info,
158
+ unsigned int bit)
159
+{
160
+ return qtnf_utils_is_bit_set(info->hw_capab, bit,
161
+ sizeof(info->hw_capab));
162
+}
163
+
178164 #endif /* _QTN_FMAC_CORE_H_ */