Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1470918 > unrolled thread

[PATCH v2] Staging: wlan-ng: replace switch-case statements with macro

Started byClaudiu Beznea <claudiu.beznea@gmail.com>
First post2016-08-26 20:00 +0200
Last post2016-08-26 20:50 +0200
Articles 3 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH v2] Staging: wlan-ng: replace switch-case statements with macro Claudiu Beznea <claudiu.beznea@gmail.com> - 2016-08-26 20:00 +0200
    Re: [PATCH v2] Staging: wlan-ng: replace switch-case statements  with macro Joe Perches <joe@perches.com> - 2016-08-26 20:10 +0200
      Re: [PATCH v2] Staging: wlan-ng: replace switch-case statements with macro Claudiu Beznea <claudiu.beznea@gmail.com> - 2016-08-26 20:50 +0200

#1470918 — [PATCH v2] Staging: wlan-ng: replace switch-case statements with macro

FromClaudiu Beznea <claudiu.beznea@gmail.com>
Date2016-08-26 20:00 +0200
Subject[PATCH v2] Staging: wlan-ng: replace switch-case statements with macro
Message-ID<satA6-1Kj-23@gated-at.bofh.it>
This patch removes multiple switch-case statements
with a new macro. The macro will generate the
corresponding bit mask based on the key index
received as input.

Chances since v1:
Corrected patch title

Signed-off-by: Claudiu Beznea <claudiu.beznea@gmail.com>
---
 drivers/staging/wlan-ng/cfg80211.c      | 85 ++++++---------------------------
 drivers/staging/wlan-ng/p80211metadef.h |  4 ++
 2 files changed, 19 insertions(+), 70 deletions(-)

diff --git a/drivers/staging/wlan-ng/cfg80211.c b/drivers/staging/wlan-ng/cfg80211.c
index f46dfe6..73ba264 100644
--- a/drivers/staging/wlan-ng/cfg80211.c
+++ b/drivers/staging/wlan-ng/cfg80211.c
@@ -150,6 +150,9 @@ static int prism2_add_key(struct wiphy *wiphy, struct net_device *dev,
 	int err = 0;
 	int result = 0;
 
+	if (key_index >= NUM_WEPKEYS)
+		return -EINVAL;
+
 	switch (params->cipher) {
 	case WLAN_CIPHER_SUITE_WEP40:
 	case WLAN_CIPHER_SUITE_WEP104:
@@ -160,27 +163,7 @@ static int prism2_add_key(struct wiphy *wiphy, struct net_device *dev,
 			goto exit;
 
 		/* send key to driver */
-		switch (key_index) {
-		case 0:
-			did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey0;
-			break;
-
-		case 1:
-			did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey1;
-			break;
-
-		case 2:
-			did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey2;
-			break;
-
-		case 3:
-			did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey3;
-			break;
-
-		default:
-			err = -EINVAL;
-			goto exit;
-		}
+		did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_key(key_index + 1);
 
 		result = prism2_domibset_pstr32(wlandev, did,
 						params->key_len, params->key);
@@ -242,36 +225,13 @@ static int prism2_del_key(struct wiphy *wiphy, struct net_device *dev,
 	 * a key, so we will cheat by setting the key to a bogus value
 	 */
 
-	/* send key to driver */
-	switch (key_index) {
-	case 0:
-		did =
-		    DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey0;
-		break;
-
-	case 1:
-		did =
-		    DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey1;
-		break;
-
-	case 2:
-		did =
-		    DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey2;
-		break;
-
-	case 3:
-		did =
-		    DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey3;
-		break;
-
-	default:
-		err = -EINVAL;
-		goto exit;
-	}
+	if (key_index >= NUM_WEPKEYS)
+		return -EINVAL;
 
+	/* send key to driver */
+	did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_key(key_index + 1);
 	result = prism2_domibset_pstr32(wlandev, did, 13, "0000000000000");
 
-exit:
 	if (result)
 		err = -EFAULT;
 
@@ -529,6 +489,11 @@ static int prism2_connect(struct wiphy *wiphy, struct net_device *dev,
 	/* Set the encryption - we only support wep */
 	if (is_wep) {
 		if (sme->key) {
+			if (sme->key_idx >= NUM_WEPKEYS) {
+				err = -EINVAL;
+				goto exit;
+			}
+
 			result = prism2_domibset_uint32(wlandev,
 				DIDmib_dot11smt_dot11PrivacyTable_dot11WEPDefaultKeyID,
 				sme->key_idx);
@@ -536,28 +501,8 @@ static int prism2_connect(struct wiphy *wiphy, struct net_device *dev,
 				goto exit;
 
 			/* send key to driver */
-			switch (sme->key_idx) {
-			case 0:
-				did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey0;
-				break;
-
-			case 1:
-				did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey1;
-				break;
-
-			case 2:
-				did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey2;
-				break;
-
-			case 3:
-				did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey3;
-				break;
-
-			default:
-				err = -EINVAL;
-				goto exit;
-			}
-
+			did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_key(
+					sme->key_idx + 1);
 			result = prism2_domibset_pstr32(wlandev,
 							did, sme->key_len,
 							(u8 *)sme->key);
diff --git a/drivers/staging/wlan-ng/p80211metadef.h b/drivers/staging/wlan-ng/p80211metadef.h
index 0ccfba1..98fda3d 100644
--- a/drivers/staging/wlan-ng/p80211metadef.h
+++ b/drivers/staging/wlan-ng/p80211metadef.h
@@ -171,6 +171,10 @@
 			(P80211DID_MKSECTION(1) | \
 			P80211DID_MKGROUP(4) | \
 			P80211DID_MKITEM(4) | 0x0c000000)
+#define DIDmib_dot11smt_dot11WEPDefaultKeysTable_key(_i) \
+			(P80211DID_MKSECTION(1) | \
+			P80211DID_MKGROUP(4) | \
+			P80211DID_MKITEM(_i) | 0x0c000000)
 #define DIDmib_dot11smt_dot11PrivacyTable \
 			(P80211DID_MKSECTION(1) | \
 			P80211DID_MKGROUP(6))
-- 
1.9.1

[toc] | [next] | [standalone]


#1470919 — Re: [PATCH v2] Staging: wlan-ng: replace switch-case statements with macro

FromJoe Perches <joe@perches.com>
Date2016-08-26 20:10 +0200
SubjectRe: [PATCH v2] Staging: wlan-ng: replace switch-case statements with macro
Message-ID<satJM-22D-15@gated-at.bofh.it>
In reply to#1470918
On Fri, 2016-08-26 at 20:58 +0300, Claudiu Beznea wrote:
> This patch removes multiple switch-case statements
> with a new macro. The macro will generate the
> corresponding bit mask based on the key index
> received as input.

Can you go a little farther and remove the
#define DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey<#>
and uses too?

[toc] | [prev] | [next] | [standalone]


#1470943

FromClaudiu Beznea <claudiu.beznea@gmail.com>
Date2016-08-26 20:50 +0200
Message-ID<saumt-2ih-5@gated-at.bofh.it>
In reply to#1470919
I will do it soon.

Thanks,
Claudiu

On Fri, Aug 26, 2016 at 9:07 PM, Joe Perches <joe@perches.com> wrote:
> On Fri, 2016-08-26 at 20:58 +0300, Claudiu Beznea wrote:
>> This patch removes multiple switch-case statements
>> with a new macro. The macro will generate the
>> corresponding bit mask based on the key index
>> received as input.
>
> Can you go a little farther and remove the
> #define DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey<#>
> and uses too?
>

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web