From patchwork Tue Jul 21 17:46:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shannon Nelson X-Patchwork-Id: 1333260 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=pensando.io Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=pensando.io header.i=@pensando.io header.a=rsa-sha256 header.s=google header.b=EoHZuMsa; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BB5cl0WG4z9sRW for ; Wed, 22 Jul 2020 03:46:31 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728268AbgGURq3 (ORCPT ); Tue, 21 Jul 2020 13:46:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56996 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726458AbgGURq1 (ORCPT ); Tue, 21 Jul 2020 13:46:27 -0400 Received: from mail-pl1-x642.google.com (mail-pl1-x642.google.com [IPv6:2607:f8b0:4864:20::642]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9A542C061794 for ; Tue, 21 Jul 2020 10:46:27 -0700 (PDT) Received: by mail-pl1-x642.google.com with SMTP id t6so10580943plo.3 for ; Tue, 21 Jul 2020 10:46:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pensando.io; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Aw1VCtLQwFy/bRNCot7lwpI/hG+gYM/cfiPxqIs0Atc=; b=EoHZuMsaL/mQ8Zm2gbbB/EBHrkXAxoISTTQ9eGvbeQNgS5qGzHaZ9SqC+XfWUelBEN ncBVp8WEls9VHgAVz/0VSwL4zmiq6Ac1sxhAveUFQbHipP9K4lnm/Sxnkte1L4iXSFE3 Ne0MU0JJ9ZRfdVamhA2jo9fS+SDm0h0MzDJt/RyffF50WnPjRVmkBd2q6fwSri/wzZb2 s1335N94vaR97yWJQ8d0t/zwh8Qhr/dRv+B+6TGWijz19zha4x5YS7rApCl6ei6pbrSa SSIFUOs8t9WuKBN6bVpnmBNpNT+5guk64un9EneFj71nMCxmK7CQgZJXpOY9zcjajqDR nWtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Aw1VCtLQwFy/bRNCot7lwpI/hG+gYM/cfiPxqIs0Atc=; b=tiUeiZ36kGRqmGHlv7GzCA090TEkf9b94J4wOWMwH5DP3K32qWAhVu1ZW1TohyYFmJ HwoBqPoWX2L//fkdNNH86aUs8fKlOBNyag/z3vKrK1j1duQWnCraJwhZBvEx0GZM/uUe jW2DekOyTacw0F1U3NZ8w1q+zS44a88DdbHR26hjGwm3souRt4ybKefGZMe+nlq44jj9 A2JiQP8iWpY6mJqQ2JLKerQFC02B0XeAp31RkQ/bcSsKSyLfFHNZ4FyTazHC32iMcdHl pVC9LwApHhHyNZE0tIKmZA2P+HVfZYJUh+gnHGTohpklFfSrY+kVenVItBufwgybrDEq jlBw== X-Gm-Message-State: AOAM530ngxFsZcR9x6mxucDdlOgx61jTmfemBAlM5MzBPtAUpRfeSRtG yciFRhZaGBnNXXRJOiNt4cX81lPwbss= X-Google-Smtp-Source: ABdhPJwAENs7mZQ7rsfj4Y7tsxmvF79TVKjYZ1aqtfRxTwUTiEcRnWTLS/C+k0waV1QwdQnQ9TOLpw== X-Received: by 2002:a17:90b:46d7:: with SMTP id jx23mr6310844pjb.191.1595353586860; Tue, 21 Jul 2020 10:46:26 -0700 (PDT) Received: from driver-dev1.pensando.io ([12.226.153.42]) by smtp.gmail.com with ESMTPSA id c14sm4598712pgb.1.2020.07.21.10.46.25 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Jul 2020 10:46:26 -0700 (PDT) From: Shannon Nelson To: netdev@vger.kernel.org, davem@davemloft.net Cc: Shannon Nelson Subject: [PATCH v2 net 1/6] ionic: use offset for ethtool regs data Date: Tue, 21 Jul 2020 10:46:14 -0700 Message-Id: <20200721174619.39860-2-snelson@pensando.io> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200721174619.39860-1-snelson@pensando.io> References: <20200721174619.39860-1-snelson@pensando.io> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Use an offset to write the second half of the regs data into the second half of the buffer instead of overwriting the first half. Fixes: 4d03e00a2140 ("ionic: Add initial ethtool support") Signed-off-by: Shannon Nelson --- drivers/net/ethernet/pensando/ionic/ionic_ethtool.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c b/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c index e03ea9b18f95..095561924bdc 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_ethtool.c @@ -103,15 +103,18 @@ static void ionic_get_regs(struct net_device *netdev, struct ethtool_regs *regs, void *p) { struct ionic_lif *lif = netdev_priv(netdev); + unsigned int offset; unsigned int size; regs->version = IONIC_DEV_CMD_REG_VERSION; + offset = 0; size = IONIC_DEV_INFO_REG_COUNT * sizeof(u32); - memcpy_fromio(p, lif->ionic->idev.dev_info_regs->words, size); + memcpy_fromio(p + offset, lif->ionic->idev.dev_info_regs->words, size); + offset += size; size = IONIC_DEV_CMD_REG_COUNT * sizeof(u32); - memcpy_fromio(p, lif->ionic->idev.dev_cmd_regs->words, size); + memcpy_fromio(p + offset, lif->ionic->idev.dev_cmd_regs->words, size); } static int ionic_get_link_ksettings(struct net_device *netdev, From patchwork Tue Jul 21 17:46:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shannon Nelson X-Patchwork-Id: 1333264 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=pensando.io Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=pensando.io header.i=@pensando.io header.a=rsa-sha256 header.s=google header.b=yEB0nPFk; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BB5cz0Y9Vz9sRR for ; Wed, 22 Jul 2020 03:46:43 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729394AbgGURqd (ORCPT ); Tue, 21 Jul 2020 13:46:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57004 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729233AbgGURq3 (ORCPT ); Tue, 21 Jul 2020 13:46:29 -0400 Received: from mail-pl1-x642.google.com (mail-pl1-x642.google.com [IPv6:2607:f8b0:4864:20::642]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 09399C061794 for ; Tue, 21 Jul 2020 10:46:29 -0700 (PDT) Received: by mail-pl1-x642.google.com with SMTP id k4so10567796pld.12 for ; Tue, 21 Jul 2020 10:46:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pensando.io; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=2MeQw586Xvul3UPgOiH9C1DV0+f0Az+s6rymzSAlROs=; b=yEB0nPFkmzCjFwUn8TRp7H2wAloYT9fNfPSsBVpuHZJbBL919iXv+hsjpco6HPxM+y soLihtBzhc+vLidY2J67qe6lh6TvrGZ7KuW35y16EB9XmhsaS3YqdRpnq/QzZQrzBbLQ PoDoJxmtq/zembDeuhZEK/JWiMSOwmZtqFH9d4/ZKksZdhpBVX1WG/oPqbLt1QjHkj66 kxAwAoXZ/qNLIO4INlzZ8YUCCJS3jmxUM++WF85tdamfWMoALEhR1oHE8DKeyVPWgCA4 aT/uhDIR7WU8ab1Fd/4QO50sD43hEF56cedG9VNMicNPBaX1VXwk0c9y5z3kn8BC2REJ KjlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=2MeQw586Xvul3UPgOiH9C1DV0+f0Az+s6rymzSAlROs=; b=FLBlKZ1sZsHBju2ckY1u/XJIxtNlqWw/U5QOF9RgoWGVSVPHq3dKwsQOHJWYw71M7m 2nbZg7hGEYEHOMzSoxrrURUbWuN6RzfNOaBU2mzGeffPD8yHaB2KjunBggg7LZ9K9skE POL9zCN0vkQtYlZwovsXWcLjqZYOcqS3LJshy50x11zllo7ZsENEiPhMnKhmLmJRMjE0 kXuq7w/1I3dMU3lavbEeY5qOsuLvOR9yTBdRn0PKBdep4cVIrJPPYXGo3pb9Nv670JJk 6A1dhJc2Jsz0/Px4GCDFyGvKq/WTwMcq8/mCkTOnwS7okqVOW5Uq7TvaRDf/gRItSV0M GU2A== X-Gm-Message-State: AOAM532Hxud2h27qN+viE8c3BRSOTS9XWM7capkGWKImJR5qRW4+DIga h8W8IFbeiwuTGB9bJiustHNvJ6W9Ljw= X-Google-Smtp-Source: ABdhPJxMRg7nR6rPjR00Af7JM5iIuZ8xJRbJkFVvTdQteZyCuv0EIioPJRJo8cwXIPaq33GYGus6rw== X-Received: by 2002:a17:902:a5c5:: with SMTP id t5mr23326582plq.47.1595353588209; Tue, 21 Jul 2020 10:46:28 -0700 (PDT) Received: from driver-dev1.pensando.io ([12.226.153.42]) by smtp.gmail.com with ESMTPSA id c14sm4598712pgb.1.2020.07.21.10.46.26 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Jul 2020 10:46:27 -0700 (PDT) From: Shannon Nelson To: netdev@vger.kernel.org, davem@davemloft.net Cc: Shannon Nelson Subject: [PATCH v2 net 2/6] ionic: add missing filter locking Date: Tue, 21 Jul 2020 10:46:15 -0700 Message-Id: <20200721174619.39860-3-snelson@pensando.io> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200721174619.39860-1-snelson@pensando.io> References: <20200721174619.39860-1-snelson@pensando.io> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org For completeness, add a couple more uses of the Rx filter list locks. Fixes: c1e329ebec8d ("ionic: Add management of rx filters") Signed-off-by: Shannon Nelson --- drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c b/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c index 80eeb7696e01..cc2a6977081a 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c @@ -69,10 +69,12 @@ int ionic_rx_filters_init(struct ionic_lif *lif) spin_lock_init(&lif->rx_filters.lock); + spin_lock_bh(&lif->rx_filters.lock); for (i = 0; i < IONIC_RX_FILTER_HLISTS; i++) { INIT_HLIST_HEAD(&lif->rx_filters.by_hash[i]); INIT_HLIST_HEAD(&lif->rx_filters.by_id[i]); } + spin_unlock_bh(&lif->rx_filters.lock); return 0; } @@ -84,11 +86,13 @@ void ionic_rx_filters_deinit(struct ionic_lif *lif) struct hlist_node *tmp; unsigned int i; + spin_lock_bh(&lif->rx_filters.lock); for (i = 0; i < IONIC_RX_FILTER_HLISTS; i++) { head = &lif->rx_filters.by_id[i]; hlist_for_each_entry_safe(f, tmp, head, by_id) ionic_rx_filter_free(lif, f); } + spin_unlock_bh(&lif->rx_filters.lock); } int ionic_rx_filter_save(struct ionic_lif *lif, u32 flow_id, u16 rxq_index, From patchwork Tue Jul 21 17:46:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shannon Nelson X-Patchwork-Id: 1333261 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=pensando.io Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=pensando.io header.i=@pensando.io header.a=rsa-sha256 header.s=google header.b=A3o0pE3e; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BB5cp4dSMz9sRR for ; Wed, 22 Jul 2020 03:46:34 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729498AbgGURqe (ORCPT ); Tue, 21 Jul 2020 13:46:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57010 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726458AbgGURqb (ORCPT ); Tue, 21 Jul 2020 13:46:31 -0400 Received: from mail-pj1-x1042.google.com (mail-pj1-x1042.google.com [IPv6:2607:f8b0:4864:20::1042]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1DB6FC0619DA for ; Tue, 21 Jul 2020 10:46:31 -0700 (PDT) Received: by mail-pj1-x1042.google.com with SMTP id k1so1914536pjt.5 for ; Tue, 21 Jul 2020 10:46:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pensando.io; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=21ztYo1uHKOQVrOI2wxli2xxPGSNsEhFPdmoi4KOKYM=; b=A3o0pE3efR+VNwz9PFz4mJB3Ib5lasNkpIxOYNvQ3G9nmMN4gkkHDI9auU7JGoS6kq 2sJeuokGGg4cNdpXCPpprEWXd4BNhFxrs1zt8LHcEwvm/aTQEtsDae9/mXbbjzNOCqqN 52NY3wH5k/bx2u0Hqq4FiLcFC/o+KyXHvl3ZV51bbpHGoBrTElpNfINA0XjGkzT1CiK5 5rZv/90mryI1KjQQz9CG4js6tZpK+AiXn/VgZZAicGnGT6YAwAVCKUHCSZJ8AhIAUq/0 qfL80J4vKd7y2waWRfmrK+Q0vxu4S2C0hZFVuI48cSSLj+tG7vztRHQki1KhRpj7i8Ev DFSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=21ztYo1uHKOQVrOI2wxli2xxPGSNsEhFPdmoi4KOKYM=; b=O3NKdYvTUMacAJvCo1JC0BjLG1I0Vwo6DNWBWDI35Vv5YqQqOeI/9qkdNY1LhezwuF M+sofmLRkmWezJ/wNjY7usP+C2aFDdABT6kYNKANmWQd1Vcoin34ycM6ZPIdoGgJy5oJ CRdC8U3K8i8wtAZf9wJOMAMziTZk1lm6Y77NFdxXUcV2EENlBAMK4M+zCYLdaS4L4p0r mLle946pmaaNd77tt+b0A5BTe0hPnYHMQqK4sqCzLD/7D+UJZvd2IC9NDt6Y290tzk9c fsOXJCfsCU5Xp5F6xuRZ6cM01hrLxJJhpXVb5Mtrg7UHo6Hsmn8YVAWnnEVsr3D6qfda oxbQ== X-Gm-Message-State: AOAM532pNvL+FcBFyeyKhZokm3ueudrTF0kbr/wB/KqzQg84tZBOWdnR R7LYn2xWc74vjyh3SfsDbK/weFW3KI0= X-Google-Smtp-Source: ABdhPJwSrvuZFuTQR8gnsEzL4qMWxRUG92/LyMVVFiF/Hx4kuwaeDWOt9/bu93e4/Qsb1/jq14QEpw== X-Received: by 2002:a17:902:a416:: with SMTP id p22mr22796892plq.341.1595353590056; Tue, 21 Jul 2020 10:46:30 -0700 (PDT) Received: from driver-dev1.pensando.io ([12.226.153.42]) by smtp.gmail.com with ESMTPSA id c14sm4598712pgb.1.2020.07.21.10.46.28 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Jul 2020 10:46:28 -0700 (PDT) From: Shannon Nelson To: netdev@vger.kernel.org, davem@davemloft.net Cc: Shannon Nelson Subject: [PATCH v2 net 3/6] ionic: fix up filter debug msgs Date: Tue, 21 Jul 2020 10:46:16 -0700 Message-Id: <20200721174619.39860-4-snelson@pensando.io> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200721174619.39860-1-snelson@pensando.io> References: <20200721174619.39860-1-snelson@pensando.io> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Fix up some of the debug messages around filter management. Fixes: c1e329ebec8d ("ionic: Add management of rx filters") Signed-off-by: Shannon Nelson --- drivers/net/ethernet/pensando/ionic/ionic_lif.c | 17 +++++++---------- .../ethernet/pensando/ionic/ionic_rx_filter.c | 1 + 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/pensando/ionic/ionic_lif.c b/drivers/net/ethernet/pensando/ionic/ionic_lif.c index f49486b6d04d..41e86d6b76b6 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_lif.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_lif.c @@ -863,8 +863,7 @@ static int ionic_lif_addr_add(struct ionic_lif *lif, const u8 *addr) if (f) return 0; - netdev_dbg(lif->netdev, "rx_filter add ADDR %pM (id %d)\n", addr, - ctx.comp.rx_filter_add.filter_id); + netdev_dbg(lif->netdev, "rx_filter add ADDR %pM\n", addr); memcpy(ctx.cmd.rx_filter_add.mac.addr, addr, ETH_ALEN); err = ionic_adminq_post_wait(lif, &ctx); @@ -893,6 +892,9 @@ static int ionic_lif_addr_del(struct ionic_lif *lif, const u8 *addr) return -ENOENT; } + netdev_dbg(lif->netdev, "rx_filter del ADDR %pM (id %d)\n", + addr, f->filter_id); + ctx.cmd.rx_filter_del.filter_id = cpu_to_le32(f->filter_id); ionic_rx_filter_free(lif, f); spin_unlock_bh(&lif->rx_filters.lock); @@ -901,9 +903,6 @@ static int ionic_lif_addr_del(struct ionic_lif *lif, const u8 *addr) if (err && err != -EEXIST) return err; - netdev_dbg(lif->netdev, "rx_filter del ADDR %pM (id %d)\n", addr, - ctx.cmd.rx_filter_del.filter_id); - return 0; } @@ -1351,13 +1350,11 @@ static int ionic_vlan_rx_add_vid(struct net_device *netdev, __be16 proto, }; int err; + netdev_dbg(netdev, "rx_filter add VLAN %d\n", vid); err = ionic_adminq_post_wait(lif, &ctx); if (err) return err; - netdev_dbg(netdev, "rx_filter add VLAN %d (id %d)\n", vid, - ctx.comp.rx_filter_add.filter_id); - return ionic_rx_filter_save(lif, 0, IONIC_RXQ_INDEX_ANY, 0, &ctx); } @@ -1382,8 +1379,8 @@ static int ionic_vlan_rx_kill_vid(struct net_device *netdev, __be16 proto, return -ENOENT; } - netdev_dbg(netdev, "rx_filter del VLAN %d (id %d)\n", vid, - le32_to_cpu(ctx.cmd.rx_filter_del.filter_id)); + netdev_dbg(netdev, "rx_filter del VLAN %d (id %d)\n", + vid, f->filter_id); ctx.cmd.rx_filter_del.filter_id = cpu_to_le32(f->filter_id); ionic_rx_filter_free(lif, f); diff --git a/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c b/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c index cc2a6977081a..fb9d828812bd 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c @@ -128,6 +128,7 @@ int ionic_rx_filter_save(struct ionic_lif *lif, u32 flow_id, u16 rxq_index, f->filter_id = le32_to_cpu(ctx->comp.rx_filter_add.filter_id); f->rxq_index = rxq_index; memcpy(&f->cmd, ac, sizeof(f->cmd)); + netdev_dbg(lif->netdev, "rx_filter add filter_id %d\n", f->filter_id); INIT_HLIST_NODE(&f->by_hash); INIT_HLIST_NODE(&f->by_id); From patchwork Tue Jul 21 17:46:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shannon Nelson X-Patchwork-Id: 1333262 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=pensando.io Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=pensando.io header.i=@pensando.io header.a=rsa-sha256 header.s=google header.b=ExO/cjnU; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BB5cs0l4yz9sRR for ; Wed, 22 Jul 2020 03:46:37 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729975AbgGURqe (ORCPT ); Tue, 21 Jul 2020 13:46:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57016 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727826AbgGURqc (ORCPT ); Tue, 21 Jul 2020 13:46:32 -0400 Received: from mail-pg1-x544.google.com (mail-pg1-x544.google.com [IPv6:2607:f8b0:4864:20::544]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8418BC0619DB for ; Tue, 21 Jul 2020 10:46:32 -0700 (PDT) Received: by mail-pg1-x544.google.com with SMTP id j19so12257228pgm.11 for ; Tue, 21 Jul 2020 10:46:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pensando.io; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=E3X5T7MV/sNafEfdlB7eZ+UajG8Py7wFAjMLpUqo8ao=; b=ExO/cjnUSlaz1VCqWhiBV08Oo8JBevub7lljYnZTisB+iti0R71GeBjaqtpdeXEO5u 02mEnHkCokAIC3Zn/F5AJVrv87z9fB1MTs8nRzFElLfmeMUE5To9JLZOf3SCR60u+MgQ 1i/EjNIuhNKgVfP+F4lMhxbnfmnBr6kray/gY7EdUnJhExQPV6MkENndu7015qDKATvn 4cLdoLTW1fkcRfcuDDzwAxb0FstcfQnzQJmW9JSywQgBus178vFBKdPRlOb5b8IbtGpJ 1VVe//a9B6h/CgGXdY/pNJgZEVDJVy2vSCs3DNGhR82SyX4kjdLd6YfZB8R57tud5HOh /zwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=E3X5T7MV/sNafEfdlB7eZ+UajG8Py7wFAjMLpUqo8ao=; b=ghY4Ya9m0CoWHwenA4zCBr3vBUeFL6CfX7So5Wj0/efpdBNsH0yvz3hXLsJFSjXAo4 P2k/Hym/gzQzcL10x1W71mRlD6Hq9U+DjvLlbLb0bqAUa6IE5uinfFMDiUrjDrhK9dmq 4MN/WZtM3rlIyIXX++GpcNChX5RLHkCxROlbtR7cW+433cqryG/gldiu3DlIjPS2o1jD 5ZWoKcEjwUFrpjLVJnmdeTBBjpl5Mzhv2W4tSwRsa+vGU9SfaizYCIbpzF0do6PrAp9A 0deRUbws8u/ngnIlby8UH+qNU2da5vwRRkjL1iZgZdwhhzVQsr0D5Q9Cp2PUsNrJskpZ /hbA== X-Gm-Message-State: AOAM532kAy8xSV/FKyKuUkTr6pfWkikgpD5otviAW+uhv6ZIVSPhwqSt g8QNqOsJwm/iMyiZlcdk0iGUv9xVvqw= X-Google-Smtp-Source: ABdhPJyv11UwnW1DKas7/AE+5Q/PIPkh5r4DbouuWxMvUL0o5T4zRFzjuiXwo8zW3svR8k17gpNt7Q== X-Received: by 2002:aa7:8391:: with SMTP id u17mr26671338pfm.156.1595353591745; Tue, 21 Jul 2020 10:46:31 -0700 (PDT) Received: from driver-dev1.pensando.io ([12.226.153.42]) by smtp.gmail.com with ESMTPSA id c14sm4598712pgb.1.2020.07.21.10.46.30 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Jul 2020 10:46:30 -0700 (PDT) From: Shannon Nelson To: netdev@vger.kernel.org, davem@davemloft.net Cc: Shannon Nelson Subject: [PATCH v2 net 4/6] ionic: update filter id after replay Date: Tue, 21 Jul 2020 10:46:17 -0700 Message-Id: <20200721174619.39860-5-snelson@pensando.io> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200721174619.39860-1-snelson@pensando.io> References: <20200721174619.39860-1-snelson@pensando.io> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When we replay the rx filters after a fw-upgrade we get new filter_id values from the FW, which we need to save and update in our local filter list. This allows us to delete the filters with the correct filter_id when we're done. Fixes: 7e4d47596b68 ("ionic: replay filters after fw upgrade") Signed-off-by: Shannon Nelson --- .../ethernet/pensando/ionic/ionic_rx_filter.c | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c b/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c index fb9d828812bd..cd0076fc3044 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c @@ -21,13 +21,16 @@ void ionic_rx_filter_free(struct ionic_lif *lif, struct ionic_rx_filter *f) void ionic_rx_filter_replay(struct ionic_lif *lif) { struct ionic_rx_filter_add_cmd *ac; + struct hlist_head new_id_list; struct ionic_admin_ctx ctx; struct ionic_rx_filter *f; struct hlist_head *head; struct hlist_node *tmp; + unsigned int key; unsigned int i; int err; + INIT_HLIST_HEAD(&new_id_list); ac = &ctx.cmd.rx_filter_add; for (i = 0; i < IONIC_RX_FILTER_HLISTS; i++) { @@ -58,9 +61,30 @@ void ionic_rx_filter_replay(struct ionic_lif *lif) ac->mac.addr); break; } + spin_lock_bh(&lif->rx_filters.lock); + ionic_rx_filter_free(lif, f); + spin_unlock_bh(&lif->rx_filters.lock); + + continue; } + + /* remove from old id list, save new id in tmp list */ + spin_lock_bh(&lif->rx_filters.lock); + hlist_del(&f->by_id); + spin_unlock_bh(&lif->rx_filters.lock); + f->filter_id = le32_to_cpu(ctx.comp.rx_filter_add.filter_id); + hlist_add_head(&f->by_id, &new_id_list); } } + + /* rebuild the by_id hash lists with the new filter ids */ + spin_lock_bh(&lif->rx_filters.lock); + hlist_for_each_entry_safe(f, tmp, &new_id_list, by_id) { + key = f->filter_id & IONIC_RX_FILTER_HLISTS_MASK; + head = &lif->rx_filters.by_id[key]; + hlist_add_head(&f->by_id, head); + } + spin_unlock_bh(&lif->rx_filters.lock); } int ionic_rx_filters_init(struct ionic_lif *lif) From patchwork Tue Jul 21 17:46:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shannon Nelson X-Patchwork-Id: 1333263 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=pensando.io Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=pensando.io header.i=@pensando.io header.a=rsa-sha256 header.s=google header.b=JI762jpb; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BB5cw17lGz9sRR for ; Wed, 22 Jul 2020 03:46:40 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730258AbgGURqj (ORCPT ); Tue, 21 Jul 2020 13:46:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57024 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730021AbgGURqe (ORCPT ); Tue, 21 Jul 2020 13:46:34 -0400 Received: from mail-pl1-x641.google.com (mail-pl1-x641.google.com [IPv6:2607:f8b0:4864:20::641]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 82646C061794 for ; Tue, 21 Jul 2020 10:46:34 -0700 (PDT) Received: by mail-pl1-x641.google.com with SMTP id d1so10584468plr.8 for ; Tue, 21 Jul 2020 10:46:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pensando.io; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=hgGJxNpxNWjIMuIZiMd01yWl7Sc2S5Kf3lt0Xgc4yUQ=; b=JI762jpbP82js1gwc+gvE73xcCORM8WdqLgbcw1LBKE/Jr6814dxTueQ6kTQQkd5gp B3Au2UxBA60/d7oey6eNeRn+8MhzR7nFwWj2ZUFJ4jSL6x4ppcgwCMf91/YlQwA5Hsrt Pdf2keWI1futrfxbIafnpYWG/SZSYIiMipGelJu+PTE61TTrb77+fOc+aBmSpJoLXMve PU3gKdzt/AZsbxHzcDBOgEh4EDEXEjPXwEbZOUQQg/x4U0E2vjeTDzDfb+eEqlQZIO6n wczQKpPvRjNuxQ9FwgsBiaFjh7bVYEMr02OwRqOpUA0KWbrKgIMo7pnarF+z9iAd6yVJ n2FQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=hgGJxNpxNWjIMuIZiMd01yWl7Sc2S5Kf3lt0Xgc4yUQ=; b=qsthO3UW7BBULbvWlbMsfR2i8QE1rQHSszTDyQ9ZkeQf9gAUk5Z+Poix0YUf8nuQpj NKFFpE0Y/tHEaCZFBXpLo8dVq+I1TDYJNxXotFJ2tsh5nWIBBwW1sdSQ65+TFY9XYpYP UWUh22JZ2aud7xMvSyX/9rfcgbdtDcpsCZMHyLBVb2GNOTLA5A8DxRBR6upwEWzLvK48 akCATZ2xb+2/N/GG8g85wjilIfVrYenbOs6dsZX9cFeo0lSGCtD8jA1PVPJmya8DfsST 9ZcO2vFDmy9aBrenn87qq9uEuEN7dyvWNQwS+ZXXhAmR2j9PNf+OVWcCRz6Cynw6x+sW U0QQ== X-Gm-Message-State: AOAM5336qRwIge7cuCgZPSviPyRkycqqo5t6kyBE1l5ZEOkp445a6ErV EGkP/PvU5MnSXyhGNKCRUXADFIWQmFU= X-Google-Smtp-Source: ABdhPJz8TTYjGk2lLVWUHURNwMm0xuW768Mk7QJdsd631mGZrGK/8UfBeBW8RvhWVW0C+v5cq9zNFw== X-Received: by 2002:a17:902:bb8a:: with SMTP id m10mr5380341pls.248.1595353593377; Tue, 21 Jul 2020 10:46:33 -0700 (PDT) Received: from driver-dev1.pensando.io ([12.226.153.42]) by smtp.gmail.com with ESMTPSA id c14sm4598712pgb.1.2020.07.21.10.46.31 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Jul 2020 10:46:32 -0700 (PDT) From: Shannon Nelson To: netdev@vger.kernel.org, davem@davemloft.net Cc: Shannon Nelson Subject: [PATCH v2 net 5/6] ionic: keep rss hash after fw update Date: Tue, 21 Jul 2020 10:46:18 -0700 Message-Id: <20200721174619.39860-6-snelson@pensando.io> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200721174619.39860-1-snelson@pensando.io> References: <20200721174619.39860-1-snelson@pensando.io> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Make sure the RSS hash key is kept across a fw update by not de-initing it when an update is happening. Fixes: c672412f6172 ("ionic: remove lifs on fw reset") Signed-off-by: Shannon Nelson --- drivers/net/ethernet/pensando/ionic/ionic_lif.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/pensando/ionic/ionic_lif.c b/drivers/net/ethernet/pensando/ionic/ionic_lif.c index 41e86d6b76b6..ddb9ad5b294c 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_lif.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_lif.c @@ -2277,11 +2277,10 @@ static void ionic_lif_deinit(struct ionic_lif *lif) cancel_work_sync(&lif->deferred.work); cancel_work_sync(&lif->tx_timeout_work); ionic_rx_filters_deinit(lif); + if (lif->netdev->features & NETIF_F_RXHASH) + ionic_lif_rss_deinit(lif); } - if (lif->netdev->features & NETIF_F_RXHASH) - ionic_lif_rss_deinit(lif); - napi_disable(&lif->adminqcq->napi); ionic_lif_qcq_deinit(lif, lif->notifyqcq); ionic_lif_qcq_deinit(lif, lif->adminqcq); From patchwork Tue Jul 21 17:46:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shannon Nelson X-Patchwork-Id: 1333265 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=pensando.io Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=pensando.io header.i=@pensando.io header.a=rsa-sha256 header.s=google header.b=AT+z5LOF; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BB5cz64G3z9sRW for ; Wed, 22 Jul 2020 03:46:43 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730319AbgGURqn (ORCPT ); Tue, 21 Jul 2020 13:46:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57030 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727826AbgGURqg (ORCPT ); Tue, 21 Jul 2020 13:46:36 -0400 Received: from mail-pj1-x1042.google.com (mail-pj1-x1042.google.com [IPv6:2607:f8b0:4864:20::1042]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 70272C0619DA for ; Tue, 21 Jul 2020 10:46:36 -0700 (PDT) Received: by mail-pj1-x1042.google.com with SMTP id md7so2038845pjb.1 for ; Tue, 21 Jul 2020 10:46:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pensando.io; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=mgf+Qy2LLyBQyvF7dW8j1WQ5+w2Idp48bbdEhTIkIJ4=; b=AT+z5LOFXwFmhInrYioomuGYCotlX7hqFEsCru6jR3EJUzItUxY/ZRoiwm61T3QVXX PWOjoM82uboTZk+p2buqpGBdFnhp6XxpraGfffokZd4IxkUvN+xYEeVyJiBINuhawSxi SA1Smc6nV6sth4DxoOdeFPFH7UhcIc+Hk9kUKFrEibjSB2u7y7MctEKQU6sE7LNCLWU+ 3uttU79B8azSabXGNnrEJW5TP26J8yJmtve0tD7eodslJlczzAMoTGd1bg6LFjWby5jV 05KtRZ+PuLVbzN4nlF5nU672b8bUurIJ11gSo2Y2m+xBFHhmDju+/9LmYAAx0ICIhXkg 5Bww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=mgf+Qy2LLyBQyvF7dW8j1WQ5+w2Idp48bbdEhTIkIJ4=; b=hpzwT9Dq+5L/3T1aFBNQ6XpCef913URg4mTafDfrTLViWZg4rfoITeMB2JxyDGMmGa 7w5tED59idllzF/iI/uQxUHLFCkucTk1PFuWYWjRkKPjUYY9hNfiiSkcwfhU5QFona/g NIDCZwFrhVvhaXu/jBCr/qiBHOgklc+6hWtLXF9F2p8amQHLFRyMK65MWzt1EwkDtPAD YwjP5TOAfNA014FU7eYJPpPNjB6Mik92jCOF+mq4Fr41wpeDIpihetwtk2qAnkV332BM xut6HiFuEdPw7zPBlg2aKgW4tZvMDGFc4xmESaqVBBXJcYb//owSlNVV/E7PaprJA7UK Xh4w== X-Gm-Message-State: AOAM532dyyIxJwULQ1o12JezpO/VemtC2HoYPgzTiZwFXtFl8+JZWZCT UOmADJX1E1HPA6t9isZL/kevZtTXE4I= X-Google-Smtp-Source: ABdhPJzhJWsfTTn0l7iMH2GrjeyY1GzwTvY5IjqMfqQn3x1Cv48zMvDH6z3UX6kAMPtcvbAeB2MfYg== X-Received: by 2002:a17:90b:30d7:: with SMTP id hi23mr5209056pjb.69.1595353595504; Tue, 21 Jul 2020 10:46:35 -0700 (PDT) Received: from driver-dev1.pensando.io ([12.226.153.42]) by smtp.gmail.com with ESMTPSA id c14sm4598712pgb.1.2020.07.21.10.46.33 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Jul 2020 10:46:34 -0700 (PDT) From: Shannon Nelson To: netdev@vger.kernel.org, davem@davemloft.net Cc: Shannon Nelson Subject: [PATCH v2 net 6/6] ionic: use mutex to protect queue operations Date: Tue, 21 Jul 2020 10:46:19 -0700 Message-Id: <20200721174619.39860-7-snelson@pensando.io> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200721174619.39860-1-snelson@pensando.io> References: <20200721174619.39860-1-snelson@pensando.io> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The ionic_wait_on_bit_lock() was a open-coded mutex knock-off used only for protecting the queue reset operations, and there was no reason not to use the real thing. We can use the lock more correctly and to better protect the queue stop and start operations from cross threading. We can also remove a useless and expensive bit operation from the Rx path. This fixes a case found where the link_status_check from a link flap could run into an MTU change and cause a crash. Fixes: beead698b173 ("ionic: Add the basic NDO callbacks for netdev support") Signed-off-by: Shannon Nelson --- .../net/ethernet/pensando/ionic/ionic_lif.c | 28 +++++++++++-------- .../net/ethernet/pensando/ionic/ionic_lif.h | 8 +----- .../net/ethernet/pensando/ionic/ionic_txrx.c | 6 ---- 3 files changed, 17 insertions(+), 25 deletions(-) diff --git a/drivers/net/ethernet/pensando/ionic/ionic_lif.c b/drivers/net/ethernet/pensando/ionic/ionic_lif.c index ddb9ad5b294c..5fd31ba56937 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_lif.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_lif.c @@ -96,8 +96,7 @@ static void ionic_link_status_check(struct ionic_lif *lif) u16 link_status; bool link_up; - if (!test_bit(IONIC_LIF_F_LINK_CHECK_REQUESTED, lif->state) || - test_bit(IONIC_LIF_F_QUEUE_RESET, lif->state)) + if (!test_bit(IONIC_LIF_F_LINK_CHECK_REQUESTED, lif->state)) return; link_status = le16_to_cpu(lif->info->status.link_status); @@ -114,16 +113,22 @@ static void ionic_link_status_check(struct ionic_lif *lif) netif_carrier_on(netdev); } - if (lif->netdev->flags & IFF_UP && netif_running(lif->netdev)) + if (lif->netdev->flags & IFF_UP && netif_running(lif->netdev)) { + mutex_lock(&lif->queue_lock); ionic_start_queues(lif); + mutex_unlock(&lif->queue_lock); + } } else { if (netif_carrier_ok(netdev)) { netdev_info(netdev, "Link down\n"); netif_carrier_off(netdev); } - if (lif->netdev->flags & IFF_UP && netif_running(lif->netdev)) + if (lif->netdev->flags & IFF_UP && netif_running(lif->netdev)) { + mutex_lock(&lif->queue_lock); ionic_stop_queues(lif); + mutex_unlock(&lif->queue_lock); + } } clear_bit(IONIC_LIF_F_LINK_CHECK_REQUESTED, lif->state); @@ -1990,16 +1995,13 @@ int ionic_reset_queues(struct ionic_lif *lif, ionic_reset_cb cb, void *arg) bool running; int err = 0; - err = ionic_wait_for_bit(lif, IONIC_LIF_F_QUEUE_RESET); - if (err) - return err; - + mutex_lock(&lif->queue_lock); running = netif_running(lif->netdev); if (running) { netif_device_detach(lif->netdev); err = ionic_stop(lif->netdev); if (err) - goto reset_out; + return err; } if (cb) @@ -2009,9 +2011,7 @@ int ionic_reset_queues(struct ionic_lif *lif, ionic_reset_cb cb, void *arg) err = ionic_open(lif->netdev); netif_device_attach(lif->netdev); } - -reset_out: - clear_bit(IONIC_LIF_F_QUEUE_RESET, lif->state); + mutex_unlock(&lif->queue_lock); return err; } @@ -2158,7 +2158,9 @@ static void ionic_lif_handle_fw_down(struct ionic_lif *lif) if (test_bit(IONIC_LIF_F_UP, lif->state)) { dev_info(ionic->dev, "Surprise FW stop, stopping queues\n"); + mutex_lock(&lif->queue_lock); ionic_stop_queues(lif); + mutex_unlock(&lif->queue_lock); } if (netif_running(lif->netdev)) { @@ -2285,6 +2287,7 @@ static void ionic_lif_deinit(struct ionic_lif *lif) ionic_lif_qcq_deinit(lif, lif->notifyqcq); ionic_lif_qcq_deinit(lif, lif->adminqcq); + mutex_destroy(&lif->queue_lock); ionic_lif_reset(lif); } @@ -2461,6 +2464,7 @@ static int ionic_lif_init(struct ionic_lif *lif) return err; lif->hw_index = le16_to_cpu(comp.hw_index); + mutex_init(&lif->queue_lock); /* now that we have the hw_index we can figure out our doorbell page */ lif->dbid_count = le32_to_cpu(lif->ionic->ident.dev.ndbpgs_per_lif); diff --git a/drivers/net/ethernet/pensando/ionic/ionic_lif.h b/drivers/net/ethernet/pensando/ionic/ionic_lif.h index ed126dd74e01..8dc2c5d77424 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_lif.h +++ b/drivers/net/ethernet/pensando/ionic/ionic_lif.h @@ -135,7 +135,6 @@ enum ionic_lif_state_flags { IONIC_LIF_F_SW_DEBUG_STATS, IONIC_LIF_F_UP, IONIC_LIF_F_LINK_CHECK_REQUESTED, - IONIC_LIF_F_QUEUE_RESET, IONIC_LIF_F_FW_RESET, /* leave this as last */ @@ -165,6 +164,7 @@ struct ionic_lif { unsigned int hw_index; unsigned int kern_pid; u64 __iomem *kern_dbpage; + struct mutex queue_lock; /* lock for queue structures */ spinlock_t adminq_lock; /* lock for AdminQ operations */ struct ionic_qcq *adminqcq; struct ionic_qcq *notifyqcq; @@ -213,12 +213,6 @@ struct ionic_lif { #define lif_to_txq(lif, i) (&lif_to_txqcq((lif), i)->q) #define lif_to_rxq(lif, i) (&lif_to_txqcq((lif), i)->q) -/* return 0 if successfully set the bit, else non-zero */ -static inline int ionic_wait_for_bit(struct ionic_lif *lif, int bitname) -{ - return wait_on_bit_lock(lif->state, bitname, TASK_INTERRUPTIBLE); -} - static inline u32 ionic_coal_usec_to_hw(struct ionic *ionic, u32 usecs) { u32 mult = le32_to_cpu(ionic->ident.dev.intr_coal_mult); diff --git a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c index b7f900c11834..85eb8f276a37 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c @@ -161,12 +161,6 @@ static void ionic_rx_clean(struct ionic_queue *q, return; } - /* no packet processing while resetting */ - if (unlikely(test_bit(IONIC_LIF_F_QUEUE_RESET, q->lif->state))) { - stats->dropped++; - return; - } - stats->pkts++; stats->bytes += le16_to_cpu(comp->len);