* [PATCH 2/4] Staging: ks7010: hostif: Fix multiple use of arguments in SME queue macros.
@ 2018-02-17 2:25 Quytelda Kahja
2018-02-17 2:25 ` [PATCH 3/4] Staging: ks7010: hostif: Fix multiple use of arguments in rate and event masking macros Quytelda Kahja
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Quytelda Kahja @ 2018-02-17 2:25 UTC (permalink / raw)
To: gregkh, wsa; +Cc: devel, driverdev-devel, linux-kernel, Quytelda Kahja
Use GCC extensions to prevent macro arguments from accidentally being evaluated
multiple times when the macro is called.
Signed-off-by: Quytelda Kahja <quytelda@tamalin.org>
---
drivers/staging/ks7010/ks_hostif.c | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/drivers/staging/ks7010/ks_hostif.c b/drivers/staging/ks7010/ks_hostif.c
index 975dbbb3abd0..30c9592b3a00 100644
--- a/drivers/staging/ks7010/ks_hostif.c
+++ b/drivers/staging/ks7010/ks_hostif.c
@@ -22,12 +22,19 @@
#include <net/iw_handler.h> /* New driver API */
/* macro */
-#define inc_smeqhead(priv) \
- (priv->sme_i.qhead = (priv->sme_i.qhead + 1) % SME_EVENT_BUFF_SIZE)
-#define inc_smeqtail(priv) \
- (priv->sme_i.qtail = (priv->sme_i.qtail + 1) % SME_EVENT_BUFF_SIZE)
-#define cnt_smeqbody(priv) \
- (((priv->sme_i.qtail + SME_EVENT_BUFF_SIZE) - (priv->sme_i.qhead)) % SME_EVENT_BUFF_SIZE)
+#define inc_smeqhead(priv) \
+ ({ typeof(priv) priv_ = (priv); \
+ unsigned int next_qhead = priv_->sme_i.qhead + 1; \
+ priv_->sme_i.qhead = next_qhead % SME_EVENT_BUFF_SIZE; })
+#define inc_smeqtail(priv) \
+ ({ typeof(priv) priv_ = (priv); \
+ unsigned int next_qtail = priv_->sme_i.qtail + 1; \
+ priv_->sme_i.qtail = next_qtail % SME_EVENT_BUFF_SIZE; })
+#define cnt_smeqbody(priv) \
+ ({ typeof(priv) priv_ = (priv); \
+ unsigned int left_cnt = \
+ priv_->sme_i.qtail + SME_EVENT_BUFF_SIZE; \
+ (left_cnt - (priv_->sme_i.qhead)) % SME_EVENT_BUFF_SIZE; })
#define KS_WLAN_MEM_FLAG (GFP_ATOMIC)
--
2.16.1
_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/4] Staging: ks7010: hostif: Fix multiple use of arguments in rate and event masking macros.
2018-02-17 2:25 [PATCH 2/4] Staging: ks7010: hostif: Fix multiple use of arguments in SME queue macros Quytelda Kahja
@ 2018-02-17 2:25 ` Quytelda Kahja
2018-02-19 17:12 ` Greg KH
2018-02-17 2:25 ` [PATCH 4/4] Staging: ks7010: hostif: Fix multiple use of arguments in ps_confirm_wait_inc() macro Quytelda Kahja
2018-02-19 17:08 ` [PATCH 2/4] Staging: ks7010: hostif: Fix multiple use of arguments in SME queue macros Greg KH
2 siblings, 1 reply; 8+ messages in thread
From: Quytelda Kahja @ 2018-02-17 2:25 UTC (permalink / raw)
To: gregkh, wsa; +Cc: devel, driverdev-devel, linux-kernel, Quytelda Kahja
Use GCC extensions to prevent macro arguments from accidentally being evaluated
multiple times when the macro is called.
Signed-off-by: Quytelda Kahja <quytelda@tamalin.org>
---
drivers/staging/ks7010/ks_hostif.h | 74 +++++++++++++++++++++++++-------------
1 file changed, 50 insertions(+), 24 deletions(-)
diff --git a/drivers/staging/ks7010/ks_hostif.h b/drivers/staging/ks7010/ks_hostif.h
index 5bae8d468e23..750ac86cee77 100644
--- a/drivers/staging/ks7010/ks_hostif.h
+++ b/drivers/staging/ks7010/ks_hostif.h
@@ -599,19 +599,39 @@ struct hostif_mic_failure_confirm_t {
#define TX_RATE_48M (uint8_t)(480 / 5)
#define TX_RATE_54M (uint8_t)(540 / 5)
-#define IS_11B_RATE(A) (((A & RATE_MASK) == TX_RATE_1M) || ((A & RATE_MASK) == TX_RATE_2M) || \
- ((A & RATE_MASK) == TX_RATE_5M) || ((A & RATE_MASK) == TX_RATE_11M))
-
-#define IS_OFDM_RATE(A) (((A & RATE_MASK) == TX_RATE_6M) || ((A & RATE_MASK) == TX_RATE_12M) || \
- ((A & RATE_MASK) == TX_RATE_24M) || ((A & RATE_MASK) == TX_RATE_9M) || \
- ((A & RATE_MASK) == TX_RATE_18M) || ((A & RATE_MASK) == TX_RATE_36M) || \
- ((A & RATE_MASK) == TX_RATE_48M) || ((A & RATE_MASK) == TX_RATE_54M))
-
-#define IS_11BG_RATE(A) (IS_11B_RATE(A) || IS_OFDM_RATE(A))
-
-#define IS_OFDM_EXT_RATE(A) (((A & RATE_MASK) == TX_RATE_9M) || ((A & RATE_MASK) == TX_RATE_18M) || \
- ((A & RATE_MASK) == TX_RATE_36M) || ((A & RATE_MASK) == TX_RATE_48M) || \
- ((A & RATE_MASK) == TX_RATE_54M))
+#define IS_11B_RATE(A) \
+ ({ \
+ typeof(A) A_ = (A); \
+ ((A_ & RATE_MASK) == TX_RATE_1M) || \
+ ((A_ & RATE_MASK) == TX_RATE_2M) || \
+ ((A_ & RATE_MASK) == TX_RATE_5M) || \
+ ((A_ & RATE_MASK) == TX_RATE_11M); })
+
+#define IS_OFDM_RATE(A) \
+ ({ \
+ typeof(A) A_ = (A); \
+ ((A_ & RATE_MASK) == TX_RATE_6M) || \
+ ((A_ & RATE_MASK) == TX_RATE_12M) || \
+ ((A_ & RATE_MASK) == TX_RATE_24M) || \
+ ((A_ & RATE_MASK) == TX_RATE_9M) || \
+ ((A_ & RATE_MASK) == TX_RATE_18M) || \
+ ((A_ & RATE_MASK) == TX_RATE_36M) || \
+ ((A_ & RATE_MASK) == TX_RATE_48M) || \
+ ((A_ & RATE_MASK) == TX_RATE_54M); })
+
+#define IS_11BG_RATE(A) \
+ ({ \
+ typeof(A) A_ = (A); \
+ IS_11B_RATE(A_) || IS_OFDM_RATE(A_); })
+
+#define IS_OFDM_EXT_RATE(A) \
+ ({ \
+ typeof(A) A_ = (A); \
+ ((A_ & RATE_MASK) == TX_RATE_9M) || \
+ ((A_ & RATE_MASK) == TX_RATE_18M) || \
+ ((A_ & RATE_MASK) == TX_RATE_36M) || \
+ ((A_ & RATE_MASK) == TX_RATE_48M) || \
+ ((A_ & RATE_MASK) == TX_RATE_54M); })
enum connect_status_type {
CONNECT_STATUS,
@@ -633,17 +653,23 @@ enum multicast_filter_type {
/* macro function */
#define HIF_EVENT_MASK 0xE800
-#define IS_HIF_IND(_EVENT) ((_EVENT & HIF_EVENT_MASK) == 0xE800 && \
- ((_EVENT & ~HIF_EVENT_MASK) == 0x0001 || \
- (_EVENT & ~HIF_EVENT_MASK) == 0x0006 || \
- (_EVENT & ~HIF_EVENT_MASK) == 0x000C || \
- (_EVENT & ~HIF_EVENT_MASK) == 0x0011 || \
- (_EVENT & ~HIF_EVENT_MASK) == 0x0012))
-
-#define IS_HIF_CONF(_EVENT) ((_EVENT & HIF_EVENT_MASK) == 0xE800 && \
- (_EVENT & ~HIF_EVENT_MASK) > 0x0000 && \
- (_EVENT & ~HIF_EVENT_MASK) < 0x0012 && \
- !IS_HIF_IND(_EVENT))
+#define IS_HIF_IND(_EVENT) \
+ ({ \
+ typeof(_EVENT) EVENT_ = (_EVENT); \
+ (EVENT_ & HIF_EVENT_MASK) == 0xE800 && \
+ ((EVENT_ & ~HIF_EVENT_MASK) == 0x0001 || \
+ (EVENT_ & ~HIF_EVENT_MASK) == 0x0006 || \
+ (EVENT_ & ~HIF_EVENT_MASK) == 0x000C || \
+ (EVENT_ & ~HIF_EVENT_MASK) == 0x0011 || \
+ (EVENT_ & ~HIF_EVENT_MASK) == 0x0012); })
+
+#define IS_HIF_CONF(_EVENT) \
+ ({ \
+ typeof(_EVENT) EVENT_ = (_EVENT); \
+ (EVENT_ & HIF_EVENT_MASK) == 0xE800 && \
+ (EVENT_ & ~HIF_EVENT_MASK) > 0x0000 && \
+ (EVENT_ & ~HIF_EVENT_MASK) < 0x0012 && \
+ !IS_HIF_IND(EVENT_); })
#ifdef __KERNEL__
--
2.16.1
_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/4] Staging: ks7010: hostif: Fix multiple use of arguments in ps_confirm_wait_inc() macro.
2018-02-17 2:25 [PATCH 2/4] Staging: ks7010: hostif: Fix multiple use of arguments in SME queue macros Quytelda Kahja
2018-02-17 2:25 ` [PATCH 3/4] Staging: ks7010: hostif: Fix multiple use of arguments in rate and event masking macros Quytelda Kahja
@ 2018-02-17 2:25 ` Quytelda Kahja
2018-02-19 17:08 ` [PATCH 2/4] Staging: ks7010: hostif: Fix multiple use of arguments in SME queue macros Greg KH
2 siblings, 0 replies; 8+ messages in thread
From: Quytelda Kahja @ 2018-02-17 2:25 UTC (permalink / raw)
To: gregkh, wsa; +Cc: devel, driverdev-devel, linux-kernel, Quytelda Kahja
Use GCC extensions to prevent macro arguments from accidentally being evaluated
multiple times when the macro is called.
Signed-off-by: Quytelda Kahja <quytelda@tamalin.org>
---
drivers/staging/ks7010/ks_hostif.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/staging/ks7010/ks_hostif.c b/drivers/staging/ks7010/ks_hostif.c
index 30c9592b3a00..92035e8ac843 100644
--- a/drivers/staging/ks7010/ks_hostif.c
+++ b/drivers/staging/ks7010/ks_hostif.c
@@ -1306,11 +1306,10 @@ int hostif_data_request(struct ks_wlan_private *priv, struct sk_buff *skb)
return ret;
}
-#define ps_confirm_wait_inc(priv) \
- do { \
- if (atomic_read(&priv->psstatus.status) > PS_ACTIVE_SET) \
- atomic_inc(&priv->psstatus.confirm_wait); \
- } while (0)
+#define ps_confirm_wait_inc(priv) \
+ ({ typeof(priv) priv_ = (priv); \
+ if (atomic_read(&priv_->psstatus.status) > PS_ACTIVE_SET) \
+ atomic_inc(&priv_->psstatus.confirm_wait); })
static
void hostif_mib_get_request(struct ks_wlan_private *priv,
--
2.16.1
_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 2/4] Staging: ks7010: hostif: Fix multiple use of arguments in SME queue macros.
2018-02-17 2:25 [PATCH 2/4] Staging: ks7010: hostif: Fix multiple use of arguments in SME queue macros Quytelda Kahja
2018-02-17 2:25 ` [PATCH 3/4] Staging: ks7010: hostif: Fix multiple use of arguments in rate and event masking macros Quytelda Kahja
2018-02-17 2:25 ` [PATCH 4/4] Staging: ks7010: hostif: Fix multiple use of arguments in ps_confirm_wait_inc() macro Quytelda Kahja
@ 2018-02-19 17:08 ` Greg KH
2018-02-20 6:35 ` [PATCH v2 1/3] Staging: ks7010: sdio: Convert RX/TX queue macros into real functions Quytelda Kahja
2 siblings, 1 reply; 8+ messages in thread
From: Greg KH @ 2018-02-19 17:08 UTC (permalink / raw)
To: Quytelda Kahja; +Cc: devel, driverdev-devel, linux-kernel, wsa
On Fri, Feb 16, 2018 at 06:25:01PM -0800, Quytelda Kahja wrote:
> Use GCC extensions to prevent macro arguments from accidentally being evaluated
> multiple times when the macro is called.
>
> Signed-off-by: Quytelda Kahja <quytelda@tamalin.org>
> ---
> drivers/staging/ks7010/ks_hostif.c | 19 +++++++++++++------
> 1 file changed, 13 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/staging/ks7010/ks_hostif.c b/drivers/staging/ks7010/ks_hostif.c
> index 975dbbb3abd0..30c9592b3a00 100644
> --- a/drivers/staging/ks7010/ks_hostif.c
> +++ b/drivers/staging/ks7010/ks_hostif.c
> @@ -22,12 +22,19 @@
> #include <net/iw_handler.h> /* New driver API */
>
> /* macro */
> -#define inc_smeqhead(priv) \
> - (priv->sme_i.qhead = (priv->sme_i.qhead + 1) % SME_EVENT_BUFF_SIZE)
> -#define inc_smeqtail(priv) \
> - (priv->sme_i.qtail = (priv->sme_i.qtail + 1) % SME_EVENT_BUFF_SIZE)
> -#define cnt_smeqbody(priv) \
> - (((priv->sme_i.qtail + SME_EVENT_BUFF_SIZE) - (priv->sme_i.qhead)) % SME_EVENT_BUFF_SIZE)
> +#define inc_smeqhead(priv) \
> + ({ typeof(priv) priv_ = (priv); \
> + unsigned int next_qhead = priv_->sme_i.qhead + 1; \
> + priv_->sme_i.qhead = next_qhead % SME_EVENT_BUFF_SIZE; })
No need, just make these real functions please.
thanks,
greg k-h
_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 3/4] Staging: ks7010: hostif: Fix multiple use of arguments in rate and event masking macros.
2018-02-17 2:25 ` [PATCH 3/4] Staging: ks7010: hostif: Fix multiple use of arguments in rate and event masking macros Quytelda Kahja
@ 2018-02-19 17:12 ` Greg KH
0 siblings, 0 replies; 8+ messages in thread
From: Greg KH @ 2018-02-19 17:12 UTC (permalink / raw)
To: Quytelda Kahja; +Cc: devel, driverdev-devel, linux-kernel, wsa
On Fri, Feb 16, 2018 at 06:25:02PM -0800, Quytelda Kahja wrote:
> Use GCC extensions to prevent macro arguments from accidentally being evaluated
> multiple times when the macro is called.
>
> Signed-off-by: Quytelda Kahja <quytelda@tamalin.org>
> ---
> drivers/staging/ks7010/ks_hostif.h | 74 +++++++++++++++++++++++++-------------
> 1 file changed, 50 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/staging/ks7010/ks_hostif.h b/drivers/staging/ks7010/ks_hostif.h
> index 5bae8d468e23..750ac86cee77 100644
> --- a/drivers/staging/ks7010/ks_hostif.h
> +++ b/drivers/staging/ks7010/ks_hostif.h
> @@ -599,19 +599,39 @@ struct hostif_mic_failure_confirm_t {
> #define TX_RATE_48M (uint8_t)(480 / 5)
> #define TX_RATE_54M (uint8_t)(540 / 5)
>
> -#define IS_11B_RATE(A) (((A & RATE_MASK) == TX_RATE_1M) || ((A & RATE_MASK) == TX_RATE_2M) || \
> - ((A & RATE_MASK) == TX_RATE_5M) || ((A & RATE_MASK) == TX_RATE_11M))
> -
> -#define IS_OFDM_RATE(A) (((A & RATE_MASK) == TX_RATE_6M) || ((A & RATE_MASK) == TX_RATE_12M) || \
> - ((A & RATE_MASK) == TX_RATE_24M) || ((A & RATE_MASK) == TX_RATE_9M) || \
> - ((A & RATE_MASK) == TX_RATE_18M) || ((A & RATE_MASK) == TX_RATE_36M) || \
> - ((A & RATE_MASK) == TX_RATE_48M) || ((A & RATE_MASK) == TX_RATE_54M))
> -
> -#define IS_11BG_RATE(A) (IS_11B_RATE(A) || IS_OFDM_RATE(A))
> -
> -#define IS_OFDM_EXT_RATE(A) (((A & RATE_MASK) == TX_RATE_9M) || ((A & RATE_MASK) == TX_RATE_18M) || \
> - ((A & RATE_MASK) == TX_RATE_36M) || ((A & RATE_MASK) == TX_RATE_48M) || \
> - ((A & RATE_MASK) == TX_RATE_54M))
> +#define IS_11B_RATE(A) \
> + ({ \
> + typeof(A) A_ = (A); \
> + ((A_ & RATE_MASK) == TX_RATE_1M) || \
> + ((A_ & RATE_MASK) == TX_RATE_2M) || \
> + ((A_ & RATE_MASK) == TX_RATE_5M) || \
> + ((A_ & RATE_MASK) == TX_RATE_11M); })
> +
Again, please just make these real functions, if they are actually used.
thanks,
greg k-h
_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 1/3] Staging: ks7010: sdio: Convert RX/TX queue macros into real functions.
2018-02-19 17:08 ` [PATCH 2/4] Staging: ks7010: hostif: Fix multiple use of arguments in SME queue macros Greg KH
@ 2018-02-20 6:35 ` Quytelda Kahja
2018-02-20 6:35 ` [PATCH v2 2/3] Staging: ks7010: hostif: Convert SME queue macros to " Quytelda Kahja
2018-02-20 6:35 ` [PATCH v2 3/3] Staging: ks7010: hostif: Convert the ps_confirm_wait_inc() macro to a real function Quytelda Kahja
0 siblings, 2 replies; 8+ messages in thread
From: Quytelda Kahja @ 2018-02-20 6:35 UTC (permalink / raw)
To: gregkh, wsa; +Cc: devel, driverdev-devel, linux-kernel, Quytelda Kahja
Convert the unsafe macros into inline functions.
Signed-off-by: Quytelda Kahja <quytelda@tamalin.org>
---
drivers/staging/ks7010/ks7010_sdio.c | 46 ++++++++++++++++++++++++++----------
1 file changed, 33 insertions(+), 13 deletions(-)
diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c
index 8cfdff198334..7de78d1758b8 100644
--- a/drivers/staging/ks7010/ks7010_sdio.c
+++ b/drivers/staging/ks7010/ks7010_sdio.c
@@ -32,19 +32,39 @@ static const struct sdio_device_id ks7010_sdio_ids[] = {
};
MODULE_DEVICE_TABLE(sdio, ks7010_sdio_ids);
-#define inc_txqhead(priv) \
- (priv->tx_dev.qhead = (priv->tx_dev.qhead + 1) % TX_DEVICE_BUFF_SIZE)
-#define inc_txqtail(priv) \
- (priv->tx_dev.qtail = (priv->tx_dev.qtail + 1) % TX_DEVICE_BUFF_SIZE)
-#define cnt_txqbody(priv) \
- (((priv->tx_dev.qtail + TX_DEVICE_BUFF_SIZE) - (priv->tx_dev.qhead)) % TX_DEVICE_BUFF_SIZE)
-
-#define inc_rxqhead(priv) \
- (priv->rx_dev.qhead = (priv->rx_dev.qhead + 1) % RX_DEVICE_BUFF_SIZE)
-#define inc_rxqtail(priv) \
- (priv->rx_dev.qtail = (priv->rx_dev.qtail + 1) % RX_DEVICE_BUFF_SIZE)
-#define cnt_rxqbody(priv) \
- (((priv->rx_dev.qtail + RX_DEVICE_BUFF_SIZE) - (priv->rx_dev.qhead)) % RX_DEVICE_BUFF_SIZE)
+static inline void inc_txqhead(struct ks_wlan_private *priv)
+{
+ priv->tx_dev.qhead = (priv->tx_dev.qhead + 1) % TX_DEVICE_BUFF_SIZE;
+}
+
+static inline void inc_txqtail(struct ks_wlan_private *priv)
+{
+ priv->tx_dev.qtail = (priv->tx_dev.qtail + 1) % TX_DEVICE_BUFF_SIZE;
+}
+
+static inline unsigned int cnt_txqbody(struct ks_wlan_private *priv)
+{
+ unsigned int tx_cnt = priv->tx_dev.qtail - priv->tx_dev.qhead;
+
+ return (tx_cnt + TX_DEVICE_BUFF_SIZE) % TX_DEVICE_BUFF_SIZE;
+}
+
+static inline void inc_rxqhead(struct ks_wlan_private *priv)
+{
+ priv->rx_dev.qhead = (priv->rx_dev.qhead + 1) % RX_DEVICE_BUFF_SIZE;
+}
+
+static inline void inc_rxqtail(struct ks_wlan_private *priv)
+{
+ priv->rx_dev.qtail = (priv->rx_dev.qtail + 1) % RX_DEVICE_BUFF_SIZE;
+}
+
+static inline unsigned int cnt_rxqbody(struct ks_wlan_private *priv)
+{
+ unsigned int rx_cnt = priv->rx_dev.qtail - priv->rx_dev.qhead;
+
+ return (rx_cnt + RX_DEVICE_BUFF_SIZE) % RX_DEVICE_BUFF_SIZE;
+}
/* Read single byte from device address into byte (CMD52) */
static int ks7010_sdio_readb(struct ks_wlan_private *priv, unsigned int address,
--
2.16.2
_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 2/3] Staging: ks7010: hostif: Convert SME queue macros to real functions.
2018-02-20 6:35 ` [PATCH v2 1/3] Staging: ks7010: sdio: Convert RX/TX queue macros into real functions Quytelda Kahja
@ 2018-02-20 6:35 ` Quytelda Kahja
2018-02-20 6:35 ` [PATCH v2 3/3] Staging: ks7010: hostif: Convert the ps_confirm_wait_inc() macro to a real function Quytelda Kahja
1 sibling, 0 replies; 8+ messages in thread
From: Quytelda Kahja @ 2018-02-20 6:35 UTC (permalink / raw)
To: gregkh, wsa; +Cc: devel, driverdev-devel, linux-kernel, Quytelda Kahja
Convert the unsafe macros into inline functions.
Signed-off-by: Quytelda Kahja <quytelda@tamalin.org>
---
drivers/staging/ks7010/ks_hostif.c | 23 ++++++++++++++++-------
1 file changed, 16 insertions(+), 7 deletions(-)
diff --git a/drivers/staging/ks7010/ks_hostif.c b/drivers/staging/ks7010/ks_hostif.c
index 975dbbb3abd0..f554477fe6bc 100644
--- a/drivers/staging/ks7010/ks_hostif.c
+++ b/drivers/staging/ks7010/ks_hostif.c
@@ -21,13 +21,22 @@
/* Include Wireless Extension definition and check version */
#include <net/iw_handler.h> /* New driver API */
-/* macro */
-#define inc_smeqhead(priv) \
- (priv->sme_i.qhead = (priv->sme_i.qhead + 1) % SME_EVENT_BUFF_SIZE)
-#define inc_smeqtail(priv) \
- (priv->sme_i.qtail = (priv->sme_i.qtail + 1) % SME_EVENT_BUFF_SIZE)
-#define cnt_smeqbody(priv) \
- (((priv->sme_i.qtail + SME_EVENT_BUFF_SIZE) - (priv->sme_i.qhead)) % SME_EVENT_BUFF_SIZE)
+static inline void inc_smeqhead(struct ks_wlan_private *priv)
+{
+ priv->sme_i.qhead = (priv->sme_i.qhead + 1) % SME_EVENT_BUFF_SIZE;
+}
+
+static inline void inc_smeqtail(struct ks_wlan_private *priv)
+{
+ priv->sme_i.qtail = (priv->sme_i.qtail + 1) % SME_EVENT_BUFF_SIZE;
+}
+
+static inline unsigned int cnt_smeqbody(struct ks_wlan_private *priv)
+{
+ unsigned int sme_cnt = priv->sme_i.qtail - priv->sme_i.qhead;
+
+ return (sme_cnt + SME_EVENT_BUFF_SIZE) % SME_EVENT_BUFF_SIZE;
+}
#define KS_WLAN_MEM_FLAG (GFP_ATOMIC)
--
2.16.2
_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 3/3] Staging: ks7010: hostif: Convert the ps_confirm_wait_inc() macro to a real function.
2018-02-20 6:35 ` [PATCH v2 1/3] Staging: ks7010: sdio: Convert RX/TX queue macros into real functions Quytelda Kahja
2018-02-20 6:35 ` [PATCH v2 2/3] Staging: ks7010: hostif: Convert SME queue macros to " Quytelda Kahja
@ 2018-02-20 6:35 ` Quytelda Kahja
1 sibling, 0 replies; 8+ messages in thread
From: Quytelda Kahja @ 2018-02-20 6:35 UTC (permalink / raw)
To: gregkh, wsa; +Cc: devel, driverdev-devel, linux-kernel, Quytelda Kahja
Convert the unsafe macro into an inline function.
Signed-off-by: Quytelda Kahja <quytelda@tamalin.org>
---
drivers/staging/ks7010/ks_hostif.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/staging/ks7010/ks_hostif.c b/drivers/staging/ks7010/ks_hostif.c
index f554477fe6bc..74a08417bd0b 100644
--- a/drivers/staging/ks7010/ks_hostif.c
+++ b/drivers/staging/ks7010/ks_hostif.c
@@ -1308,11 +1308,11 @@ int hostif_data_request(struct ks_wlan_private *priv, struct sk_buff *skb)
return ret;
}
-#define ps_confirm_wait_inc(priv) \
- do { \
- if (atomic_read(&priv->psstatus.status) > PS_ACTIVE_SET) \
- atomic_inc(&priv->psstatus.confirm_wait); \
- } while (0)
+static inline void ps_confirm_wait_inc(struct ks_wlan_private *priv)
+{
+ if (atomic_read(&priv->psstatus.status) > PS_ACTIVE_SET)
+ atomic_inc(&priv->psstatus.confirm_wait);
+}
static
void hostif_mib_get_request(struct ks_wlan_private *priv,
--
2.16.2
_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2018-02-20 6:35 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-17 2:25 [PATCH 2/4] Staging: ks7010: hostif: Fix multiple use of arguments in SME queue macros Quytelda Kahja
2018-02-17 2:25 ` [PATCH 3/4] Staging: ks7010: hostif: Fix multiple use of arguments in rate and event masking macros Quytelda Kahja
2018-02-19 17:12 ` Greg KH
2018-02-17 2:25 ` [PATCH 4/4] Staging: ks7010: hostif: Fix multiple use of arguments in ps_confirm_wait_inc() macro Quytelda Kahja
2018-02-19 17:08 ` [PATCH 2/4] Staging: ks7010: hostif: Fix multiple use of arguments in SME queue macros Greg KH
2018-02-20 6:35 ` [PATCH v2 1/3] Staging: ks7010: sdio: Convert RX/TX queue macros into real functions Quytelda Kahja
2018-02-20 6:35 ` [PATCH v2 2/3] Staging: ks7010: hostif: Convert SME queue macros to " Quytelda Kahja
2018-02-20 6:35 ` [PATCH v2 3/3] Staging: ks7010: hostif: Convert the ps_confirm_wait_inc() macro to a real function Quytelda Kahja
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).