Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 22d8846e authored by Dan Williams's avatar Dan Williams Committed by John W. Linville
Browse files

[PATCH] wireless/airo: fix setting TX key index plus key in ENCODEEXT



The previous patch that added ENCODEEXT and AUTH support to the airo
driver contained a slight error which would cause setting the TX
key index ignore a valid key-set request at the same time.  This patch
allows any combination of setting the TX key index and setting an
encryption key.

Signed-off-by: default avatarDan Williams <dcbw@redhat.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 1ba61e05
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -6266,7 +6266,7 @@ static int airo_set_encodeext(struct net_device *dev,
	CapabilityRid cap_rid;		/* Card capability info */
	int perm = ( encoding->flags & IW_ENCODE_TEMP ? 0 : 1 );
	u16 currentAuthType = local->config.authType;
	int idx, key_len, alg = ext->alg;	/* Check encryption mode */
	int idx, key_len, alg = ext->alg, set_key = 1;
	wep_key_t key;

	/* Is WEP supported ? */
@@ -6289,10 +6289,15 @@ static int airo_set_encodeext(struct net_device *dev,
	if (encoding->flags & IW_ENCODE_DISABLED)
		alg = IW_ENCODE_ALG_NONE;

	/* Just setting the transmit key? */
	if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY) {
		/* Only set transmit key index here, actual
		 * key is set below if needed.
		 */
		set_wep_key(local, idx, NULL, 0, perm, 1);
	} else {
		set_key = ext->key_len > 0 ? 1 : 0;
	}

	if (set_key) {
		/* Set the requested key first */
		memset(key.key, 0, MAX_KEY_SIZE);
		switch (alg) {