From patchwork Thu Oct 3 00:10:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Przemek Kitszel X-Patchwork-Id: 1992202 X-Patchwork-Delegate: anthony.l.nguyen@intel.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256 header.s=default header.b=QnGo7WTW; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org (client-ip=2605:bc80:3010::136; helo=smtp3.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org; receiver=patchwork.ozlabs.org) Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XJscv1B4hz1xtk for ; Thu, 3 Oct 2024 10:14:55 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id AE9C761165; Thu, 3 Oct 2024 00:14:48 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id Lo8CRii_w0o9; Thu, 3 Oct 2024 00:14:48 +0000 (UTC) X-Comment: SPF check N/A for local connections - client-ip=140.211.166.34; helo=ash.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org; receiver= DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org F260061171 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org; s=default; t=1727914488; bh=y7CdOmZDt5i7J7lTsm8B5mwrmeC83kSEJPo0tpnEkek=; h=From:To:Date:In-Reply-To:References:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: Cc:From; b=QnGo7WTWe5f+R4c6qqkee4inDOwczNadj/a5nP4W54BEJ4BtYCGQd08Q4i5/KzIUk sH6Z8ej3fCteeqCpIEfYHtfzoUK16KsxLHYYEWrHvxmtHh2rTtbAyShvfQ95WTkrJc KfPk5re7W5AIbMrqYi9k2sojSvWB8iwRtbIx1ovIzhJraJ4u3TmoHuuBT9CcP8YBlo J6ThpcLapQHbcM1AehJVYLFemFXMZpDRw2xP50KR+fqBR3BpwHQvbLiXDgcfn8g/Q3 Exnl0u+0A3yoqZP/l7nge4TCCsW2B0W5zhMMFb/NyWiEr+jxTmzcJHcnDAr5VJqzIC ZxPiMTYOZRpSQ== Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp3.osuosl.org (Postfix) with ESMTP id F260061171; Thu, 3 Oct 2024 00:14:47 +0000 (UTC) X-Original-To: intel-wired-lan@lists.osuosl.org Delivered-To: intel-wired-lan@lists.osuosl.org Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by ash.osuosl.org (Postfix) with ESMTP id 064051BF27C for ; Thu, 3 Oct 2024 00:14:44 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 01A21402D7 for ; Thu, 3 Oct 2024 00:14:44 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id g6ejajxH-tLH for ; Thu, 3 Oct 2024 00:14:43 +0000 (UTC) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=198.175.65.14; helo=mgamail.intel.com; envelope-from=przemyslaw.kitszel@intel.com; receiver= DMARC-Filter: OpenDMARC Filter v1.4.2 smtp2.osuosl.org B6CC3402C3 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org B6CC3402C3 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.14]) by smtp2.osuosl.org (Postfix) with ESMTPS id B6CC3402C3 for ; Thu, 3 Oct 2024 00:14:42 +0000 (UTC) X-CSE-ConnectionGUID: +w/HVDO3SKaHQO2Tpr6ruA== X-CSE-MsgGUID: gyvzhVODSP2ATGhKfNPA4Q== X-IronPort-AV: E=McAfee;i="6700,10204,11213"; a="30893419" X-IronPort-AV: E=Sophos;i="6.11,173,1725346800"; d="scan'208";a="30893419" Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by orvoesa106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Oct 2024 17:14:42 -0700 X-CSE-ConnectionGUID: YVBe2U8fSGOmlBSa1ZtaXg== X-CSE-MsgGUID: N/1g1eB4QLOXSx0gaDdQKg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.11,173,1725346800"; d="scan'208";a="78594582" Received: from irvmail002.ir.intel.com ([10.43.11.120]) by fmviesa005.fm.intel.com with ESMTP; 02 Oct 2024 17:14:40 -0700 Received: from pkitszel-desk.intel.com (unknown [10.245.246.128]) by irvmail002.ir.intel.com (Postfix) with ESMTP id DEF551266F; Thu, 3 Oct 2024 01:14:38 +0100 (IST) From: Przemek Kitszel To: intel-wired-lan@lists.osuosl.org, Tony Nguyen Date: Thu, 3 Oct 2024 02:10:32 +0200 Message-ID: <20241003001433.11211-6-przemyslaw.kitszel@intel.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: <20241003001433.11211-4-przemyslaw.kitszel@intel.com> References: <20241003001433.11211-4-przemyslaw.kitszel@intel.com> MIME-Version: 1.0 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1727914483; x=1759450483; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ln+ZgeH6pNm0an/kVEfJYvD6JtZqZIzDW1Rau4/MtGA=; b=kdW9YxCPydd1uBXdC9sGAnc8Ohf6vOiCgkE9oX1rtYgejRa+A8GjDyt4 sOLC/bL4sMYMnrfmRQ5TycCeSe7FKJsd8s/g7+4VLB8OB6XscCHVFzTPL Zsxhjt03wcH5zCUovFKCCzWDlwgucb5Tddi6WzJm9QDtUgL+4xRmlX3PJ oAGreVRWxNkNKRwUJjZ4T63k9PHv2dbjogzSVIbfn4p+SzSZGzAgM4RLP yy9Cn6KVke9PaOtVR3+38w9qsKq8B/SvqbTNJiHG2rzOnol6428aeakoH l+6glYDgHiFMk5zsbtUmkumLPOLZLpdBHZ6RJuDY++kk/yQlkLOtRCJZT w==; X-Mailman-Original-Authentication-Results: smtp2.osuosl.org; dmarc=pass (p=none dis=none) header.from=intel.com X-Mailman-Original-Authentication-Results: smtp2.osuosl.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=kdW9YxCP Subject: [Intel-wired-lan] [PATCH iwl-next v2 2/2] ice: support optional flags in signature segment header X-BeenThere: intel-wired-lan@osuosl.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Wired Ethernet Linux Kernel Driver Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Dan Nowlin , Paul Greenwalt , netdev@vger.kernel.org, Ahmed Zaki , Przemek Kitszel , Michal Swiatkowski Errors-To: intel-wired-lan-bounces@osuosl.org Sender: "Intel-wired-lan" An optional flag field has been added to the signature segment header. The field contains two flags, a "valid" bit, and a "last segment" bit that indicates whether the segment is the last segment that will be sent to firmware. If the flag field's valid bit is NOT set, then as was done before, assume that this is the last segment being downloaded. However, if the flag field's valid bit IS set, then use the last segment flag to determine if this segment is the last segment to download. Co-developed-by: Dan Nowlin Signed-off-by: Dan Nowlin Signed-off-by: Paul Greenwalt Signed-off-by: Ahmed Zaki Reviewed-by: Michal Swiatkowski Signed-off-by: Przemek Kitszel Tested-by: Pucha Himasekhar Reddy (A Contingent worker at Intel) --- v2: co/- authorship change --- drivers/net/ethernet/intel/ice/ice_ddp.h | 5 ++++- drivers/net/ethernet/intel/ice/ice_ddp.c | 24 +++++++++++++++++------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/drivers/net/ethernet/intel/ice/ice_ddp.h b/drivers/net/ethernet/intel/ice/ice_ddp.h index 79551da2a4b0..8a2d57fc5dae 100644 --- a/drivers/net/ethernet/intel/ice/ice_ddp.h +++ b/drivers/net/ethernet/intel/ice/ice_ddp.h @@ -181,7 +181,10 @@ struct ice_sign_seg { __le32 signed_seg_idx; __le32 signed_buf_start; __le32 signed_buf_count; -#define ICE_SIGN_SEG_RESERVED_COUNT 44 +#define ICE_SIGN_SEG_FLAGS_VALID 0x80000000 +#define ICE_SIGN_SEG_FLAGS_LAST 0x00000001 + __le32 flags; +#define ICE_SIGN_SEG_RESERVED_COUNT 40 u8 reserved[ICE_SIGN_SEG_RESERVED_COUNT]; struct ice_buf_table buf_tbl; }; diff --git a/drivers/net/ethernet/intel/ice/ice_ddp.c b/drivers/net/ethernet/intel/ice/ice_ddp.c index a2bb8442f281..859009940af0 100644 --- a/drivers/net/ethernet/intel/ice/ice_ddp.c +++ b/drivers/net/ethernet/intel/ice/ice_ddp.c @@ -1434,6 +1434,12 @@ ice_download_pkg_config_seg(struct ice_ddp_send_ctx *ctx, return ice_dwnld_cfg_bufs_no_lock(ctx, bufs->buf_array, start, count); } +static bool ice_is_last_sign_seg(u32 flags) +{ + return !(flags & ICE_SIGN_SEG_FLAGS_VALID) /* behavior prior to valid */ + || (flags & ICE_SIGN_SEG_FLAGS_LAST); +} + /** * ice_dwnld_sign_and_cfg_segs - download a signing segment and config segment * @ctx: context of the current buffers section to send @@ -1446,11 +1452,9 @@ static enum ice_ddp_state ice_dwnld_sign_and_cfg_segs(struct ice_ddp_send_ctx *ctx, struct ice_pkg_hdr *pkg_hdr, u32 idx) { + u32 conf_idx, start, count, flags; enum ice_ddp_state state; struct ice_sign_seg *seg; - u32 conf_idx; - u32 start; - u32 count; seg = (struct ice_sign_seg *)ice_get_pkg_seg_by_idx(pkg_hdr, idx); if (!seg) { @@ -1466,7 +1470,15 @@ ice_dwnld_sign_and_cfg_segs(struct ice_ddp_send_ctx *ctx, conf_idx = le32_to_cpu(seg->signed_seg_idx); start = le32_to_cpu(seg->signed_buf_start); - return ice_download_pkg_config_seg(ctx, pkg_hdr, conf_idx, start, count); + state = ice_download_pkg_config_seg(ctx, pkg_hdr, conf_idx, start, + count); + + /* finish up by sending last hunk with "last" flag set if requested by + * DDP content */ + flags = le32_to_cpu(seg->flags); + if (ice_is_last_sign_seg(flags)) + state = ice_ddp_send_hunk(ctx, NULL); + exit: ctx->err = state; return state; @@ -1544,9 +1556,7 @@ ice_download_pkg_with_sig_seg(struct ice_hw *hw, struct ice_pkg_hdr *pkg_hdr) hw->pkg_sign_type)) continue; - ice_dwnld_sign_and_cfg_segs(&ctx, pkg_hdr, i); - /* finish up by sending last hunk with "last" flag set */ - state = ice_ddp_send_hunk(&ctx, NULL); + state = ice_dwnld_sign_and_cfg_segs(&ctx, pkg_hdr, i); if (state) break; }