ath6kl: Remove endpoint reference from hif_scatter_req
authorVasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Sat, 16 Jul 2011 14:59:09 +0000 (20:29 +0530)
committerKalle Valo <kvalo@qca.qualcomm.com>
Tue, 9 Aug 2011 16:45:19 +0000 (19:45 +0300)
Endpoint id ffrom htc_packet can be used instead.

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath6kl/hif.h
drivers/net/wireless/ath/ath6kl/htc.c
drivers/net/wireless/ath/ath6kl/htc_hif.c
drivers/net/wireless/ath/ath6kl/sdio.c

index f17ae57ee3038f2d2dff9a23ea2551b4d9af7546..1458660a1c034b969ad0333c43b9ad27311e4ef6 100644 (file)
@@ -171,9 +171,8 @@ struct hif_scatter_req {
        /* total length of entire transfer */
        u32 len;
 
-       void (*complete) (struct hif_scatter_req *);
+       void (*complete) (struct htc_target *, struct hif_scatter_req *);
        int status;
-       struct htc_endpoint *ep;
        int scat_entries;
 
        struct bus_request *busrequest;
index e65de498a825e9a0bad16cd0c76083c24491f3b0..e77e7684ee9ba0c7ace8c101f41639aa8e5ae112 100644 (file)
@@ -127,10 +127,10 @@ static void htc_tx_comp_handler(struct htc_target *target,
        htc_tx_complete(endpoint, &container);
 }
 
-static void htc_async_tx_scat_complete(struct hif_scatter_req *scat_req)
+static void htc_async_tx_scat_complete(struct htc_target *target,
+                                      struct hif_scatter_req *scat_req)
 {
-       struct htc_endpoint *endpoint = scat_req->ep;
-       struct htc_target *target = endpoint->target;
+       struct htc_endpoint *endpoint;
        struct htc_packet *packet;
        struct list_head tx_compq;
        int i;
@@ -144,6 +144,9 @@ static void htc_async_tx_scat_complete(struct hif_scatter_req *scat_req)
        if (scat_req->status)
                ath6kl_err("send scatter req failed: %d\n", scat_req->status);
 
+       packet = scat_req->scat_list[0].packet;
+       endpoint = &target->endpoint[packet->endpoint];
+
        /* walk through the scatter list and process */
        for (i = 0; i < scat_req->scat_entries; i++) {
                packet = scat_req->scat_list[i].packet;
@@ -465,7 +468,6 @@ static void htc_issue_send_bundle(struct htc_endpoint *endpoint,
 
                /* send path is always asynchronous */
                scat_req->complete = htc_async_tx_scat_complete;
-               scat_req->ep = endpoint;
                n_sent_bundle++;
                tot_pkts_bundle += scat_req->scat_entries;
 
index df904d8c48c08ba80852fa031fd7e6245696c123..40853cbad365c4176ff2ccd5fab5bdc841b595f7 100644 (file)
@@ -201,7 +201,7 @@ static void ath6kldev_rw_async_handler(struct htc_target *target,
 
        ath6kl_add_io_pkt(dev, packet);
 
-       req->complete(req);
+       req->complete(target, req);
 }
 
 static int ath6kldev_rw_scatter(struct ath6kl *ar, struct hif_scatter_req *req)
@@ -243,7 +243,7 @@ out:
                        if (packet != NULL)
                                ath6kl_add_io_pkt(dev, packet);
                        req->status = status;
-                       req->complete(req);
+                       req->complete(ar->htc_target, req);
                        status = 0;
                }
 
@@ -279,7 +279,7 @@ int ath6kldev_submit_scat_req(struct ath6kl_device *dev,
        if (status) {
                if (!read) {
                        scat_req->status = status;
-                       scat_req->complete(scat_req);
+                       scat_req->complete(dev->ar->htc_target, scat_req);
                        return 0;
                }
                return status;
index da60738324bed4ac18d1aeabf719a2ddf1ccd695..6fbc27ec2cfd1ca2c8e43f5f3ae6212b9efe77c8 100644 (file)
@@ -264,7 +264,7 @@ static int ath6kl_sdio_scat_rw(struct ath6kl_sdio *ar_sdio,
                           scat_req->status);
 
        if (scat_req->req & HIF_ASYNCHRONOUS)
-               scat_req->complete(scat_req);
+               scat_req->complete(ar_sdio->ar->htc_target, scat_req);
 
        return status;
 }