Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/net/wireless/ath/ar5523/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 4 kB image not shown  

Quelle  ar5523.h   Sprache: C

 
/*
 * 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)

Messung V0.5
C=97 H=92 G=94

¤ Dauer der Verarbeitung: 0.10 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.