All one-bit bitfields have been subsumed into the new 'flags'
structure member and the new IEEE80211_TXCTL_* definitions.  The
multiple bit members were converted to u8, s8 or u16 as appropriate.

Signed-off-by: David Kimdon <[EMAIL PROTECTED]>

Index: wireless-dev/include/net/d80211.h
===================================================================
--- wireless-dev.orig/include/net/d80211.h
+++ wireless-dev/include/net/d80211.h
@@ -141,36 +141,38 @@ struct ieee80211_tx_control {
        int rts_cts_rate; /* Transmit rate for RTS/CTS frame, given as the hw
                           * specific value for the rate (from
                           * struct ieee80211_rate) */
-       /* 1 = only first attempt, 2 = one retry, .. */
-       unsigned int retry_limit:8;
-       /* duration field for RTS/CTS frame */
-       unsigned int rts_cts_duration:16;
-       unsigned int req_tx_status:1; /* request TX status callback for this
-                                      * frame */
-       unsigned int do_not_encrypt:1; /* send this frame without encryption;
-                              * e.g., for EAPOL frames */
-       unsigned int use_rts_cts:1; /* Use RTS-CTS before sending frame. */
-       unsigned int use_cts_protect:1; /* Use CTS protection for the frame
-                                        * (e.g., for combined 802.11g /
-                                        * 802.11b networks) */
-        unsigned int no_ack:1; /* Tell the low level not to wait for an ack */
-       unsigned int rate_ctrl_probe:1;
-       unsigned int clear_dst_mask:1;
-       unsigned int requeue:1;
-       unsigned int first_fragment:1;  /* This is a first fragment of the
-                                        * frame */
-        unsigned int power_level:8; /* per-packet transmit power level, in dBm
-                                    */
-       unsigned int antenna_sel:4; /* 0 = default/diversity,
-                                    * 1 = Ant0, 2 = Ant1 */
-       int key_idx:8; /* -1 = do not encrypt, >= 0 keyidx from hw->set_key()
-                       */
-       int icv_len:8; /* Length of the ICV/MIC field in octets */
-       int iv_len:8; /* Length of the IV field in octets */
-       unsigned int queue:4; /* hardware queue to use for this frame;
-                     * 0 = highest, hw->queues-1 = lowest */
-       unsigned int sw_retry_attempt:4; /* no. of times hw has tried to
-                     * transmit frame (not incl. hw retries) */
+
+#define IEEE80211_TXCTL_REQ_TX_STATUS  (1<<0)/* request TX status callback for
+                                               * this frame */
+#define IEEE80211_TXCTL_DO_NOT_ENCRYPT (1<<1) /* send this frame without
+                                               * encryption; e.g., for EAPOL
+                                               * frames */
+#define IEEE80211_TXCTL_USE_RTS_CTS    (1<<2) /* use RTS-CTS before sending
+                                               * frame */
+#define IEEE80211_TXCTL_USE_CTS_PROTECT        (1<<3) /* use CTS protection 
for the
+                                               * frame (e.g., for combined
+                                               * 802.11g / 802.11b networks) */
+#define IEEE80211_TXCTL_NO_ACK         (1<<4) /* tell the low level not to
+                                               * wait for an ack */
+#define IEEE80211_TXCTL_RATE_CTRL_PROBE        (1<<5)
+#define IEEE80211_TXCTL_CLEAR_DST_MASK (1<<6)
+#define IEEE80211_TXCTL_REQUEUE                (1<<7)
+#define IEEE80211_TXCTL_FIRST_FRAGMENT (1<<8) /* this is a first fragment of
+                                               * the frame */
+       u16 flags;                             /* tx control flags defined
+                                               * above */
+       u16 rts_cts_duration;   /* duration field for RTS/CTS frame */
+       u8 retry_limit;         /* 1 = only first attempt, 2 = one retry, .. */
+       u8 power_level;         /* per-packet transmit power level, in dBm */
+       u8 antenna_sel;         /* 0 = default/diversity, 1 = Ant0, 2 = Ant1 */
+       s8 key_idx;             /* -1 = do not encrypt, >= 0 keyidx from
+                                * hw->set_key() */
+       u8 icv_len;             /* length of the ICV/MIC field in octets */
+       u8 iv_len;              /* length of the IV field in octets */
+       u8 queue;               /* hardware queue to use for this frame;
+                                * 0 = highest, hw->queues-1 = lowest */
+       u8 sw_retry_attempt;    /* number of times hw has tried to
+                                * transmit frame (not incl. hw retries) */
 
        int rateidx; /* internal 80211.o rateidx */
        int alt_retry_rate; /* retry rate for the last retries, given as the
Index: wireless-dev/net/d80211/ieee80211.c
===================================================================
--- wireless-dev.orig/net/d80211/ieee80211.c
+++ wireless-dev/net/d80211/ieee80211.c
@@ -363,7 +363,7 @@ ieee80211_tx_h_rate_ctrl(struct ieee8021
 
        tx->u.tx.rate = rate_control_get_rate(tx->dev, tx->skb, &extra);
        if (unlikely(extra.probe != NULL)) {
-               tx->u.tx.control->rate_ctrl_probe = 1;
+               tx->u.tx.control->flags |= IEEE80211_TXCTL_RATE_CTRL_PROBE;
                tx->u.tx.probe_last_frag = 1;
                tx->u.tx.control->alt_retry_rate = tx->u.tx.rate->val;
                tx->u.tx.rate = extra.probe;
@@ -381,7 +381,7 @@ ieee80211_tx_h_rate_ctrl(struct ieee8021
 
                tx->u.tx.rate = extra.nonerp;
                tx->u.tx.control->rateidx = extra.nonerp_idx;
-               tx->u.tx.control->rate_ctrl_probe = 0;
+               tx->u.tx.control->flags &= ~IEEE80211_TXCTL_RATE_CTRL_PROBE;
        } else {
                tx->u.tx.last_frag_rate = tx->u.tx.rate;
                tx->u.tx.last_frag_rateidx = extra.rateidx;
@@ -407,7 +407,7 @@ ieee80211_tx_h_select_key(struct ieee802
        else
                tx->u.tx.control->key_idx = HW_KEY_IDX_INVALID;
 
-       if (unlikely(tx->u.tx.control->do_not_encrypt))
+       if (unlikely(tx->u.tx.control->flags & IEEE80211_TXCTL_DO_NOT_ENCRYPT))
                tx->key = NULL;
        else if (tx->sta && tx->sta->key)
                tx->key = tx->sta->key;
@@ -762,7 +762,7 @@ ieee80211_tx_h_misc(struct ieee80211_txr
        if (!is_multicast_ether_addr(hdr->addr1)) {
                if (tx->skb->len + FCS_LEN > tx->local->rts_threshold &&
                    tx->local->rts_threshold < IEEE80211_MAX_RTS_THRESHOLD) {
-                       control->use_rts_cts = 1;
+                       control->flags |= IEEE80211_TXCTL_USE_RTS_CTS;
                        control->retry_limit =
                                tx->local->long_retry_limit;
                } else {
@@ -788,8 +788,8 @@ ieee80211_tx_h_misc(struct ieee80211_txr
            (tx->u.tx.rate->flags & IEEE80211_RATE_ERP) &&
            tx->u.tx.unicast &&
            tx->local->cts_protect_erp_frames &&
-           !control->use_rts_cts)
-               control->use_cts_protect = 1;
+           !(control->flags & IEEE80211_TXCTL_USE_RTS_CTS))
+               control->flags |= IEEE80211_TXCTL_USE_CTS_PROTECT;
 
        /* Setup duration field for the first fragment of the frame. Duration
         * for remaining fragments will be updated when they are being sent
@@ -799,7 +799,8 @@ ieee80211_tx_h_misc(struct ieee80211_txr
                                 0);
        hdr->duration_id = cpu_to_le16(dur);
 
-       if (control->use_rts_cts || control->use_cts_protect) {
+       if ((control->flags & IEEE80211_TXCTL_USE_RTS_CTS) ||
+           (control->flags & IEEE80211_TXCTL_USE_CTS_PROTECT)) {
                struct ieee80211_rate *rate;
                int erp = tx->u.tx.rate->flags & IEEE80211_RATE_ERP;
 
@@ -812,7 +813,7 @@ ieee80211_tx_h_misc(struct ieee80211_txr
                       !(rate->flags & IEEE80211_RATE_BASIC))
                        rate--;
 
-               if (control->use_rts_cts)
+               if (control->flags & IEEE80211_TXCTL_USE_RTS_CTS)
                        dur += ieee80211_frame_duration(tx->local, 10,
                                                        rate->rate, erp,
                                                        tx->local->
@@ -1100,15 +1101,18 @@ __ieee80211_tx_prepare(struct ieee80211_
         control->power_level = local->conf.power_level;
        tx->u.tx.control = control;
         tx->u.tx.unicast = !is_multicast_ether_addr(hdr->addr1);
-        control->no_ack = is_multicast_ether_addr(hdr->addr1);
+       if (is_multicast_ether_addr(hdr->addr1))
+               control->flags |= IEEE80211_TXCTL_NO_ACK;
+       else
+               control->flags &= ~IEEE80211_TXCTL_NO_ACK;
        tx->fragmented = local->fragmentation_threshold <
                IEEE80211_MAX_FRAG_THRESHOLD && tx->u.tx.unicast &&
                skb->len + 4 /* FCS */ > local->fragmentation_threshold &&
                (!local->hw->set_frag_threshold);
        if (!tx->sta)
-               control->clear_dst_mask = 1;
+               control->flags |= IEEE80211_TXCTL_CLEAR_DST_MASK;
        else if (tx->sta->clear_dst_mask) {
-               control->clear_dst_mask = 1;
+               control->flags |= IEEE80211_TXCTL_CLEAR_DST_MASK;
                tx->sta->clear_dst_mask = 0;
        }
        control->antenna_sel = local->conf.antenna_sel;
@@ -1119,7 +1123,7 @@ __ieee80211_tx_prepare(struct ieee80211_
                u8 *pos = &skb->data[hdrlen + sizeof(rfc1042_header)];
                tx->ethertype = (pos[0] << 8) | pos[1];
        }
-       control->first_fragment = 1;
+       control->flags |= IEEE80211_TXCTL_FIRST_FRAGMENT;
 
 }
 
