static void rt2800pci_write_tx_data(struct queue_entry* entry,
                                    struct txentry_desc *txdesc)
 {
-       rt2800_write_txwi((__le32 *) entry->skb->data, txdesc);
+       __le32 *txwi = (__le32 *) entry->skb->data;
+
+       rt2800_write_txwi(txwi, txdesc);
 }
 
 
 
 /*
  * TX descriptor initialization
  */
+static void rt2800usb_write_tx_data(struct queue_entry* entry,
+                                   struct txentry_desc *txdesc)
+{
+       __le32 *txwi = (__le32 *) (entry->skb->data + TXINFO_DESC_SIZE);
+
+       rt2800_write_txwi(txwi, txdesc);
+}
+
+
 static void rt2800usb_write_tx_desc(struct rt2x00_dev *rt2x00dev,
                                    struct sk_buff *skb,
                                    struct txentry_desc *txdesc)
 {
        struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb);
        __le32 *txi = (__le32 *) skb->data;
-       __le32 *txwi = (__le32 *) (skb->data + TXINFO_DESC_SIZE);
        u32 word;
 
-       /*
-        * Initialize TXWI descriptor
-        */
-       rt2800_write_txwi(txwi, txdesc);
-
        /*
         * Initialize TXINFO descriptor
         */
        .reset_tuner            = rt2800_reset_tuner,
        .link_tuner             = rt2800_link_tuner,
        .write_tx_desc          = rt2800usb_write_tx_desc,
+       .write_tx_data          = rt2800usb_write_tx_data,
        .write_beacon           = rt2800_write_beacon,
        .get_tx_data_len        = rt2800usb_get_tx_data_len,
        .kick_tx_queue          = rt2x00usb_kick_tx_queue,