linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Michael Buesch <mb@bu3sch.de>
To: John Linville <linville@tuxdriver.com>
Cc: linux-wireless@vger.kernel.org, bcm43xx-dev@lists.berlios.de
Subject: [patch 5/7] b43: Fix hwcrypto keyidx for new firmware.
Date: Fri, 24 Aug 2007 00:21:58 +0200	[thread overview]
Message-ID: <20070823222156.169085000@bu3sch.de> (raw)
In-Reply-To: 20070823222153.073035000@bu3sch.de

This fixes crypto-RX on new firmware.

Signed-off-by: Michael Buesch <mb@bu3sch.de>

Index: wireless-dev-new/drivers/net/wireless/b43/main.c
===================================================================
--- wireless-dev-new.orig/drivers/net/wireless/b43/main.c	2007-08-23 23:36:22.000000000 +0200
+++ wireless-dev-new/drivers/net/wireless/b43/main.c	2007-08-23 23:40:23.000000000 +0200
@@ -730,13 +730,18 @@ static void key_write(struct b43_wldev *
 static void keymac_write(struct b43_wldev *dev, u8 index, const u8 * addr)
 {
 	u32 addrtmp[2];
+	u8 per_sta_keys_start = 8;
 
-	B43_WARN_ON(index < 4 + 4);
-	/* We have two default TX keys and two default RX keys.
-	 * Physical mac 0 is mapped to physical key 8.
+	if (b43_new_kidx_api(dev))
+		per_sta_keys_start = 4;
+
+	B43_WARN_ON(index < per_sta_keys_start);
+	/* We have two default TX keys and possibly two default RX keys.
+	 * Physical mac 0 is mapped to physical key 4 or 8, depending
+	 * on the firmware version.
 	 * So we must adjust the index here.
 	 */
-	index -= 8;
+	index -= per_sta_keys_start;
 
 	addrtmp[0] = addr[0];
 	addrtmp[0] |= ((u32) (addr[1]) << 8);
@@ -774,16 +779,20 @@ static void do_key_write(struct b43_wlde
 			 const u8 * key, size_t key_len, const u8 * mac_addr)
 {
 	u8 buf[B43_SEC_KEYSIZE];
+	u8 per_sta_keys_start = 8;
+
+	if (b43_new_kidx_api(dev))
+		per_sta_keys_start = 4;
 
 	B43_WARN_ON(index >= dev->max_nr_keys);
 	B43_WARN_ON(key_len > B43_SEC_KEYSIZE);
 
 	memset(buf, 0, sizeof(buf));
-	if (index >= 8)
+	if (index >= per_sta_keys_start)
 		keymac_write(dev, index, buf);	/* First zero out mac. */
 	memcpy(buf, key, key_len);
 	key_write(dev, index, algorithm, buf);
-	if (index >= 8)
+	if (index >= per_sta_keys_start)
 		keymac_write(dev, index, mac_addr);
 
 	dev->key[index].algorithm = algorithm;

-- 


  parent reply	other threads:[~2007-08-23 22:27 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-23 22:21 [patch 0/7] New patch series for merge Michael Buesch
2007-08-23 22:21 ` [patch 1/7] b43: Change Kconfig help text Michael Buesch
2007-08-23 22:21 ` [patch 2/7] b43: Fix oops when firmware not found Michael Buesch
2007-08-23 22:21 ` [patch 3/7] b43: allow disabling hardware encryption Michael Buesch
2007-08-23 22:21 ` [patch 4/7] b43: Add debugfs file to extract LO calibration data Michael Buesch
2007-08-23 22:21 ` Michael Buesch [this message]
2007-08-23 22:21 ` [patch 6/7] b43: Add missing stuff to pwork Michael Buesch
2007-08-23 22:22 ` [patch 7/7] b43: Fix and cleanup hwcrypto Michael Buesch
2007-08-24 10:08   ` Johannes Berg
2007-08-24 10:16     ` Michael Buesch
2007-08-24 10:27       ` Johannes Berg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070823222156.169085000@bu3sch.de \
    --to=mb@bu3sch.de \
    --cc=bcm43xx-dev@lists.berlios.de \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).