From patchwork Fri Apr 10 13:23:21 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Kazior X-Patchwork-Id: 6196321 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: X-Original-To: patchwork-linux-wireless@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 9A0D8BF4A6 for ; Fri, 10 Apr 2015 13:30:52 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id B4F042037A for ; Fri, 10 Apr 2015 13:30:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D697D2034F for ; Fri, 10 Apr 2015 13:30:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934318AbbDJNas (ORCPT ); Fri, 10 Apr 2015 09:30:48 -0400 Received: from mail-la0-f44.google.com ([209.85.215.44]:35114 "EHLO mail-la0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933477AbbDJNap (ORCPT ); Fri, 10 Apr 2015 09:30:45 -0400 Received: by labbd9 with SMTP id bd9so13283145lab.2 for ; Fri, 10 Apr 2015 06:30:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tieto.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=dpO2WOZ5yzRWky178aXOwDpKTVg/+kAbruLGkC9Sh/k=; b=vbm0+5Er+o0DaOYDvJGO18hJB606W8WfjPxEgKDVmQuRqEHFlWoO/fKWdFqdni1rw0 Io+p2d2NB4W0Qo73Xu0o1xSeDGG+DAajHSx4RMLE/W4cDOiIIyhucnUVuaTzdpehKIBL 3uWk2wP+7mBjgdp1MercA4ockSL/SMXweDW0A= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=dpO2WOZ5yzRWky178aXOwDpKTVg/+kAbruLGkC9Sh/k=; b=g12EL6JvLxlOYMbWMMPc8mUgSjTAvv50+T3skVF9wVjpmNQ87wcy9iI/EeLL/n/CLx iqm/1xjEgwXZUT1xKIBMyHRXrxUV0yYth7gNRLbP64gKSA0b2x89ZMcT8fLht9+gv6R8 ktvCbQcIUN4VQ7vnTIFCTT09wqhJZ3OGxFc7NopnOuRLgblsKPOOrW3GEfdQhSiMe9We hUqT0ZttfiRbAozr7kbIsYrnJ9XAYEuQwi2I5yOwE0yihQY7VsDuDuUbH32dfifOxxqz jobICJziI+4vVPLXfTckpteiMuD39EBFoQVhVmYQCfZ8SEPinHKBUx6eSI9dhEN/A++l 0h3w== X-Gm-Message-State: ALoCoQnqBEjMU7pvM3JmInwNz92iu8H+UiHvmcjWoljHRd9PrkixY8ZAqsF5x3GTwjjvN2dGHji5PtRANKL2teOcL/BBCfc27nPqbAsmWDUdoqdMK43ELD/BoclToBbOWi/snHYRa+02 X-Received: by 10.112.140.231 with SMTP id rj7mr1458389lbb.76.1428672643889; Fri, 10 Apr 2015 06:30:43 -0700 (PDT) Received: from bob.homerouter.cpe (apn-46-215-24-237.dynamic.gprs.plus.pl. [46.215.24.237]) by mx.google.com with ESMTPSA id tp10sm468536lbb.4.2015.04.10.06.30.42 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 10 Apr 2015 06:30:42 -0700 (PDT) From: Michal Kazior To: ath10k@lists.infradead.org Cc: linux-wireless@vger.kernel.org, Michal Kazior Subject: [PATCH 2/4] ath10k: fix multiple key static wep with ibss Date: Fri, 10 Apr 2015 13:23:21 +0000 Message-Id: <1428672203-8604-3-git-send-email-michal.kazior@tieto.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1428672203-8604-1-git-send-email-michal.kazior@tieto.com> References: <1428672203-8604-1-git-send-email-michal.kazior@tieto.com> X-DomainID: tieto.com Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID,T_RP_MATCHES_RCVD,UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Apparently firmware requires both pairwise and groupwise keys to be installed per-peer for static WEP in IBSS. This wasn't necessary for AP mode (and installing both doesn't seem to break AP mode thus there's no special handling). Also there seems to be some kind of issue with mapping tx/rx keys in firmware properly which resulted in wrong keys being used and broken communication between devices. It can be argued the vdev param part is more of a workaround than a real fix. However I couldn't figure out how to fix this differently. It works and isn't super ugly. Signed-off-by: Michal Kazior --- drivers/net/wireless/ath/ath10k/mac.c | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c index 6664bcc9ba88..93f753cb839a 100644 --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c @@ -230,9 +230,13 @@ static int ath10k_install_peer_wep_keys(struct ath10k_vif *arvif, flags = 0; flags |= WMI_KEY_PAIRWISE; - /* set TX_USAGE flag for default key id */ - if (arvif->def_wep_key_idx == i) - flags |= WMI_KEY_TX_USAGE; + ret = ath10k_install_key(arvif, arvif->wep_keys[i], SET_KEY, + addr, flags); + if (ret) + return ret; + + flags = 0; + flags |= WMI_KEY_GROUP; ret = ath10k_install_key(arvif, arvif->wep_keys[i], SET_KEY, addr, flags); @@ -244,6 +248,27 @@ static int ath10k_install_peer_wep_keys(struct ath10k_vif *arvif, spin_unlock_bh(&ar->data_lock); } + /* In some cases (notably with static WEP IBSS with multiple keys) + * multicast Tx becomes broken. Both pairwise and groupwise keys are + * installed already. Using WMI_KEY_TX_USAGE in different combinations + * didn't seem help. Using def_keyid vdev parameter seems to be + * effective so use that. + * + * FIXME: Revisit. Perhaps this can be done in a less hacky way. + */ + if (arvif->def_wep_key_idx == -1) + return 0; + + ret = ath10k_wmi_vdev_set_param(arvif->ar, + arvif->vdev_id, + arvif->ar->wmi.vdev_param->def_keyid, + arvif->def_wep_key_idx); + if (ret) { + ath10k_warn(ar, "failed to re-set def wpa key idxon vdev %i: %d\n", + arvif->vdev_id, ret); + return ret; + } + return 0; }