int ath6kl_data_tx(struct sk_buff *skb, struct net_device *dev);
 
 struct aggr_info *aggr_init(struct ath6kl_vif *vif);
-void aggr_conn_init(struct ath6kl_vif *vif, struct aggr_info_conn *aggr_conn);
+void aggr_conn_init(struct ath6kl_vif *vif, struct aggr_info *aggr_info,
+                   struct aggr_info_conn *aggr_conn);
 void ath6kl_rx_refill(struct htc_target *target,
                      enum htc_endpoint_id endpoint);
 void ath6kl_refill_amsdu_rxbufs(struct ath6kl *ar, int count);
 
 
        ar->sta_list_index = ar->sta_list_index | (1 << free_slot);
        ar->ap_stats.sta[free_slot].aid = cpu_to_le32(aid);
-       aggr_conn_init(vif, sta->aggr_conn);
+       aggr_conn_init(vif, vif->aggr_cntxt, sta->aggr_conn);
 }
 
 static void ath6kl_sta_cleanup(struct ath6kl *ar, u8 i)
 
        rxtid->aggr = true;
 }
 
-void aggr_conn_init(struct ath6kl_vif *vif, struct aggr_info_conn *aggr_conn)
+void aggr_conn_init(struct ath6kl_vif *vif, struct aggr_info *aggr_info,
+                   struct aggr_info_conn *aggr_conn)
 {
        struct rxtid *rxtid;
        u8 i;
        init_timer(&aggr_conn->timer);
        aggr_conn->timer.function = aggr_timeout;
        aggr_conn->timer.data = (unsigned long) aggr_conn;
-       aggr_conn->aggr_info = vif->aggr_cntxt;
+       aggr_conn->aggr_info = aggr_info;
 
        aggr_conn->timer_scheduled = false;
 
                return NULL;
        }
 
-       aggr_conn_init(vif, p_aggr->aggr_conn);
+       aggr_conn_init(vif, p_aggr, p_aggr->aggr_conn);
 
        skb_queue_head_init(&p_aggr->rx_amsdu_freeq);
        ath6kl_alloc_netbufs(&p_aggr->rx_amsdu_freeq, AGGR_NUM_OF_FREE_NETBUFS);