1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun /* 4*4882a593Smuzhiyun * This file contains declaration referring to 5*4882a593Smuzhiyun * functions defined in other source files 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #ifndef _LBS_DECL_H_ 9*4882a593Smuzhiyun #define _LBS_DECL_H_ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include <linux/netdevice.h> 12*4882a593Smuzhiyun #include <linux/firmware.h> 13*4882a593Smuzhiyun #include <linux/nl80211.h> 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun /* Should be terminated by a NULL entry */ 16*4882a593Smuzhiyun struct lbs_fw_table { 17*4882a593Smuzhiyun int model; 18*4882a593Smuzhiyun const char *helper; 19*4882a593Smuzhiyun const char *fwname; 20*4882a593Smuzhiyun }; 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun struct lbs_private; 23*4882a593Smuzhiyun typedef void (*lbs_fw_cb)(struct lbs_private *priv, int ret, 24*4882a593Smuzhiyun const struct firmware *helper, const struct firmware *mainfw); 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun struct lbs_private; 27*4882a593Smuzhiyun struct sk_buff; 28*4882a593Smuzhiyun struct net_device; 29*4882a593Smuzhiyun struct cmd_ds_command; 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun /* ethtool.c */ 33*4882a593Smuzhiyun extern const struct ethtool_ops lbs_ethtool_ops; 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun /* tx.c */ 37*4882a593Smuzhiyun void lbs_send_tx_feedback(struct lbs_private *priv, u32 try_count); 38*4882a593Smuzhiyun netdev_tx_t lbs_hard_start_xmit(struct sk_buff *skb, 39*4882a593Smuzhiyun struct net_device *dev); 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun /* rx.c */ 42*4882a593Smuzhiyun int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *); 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun /* main.c */ 46*4882a593Smuzhiyun struct lbs_private *lbs_add_card(void *card, struct device *dmdev); 47*4882a593Smuzhiyun void lbs_remove_card(struct lbs_private *priv); 48*4882a593Smuzhiyun int lbs_start_card(struct lbs_private *priv); 49*4882a593Smuzhiyun void lbs_stop_card(struct lbs_private *priv); 50*4882a593Smuzhiyun void lbs_host_to_card_done(struct lbs_private *priv); 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun int lbs_start_iface(struct lbs_private *priv); 53*4882a593Smuzhiyun int lbs_stop_iface(struct lbs_private *priv); 54*4882a593Smuzhiyun int lbs_set_iface_type(struct lbs_private *priv, enum nl80211_iftype type); 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun int lbs_rtap_supported(struct lbs_private *priv); 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun int lbs_set_mac_address(struct net_device *dev, void *addr); 59*4882a593Smuzhiyun void lbs_set_multicast_list(struct net_device *dev); 60*4882a593Smuzhiyun void lbs_update_mcast(struct lbs_private *priv); 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun int lbs_suspend(struct lbs_private *priv); 63*4882a593Smuzhiyun int lbs_resume(struct lbs_private *priv); 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun void lbs_queue_event(struct lbs_private *priv, u32 event); 66*4882a593Smuzhiyun void lbs_notify_command_response(struct lbs_private *priv, u8 resp_idx); 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun int lbs_enter_auto_deep_sleep(struct lbs_private *priv); 69*4882a593Smuzhiyun int lbs_exit_auto_deep_sleep(struct lbs_private *priv); 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun u32 lbs_fw_index_to_data_rate(u8 index); 72*4882a593Smuzhiyun u8 lbs_data_rate_to_fw_index(u32 rate); 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun int lbs_get_firmware(struct device *dev, u32 card_model, 75*4882a593Smuzhiyun const struct lbs_fw_table *fw_table, 76*4882a593Smuzhiyun const struct firmware **helper, 77*4882a593Smuzhiyun const struct firmware **mainfw); 78*4882a593Smuzhiyun int lbs_get_firmware_async(struct lbs_private *priv, struct device *device, 79*4882a593Smuzhiyun u32 card_model, const struct lbs_fw_table *fw_table, 80*4882a593Smuzhiyun lbs_fw_cb callback); 81*4882a593Smuzhiyun void lbs_wait_for_firmware_load(struct lbs_private *priv); 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun #endif 84