From: viktor.barna@celeno.com
To: linux-wireless@vger.kernel.org
Cc: Kalle Valo <kvalo@codeaurora.org>,
"David S . Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
Aviad Brikman <aviad.brikman@celeno.com>,
Eliav Farber <eliav.farber@gmail.com>,
Maksym Kokhan <maksym.kokhan@celeno.com>,
Oleksandr Savchenko <oleksandr.savchenko@celeno.com>,
Shay Bar <shay.bar@celeno.com>,
Viktor Barna <viktor.barna@celeno.com>
Subject: [RFC v2 34/96] cl8k: add hw.h
Date: Tue, 24 May 2022 14:34:00 +0300 [thread overview]
Message-ID: <20220524113502.1094459-35-viktor.barna@celeno.com> (raw)
In-Reply-To: <20220524113502.1094459-1-viktor.barna@celeno.com>
From: Viktor Barna <viktor.barna@celeno.com>
(Part of the split. Please, take a look at the cover letter for more
details).
Signed-off-by: Viktor Barna <viktor.barna@celeno.com>
---
drivers/net/wireless/celeno/cl8k/hw.h | 280 ++++++++++++++++++++++++++
1 file changed, 280 insertions(+)
create mode 100644 drivers/net/wireless/celeno/cl8k/hw.h
diff --git a/drivers/net/wireless/celeno/cl8k/hw.h b/drivers/net/wireless/celeno/cl8k/hw.h
new file mode 100644
index 000000000000..c34a2bc0d990
--- /dev/null
+++ b/drivers/net/wireless/celeno/cl8k/hw.h
@@ -0,0 +1,280 @@
+/* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */
+/* Copyright(c) 2019-2022, Celeno Communications Ltd. */
+
+#ifndef CL_HW_H
+#define CL_HW_H
+
+#include <linux/module.h>
+
+#include "traffic.h"
+#include "temperature.h"
+#include "dfs.h"
+#include "calib.h"
+#include "ipc_shared.h"
+#include "fw.h"
+#include "rates.h"
+#include "def.h"
+#include "tx.h"
+#include "radio.h"
+#include "mac80211.h"
+#include "scan.h"
+#include "rx.h"
+#include "wrs.h"
+#include "vns.h"
+#include "sta.h"
+#include "debug.h"
+#include "chip.h"
+#include "recovery.h"
+#include "bf.h"
+#include "power.h"
+#include "phy.h"
+#include "vif.h"
+#include "tcv.h"
+#include "sounding.h"
+#include "version.h"
+
+#define cl_hw_get_iface_conf(cl_hw) atomic_read(&(cl_hw)->iface_conf)
+#define cl_hw_set_iface_conf(cl_hw, value) atomic_set(&(cl_hw)->iface_conf, value)
+
+/* Structure used to store information regarding E2A msg buffers in the driver */
+struct cl_e2a_msg_elem {
+ struct cl_ipc_e2a_msg *msgbuf_ptr;
+ dma_addr_t dma_addr;
+};
+
+enum cl_iface_conf {
+ CL_IFCONF_AP,
+ CL_IFCONF_STA,
+ CL_IFCONF_REPEATER,
+ CL_IFCONF_MESH_AP,
+ CL_IFCONF_MESH_ONLY,
+
+ CL_IFCONF_MAX
+};
+
+struct cl_hw_asserts_info {
+ /* Timestamp (jiffies) of the last CL_MIN_ASSERT_CNT hw assert. */
+ unsigned long timestamp[CL_MIN_ASSERT_CNT];
+ /* Hw assert index. */
+ u8 index;
+ /* Indicate if hw_restart was schedule */
+ u8 restart_sched;
+};
+
+struct cl_hw {
+ u8 idx; /* Global index (0-3) */
+ u8 tcv_idx; /* Transceiver index (0-1) */
+ u8 sx_idx;
+ struct cl_tcv_conf *conf;
+ struct cl_chip *chip;
+ struct ieee80211_hw *hw;
+ const struct cl_driver_ops *drv_ops;
+ struct cl_vif_db vif_db;
+ atomic_t iface_conf;
+ u32 num_ap_started;
+ u8 hw_mode;
+ enum cl_wireless_mode wireless_mode;
+ u8 tx_power_version;
+ struct cl_vif *mc_vif;
+ u8 bw;
+ u32 channel;
+ u32 primary_freq;
+ u32 center_freq;
+ enum nl80211_band nl_band;
+ u8 num_antennas;
+ u8 mask_num_antennas;
+ u8 first_ant;
+ u8 first_riu_chain;
+ u8 last_riu_chain;
+ u8 max_antennas;
+ struct cl_tx_db tx_db;
+ struct cl_sta_db cl_sta_db;
+ struct cl_ipc_e2a_irq ipc_e2a_irq;
+ struct cl_controller_reg controller_reg;
+ struct ieee80211_supported_band sband;
+ void (*ipc_host2xmac_trigger_set)(struct cl_chip *chip, u32 value);
+ unsigned long drv_flags;
+ unsigned long tx_disable_flags;
+ struct cl_ipc_host_env *ipc_env;
+ spinlock_t tx_lock_agg;
+ spinlock_t tx_lock_cfm_agg;
+ spinlock_t tx_lock_single;
+ spinlock_t tx_lock_bcmc;
+ struct mutex msg_tx_mutex;
+ wait_queue_head_t wait_queue; /* Synchronize driver<-->firmware message exchanges */
+ unsigned long cfm_flags[MAX_CFM_FLAGS];
+ void *msg_cfm_params[MM_MAX + DBG_MAX]; /* Array of pointers per received msg CFM */
+ bool msg_background;
+ wait_queue_head_t fw_sync_wq;
+ wait_queue_head_t radio_wait_queue;
+ struct cl_rx_elem *rx_elems;
+ struct cl_e2a_msg_elem *e2a_msg_elems;
+ struct cl_dbg_elem *dbg_elems;
+ struct cl_radar_elem *radar_elems;
+ struct dma_pool *txdesc_pool;
+ struct dma_pool *dbg_pool;
+ struct dma_pool *e2a_msg_pool;
+ struct dma_pool *radar_pool;
+ struct cl_debug_info dbginfo;
+ struct cl_hw_asserts_info assert_info;
+ char fw_prefix; /* Single character for fw prefix - l/u/s */
+ u8 fw_dst_kern_id; /* Firmware destination (LMAC/SMAC) */
+ bool fw_active; /* Firmware is active */
+ bool fw_send_start; /* Did driver already send a start request message to firmware? */
+ struct cl_dbg_data dbg_data;
+ struct cl_tx_power_info tx_pow_info[MAX_EXT_CHANNELS][MAX_ANTENNAS];
+ spinlock_t channel_info_lock;
+ struct cl_channel_info channel_info;
+ struct cl_phy_data_info phy_data_info;
+ u32 mask_hi;
+ u32 mask_low;
+ struct timer_list maintenance_slow_timer;
+ struct timer_list maintenance_fast_timer;
+ struct tasklet_struct tx_task;
+ struct list_head list_sched_q_agg;
+ struct list_head list_sched_q_single;
+ struct cl_req_agg_db req_agg_db[IPC_MAX_BA_SESSIONS];
+ u8 req_agg_queues;
+ u8 used_agg_queues;
+ bool is_stop_context;
+ struct workqueue_struct *drv_workqueue;
+ struct cl_amsdu_rx_state amsdu_rx_state;
+ struct cl_tx_queues *tx_queues;
+ struct kmem_cache *sw_txhdr_cache;
+ struct kmem_cache *amsdu_txhdr_cache;
+ u32 radio_stats[CL_RADIO_ERRORS_MAX];
+ struct cl_rx_path_info rx_info;
+ struct cl_prot_mode prot_mode;
+ struct cl_agg_cfm_queue agg_cfm_queues[IPC_MAX_BA_SESSIONS];
+ struct cl_single_cfm_queue single_cfm_queues[MAX_SINGLE_QUEUES];
+ struct cl_single_cfm_queue bcmc_cfm_queue;
+ atomic_t radio_lock;
+ struct cl_assoc_queue assoc_queue;
+ struct cl_wrs_db wrs_db;
+ struct cl_traffic_main traffic_db;
+ struct cl_power_db power_db;
+ struct cl_bf_db bf_db;
+ struct cl_edca_db edca_db;
+ struct cl_vns_db *vns_db;
+ struct cl_str_offload_env str_offload_env;
+ struct cl_dma_accessed fw_remote_rom;
+ struct cl_recovery_db recovery_db;
+ struct cl_radar_queue radar_queue;
+ struct tasklet_struct radar_tasklet;
+ struct cl_cached_fw cached_fw;
+ s8 rx_sensitivity[MAX_ANTENNAS];
+ struct cl_cca_db cca_db;
+ struct cl_noise_db noise_db;
+ struct cl_temp_comp_db temp_comp_db;
+ struct cl_sounding_db sounding;
+#ifdef CONFIG_CL8K_DYN_MCAST_RATE
+ struct cl_dyn_mcast_rate dyn_mcast_rate;
+#endif /* CONFIG_CL8K_DYN_MCAST_RATE */
+#ifdef CONFIG_CL8K_DYN_BCAST_RATE
+ struct cl_dyn_bcast_rate dyn_bcast_rate;
+#endif /* CONFIG_CL8K_DYN_BCAST_RATE */
+ struct cl_dfs_db dfs_db;
+ struct cl_version_db version_db;
+ bool entry_fixed_rate;
+ unsigned long last_tbtt_irq;
+ u16 smallest_beacon_int;
+ u32 tbtt_cnt;
+ u8 mesh_tbtt_div;
+ struct tasklet_struct tx_mesh_bcn_task;
+ u32 fw_recovery_cntr;
+ u32 rx_filter;
+ ptrdiff_t mac_hw_regs_offset;
+ ptrdiff_t phy_regs_offset;
+ struct list_head head_amsdu_txhdr_pool;
+ struct list_head head_sw_txhdr_pool;
+ spinlock_t lock_sw_txhdr_pool;
+ struct sk_buff_head rx_remote_queue_mac;
+ struct sk_buff_head rx_skb_queue;
+ struct tasklet_struct rx_tasklet;
+ struct tasklet_struct rx_resched_tasklet;
+ u8 fem_mode;
+ struct cl_tx_packet_cntr tx_packet_cntr;
+ struct cl_cpu_cntr cpu_cntr;
+ struct cl_iq_dcoc_data_info iq_dcoc_data_info;
+ struct cl_power_table_info power_table_info;
+ struct ieee80211_sband_iftype_data iftype_data[3];
+ bool motion_sense_dbg;
+ struct cl_power_truncate pwr_trunc;
+ struct mutex set_channel_mutex;
+ u8 radio_status;
+ u8 rf_crystal_mhz;
+ bool iq_cal_ready;
+ s8 rssi_simulate;
+ struct mac_address addresses[MAX_BSS_NUM];
+ struct cl_rx_stats *rx_stats; /* RX statistics for production mode. */
+ spinlock_t lock_stats;
+ u16 n_addresses;
+ u8 txamsdu_en;
+ bool reg_dbg;
+ s32 new_tx_power;
+ struct cl_rx_trigger_based_stats *tb_stats;
+ struct cl_rx_trigger_based_sta_stats *tb_sta_stats;
+ bool idle_async_set;
+ bool msg_calib_timeout;
+ struct cl_calib_work *calib_work;
+ struct cl_chan_scanner *scanner;
+ bool calib_runtime_needed;
+ u8 ht40_preffered_ch_type;
+ u8 sw_scan_in_progress;
+};
+
+void cl_hw_init(struct cl_chip *chip, struct cl_hw *cl_hw, u8 tcv_idx);
+void cl_hw_deinit(struct cl_hw *cl_hw, u8 tcv_idx);
+struct cl_hw *cl_hw_other_tcv(struct cl_hw *cl_hw);
+bool cl_hw_is_tcv0(struct cl_hw *cl_hw);
+bool cl_hw_is_tcv1(struct cl_hw *cl_hw);
+bool cl_hw_is_first_tcv(struct cl_hw *cl_hw);
+int cl_hw_set_antennas(struct cl_hw *cl_hw);
+u8 cl_hw_ant_shift(struct cl_hw *cl_hw);
+u8 cl_hw_ant_to_riu_chain(struct cl_hw *cl_hw, u8 ant);
+u8 cl_hw_ant_mask_to_riu_chain_mask(struct cl_hw *cl_hw, u8 ant_mask);
+bool cl_hw_is_prod_or_listener(struct cl_hw *cl_hw);
+void cl_hw_assert_info_init(struct cl_hw *cl_hw);
+void cl_hw_assert_print(struct cl_hw *cl_hw, struct cl_ipc_e2a_msg *msg);
+void cl_hw_assert_check(struct cl_hw *cl_hw);
+
+static inline void cl_sta_lock_bh(struct cl_hw *cl_hw)
+{
+ read_lock_bh(&cl_hw->cl_sta_db.lock);
+}
+
+static inline void cl_sta_unlock_bh(struct cl_hw *cl_hw)
+{
+ read_unlock_bh(&cl_hw->cl_sta_db.lock);
+}
+
+static inline void cl_sta_lock(struct cl_hw *cl_hw)
+{
+ read_lock(&cl_hw->cl_sta_db.lock);
+}
+
+static inline void cl_sta_unlock(struct cl_hw *cl_hw)
+{
+ read_unlock(&cl_hw->cl_sta_db.lock);
+}
+
+/* FW communication opses */
+static inline int cl_drv_ops_msg_fw_send(struct cl_hw *cl_hw,
+ const void *msg_params,
+ bool background)
+{
+ if (cl_hw->drv_ops->msg_fw_send)
+ return cl_hw->drv_ops->msg_fw_send(cl_hw, msg_params,
+ background);
+ return 0;
+}
+
+static inline void cl_drv_ops_pkt_fw_send(struct cl_hw *cl_hw,
+ struct cl_sw_txhdr *sw_txhdr,
+ struct cl_tx_queue *tx_queue)
+{
+ if (cl_hw->drv_ops->pkt_fw_send)
+ cl_hw->drv_ops->pkt_fw_send(cl_hw, sw_txhdr, tx_queue);
+}
+
+#endif /* CL_HW_H */
--
2.36.1
next prev parent reply other threads:[~2022-05-24 11:39 UTC|newest]
Thread overview: 125+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-24 11:33 [RFC v2 00/96] wireless: cl8k driver for Celeno IEEE 802.11ax devices viktor.barna
2022-05-24 11:33 ` [RFC v2 01/96] celeno: add Kconfig viktor.barna
2022-05-24 11:33 ` [RFC v2 02/96] celeno: add Makefile viktor.barna
2022-05-24 11:33 ` [RFC v2 03/96] cl8k: add Kconfig viktor.barna
2022-05-26 18:18 ` Johannes Berg
2022-05-27 6:09 ` Kalle Valo
2022-07-11 23:04 ` Viktor Barna
2022-07-13 7:32 ` Kalle Valo
2022-05-24 11:33 ` [RFC v2 04/96] cl8k: add Makefile viktor.barna
2022-05-26 18:24 ` Johannes Berg
2022-07-13 7:39 ` Kalle Valo
2022-05-24 11:33 ` [RFC v2 05/96] cl8k: add ampdu.c viktor.barna
2022-05-26 18:19 ` Johannes Berg
2022-05-26 18:22 ` Johannes Berg
2022-05-24 11:33 ` [RFC v2 06/96] cl8k: add ampdu.h viktor.barna
2022-05-24 11:33 ` [RFC v2 07/96] cl8k: add bf.c viktor.barna
2022-05-24 17:24 ` Jeff Johnson
2022-05-24 11:33 ` [RFC v2 08/96] cl8k: add bf.h viktor.barna
2022-05-24 11:33 ` [RFC v2 09/96] cl8k: add calib.c viktor.barna
2022-05-24 11:33 ` [RFC v2 10/96] cl8k: add calib.h viktor.barna
2022-05-24 11:33 ` [RFC v2 11/96] cl8k: add channel.c viktor.barna
2022-05-24 11:33 ` [RFC v2 12/96] cl8k: add channel.h viktor.barna
2022-05-24 11:33 ` [RFC v2 13/96] cl8k: add chip.c viktor.barna
2022-05-24 11:33 ` [RFC v2 14/96] cl8k: add chip.h viktor.barna
2022-05-24 11:33 ` [RFC v2 15/96] cl8k: add config.c viktor.barna
2022-05-24 11:33 ` [RFC v2 16/96] cl8k: add config.h viktor.barna
2022-05-25 18:31 ` Jeff Johnson
2022-05-24 11:33 ` [RFC v2 17/96] cl8k: add debug.c viktor.barna
2022-05-24 11:33 ` [RFC v2 18/96] cl8k: add debug.h viktor.barna
2022-05-24 11:33 ` [RFC v2 19/96] cl8k: add def.h viktor.barna
2022-05-25 18:39 ` Jeff Johnson
2022-05-24 11:33 ` [RFC v2 20/96] cl8k: add dfs.c viktor.barna
2022-05-24 11:33 ` [RFC v2 21/96] cl8k: add dfs.h viktor.barna
2022-05-24 11:33 ` [RFC v2 22/96] cl8k: add dsp.c viktor.barna
2022-05-24 11:33 ` [RFC v2 23/96] cl8k: add dsp.h viktor.barna
2022-05-24 11:33 ` [RFC v2 24/96] cl8k: add e2p.c viktor.barna
2022-05-24 11:33 ` [RFC v2 25/96] cl8k: add e2p.h viktor.barna
2022-05-24 11:33 ` [RFC v2 26/96] cl8k: add eeprom.h viktor.barna
2022-05-24 11:33 ` [RFC v2 27/96] cl8k: add ela.c viktor.barna
2022-05-24 11:33 ` [RFC v2 28/96] cl8k: add ela.h viktor.barna
2022-05-24 11:33 ` [RFC v2 29/96] cl8k: add enhanced_tim.c viktor.barna
2022-05-24 11:33 ` [RFC v2 30/96] cl8k: add enhanced_tim.h viktor.barna
2022-05-24 11:33 ` [RFC v2 31/96] cl8k: add fw.c viktor.barna
2022-05-24 11:33 ` [RFC v2 32/96] cl8k: add fw.h viktor.barna
2022-05-25 18:58 ` Jeff Johnson
2022-05-24 11:33 ` [RFC v2 33/96] cl8k: add hw.c viktor.barna
2022-05-24 11:34 ` viktor.barna [this message]
2022-05-24 11:34 ` [RFC v2 35/96] cl8k: add ipc_shared.h viktor.barna
2022-05-24 11:34 ` [RFC v2 36/96] cl8k: add key.c viktor.barna
2022-05-26 19:38 ` Johannes Berg
2022-07-11 23:10 ` Viktor Barna
2022-05-24 11:34 ` [RFC v2 37/96] cl8k: add key.h viktor.barna
2022-05-24 11:34 ` [RFC v2 38/96] cl8k: add mac80211.c viktor.barna
2022-05-26 19:49 ` Johannes Berg
2022-07-11 23:13 ` Viktor Barna
2022-05-24 11:34 ` [RFC v2 39/96] cl8k: add mac80211.h viktor.barna
2022-05-26 19:52 ` Johannes Berg
2022-05-24 11:34 ` [RFC v2 40/96] cl8k: add mac_addr.c viktor.barna
2022-05-26 22:31 ` Jeff Johnson
2022-05-24 11:34 ` [RFC v2 41/96] cl8k: add mac_addr.h viktor.barna
2022-05-24 11:34 ` [RFC v2 42/96] cl8k: add main.c viktor.barna
2022-05-26 23:01 ` Jeff Johnson
2022-05-24 11:34 ` [RFC v2 43/96] cl8k: add main.h viktor.barna
2022-05-24 11:34 ` [RFC v2 44/96] cl8k: add maintenance.c viktor.barna
2022-05-24 11:34 ` [RFC v2 45/96] cl8k: add maintenance.h viktor.barna
2022-05-24 11:34 ` [RFC v2 46/96] cl8k: add motion_sense.c viktor.barna
2022-05-24 11:34 ` [RFC v2 47/96] cl8k: add motion_sense.h viktor.barna
2022-05-24 11:34 ` [RFC v2 48/96] cl8k: add pci.c viktor.barna
2022-05-24 11:34 ` [RFC v2 49/96] cl8k: add pci.h viktor.barna
2022-05-24 11:34 ` [RFC v2 50/96] cl8k: add phy.c viktor.barna
2022-06-01 0:27 ` Jeff Johnson
2022-07-11 23:16 ` Viktor Barna
2022-05-24 11:34 ` [RFC v2 51/96] cl8k: add phy.h viktor.barna
2022-05-24 11:34 ` [RFC v2 52/96] cl8k: add platform.c viktor.barna
2022-05-24 11:34 ` [RFC v2 53/96] cl8k: add platform.h viktor.barna
2022-05-24 11:34 ` [RFC v2 54/96] cl8k: add power.c viktor.barna
2022-05-24 11:34 ` [RFC v2 55/96] cl8k: add power.h viktor.barna
2022-05-24 11:34 ` [RFC v2 56/96] cl8k: add radio.c viktor.barna
2022-05-24 11:34 ` [RFC v2 57/96] cl8k: add radio.h viktor.barna
2022-05-24 11:34 ` [RFC v2 58/96] cl8k: add rates.c viktor.barna
2022-05-24 11:34 ` [RFC v2 59/96] cl8k: add rates.h viktor.barna
2022-05-26 19:54 ` Johannes Berg
2022-07-11 23:17 ` Viktor Barna
2022-07-12 7:17 ` Johannes Berg
2022-05-24 11:34 ` [RFC v2 60/96] cl8k: add recovery.c viktor.barna
2022-05-24 11:34 ` [RFC v2 61/96] cl8k: add recovery.h viktor.barna
2022-05-24 11:34 ` [RFC v2 62/96] cl8k: add regdom.c viktor.barna
2022-05-24 11:34 ` [RFC v2 63/96] cl8k: add regdom.h viktor.barna
2022-05-24 11:34 ` [RFC v2 64/96] cl8k: add reg/reg_access.h viktor.barna
2022-05-24 11:34 ` [RFC v2 65/96] cl8k: add reg/reg_defs.h viktor.barna
2022-05-24 11:34 ` [RFC v2 66/96] cl8k: add rfic.c viktor.barna
2022-05-24 11:34 ` [RFC v2 67/96] cl8k: add rfic.h viktor.barna
2022-06-02 20:40 ` Jeff Johnson
2022-07-11 23:18 ` Viktor Barna
2022-05-24 11:34 ` [RFC v2 68/96] cl8k: add rx.c viktor.barna
2022-05-24 11:34 ` [RFC v2 69/96] cl8k: add rx.h viktor.barna
2022-05-24 11:34 ` [RFC v2 70/96] cl8k: add scan.c viktor.barna
2022-05-24 11:34 ` [RFC v2 71/96] cl8k: add scan.h viktor.barna
2022-05-24 11:34 ` [RFC v2 72/96] cl8k: add sounding.c viktor.barna
2022-05-24 11:34 ` [RFC v2 73/96] cl8k: add sounding.h viktor.barna
2022-05-24 11:34 ` [RFC v2 74/96] cl8k: add sta.c viktor.barna
2022-05-24 11:34 ` [RFC v2 75/96] cl8k: add sta.h viktor.barna
2022-05-24 11:34 ` [RFC v2 76/96] cl8k: add stats.c viktor.barna
2022-06-02 20:59 ` Jeff Johnson
2022-07-11 23:20 ` Viktor Barna
2022-05-24 11:34 ` [RFC v2 77/96] cl8k: add stats.h viktor.barna
2022-05-24 11:34 ` [RFC v2 78/96] cl8k: add tcv.c viktor.barna
2022-05-24 11:34 ` [RFC v2 79/96] cl8k: add tcv.h viktor.barna
2022-05-24 11:34 ` [RFC v2 80/96] cl8k: add temperature.c viktor.barna
2022-05-24 11:34 ` [RFC v2 81/96] cl8k: add temperature.h viktor.barna
2022-05-24 11:34 ` [RFC v2 82/96] cl8k: add traffic.c viktor.barna
2022-05-24 11:34 ` [RFC v2 83/96] cl8k: add traffic.h viktor.barna
2022-05-24 11:34 ` [RFC v2 84/96] cl8k: add tx.c viktor.barna
2022-05-24 11:34 ` [RFC v2 85/96] cl8k: add tx.h viktor.barna
2022-05-24 11:34 ` [RFC v2 86/96] cl8k: add utils.c viktor.barna
2022-05-24 11:34 ` [RFC v2 87/96] cl8k: add utils.h viktor.barna
2022-05-24 11:34 ` [RFC v2 88/96] cl8k: add version.c viktor.barna
2022-05-24 11:34 ` [RFC v2 89/96] cl8k: add version.h viktor.barna
2022-05-24 11:34 ` [RFC v2 90/96] cl8k: add vif.c viktor.barna
2022-05-24 11:34 ` [RFC v2 91/96] cl8k: add vif.h viktor.barna
2022-05-24 11:34 ` [RFC v2 92/96] cl8k: add vns.c viktor.barna
2022-05-24 11:34 ` [RFC v2 93/96] cl8k: add vns.h viktor.barna
2022-05-24 11:35 ` [RFC v2 94/96] cl8k: add wrs.c viktor.barna
2022-05-24 11:35 ` [RFC v2 95/96] cl8k: add wrs.h viktor.barna
2022-05-24 11:35 ` [RFC v2 96/96] wireless: add Celeno vendor viktor.barna
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220524113502.1094459-35-viktor.barna@celeno.com \
--to=viktor.barna@celeno.com \
--cc=aviad.brikman@celeno.com \
--cc=davem@davemloft.net \
--cc=eliav.farber@gmail.com \
--cc=kuba@kernel.org \
--cc=kvalo@codeaurora.org \
--cc=linux-wireless@vger.kernel.org \
--cc=maksym.kokhan@celeno.com \
--cc=oleksandr.savchenko@celeno.com \
--cc=shay.bar@celeno.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).