]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/net/wireless/b43legacy/b43legacy.h
b43legacy: Load firmware from work queue instead of from probe routine
[karo-tx-linux.git] / drivers / net / wireless / b43legacy / b43legacy.h
index 12b5182515816e76d60fc08dd6ed2d54e43ac91b..a29da674e69ddbdc9982a104bc0bb0660fc488f4 100644 (file)
@@ -560,8 +560,16 @@ struct b43legacy_key {
        u8 algorithm;
 };
 
+#define B43legacy_QOS_QUEUE_NUM        4
+
 struct b43legacy_wldev;
 
+/* QOS parameters for a queue. */
+struct b43legacy_qos_params {
+       /* The QOS parameters */
+       struct ieee80211_tx_queue_params p;
+};
+
 /* Data structure for the WLAN parts (802.11 cores) of the b43legacy chip. */
 struct b43legacy_wl {
        /* Pointer to the active wireless device on this chip */
@@ -573,6 +581,9 @@ struct b43legacy_wl {
        struct mutex mutex;             /* locks wireless core state */
        spinlock_t leds_lock;           /* lock for leds */
 
+       /* firmware loading work */
+       struct work_struct firmware_load;
+
        /* We can only have one operating interface (802.11 core)
         * at a time. General information about this interface follows.
         */
@@ -611,6 +622,18 @@ struct b43legacy_wl {
        bool beacon1_uploaded;
        bool beacon_templates_virgin; /* Never wrote the templates? */
        struct work_struct beacon_update_trigger;
+       /* The current QOS parameters for the 4 queues. */
+       struct b43legacy_qos_params qos_params[B43legacy_QOS_QUEUE_NUM];
+
+       /* Packet transmit work */
+       struct work_struct tx_work;
+
+       /* Queue of packets to be transmitted. */
+       struct sk_buff_head tx_queue[B43legacy_QOS_QUEUE_NUM];
+
+       /* Flag that implement the queues stopping. */
+       bool tx_queue_stopped[B43legacy_QOS_QUEUE_NUM];
+
 };
 
 /* Pointers to the firmware data and meta information about it. */
@@ -810,15 +833,15 @@ struct b43legacy_lopair *b43legacy_get_lopair(struct b43legacy_phy *phy,
 
 
 /* Message printing */
-void b43legacyinfo(struct b43legacy_wl *wl, const char *fmt, ...)
-               __attribute__((format(printf, 2, 3)));
-void b43legacyerr(struct b43legacy_wl *wl, const char *fmt, ...)
-               __attribute__((format(printf, 2, 3)));
-void b43legacywarn(struct b43legacy_wl *wl, const char *fmt, ...)
-               __attribute__((format(printf, 2, 3)));
+__printf(2, 3)
+void b43legacyinfo(struct b43legacy_wl *wl, const char *fmt, ...);
+__printf(2, 3)
+void b43legacyerr(struct b43legacy_wl *wl, const char *fmt, ...);
+__printf(2, 3)
+void b43legacywarn(struct b43legacy_wl *wl, const char *fmt, ...);
 #if B43legacy_DEBUG
-void b43legacydbg(struct b43legacy_wl *wl, const char *fmt, ...)
-               __attribute__((format(printf, 2, 3)));
+__printf(2, 3)
+void b43legacydbg(struct b43legacy_wl *wl, const char *fmt, ...);
 #else /* DEBUG */
 # define b43legacydbg(wl, fmt...) do { /* nothing */ } while (0)
 #endif /* DEBUG */