struct ath_buf *bf_lastbf;      /* last buf of this unit (a frame or
                                           an aggregate) */
        struct ath_buf *bf_next;        /* next subframe in the aggregate */
-       void *bf_mpdu;                  /* enclosing frame structure */
+       struct sk_buff *bf_mpdu;        /* enclosing frame structure */
        struct ath_desc *bf_desc;       /* virtual addr of desc */
        dma_addr_t bf_daddr;            /* physical addr of desc */
        dma_addr_t bf_buf_addr;         /* physical addr of data buffer */
 
 static void ath_beacon_setup(struct ath_softc *sc, struct ath_vif *avp,
                             struct ath_buf *bf)
 {
-       struct sk_buff *skb = (struct sk_buff *)bf->bf_mpdu;
+       struct sk_buff *skb = bf->bf_mpdu;
        struct ath_hw *ah = sc->sc_ah;
        struct ath_desc *ds;
        struct ath9k_11n_rate_series series[4];
        /* Release the old beacon first */
 
        bf = avp->av_bcbuf;
-       skb = (struct sk_buff *)bf->bf_mpdu;
+       skb = bf->bf_mpdu;
        if (skb) {
                dma_unmap_single(sc->dev, bf->bf_dmacontext,
                                 skb->len, DMA_TO_DEVICE);
                return;
 
        bf = avp->av_bcbuf;
-       skb = (struct sk_buff *) bf->bf_mpdu;
+       skb = bf->bf_mpdu;
 
        ath_beacon_setup(sc, avp, bf);
 
        /* release the previous beacon frame, if it already exists. */
        bf = avp->av_bcbuf;
        if (bf->bf_mpdu != NULL) {
-               skb = (struct sk_buff *)bf->bf_mpdu;
+               skb = bf->bf_mpdu;
                dma_unmap_single(sc->dev, bf->bf_dmacontext,
                                 skb->len, DMA_TO_DEVICE);
                dev_kfree_skb_any(skb);
 
                bf = avp->av_bcbuf;
                if (bf->bf_mpdu != NULL) {
-                       struct sk_buff *skb = (struct sk_buff *)bf->bf_mpdu;
+                       struct sk_buff *skb = bf->bf_mpdu;
                        dma_unmap_single(sc->dev, bf->bf_dmacontext,
                                         skb->len, DMA_TO_DEVICE);
                        dev_kfree_skb_any(skb);
 
        int isaggr, txfail, txpending, sendbar = 0, needreset = 0, nbad = 0;
        bool rc_update = true;
 
-       skb = (struct sk_buff *)bf->bf_mpdu;
+       skb = bf->bf_mpdu;
        hdr = (struct ieee80211_hdr *)skb->data;
 
        rcu_read_lock();
        u16 aggr_limit, legacy = 0, maxampdu;
        int i;
 
-       skb = (struct sk_buff *)bf->bf_mpdu;
+       skb = bf->bf_mpdu;
        tx_info = IEEE80211_SKB_CB(skb);
        rates = tx_info->control.rates;
        tx_info_priv = (struct ath_tx_info_priv *)tx_info->rate_driver_data[0];
 
        memset(series, 0, sizeof(struct ath9k_11n_rate_series) * 4);
 
-       skb = (struct sk_buff *)bf->bf_mpdu;
+       skb = bf->bf_mpdu;
        tx_info = IEEE80211_SKB_CB(skb);
        rates = tx_info->control.rates;
        hdr = (struct ieee80211_hdr *)skb->data;
 static void ath_tx_start_dma(struct ath_softc *sc, struct ath_buf *bf,
                             struct ath_tx_control *txctl)
 {
-       struct sk_buff *skb = (struct sk_buff *)bf->bf_mpdu;
+       struct sk_buff *skb = bf->bf_mpdu;
        struct ieee80211_tx_info *tx_info =  IEEE80211_SKB_CB(skb);
        struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
        struct ath_node *an = NULL;
 static void ath_tx_rc_status(struct ath_buf *bf, struct ath_desc *ds,
                             int nbad, int txok, bool update_rc)
 {
-       struct sk_buff *skb = (struct sk_buff *)bf->bf_mpdu;
+       struct sk_buff *skb = bf->bf_mpdu;
        struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
        struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
        struct ath_tx_info_priv *tx_info_priv = ATH_TX_INFO_PRIV(tx_info);