2023-07-03 03:17:39

by You Kangren

[permalink] [raw]
Subject: [PATCH v4] wifi:mac80211: Replace the ter nary conditional operator with conditional-statements

Replacing ternary conditional operators with conditional statements
ensures proper expression of meaning while making it easier for
the compiler to generate code.

Signed-off-by: You Kangren <[email protected]>
---
net/mac80211/tdls.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/mac80211/tdls.c b/net/mac80211/tdls.c
index a4af3b7675ef..41176491965d 100644
--- a/net/mac80211/tdls.c
+++ b/net/mac80211/tdls.c
@@ -946,7 +946,8 @@ ieee80211_tdls_build_mgmt_packet_data(struct ieee80211_sub_if_data *sdata,
int ret;
struct ieee80211_link_data *link;

- link_id = link_id >= 0 ? link_id : 0;
+ if (link_id < 0)
+ link_id = 0;
rcu_read_lock();
link = rcu_dereference(sdata->link[link_id]);
if (WARN_ON(!link))
--
2.39.0



2023-07-03 08:03:32

by Xi Ruoyao

[permalink] [raw]
Subject: Re: [PATCH v4] wifi:mac80211: Replace the ternary conditional operator with conditional-statements

On Mon, 2023-07-03 at 11:02 +0800, You Kangren wrote:
> Replacing ternary conditional operators with conditional statements
> ensures proper expression of meaning while making it easier for
> the compiler to generate code.

No you underestimated the compiler here. Both GCC and Clang translates
the ternary operator and the if statement into the same IR during very
early passes.

Maybe there is some reason to avoid ternary operators, but "making it
easier for compiler" is just invalid. And "my text book/my teacher says
ternary operators are bad" will be invalid too, the kernel coding
convention is not what the text book or teacher say.

> Signed-off-by: You Kangren <[email protected]>
> ---
>  net/mac80211/tdls.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/net/mac80211/tdls.c b/net/mac80211/tdls.c
> index a4af3b7675ef..41176491965d 100644
> --- a/net/mac80211/tdls.c
> +++ b/net/mac80211/tdls.c
> @@ -946,7 +946,8 @@ ieee80211_tdls_build_mgmt_packet_data(struct
> ieee80211_sub_if_data *sdata,
>         int ret;
>         struct ieee80211_link_data *link;
>  
> -       link_id = link_id >= 0 ? link_id : 0;
> +       if (link_id < 0)
> +               link_id = 0;
>         rcu_read_lock();
>         link = rcu_dereference(sdata->link[link_id]);
>         if (WARN_ON(!link))

--
Xi Ruoyao <[email protected]>
School of Aerospace Science and Technology, Xidian University