The structures rate_control_ops are only passed as an argument to the
functions ieee80211_rate_control_{register/unregister}. This argument is
of type const, so rate_control_ops having this property can also be
declared as const.
Done using Coccinelle:
@r1 disable optional_qualifier @
identifier i;
position p;
@@
static struct rate_control_ops i@p = {...};
@ok1@
identifier r1.i;
position p;
@@
ieee80211_rate_control_register(&i@p)
@ok2@
identifier r1.i;
position p;
@@
ieee80211_rate_control_unregister(&i@p)
@bad@
position p!={r1.p,ok1.p,ok2.p};
identifier r1.i;
@@
i@p
@depends on !bad disable optional_qualifier@
identifier r1.i;
@@
static
+const
struct rate_control_ops i={...};
@depends on !bad disable optional_qualifier@
identifier r1.i;
@@
+const
struct rate_control_ops i;
File size before:
text data bss dec hex filename
1991 104 0 2095 82f wireless/realtek/rtlwifi/rc.o
File size after:
text data bss dec hex filename
2095 0 0 2095 wireless/realtek/rtlwifi/rc.o
Signed-off-by: Bhumika Goyal <bhumirks@xxxxxxxxx>
---
drivers/net/wireless/realtek/rtlwifi/rc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/wireless/realtek/rtlwifi/rc.c b/drivers/net/wireless/realtek/rtlwifi/rc.c
index ce8621a..107c13c 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rc.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rc.c
@@ -284,7 +284,7 @@ static void rtl_rate_free_sta(void *rtlpriv,
kfree(rate_priv);
}
-static struct rate_control_ops rtl_rate_ops = {
+static const struct rate_control_ops rtl_rate_ops = {
.name = "rtl_rc",
.alloc = rtl_rate_alloc,
.free = rtl_rate_free,