162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci/* 462306a36Sopenharmony_ci * This file contains declaration referring to 562306a36Sopenharmony_ci * functions defined in other source files 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#ifndef _LBS_DECL_H_ 962306a36Sopenharmony_ci#define _LBS_DECL_H_ 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include <linux/netdevice.h> 1262306a36Sopenharmony_ci#include <linux/firmware.h> 1362306a36Sopenharmony_ci#include <linux/nl80211.h> 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci/* Should be terminated by a NULL entry */ 1662306a36Sopenharmony_cistruct lbs_fw_table { 1762306a36Sopenharmony_ci int model; 1862306a36Sopenharmony_ci const char *helper; 1962306a36Sopenharmony_ci const char *fwname; 2062306a36Sopenharmony_ci}; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_cistruct lbs_private; 2362306a36Sopenharmony_citypedef void (*lbs_fw_cb)(struct lbs_private *priv, int ret, 2462306a36Sopenharmony_ci const struct firmware *helper, const struct firmware *mainfw); 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_cistruct sk_buff; 2762306a36Sopenharmony_cistruct net_device; 2862306a36Sopenharmony_cistruct cmd_ds_command; 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci/* ethtool.c */ 3262306a36Sopenharmony_ciextern const struct ethtool_ops lbs_ethtool_ops; 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci/* tx.c */ 3662306a36Sopenharmony_civoid lbs_send_tx_feedback(struct lbs_private *priv, u32 try_count); 3762306a36Sopenharmony_cinetdev_tx_t lbs_hard_start_xmit(struct sk_buff *skb, 3862306a36Sopenharmony_ci struct net_device *dev); 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci/* rx.c */ 4162306a36Sopenharmony_ciint lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *); 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci/* main.c */ 4562306a36Sopenharmony_cistruct lbs_private *lbs_add_card(void *card, struct device *dmdev); 4662306a36Sopenharmony_civoid lbs_remove_card(struct lbs_private *priv); 4762306a36Sopenharmony_ciint lbs_start_card(struct lbs_private *priv); 4862306a36Sopenharmony_civoid lbs_stop_card(struct lbs_private *priv); 4962306a36Sopenharmony_civoid lbs_host_to_card_done(struct lbs_private *priv); 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ciint lbs_start_iface(struct lbs_private *priv); 5262306a36Sopenharmony_ciint lbs_stop_iface(struct lbs_private *priv); 5362306a36Sopenharmony_ciint lbs_set_iface_type(struct lbs_private *priv, enum nl80211_iftype type); 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ciint lbs_rtap_supported(struct lbs_private *priv); 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ciint lbs_set_mac_address(struct net_device *dev, void *addr); 5862306a36Sopenharmony_civoid lbs_set_multicast_list(struct net_device *dev); 5962306a36Sopenharmony_civoid lbs_update_mcast(struct lbs_private *priv); 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ciint lbs_suspend(struct lbs_private *priv); 6262306a36Sopenharmony_ciint lbs_resume(struct lbs_private *priv); 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_civoid lbs_queue_event(struct lbs_private *priv, u32 event); 6562306a36Sopenharmony_civoid lbs_notify_command_response(struct lbs_private *priv, u8 resp_idx); 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ciint lbs_enter_auto_deep_sleep(struct lbs_private *priv); 6862306a36Sopenharmony_ciint lbs_exit_auto_deep_sleep(struct lbs_private *priv); 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ciu32 lbs_fw_index_to_data_rate(u8 index); 7162306a36Sopenharmony_ciu8 lbs_data_rate_to_fw_index(u32 rate); 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ciint lbs_get_firmware(struct device *dev, u32 card_model, 7462306a36Sopenharmony_ci const struct lbs_fw_table *fw_table, 7562306a36Sopenharmony_ci const struct firmware **helper, 7662306a36Sopenharmony_ci const struct firmware **mainfw); 7762306a36Sopenharmony_ciint lbs_get_firmware_async(struct lbs_private *priv, struct device *device, 7862306a36Sopenharmony_ci u32 card_model, const struct lbs_fw_table *fw_table, 7962306a36Sopenharmony_ci lbs_fw_cb callback); 8062306a36Sopenharmony_civoid lbs_wait_for_firmware_load(struct lbs_private *priv); 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ci#endif 83