From patchwork Mon Feb 5 22:31:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13546350 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-oi1-f180.google.com (mail-oi1-f180.google.com [209.85.167.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3583FBE66 for ; Mon, 5 Feb 2024 22:32:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707172350; cv=none; b=XlYX3tCYLuK5VooSVXwdxxjMoa2fyQf8cH36ZTaXDuZF9nOJyypn7BUcSLSrZarAiGQFqcuE4rdVR/RUo3kcZf96Dx6n8BlLqn7LBkpS7ObYQCN4KHHzfXojQJwUsho35HDBiCJ5KJ+yO46P1u8+ryOyEz8OvWqNASApfG8GH1Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707172350; c=relaxed/simple; bh=cjauYpdUoG91mbBQY8DfeRAcWS0TyX2ffWuk/RiLnuY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=HwXRSnVzL05ejS71JDORKP3ZyFPqZDjPy1W5bh/jrKSCCdzCBUQhKmLOwLDQm/Y97kLsibykd7gia1b7ckiThi/jplybCZQ50WQvfeXh04svLyDLbnA8NTJeABV2zz2U5SianmniY6Jkea098Ev7q7jsm9C9tjAYUe2YQ3LwcFI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=NBgtxnyU; arc=none smtp.client-ip=209.85.167.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="NBgtxnyU" Received: by mail-oi1-f180.google.com with SMTP id 5614622812f47-3bba50cd318so4113860b6e.0 for ; Mon, 05 Feb 2024 14:32:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1707172348; x=1707777148; darn=vger.kernel.org; h=mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=oK4+kWXxklj9dqNQ/n9BQVndrHgiGL9o2jbYXxXYzuU=; b=NBgtxnyUsI0b2qE2Jjye4ecy/siBdAJssYWpdhV5uiZ1JJf+mwnP0Gi6kacJ/Gytd5 uRYOtn7XrOiNkcE7qZ17KDNS2Dnl6eWm4OY9YEh6KmWqXh5qwtF/EIYcC5RNPsMPwa1L 42ZNjS0uWs4RC0s5VvG7+EQF1rA6ismKVwZPw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707172348; x=1707777148; h=mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=oK4+kWXxklj9dqNQ/n9BQVndrHgiGL9o2jbYXxXYzuU=; b=aaqv5Cxm5/M89l3w4K5tixo5SW4nQlRPy3X2VZr8/KKNnnIdNoCWfjAo8+qi+5s4DB 85z/iyM6o8Y9Fxyx/ynTFODU91IqWAZCQCBZdkz9wzuHmoAHzqBFE4UATCkBLOHJFJxz ox4c3bAyw54VNQ7xzOkJfJMMPiGgjLZ4cuokCpW2g0qJgS76TmZUQQrm/R/OzOURSjUB l4H204iFCuPMrUI3fyIlAirM/sAsKxeNUtGQM6VTU/42wNXXAkKQX9EXgjhfESLBqwdC QgUZSUk5PES5Pl8IwmvmoCHk9ioNpVxvtMaMd9HtGvmHMWsiQBvM4DBN0HBna7i6a1G4 uFkA== X-Gm-Message-State: AOJu0YwOko/l4Ydy3d9qngkV3U0tpuVjayUUkxZcfKwdd3zeOsegHmoo 4nTJy2owgw4lmWHbA5aDmpSi+IEVtCunxP+DPxGB0yKMZ7zwCPzrE0YYjgngGg== X-Google-Smtp-Source: AGHT+IEcY8Ol/BIL/Jbc9K4sdETb3/awhPI7EHXKVf/uYUCXEbJhkKPPYOc8tW04c0qeo3Dc01VSWw== X-Received: by 2002:a05:6808:120a:b0:3bf:d0ee:9873 with SMTP id a10-20020a056808120a00b003bfd0ee9873mr670141oil.3.1707172347970; Mon, 05 Feb 2024 14:32:27 -0800 (PST) X-Forwarded-Encrypted: i=0; AJvYcCXGEfzuQ6y6LKDLwsI69gn32bqEbJdbRZw/1FYvY6hvnaxm/9T314R97m9GgMpODkR2j5j6aQ9euoqkpO2mwv9XhKu9Oj3rPnHAhp5p+wbcHUf2gNNXxQEkjMpqD+JDBOA2Uv402cOSYcQVxkUvhoSlBLM22Oy0q79tJrxZkierxIqNTybIrYsi+A3CZWBhG94WazBJf5Jd0qb0DtqT/YH35jc= Received: from lvnvda5233.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id x11-20020ac8120b000000b0042c2d47d7fbsm340864qti.60.2024.02.05.14.32.26 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 05 Feb 2024 14:32:27 -0800 (PST) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew.gospodarek@broadcom.com, pavan.chebbi@broadcom.com Subject: [PATCH net-next 08/13] bnxt_en: Save user configured filters in a lookup list Date: Mon, 5 Feb 2024 14:31:57 -0800 Message-Id: <20240205223202.25341-9-michael.chan@broadcom.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20240205223202.25341-1-michael.chan@broadcom.com> References: <20240205223202.25341-1-michael.chan@broadcom.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org From: Pavan Chebbi Driver needs to maintain a lookup list of all the user configured filters. This is required in order to reconfigure these filters upon interface toggle. We can look up this list to follow the order with which they should be re-applied. Reviewed-by: Andy Gospodarek Signed-off-by: Pavan Chebbi Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 23 +++++++++++++++++++++++ drivers/net/ethernet/broadcom/bnxt/bnxt.h | 5 +++++ 2 files changed, 28 insertions(+) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index d39de72bffea..b5bd88f33028 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -4841,9 +4841,26 @@ static void bnxt_clear_ring_indices(struct bnxt *bp) } } +void bnxt_insert_usr_fltr(struct bnxt *bp, struct bnxt_filter_base *fltr) +{ + u8 type = fltr->type, flags = fltr->flags; + + INIT_LIST_HEAD(&fltr->list); + if ((type == BNXT_FLTR_TYPE_L2 && flags & BNXT_ACT_RING_DST) || + (type == BNXT_FLTR_TYPE_NTUPLE && flags & BNXT_ACT_NO_AGING)) + list_add_tail(&fltr->list, &bp->usr_fltr_list); +} + +void bnxt_del_one_usr_fltr(struct bnxt *bp, struct bnxt_filter_base *fltr) +{ + if (!list_empty(&fltr->list)) + list_del_init(&fltr->list); +} + static void bnxt_del_fltr(struct bnxt *bp, struct bnxt_filter_base *fltr) { hlist_del(&fltr->hash); + bnxt_del_one_usr_fltr(bp, fltr); if (fltr->flags) { clear_bit(fltr->sw_id, bp->ntp_fltr_bmap); bp->ntp_fltr_count--; @@ -5387,6 +5404,7 @@ void bnxt_del_l2_filter(struct bnxt *bp, struct bnxt_l2_filter *fltr) return; } hlist_del_rcu(&fltr->base.hash); + bnxt_del_one_usr_fltr(bp, &fltr->base); if (fltr->base.flags) { clear_bit(fltr->base.sw_id, bp->ntp_fltr_bmap); bp->ntp_fltr_count--; @@ -5533,6 +5551,7 @@ static int bnxt_init_l2_filter(struct bnxt *bp, struct bnxt_l2_filter *fltr, } head = &bp->l2_fltr_hash_tbl[idx]; hlist_add_head_rcu(&fltr->base.hash, head); + bnxt_insert_usr_fltr(bp, &fltr->base); set_bit(BNXT_FLTR_INSERTED, &fltr->base.state); atomic_set(&fltr->refcnt, 1); return 0; @@ -13984,6 +14003,7 @@ int bnxt_insert_ntp_filter(struct bnxt *bp, struct bnxt_ntuple_filter *fltr, head = &bp->ntp_fltr_hash_tbl[idx]; hlist_add_head_rcu(&fltr->base.hash, head); set_bit(BNXT_FLTR_INSERTED, &fltr->base.state); + bnxt_insert_usr_fltr(bp, &fltr->base); bp->ntp_fltr_count++; spin_unlock_bh(&bp->ntp_fltr_lock); return 0; @@ -14138,6 +14158,7 @@ void bnxt_del_ntp_filter(struct bnxt *bp, struct bnxt_ntuple_filter *fltr) return; } hlist_del_rcu(&fltr->base.hash); + bnxt_del_one_usr_fltr(bp, &fltr->base); bp->ntp_fltr_count--; spin_unlock_bh(&bp->ntp_fltr_lock); bnxt_del_l2_filter(bp, fltr->l2_fltr); @@ -14954,6 +14975,8 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) if (rc) goto init_err_dl; + INIT_LIST_HEAD(&bp->usr_fltr_list); + rc = register_netdev(dev); if (rc) goto init_err_cleanup; diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h index d070e3ac9739..a6b6db1546cc 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h @@ -1334,6 +1334,7 @@ struct bnxt_pf_info { struct bnxt_filter_base { struct hlist_node hash; + struct list_head list; __le64 filter_id; u8 type; #define BNXT_FLTR_TYPE_NTUPLE 1 @@ -2442,6 +2443,8 @@ struct bnxt { u32 hash_seed; u64 toeplitz_prefix; + struct list_head usr_fltr_list; + /* To protect link related settings during link changes and * ethtool settings changes. */ @@ -2646,6 +2649,8 @@ u32 bnxt_fw_health_readl(struct bnxt *bp, int reg_idx); void bnxt_set_tpa_flags(struct bnxt *bp); void bnxt_set_ring_params(struct bnxt *); int bnxt_set_rx_skb_mode(struct bnxt *bp, bool page_mode); +void bnxt_insert_usr_fltr(struct bnxt *bp, struct bnxt_filter_base *fltr); +void bnxt_del_one_usr_fltr(struct bnxt *bp, struct bnxt_filter_base *fltr); int bnxt_hwrm_func_drv_rgtr(struct bnxt *bp, unsigned long *bmap, int bmap_size, bool async_only); int bnxt_hwrm_func_drv_unrgtr(struct bnxt *bp);