diff options
Diffstat (limited to 'drivers/net/wireless/libertas_tf/libertas_tf.h')
-rw-r--r-- | drivers/net/wireless/libertas_tf/libertas_tf.h | 519 |
1 files changed, 0 insertions, 519 deletions
diff --git a/drivers/net/wireless/libertas_tf/libertas_tf.h b/drivers/net/wireless/libertas_tf/libertas_tf.h deleted file mode 100644 index ad77b92..0000000 --- a/drivers/net/wireless/libertas_tf/libertas_tf.h +++ /dev/null @@ -1,519 +0,0 @@ -/* - * Copyright (C) 2008, cozybit Inc. - * Copyright (C) 2007, Red Hat, Inc. - * Copyright (C) 2003-2006, Marvell International Ltd. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or (at - * your option) any later version. - */ -#include <linux/spinlock.h> -#include <linux/device.h> -#include <linux/kthread.h> -#include <net/mac80211.h> - -#include "deb_defs.h" - -#ifndef DRV_NAME -#define DRV_NAME "libertas_tf" -#endif - -#define MRVL_DEFAULT_RETRIES 9 -#define MRVL_PER_PACKET_RATE 0x10 -#define MRVL_MAX_BCN_SIZE 440 -#define CMD_OPTION_WAITFORRSP 0x0002 - -/* Return command are almost always the same as the host command, but with - * bit 15 set high. There are a few exceptions, though... - */ -#define CMD_RET(cmd) (0x8000 | cmd) - -/* Command codes */ -#define CMD_GET_HW_SPEC 0x0003 -#define CMD_802_11_RESET 0x0005 -#define CMD_MAC_MULTICAST_ADR 0x0010 -#define CMD_802_11_RADIO_CONTROL 0x001c -#define CMD_802_11_RF_CHANNEL 0x001d -#define CMD_802_11_RF_TX_POWER 0x001e -#define CMD_MAC_CONTROL 0x0028 -#define CMD_802_11_MAC_ADDRESS 0x004d -#define CMD_SET_BOOT2_VER 0x00a5 -#define CMD_802_11_BEACON_CTRL 0x00b0 -#define CMD_802_11_BEACON_SET 0x00cb -#define CMD_802_11_SET_MODE 0x00cc -#define CMD_802_11_SET_BSSID 0x00cd - -#define CMD_ACT_GET 0x0000 -#define CMD_ACT_SET 0x0001 - -/* Define action or option for CMD_802_11_RESET */ -#define CMD_ACT_HALT 0x0003 - -/* Define action or option for CMD_MAC_CONTROL */ -#define CMD_ACT_MAC_RX_ON 0x0001 -#define CMD_ACT_MAC_TX_ON 0x0002 -#define CMD_ACT_MAC_MULTICAST_ENABLE 0x0020 -#define CMD_ACT_MAC_BROADCAST_ENABLE 0x0040 -#define CMD_ACT_MAC_PROMISCUOUS_ENABLE 0x0080 -#define CMD_ACT_MAC_ALL_MULTICAST_ENABLE 0x0100 - -/* Define action or option for CMD_802_11_RADIO_CONTROL */ -#define CMD_TYPE_AUTO_PREAMBLE 0x0001 -#define CMD_TYPE_SHORT_PREAMBLE 0x0002 -#define CMD_TYPE_LONG_PREAMBLE 0x0003 - -#define TURN_ON_RF 0x01 -#define RADIO_ON 0x01 -#define RADIO_OFF 0x00 - -#define SET_AUTO_PREAMBLE 0x05 -#define SET_SHORT_PREAMBLE 0x03 -#define SET_LONG_PREAMBLE 0x01 - -/* Define action or option for CMD_802_11_RF_CHANNEL */ -#define CMD_OPT_802_11_RF_CHANNEL_GET 0x00 -#define CMD_OPT_802_11_RF_CHANNEL_SET 0x01 - -/* Codes for CMD_802_11_SET_MODE */ -enum lbtf_mode { - LBTF_PASSIVE_MODE, - LBTF_STA_MODE, - LBTF_AP_MODE, -}; - -/** Card Event definition */ -#define MACREG_INT_CODE_FIRMWARE_READY 48 -/** Buffer Constants */ - -/* The size of SQ memory PPA, DPA are 8 DWORDs, that keep the physical -* addresses of TxPD buffers. Station has only 8 TxPD available, Whereas -* driver has more local TxPDs. Each TxPD on the host memory is associated -* with a Tx control node. The driver maintains 8 RxPD descriptors for -* station firmware to store Rx packet information. -* -* Current version of MAC has a 32x6 multicast address buffer. -* -* 802.11b can have up to 14 channels, the driver keeps the -* BSSID(MAC address) of each APs or Ad hoc stations it has sensed. -*/ - -#define MRVDRV_MAX_MULTICAST_LIST_SIZE 32 -#define LBS_NUM_CMD_BUFFERS 10 -#define LBS_CMD_BUFFER_SIZE (2 * 1024) -#define MRVDRV_MAX_CHANNEL_SIZE 14 -#define MRVDRV_SNAP_HEADER_LEN 8 - -#define LBS_UPLD_SIZE 2312 -#define DEV_NAME_LEN 32 - -/** Misc constants */ -/* This section defines 802.11 specific contants */ - -#define MRVDRV_MAX_REGION_CODE 6 -/** - * the table to keep region code - */ -#define LBTF_REGDOMAIN_US 0x10 -#define LBTF_REGDOMAIN_CA 0x20 -#define LBTF_REGDOMAIN_EU 0x30 -#define LBTF_REGDOMAIN_SP 0x31 -#define LBTF_REGDOMAIN_FR 0x32 -#define LBTF_REGDOMAIN_JP 0x40 - -#define SBI_EVENT_CAUSE_SHIFT 3 - -/** RxPD status */ - -#define MRVDRV_RXPD_STATUS_OK 0x0001 - - -/* This is for firmware specific length */ -#define EXTRA_LEN 36 - -#define MRVDRV_ETH_TX_PACKET_BUFFER_SIZE \ - (ETH_FRAME_LEN + sizeof(struct txpd) + EXTRA_LEN) - -#define MRVDRV_ETH_RX_PACKET_BUFFER_SIZE \ - (ETH_FRAME_LEN + sizeof(struct rxpd) \ - + MRVDRV_SNAP_HEADER_LEN + EXTRA_LEN) - -#define CMD_F_HOSTCMD (1 << 0) -#define FW_CAPINFO_WPA (1 << 0) - -#define RF_ANTENNA_1 0x1 -#define RF_ANTENNA_2 0x2 -#define RF_ANTENNA_AUTO 0xFFFF - -#define LBTF_EVENT_BCN_SENT 55 - -/** Global Variable Declaration */ -/** mv_ms_type */ -enum mv_ms_type { - MVMS_DAT = 0, - MVMS_CMD = 1, - MVMS_TXDONE = 2, - MVMS_EVENT -}; - -extern struct workqueue_struct *lbtf_wq; - -struct lbtf_private; - -struct lbtf_offset_value { - u32 offset; - u32 value; -}; - -struct channel_range { - u8 regdomain; - u8 start; - u8 end; /* exclusive (channel must be less than end) */ -}; - -struct if_usb_card; - -/** Private structure for the MV device */ -struct lbtf_private { - void *card; - struct ieee80211_hw *hw; - - /* Command response buffer */ - u8 cmd_resp_buff[LBS_UPLD_SIZE]; - /* Download sent: - bit0 1/0=data_sent/data_tx_done, - bit1 1/0=cmd_sent/cmd_tx_done, - all other bits reserved 0 */ - struct ieee80211_vif *vif; - - struct work_struct cmd_work; - struct work_struct tx_work; - /** Hardware access */ - int (*hw_host_to_card) (struct lbtf_private *priv, u8 type, u8 *payload, u16 nb); - int (*hw_prog_firmware) (struct if_usb_card *cardp); - int (*hw_reset_device) (struct if_usb_card *cardp); - - - /** Wlan adapter data structure*/ - /** STATUS variables */ - u32 fwrelease; - u32 fwcapinfo; - /* protected with big lock */ - - struct mutex lock; - - /** command-related variables */ - u16 seqnum; - /* protected by big lock */ - - struct cmd_ctrl_node *cmd_array; - /** Current command */ - struct cmd_ctrl_node *cur_cmd; - /** command Queues */ - /** Free command buffers */ - struct list_head cmdfreeq; - /** Pending command buffers */ - struct list_head cmdpendingq; - - /** spin locks */ - spinlock_t driver_lock; - - /** Timers */ - struct timer_list command_timer; - int nr_retries; - int cmd_timed_out; - - u8 cmd_response_rxed; - - /** capability Info used in Association, start, join */ - u16 capability; - - /** MAC address information */ - u8 current_addr[ETH_ALEN]; - u8 multicastlist[MRVDRV_MAX_MULTICAST_LIST_SIZE][ETH_ALEN]; - u32 nr_of_multicastmacaddr; - int cur_freq; - - struct sk_buff *skb_to_tx; - struct sk_buff *tx_skb; - - /** NIC Operation characteristics */ - u16 mac_control; - u16 regioncode; - struct channel_range range; - - u8 radioon; - u32 preamble; - - struct ieee80211_channel channels[14]; - struct ieee80211_rate rates[12]; - struct ieee80211_supported_band band; - struct lbtf_offset_value offsetvalue; - - u8 fw_ready; - u8 surpriseremoved; - struct sk_buff_head bc_ps_buf; - - /* Most recently reported noise in dBm */ - s8 noise; -}; - -/* 802.11-related definitions */ - -/* TxPD descriptor */ -struct txpd { - /* Current Tx packet status */ - __le32 tx_status; - /* Tx control */ - __le32 tx_control; - __le32 tx_packet_location; - /* Tx packet length */ - __le16 tx_packet_length; - /* First 2 byte of destination MAC address */ - u8 tx_dest_addr_high[2]; - /* Last 4 byte of destination MAC address */ - u8 tx_dest_addr_low[4]; - /* Pkt Priority */ - u8 priority; - /* Pkt Trasnit Power control */ - u8 powermgmt; - /* Time the packet has been queued in the driver (units = 2ms) */ - u8 pktdelay_2ms; - /* reserved */ - u8 reserved1; -}; - -/* RxPD Descriptor */ -struct rxpd { - /* Current Rx packet status */ - __le16 status; - - /* SNR */ - u8 snr; - - /* Tx control */ - u8 rx_control; - - /* Pkt length */ - __le16 pkt_len; - - /* Noise Floor */ - u8 nf; - - /* Rx Packet Rate */ - u8 rx_rate; - - /* Pkt addr */ - __le32 pkt_ptr; - - /* Next Rx RxPD addr */ - __le32 next_rxpd_ptr; - - /* Pkt Priority */ - u8 priority; - u8 reserved[3]; -}; - -struct cmd_header { - __le16 command; - __le16 size; - __le16 seqnum; - __le16 result; -} __packed; - -struct cmd_ctrl_node { - struct list_head list; - int result; - /* command response */ - int (*callback)(struct lbtf_private *, - unsigned long, struct cmd_header *); - unsigned long callback_arg; - /* command data */ - struct cmd_header *cmdbuf; - /* wait queue */ - u16 cmdwaitqwoken; - wait_queue_head_t cmdwait_q; -}; - -/* - * Define data structure for CMD_GET_HW_SPEC - * This structure defines the response for the GET_HW_SPEC command - */ -struct cmd_ds_get_hw_spec { - struct cmd_header hdr; - - /* HW Interface version number */ - __le16 hwifversion; - /* HW version number */ - __le16 version; - /* Max number of TxPD FW can handle */ - __le16 nr_txpd; - /* Max no of Multicast address */ - __le16 nr_mcast_adr; - /* MAC address */ - u8 permanentaddr[6]; - - /* region Code */ - __le16 regioncode; - - /* Number of antenna used */ - __le16 nr_antenna; - - /* FW release number, example 0x01030304 = 2.3.4p1 */ - __le32 fwrelease; - - /* Base Address of TxPD queue */ - __le32 wcb_base; - /* Read Pointer of RxPd queue */ - __le32 rxpd_rdptr; - - /* Write Pointer of RxPd queue */ - __le32 rxpd_wrptr; - - /*FW/HW capability */ - __le32 fwcapinfo; -} __packed; - -struct cmd_ds_mac_control { - struct cmd_header hdr; - __le16 action; - u16 reserved; -}; - -struct cmd_ds_802_11_mac_address { - struct cmd_header hdr; - - __le16 action; - uint8_t macadd[ETH_ALEN]; -}; - -struct cmd_ds_mac_multicast_addr { - struct cmd_header hdr; - - __le16 action; - __le16 nr_of_adrs; - u8 maclist[ETH_ALEN * MRVDRV_MAX_MULTICAST_LIST_SIZE]; -}; - -struct cmd_ds_set_mode { - struct cmd_header hdr; - - __le16 mode; -}; - -struct cmd_ds_set_bssid { - struct cmd_header hdr; - - u8 bssid[6]; - u8 activate; -}; - -struct cmd_ds_802_11_radio_control { - struct cmd_header hdr; - - __le16 action; - __le16 control; -}; - - -struct cmd_ds_802_11_rf_channel { - struct cmd_header hdr; - - __le16 action; - __le16 channel; - __le16 rftype; /* unused */ - __le16 reserved; /* unused */ - u8 channellist[32]; /* unused */ -}; - -struct cmd_ds_set_boot2_ver { - struct cmd_header hdr; - - __le16 action; - __le16 version; -}; - -struct cmd_ds_802_11_reset { - struct cmd_header hdr; - - __le16 action; -}; - -struct cmd_ds_802_11_beacon_control { - struct cmd_header hdr; - - __le16 action; - __le16 beacon_enable; - __le16 beacon_period; -}; - -struct cmd_ds_802_11_beacon_set { - struct cmd_header hdr; - - __le16 len; - u8 beacon[MRVL_MAX_BCN_SIZE]; -}; - -struct lbtf_private; -struct cmd_ctrl_node; - -/** Function Prototype Declaration */ -void lbtf_set_mac_control(struct lbtf_private *priv); - -int lbtf_free_cmd_buffer(struct lbtf_private *priv); - -int lbtf_allocate_cmd_buffer(struct lbtf_private *priv); -int lbtf_execute_next_command(struct lbtf_private *priv); -int lbtf_set_radio_control(struct lbtf_private *priv); -int lbtf_update_hw_spec(struct lbtf_private *priv); -int lbtf_cmd_set_mac_multicast_addr(struct lbtf_private *priv); -void lbtf_set_mode(struct lbtf_private *priv, enum lbtf_mode mode); -void lbtf_set_bssid(struct lbtf_private *priv, bool activate, const u8 *bssid); -int lbtf_set_mac_address(struct lbtf_private *priv, uint8_t *mac_addr); - -int lbtf_set_channel(struct lbtf_private *priv, u8 channel); - -int lbtf_beacon_set(struct lbtf_private *priv, struct sk_buff *beacon); -int lbtf_beacon_ctrl(struct lbtf_private *priv, bool beacon_enable, - int beacon_int); - - -int lbtf_process_rx_command(struct lbtf_private *priv); -void lbtf_complete_command(struct lbtf_private *priv, struct cmd_ctrl_node *cmd, - int result); -void lbtf_cmd_response_rx(struct lbtf_private *priv); - -/* main.c */ -struct chan_freq_power *lbtf_get_region_cfp_table(u8 region, - int *cfp_no); -struct lbtf_private *lbtf_add_card(void *card, struct device *dmdev); -int lbtf_remove_card(struct lbtf_private *priv); -int lbtf_start_card(struct lbtf_private *priv); -int lbtf_rx(struct lbtf_private *priv, struct sk_buff *skb); -void lbtf_send_tx_feedback(struct lbtf_private *priv, u8 retrycnt, u8 fail); -void lbtf_bcn_sent(struct lbtf_private *priv); - -/* support functions for cmd.c */ -/* lbtf_cmd() infers the size of the buffer to copy data back into, from - the size of the target of the pointer. Since the command to be sent - may often be smaller, that size is set in cmd->size by the caller.*/ -#define lbtf_cmd(priv, cmdnr, cmd, cb, cb_arg) ({ \ - uint16_t __sz = le16_to_cpu((cmd)->hdr.size); \ - (cmd)->hdr.size = cpu_to_le16(sizeof(*(cmd))); \ - __lbtf_cmd(priv, cmdnr, &(cmd)->hdr, __sz, cb, cb_arg); \ -}) - -#define lbtf_cmd_with_response(priv, cmdnr, cmd) \ - lbtf_cmd(priv, cmdnr, cmd, lbtf_cmd_copyback, (unsigned long) (cmd)) - -void lbtf_cmd_async(struct lbtf_private *priv, uint16_t command, - struct cmd_header *in_cmd, int in_cmd_size); - -int __lbtf_cmd(struct lbtf_private *priv, uint16_t command, - struct cmd_header *in_cmd, int in_cmd_size, - int (*callback)(struct lbtf_private *, unsigned long, - struct cmd_header *), - unsigned long callback_arg); - -int lbtf_cmd_copyback(struct lbtf_private *priv, unsigned long extra, - struct cmd_header *resp); |