diff options
author | Tobin C. Harding <me@tobin.cc> | 2017-04-18 03:35:31 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-04-18 14:33:17 +0300 |
commit | 055da4f9b95dd2a50c653b5a4559b9186081fb75 (patch) | |
tree | 8f91997ee9dd1d14078db7d756721c97ff60e8af /drivers/staging/ks7010/ks7010_sdio.c | |
parent | 68711cebcbb4dd7f5c05245715eefa4f4d4be760 (diff) | |
download | linux-055da4f9b95dd2a50c653b5a4559b9186081fb75.tar.xz |
staging: ks7010: fix complete_handler
complete_handler() takes void * types as parameters. void * parameters are then
cast to struct types. Call sites for this function either pass in NULL
or pointers to the struct types cast to void *. This casting is
unnecessary and can be removed.
Struct tx_device_buffer (which contains a pointer member to the
complete_handler() function) has as member 'ks_wlan_priv *priv' this is
unnecessary, we always have a pointer to this struct there is no need
to store it here.
The complete_handler can be more clearly defined by using struct
pointer types instead of void * types. The code is currently
unnecessarily complex, storing and passing extraneous pointer
parameters.
Remove unnecessary parameters, unnecessary casting to/from 'void
*'. Fix all call sites involving complete_handler().
Signed-off-by: Tobin C. Harding <me@tobin.cc>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/ks7010/ks7010_sdio.c')
-rw-r--r-- | drivers/staging/ks7010/ks7010_sdio.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c index b103a20ad490..0f173c31066a 100644 --- a/drivers/staging/ks7010/ks7010_sdio.c +++ b/drivers/staging/ks7010/ks7010_sdio.c @@ -237,8 +237,9 @@ int ks_wlan_hw_power_save(struct ks_wlan_private *priv) static int enqueue_txdev(struct ks_wlan_private *priv, unsigned char *p, unsigned long size, - void (*complete_handler)(void *arg1, void *arg2), - void *arg1, void *arg2) + void (*complete_handler)(struct ks_wlan_private *priv, + struct sk_buff *skb), + struct sk_buff *skb) { struct tx_device_buffer *sp; int ret; @@ -259,8 +260,7 @@ static int enqueue_txdev(struct ks_wlan_private *priv, unsigned char *p, sp->sendp = p; sp->size = size; sp->complete_handler = complete_handler; - sp->arg1 = arg1; - sp->arg2 = arg2; + sp->skb = skb; inc_txqtail(priv); return 0; @@ -268,7 +268,7 @@ static int enqueue_txdev(struct ks_wlan_private *priv, unsigned char *p, err_complete: kfree(p); if (complete_handler) - (*complete_handler) (arg1, arg2); + (*complete_handler)(priv, skb); return ret; } @@ -327,7 +327,7 @@ static void tx_device_task(struct ks_wlan_private *priv) } kfree(sp->sendp); if (sp->complete_handler) /* TX Complete */ - (*sp->complete_handler) (sp->arg1, sp->arg2); + (*sp->complete_handler)(priv, sp->skb); inc_txqhead(priv); if (cnt_txqbody(priv) > 0) { @@ -337,8 +337,9 @@ static void tx_device_task(struct ks_wlan_private *priv) } int ks_wlan_hw_tx(struct ks_wlan_private *priv, void *p, unsigned long size, - void (*complete_handler)(void *arg1, void *arg2), - void *arg1, void *arg2) + void (*complete_handler)(struct ks_wlan_private *priv, + struct sk_buff *skb), + struct sk_buff *skb) { int result = 0; struct hostif_hdr *hdr; @@ -356,7 +357,7 @@ int ks_wlan_hw_tx(struct ks_wlan_private *priv, void *p, unsigned long size, DPRINTK(4, "event=%04X\n", hdr->event); spin_lock(&priv->tx_dev.tx_dev_lock); - result = enqueue_txdev(priv, p, size, complete_handler, arg1, arg2); + result = enqueue_txdev(priv, p, size, complete_handler, skb); spin_unlock(&priv->tx_dev.tx_dev_lock); if (cnt_txqbody(priv) > 0) { @@ -628,7 +629,7 @@ static void trx_device_exit(struct ks_wlan_private *priv) sp = &priv->tx_dev.tx_dev_buff[priv->tx_dev.qhead]; kfree(sp->sendp); /* allocated memory free */ if (sp->complete_handler) /* TX Complete */ - (*sp->complete_handler) (sp->arg1, sp->arg2); + (*sp->complete_handler)(priv, sp->skb); inc_txqhead(priv); } |