Release 4.7 drivers/net/wireless/ath/ar5523/ar5523.h
  
  
/*
 * Copyright (c) 2006 Damien Bergamini <damien.bergamini@free.fr>
 * Copyright (c) 2006 Sam Leffler, Errno Consulting
 * Copyright (c) 2007 Christoph Hellwig <hch@lst.de>
 * Copyright (c) 2008-2009 Weongyo Jeong <weongyo@freebsd.org>
 * Copyright (c) 2012 Pontus Fuchs <pontus.fuchs@gmail.com>
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */
#define AR5523_FLAG_PRE_FIRMWARE	(1 << 0)
#define AR5523_FLAG_ABG			(1 << 1)
#define AR5523_FIRMWARE_FILE	"ar5523.bin"
#define AR5523_CMD_TX_PIPE	0x01
#define	AR5523_DATA_TX_PIPE	0x02
#define	AR5523_CMD_RX_PIPE	0x81
#define	AR5523_DATA_RX_PIPE	0x82
#define ar5523_cmd_tx_pipe(dev) \
	usb_sndbulkpipe((dev), AR5523_CMD_TX_PIPE)
#define ar5523_data_tx_pipe(dev) \
	usb_sndbulkpipe((dev), AR5523_DATA_TX_PIPE)
#define ar5523_cmd_rx_pipe(dev) \
	usb_rcvbulkpipe((dev), AR5523_CMD_RX_PIPE)
#define ar5523_data_rx_pipe(dev) \
	usb_rcvbulkpipe((dev), AR5523_DATA_RX_PIPE)
#define	AR5523_DATA_TIMEOUT	10000
#define	AR5523_CMD_TIMEOUT	1000
#define AR5523_TX_DATA_COUNT		8
#define AR5523_TX_DATA_RESTART_COUNT	2
#define AR5523_RX_DATA_COUNT		16
#define AR5523_RX_DATA_REFILL_COUNT	8
#define AR5523_CMD_ID	1
#define AR5523_DATA_ID	2
#define AR5523_TX_WD_TIMEOUT	(HZ * 2)
#define AR5523_FLUSH_TIMEOUT	(HZ * 3)
enum AR5523_flags {
	
AR5523_HW_UP,
	
AR5523_USB_DISCONNECTED,
	
AR5523_CONNECTED
};
struct ar5523_tx_cmd {
	
struct ar5523		*ar;
	
struct urb		*urb_tx;
	
void			*buf_tx;
	
void			*odata;
	
int			olen;
	
int			flags;
	
int			res;
	
struct completion	done;
};
/* This struct is placed in tx_info->driver_data. It must not be larger
 *  than IEEE80211_TX_INFO_DRIVER_DATA_SIZE.
 */
struct ar5523_tx_data {
	
struct list_head	list;
	
struct ar5523		*ar;
	
struct urb		*urb;
};
struct ar5523_rx_data {
	
struct	list_head	list;
	
struct ar5523		*ar;
	
struct urb		*urb;
	
struct sk_buff		*skb;
};
struct ar5523 {
	
struct usb_device	*dev;
	
struct ieee80211_hw	*hw;
	
unsigned long		flags;
	
struct mutex		mutex;
	
struct workqueue_struct *wq;
	
struct ar5523_tx_cmd	tx_cmd;
	
struct delayed_work	stat_work;
	
struct timer_list	tx_wd_timer;
	
struct work_struct	tx_wd_work;
	
struct work_struct	tx_work;
	
struct list_head	tx_queue_pending;
	
struct list_head	tx_queue_submitted;
	
spinlock_t		tx_data_list_lock;
	
wait_queue_head_t	tx_flush_waitq;
	/* Queued + Submitted TX frames */
	
atomic_t		tx_nr_total;
	/* Submitted TX frames */
	
atomic_t		tx_nr_pending;
	
void			*rx_cmd_buf;
	
struct urb		*rx_cmd_urb;
	
struct ar5523_rx_data	rx_data[AR5523_RX_DATA_COUNT];
	
spinlock_t		rx_data_list_lock;
	
struct list_head	rx_data_free;
	
struct list_head	rx_data_used;
	
atomic_t		rx_data_free_cnt;
	
struct work_struct	rx_refill_work;
	
unsigned int		rxbufsz;
	
u8			serial[16];
	
struct ieee80211_channel channels[14];
	
struct ieee80211_rate	rates[12];
	
struct ieee80211_supported_band band;
	
struct ieee80211_vif	*vif;
};
/* flags for sending firmware commands */
#define AR5523_CMD_FLAG_READ	(1 << 1)
#define AR5523_CMD_FLAG_MAGIC	(1 << 2)
#define ar5523_dbg(ar, format, arg...) \
	dev_dbg(&(ar)->dev->dev, format, ## arg)
/* On USB hot-unplug there can be a lot of URBs in flight and they'll all
 * fail. Instead of dealing with them in every possible place just surpress
 * any messages on USB disconnect.
 */
#define ar5523_err(ar, format, arg...) \
do { \
        if (!test_bit(AR5523_USB_DISCONNECTED, &ar->flags)) { \
                dev_err(&(ar)->dev->dev, format, ## arg); \
        } \
} while (0)
#define ar5523_info(ar, format, arg...)	\
	dev_info(&(ar)->dev->dev, format, ## arg)
Overall Contributors
 | Person | Tokens | Prop | Commits | CommitProp | 
| pontus fuchs | pontus fuchs | 376 | 99.73% | 1 | 50.00% | 
| dan carpenter | dan carpenter | 1 | 0.27% | 1 | 50.00% | 
 | Total | 377 | 100.00% | 2 | 100.00% | 
  
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.