@@ -1183,10 +1187,10 @@ static int __ieee80211_tx(struct ieee802
                ieee80211_led_tx(local, 1);
        }
        if (tx->u.tx.extra_frag) {
-               control->use_rts_cts = 0;
-               control->use_cts_protect = 0;
-               control->clear_dst_mask = 0;
-               control->first_fragment = 0;
+               control->flags &= ~(IEEE80211_TXCTL_USE_RTS_CTS |
+                                   IEEE80211_TXCTL_USE_CTS_PROTECT |
+                                   IEEE80211_TXCTL_CLEAR_DST_MASK |
+                                   IEEE80211_TXCTL_FIRST_FRAGMENT);
                for (i = 0; i < tx->u.tx.num_extra_frag; i++) {
                        if (!tx->u.tx.extra_frag[i])
                                continue;
@@ -1195,8 +1199,12 @@ static int __ieee80211_tx(struct ieee802
                        if (i == tx->u.tx.num_extra_frag) {
                                control->tx_rate = tx->u.tx.last_frag_hwrate;
                                control->rateidx = tx->u.tx.last_frag_rateidx;
-                               control->rate_ctrl_probe =
-                                       tx->u.tx.probe_last_frag;
+                               if (tx->u.tx.probe_last_frag)
+                                       control->flags |=
+                                               IEEE80211_TXCTL_RATE_CTRL_PROBE;
+                               else
+                                       control->flags &=
+                                               
~IEEE80211_TXCTL_RATE_CTRL_PROBE;
                        }
 
                        ieee80211_dump_frame(local->mdev->name,
@@ -1411,11 +1419,14 @@ static int ieee80211_master_start_xmit(s
 
        control.ifindex = odev->ifindex;
        control.type = osdata->type;
-       control.req_tx_status = pkt_data->req_tx_status;
-       control.do_not_encrypt = pkt_data->do_not_encrypt;
+       if (pkt_data->req_tx_status)
+               control.flags |= IEEE80211_TXCTL_REQ_TX_STATUS;
+       if (pkt_data->do_not_encrypt)
+               control.flags |= IEEE80211_TXCTL_DO_NOT_ENCRYPT;
        control.pkt_type =
                pkt_data->pkt_probe_resp ? PKT_PROBE_RESP : PKT_NORMAL;
-       control.requeue = pkt_data->requeue;
+       if (pkt_data->requeue)
+               control.flags |= IEEE80211_TXCTL_REQUEUE;
        control.queue = pkt_data->queue;
 
        ret = ieee80211_tx(odev, skb, &control,
@@ -1805,10 +1816,10 @@ struct sk_buff * ieee80211_beacon_get(st
                        rate->val2 : rate->val;
                control->antenna_sel = local->conf.antenna_sel;
                control->power_level = local->conf.power_level;
-               control->no_ack = 1;
+               control->flags |= IEEE80211_TXCTL_NO_ACK;
                control->retry_limit = 1;
                control->rts_cts_duration = 0;
-               control->clear_dst_mask = 1;
+               control->flags |= IEEE80211_TXCTL_CLEAR_DST_MASK;
        }
 
        ap->num_beacons++;
@@ -3728,9 +3739,9 @@ ieee80211_tx_h_load_stats(struct ieee802
        if (!is_multicast_ether_addr(hdr->addr1))
                load += hdrtime;
 
-       if (tx->u.tx.control->use_rts_cts)
+       if (tx->u.tx.control->flags & IEEE80211_TXCTL_USE_RTS_CTS)
                load += 2 * hdrtime;
-       else if (tx->u.tx.control->use_cts_protect)
+       else if (tx->u.tx.control->flags & IEEE80211_TXCTL_USE_CTS_PROTECT)
                load += hdrtime;
 
        load += skb->len * tx->u.tx.rate->rate_inv;
@@ -3880,7 +3891,7 @@ void ieee80211_tx_status_irqsafe(struct 
                memcpy(saved, status, sizeof(struct ieee80211_tx_status));
        memcpy(skb->cb, &saved, sizeof(saved));
         skb->pkt_type = ieee80211_tx_status_msg;
-       skb_queue_tail(status->control.req_tx_status ?
+       skb_queue_tail(status->control.flags & IEEE80211_TXCTL_REQ_TX_STATUS ?
                       &local->skb_queue : &local->skb_queue_unreliable, skb);
        tmp = skb_queue_len(&local->skb_queue) +
                skb_queue_len(&local->skb_queue_unreliable);
@@ -3957,10 +3968,10 @@ static void ieee80211_remove_tx_extra(st
        pkt_data = (struct ieee80211_tx_packet_data *)skb->cb;
        pkt_data->ifindex = control->ifindex;
        pkt_data->mgmt_iface = (control->type == IEEE80211_IF_TYPE_MGMT);
-       pkt_data->req_tx_status = control->req_tx_status;
-       pkt_data->do_not_encrypt = control->do_not_encrypt;
+       pkt_data->req_tx_status = !!(control->flags & 
IEEE80211_TXCTL_REQ_TX_STATUS);
+       pkt_data->do_not_encrypt = !!(control->flags & 
IEEE80211_TXCTL_DO_NOT_ENCRYPT);
        pkt_data->pkt_probe_resp = (control->pkt_type == PKT_PROBE_RESP);
-       pkt_data->requeue = control->requeue;
+       pkt_data->requeue = !!(control->flags & IEEE80211_TXCTL_REQUEUE);
        pkt_data->queue = control->queue;
 
        hdrlen = ieee80211_get_hdrlen_from_skb(skb);
@@ -4063,9 +4074,9 @@ void ieee80211_tx_status(struct net_devi
                                                          &status->control);
                                skb_queue_tail(&sta->tx_filtered, skb);
                        } else if (!(sta->flags & WLAN_STA_PS) &&
-                                  !status->control.requeue) {
+                                  !(status->control.flags & 
IEEE80211_TXCTL_REQUEUE)) {
                                /* Software retry the packet once */
-                               status->control.requeue = 1;
+                               status->control.flags |= 
IEEE80211_TXCTL_REQUEUE;
                                ieee80211_remove_tx_extra(local, sta->key,
                                                          skb,
                                                          &status->control);
@@ -4124,7 +4135,7 @@ void ieee80211_tx_status(struct net_devi
                        local->dot11FailedCount++;
         }
 
-        if (!status->control.req_tx_status) {
+        if (!(status->control.flags & IEEE80211_TXCTL_REQ_TX_STATUS)) {
                dev_kfree_skb(skb);
                return;
        }
Index: wireless-dev/net/d80211/ieee80211_scan.c
===================================================================
--- wireless-dev.orig/net/d80211/ieee80211_scan.c
+++ wireless-dev/net/d80211/ieee80211_scan.c
@@ -329,12 +329,12 @@ void ieee80211_init_scan(struct net_devi
 
        memset(&local->scan.tx_control, 0, sizeof(local->scan.tx_control));
        local->scan.tx_control.key_idx = HW_KEY_IDX_INVALID;
-       local->scan.tx_control.do_not_encrypt = 1;
+       local->scan.tx_control.flags |= IEEE80211_TXCTL_DO_NOT_ENCRYPT;
        memset(&extra, 0, sizeof(extra));
        extra.endidx = local->num_curr_rates;
        local->scan.tx_control.tx_rate =
                rate_control_get_rate(dev, local->scan.skb, &extra)->val;
-       local->scan.tx_control.no_ack = 1;
+       local->scan.tx_control.flags |= IEEE80211_TXCTL_NO_ACK;
 }
 
 
Index: wireless-dev/net/d80211/ieee80211_sta.c
===================================================================
--- wireless-dev.orig/net/d80211/ieee80211_sta.c
+++ wireless-dev/net/d80211/ieee80211_sta.c
@@ -2062,7 +2062,7 @@ static int ieee80211_sta_join_ibss(struc
                        rate->val2 : rate->val;
                control.antenna_sel = local->conf.antenna_sel;
                control.power_level = local->conf.power_level;
-               control.no_ack = 1;
+               control.flags |= IEEE80211_TXCTL_NO_ACK;
                control.retry_limit = 1;
                control.rts_cts_duration = 0;
 
Index: wireless-dev/drivers/net/wireless/d80211/adm8211/adm8211.c
===================================================================
--- wireless-dev.orig/drivers/net/wireless/d80211/adm8211/adm8211.c
+++ wireless-dev/drivers/net/wireless/d80211/adm8211/adm8211.c
@@ -437,7 +437,8 @@ static void adm8211_interrupt_tci(struct
                pci_unmap_single(priv->pdev, priv->tx_buffers[entry].mapping,
                                 priv->tx_buffers[entry].skb->len, 
PCI_DMA_TODEVICE);
 
-               if (priv->tx_buffers[entry].tx_status.control.req_tx_status ||
+               if ((priv->tx_buffers[entry].tx_status.control.flags &
+                    IEEE80211_TXCTL_REQ_TX_STATUS) ||
                    
!is_multicast_ether_addr(ieee80211_get_DA(&priv->tx_buffers[entry].hdr))) {
                        struct ieee80211_hdr *hdr;
                        size_t hdrlen = 
ieee80211_get_hdrlen(le16_to_cpu(priv->tx_buffers[entry].hdr.frame_control));
@@ -1859,7 +1860,7 @@ static int adm8211_tx(struct net_device 
        if (short_preamble)
                txhdr->header_control |= 
cpu_to_le16(ADM8211_TXHDRCTL_SHORT_PREAMBLE);
 
-       if (control->use_rts_cts)
+       if (control->flags & IEEE80211_TXCTL_USE_RTS_CTS)
                txhdr->header_control |= 
cpu_to_le16(ADM8211_TXHDRCTL_ENABLE_RTS);
 
        if (fc & IEEE80211_FCTL_PROTECTED)
Index: wireless-dev/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c
===================================================================
--- wireless-dev.orig/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c
+++ wireless-dev/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c
@@ -280,7 +280,8 @@ void bcm43xx_generate_txhdr(struct bcm43
 {
        const struct bcm43xx_phyinfo *phy = bcm43xx_current_phy(bcm);
        const struct ieee80211_hdr *wireless_header = (const struct 
ieee80211_hdr *)fragment_data;
-       const int use_encryption = (!txctl->do_not_encrypt && txctl->key_idx >= 
0);
+       const int use_encryption = (!(txctl->flags & 
IEEE80211_TXCTL_DO_NOT_ENCRYPT) &&
+                                   txctl->key_idx >= 0);
        u8 bitrate;
        u8 fallback_bitrate;
        int ofdm_modulation;
@@ -340,13 +341,13 @@ void bcm43xx_generate_txhdr(struct bcm43
                   & BCM43xx_TXHDRCTL_ANTENNADIV_MASK;
 
        /* Set the FLAGS field */
-       if (!txctl->no_ack)
+       if (!(txctl->flags & IEEE80211_TXCTL_NO_ACK))
                flags |= BCM43xx_TXHDRFLAG_EXPECTACK;
        if (1 /* FIXME: PS poll?? */)
                flags |= 0x10; // FIXME: unknown meaning.
        if (fallback_ofdm_modulation)
                flags |= BCM43xx_TXHDRFLAG_FALLBACKOFDM;
-       if (txctl->first_fragment)
+       if (txctl->flags & IEEE80211_TXCTL_FIRST_FRAGMENT)
                flags |= BCM43xx_TXHDRFLAG_FIRSTFRAGMENT;
 
        /* Set WSEC/RATE field */
@@ -358,7 +359,7 @@ void bcm43xx_generate_txhdr(struct bcm43
         *        if we are on 80211g. If we get too many
         *        failures (hidden nodes), we should switch back to RTS/CTS.
         */
-       if (txctl->use_rts_cts) {
+       if (txctl->flags & IEEE80211_TXCTL_USE_RTS_CTS) {
                bcm43xx_generate_rts(phy, txhdr, &flags,
                                     txctl->rts_cts_rate,
                                     wireless_header);
Index: wireless-dev/drivers/net/wireless/d80211/rt2x00/rt2400pci.c
===================================================================
--- wireless-dev.orig/drivers/net/wireless/d80211/rt2x00/rt2400pci.c
+++ wireless-dev/drivers/net/wireless/d80211/rt2x00/rt2400pci.c
@@ -1556,14 +1556,15 @@ static void rt2400pci_write_tx_desc(stru
                tx_rate = control->tx_rate;
 
        rt2x00_set_field32(&txd->word0, TXD_W0_VALID, 1);
-       rt2x00_set_field32(&txd->word0, TXD_W0_ACK, !control->no_ack);
+       rt2x00_set_field32(&txd->word0, TXD_W0_ACK,
+                          !(control->flags & IEEE80211_TXCTL_NO_ACK));
 
        /*
         * Set IFS to IFS_SIFS when the this is not the first fragment,
         * or this fragment came after RTS/CTS.
         */
        if (((le16_to_cpu(ieee80211hdr->seq_ctrl) & IEEE80211_SCTL_FRAG) > 0) ||
-           control->use_rts_cts)
+           (control->flags & IEEE80211_TXCTL_USE_RTS_CTS))
                rt2x00_set_field32(&txd->word0, TXD_W0_IFS, IFS_SIFS);
        else
                rt2x00_set_field32(&txd->word0, TXD_W0_IFS, IFS_BACKOFF);
@@ -1907,7 +1908,7 @@ static int rt2400pci_tx(struct net_devic
         * create and queue that frame first.
         */
        frame_control = le16_to_cpu(ieee80211hdr->frame_control);
-       if (control->use_rts_cts &&
+       if ((control->flags & IEEE80211_TXCTL_USE_RTS_CTS) &&
            (frame_control & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_RTS) {
                skb_rts = rt2400pci_create_rts(rt2x00dev,
                                ieee80211hdr, control->rts_cts_duration);
Index: wireless-dev/drivers/net/wireless/d80211/rt2x00/rt2500pci.c
===================================================================
--- wireless-dev.orig/drivers/net/wireless/d80211/rt2x00/rt2500pci.c
+++ wireless-dev/drivers/net/wireless/d80211/rt2x00/rt2500pci.c
@@ -1681,7 +1681,8 @@ static void rt2500pci_write_tx_desc(stru
                tx_rate = control->tx_rate;
 
        rt2x00_set_field32(&txd->word0, TXD_W0_VALID, 1);
-       rt2x00_set_field32(&txd->word0, TXD_W0_ACK, !control->no_ack);
+       rt2x00_set_field32(&txd->word0, TXD_W0_ACK,
+                          !(control->flags & IEEE80211_TXCTL_NO_ACK));
 
        ring = rt2x00_get_ring(rt2x00dev, control->queue);
        if (unlikely(!ring))
@@ -1697,7 +1698,7 @@ static void rt2500pci_write_tx_desc(stru
         * or this fragment came after RTS/CTS.
         */
        if (((le16_to_cpu(ieee80211hdr->seq_ctrl) & IEEE80211_SCTL_FRAG) > 0) ||
-           control->use_rts_cts)
+           (control->flags & IEEE80211_TXCTL_USE_RTS_CTS))
                rt2x00_set_field32(&txd->word0, TXD_W0_IFS, IFS_SIFS);
        else
                rt2x00_set_field32(&txd->word0, TXD_W0_IFS, IFS_BACKOFF);
@@ -2056,7 +2057,7 @@ static int rt2500pci_tx(struct net_devic
         * create and queue that frame first.
         */
        frame_control = le16_to_cpu(ieee80211hdr->frame_control);
-       if (control->use_rts_cts &&
+       if ((control->flags & IEEE80211_TXCTL_USE_RTS_CTS) &&
            (frame_control & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_RTS) {
                skb_rts = rt2500pci_create_rts(rt2x00dev,
                                ieee80211hdr, control->rts_cts_duration);
Index: wireless-dev/drivers/net/wireless/d80211/rt2x00/rt61pci.c
===================================================================
--- wireless-dev.orig/drivers/net/wireless/d80211/rt2x00/rt61pci.c
+++ wireless-dev/drivers/net/wireless/d80211/rt2x00/rt61pci.c
@@ -2111,7 +2111,8 @@ static void rt61pci_write_tx_desc(struct
                tx_rate = control->tx_rate;
 
        rt2x00_set_field32(&txd->word0, TXD_W0_VALID, 1);
-       rt2x00_set_field32(&txd->word0, TXD_W0_ACK, !control->no_ack);
+       rt2x00_set_field32(&txd->word0, TXD_W0_ACK,
+                          !(control->flags & IEEE80211_TXCTL_NO_ACK));
 
        ring = rt2x00_get_ring(rt2x00dev, control->queue);
        if (unlikely(!ring))
@@ -2127,7 +2128,7 @@ static void rt61pci_write_tx_desc(struct
         * or this fragment came after RTS/CTS.
         */
        if (((le16_to_cpu(ieee80211hdr->seq_ctrl) & IEEE80211_SCTL_FRAG) > 0) ||
-           control->use_rts_cts)
+           (control->flags & IEEE80211_TXCTL_USE_RTS_CTS))
                rt2x00_set_field32(&txd->word0, TXD_W0_IFS, IFS_SIFS);
        else
                rt2x00_set_field32(&txd->word0, TXD_W0_IFS, IFS_BACKOFF);
@@ -2532,7 +2533,7 @@ static int rt61pci_tx(struct net_device 
         * create and queue that frame first.
         */
        frame_control = le16_to_cpu(ieee80211hdr->frame_control);
-       if (control->use_rts_cts &&
+       if ((control->flags & IEEE80211_TXCTL_USE_RTS_CTS) &&
            (frame_control & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_RTS) {
                skb_rts = rt61pci_create_rts(rt2x00dev,
                                ieee80211hdr, control->rts_cts_duration);
Index: wireless-dev/drivers/net/wireless/d80211/rt2x00/rt2500usb.c
===================================================================
--- wireless-dev.orig/drivers/net/wireless/d80211/rt2x00/rt2500usb.c
+++ wireless-dev/drivers/net/wireless/d80211/rt2x00/rt2500usb.c
@@ -1459,7 +1459,8 @@ static void rt2500usb_write_tx_desc(stru
        else
                tx_rate = control->tx_rate;
 
-       rt2x00_set_field32(&txd->word0, TXD_W0_ACK, !control->no_ack);
+       rt2x00_set_field32(&txd->word0, TXD_W0_ACK,
+                          !(control->flags & IEEE80211_TXCTL_NO_ACK));
 
        ring = rt2x00_get_ring(rt2x00dev, control->queue);
        if (unlikely(!ring))
@@ -1475,7 +1476,7 @@ static void rt2500usb_write_tx_desc(stru
         * or this fragment came after RTS/CTS.
         */
        if (((le16_to_cpu(ieee80211hdr->seq_ctrl) & IEEE80211_SCTL_FRAG) > 0) ||
-           control->use_rts_cts)
+           (control->flags & IEEE80211_TXCTL_USE_RTS_CTS))
                rt2x00_set_field32(&txd->word0, TXD_W0_IFS, IFS_SIFS);
        else
                rt2x00_set_field32(&txd->word0, TXD_W0_IFS, IFS_BACKOFF);
@@ -1792,7 +1793,7 @@ static int rt2500usb_tx(struct net_devic
         * create and queue that frame first.
         */
        frame_control = le16_to_cpu(ieee80211hdr->frame_control);
-       if (control->use_rts_cts &&
+       if ((control->flags & IEEE80211_TXCTL_USE_RTS_CTS) &&
            (frame_control & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_RTS) {
                skb_rts = rt2500usb_create_rts(rt2x00dev,
                                ieee80211hdr, control->rts_cts_duration);
Index: wireless-dev/drivers/net/wireless/d80211/rt2x00/rt73usb.c
===================================================================
--- wireless-dev.orig/drivers/net/wireless/d80211/rt2x00/rt73usb.c
+++ wireless-dev/drivers/net/wireless/d80211/rt2x00/rt73usb.c
@@ -1732,7 +1732,8 @@ static void rt73usb_write_tx_desc(struct
                tx_rate = control->tx_rate;
 
        rt2x00_set_field32(&txd->word0, TXD_W0_VALID, 1);
-       rt2x00_set_field32(&txd->word0, TXD_W0_ACK, !control->no_ack);
+       rt2x00_set_field32(&txd->word0, TXD_W0_ACK,
+                          !(control->flags & IEEE80211_TXCTL_NO_ACK));
 
        ring = rt2x00_get_ring(rt2x00dev, control->queue);
        if (unlikely(!ring))
@@ -1748,7 +1749,7 @@ static void rt73usb_write_tx_desc(struct
         * or this fragment came after RTS/CTS.
         */
        if (((le16_to_cpu(ieee80211hdr->seq_ctrl) & IEEE80211_SCTL_FRAG) > 0) ||
-           control->use_rts_cts)
+           (control->flags & IEEE80211_TXCTL_USE_RTS_CTS))
                rt2x00_set_field32(&txd->word0, TXD_W0_IFS, IFS_SIFS);
        else
                rt2x00_set_field32(&txd->word0, TXD_W0_IFS, IFS_BACKOFF);
@@ -2081,7 +2082,7 @@ static int rt73usb_tx(struct net_device 
         * create and queue that frame first.
         */
        frame_control = le16_to_cpu(ieee80211hdr->frame_control);
-       if (control->use_rts_cts &&
+       if ((control->flags & IEEE80211_TXCTL_USE_RTS_CTS) &&
            (frame_control & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_RTS) {
                skb_rts = rt73usb_create_rts(rt2x00dev,
                                ieee80211hdr, control->rts_cts_duration);

--
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to