From patchwork Thu Feb 29 07:02:01 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13576678 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-qk1-f181.google.com (mail-qk1-f181.google.com [209.85.222.181]) (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 88B0942A9F for ; Thu, 29 Feb 2024 07:02:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709190138; cv=none; b=kddlOCi1UDra+sM1yYZIAZiQXY4Zw9CwCW6E8Cug/bAq7++8wx3uP81fc/qPZWfJ/6IXPnnRrMM+VjdI9bByl0TyhJ9RKgIU0swAC2xSdUEUuF4+o/ZkymjGeNRTgEiETZ5XC6lpRuEXQZDAqKSQWkVwd4xV9fceaJeHAqBQGow= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709190138; c=relaxed/simple; bh=FzSXRtwRfKu7eLDckEh3hLskQ1J7yN1djpzFd8DNHgg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=COHA4xbeaFXnStKc5TVvGDH+34gxdU+sGgEXZzBwWRnIzUpeWXeaghB86twzpYlXgLIKLLAjouVbrF07NbZPxIj/yjKmp6oC4DeoBwh1zP7hXrQ4upiQUdIKD7dELMM5roqdHn3cEjNdlbxYLQGSW56NVq9gk398FSxAJQ4z/S0= 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=GcB56wtM; arc=none smtp.client-ip=209.85.222.181 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="GcB56wtM" Received: by mail-qk1-f181.google.com with SMTP id af79cd13be357-787f27e634cso48997685a.0 for ; Wed, 28 Feb 2024 23:02:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1709190135; x=1709794935; 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=M3itgKCvODrsOQvpOat3Ct+8Dtegz1tErhxfAWiZcAg=; b=GcB56wtMNN9szBCXHB4gf2/Bgcul6+scZ/2K5mYzd2v4se3JML8ALnnf1YaVxFW+L8 nV/f/+EIkMMHni597IcC5VgQ0XCiDkndxn3MzUPFISlXfNVt0pxTw6ctCPkTQ3Aiks9q Mnho93/Fzcx/oRO6xUhf62xjbN6PbGEUl84ro= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709190135; x=1709794935; 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=M3itgKCvODrsOQvpOat3Ct+8Dtegz1tErhxfAWiZcAg=; b=AGfIvl6ey4SCKdRYxjMz99TMgVCeVL5m0iOMjfkCqxsUKNZGI4P7F/l6hHf+PJ45x9 58C1U9c/Sv5dg1srASMUNUwvsOKveuJYqxnygDH7MPgzrHwBcWlC4lSLP2STqfmAGOCw oQE5rspIHUrFWyR1MmVjuulkFDxk+HSl3uhc8JoO9ds4l1N1OQvSBsFh3w9vBN8HwW6H DJtZ1PYETTmvSbmfIogR0LO00QSW4UL4601VKV7qol4zOX+Hu7FHpouZXW1eeHicHOkY KHkMLWZuaujYcaBjXW6QQozylxCTcQscx/bg5aE/gScUpBhehjj/9mHhiN1vqLXDi8V9 mlGg== X-Gm-Message-State: AOJu0YyzCexy3qL+yE+rlyV6kjPp2HqVhhdJcwNhg3nr0UwUhubtuXJ5 +hPHUgnA9+UNcDz3e+MMe0yp+gd/vrtXWT9psgLBk23qa7A9iCMWCeYfSRSvLg== X-Google-Smtp-Source: AGHT+IEz26Mlz+gMMecj3ezNdH5qLTtKGIL4i0GvfWtH0yApaq+gPAzDu0ejJDsBAHTt46MohVcHYg== X-Received: by 2002:ad4:42cf:0:b0:690:452b:ec60 with SMTP id f15-20020ad442cf000000b00690452bec60mr1314522qvr.40.1709190135371; Wed, 28 Feb 2024 23:02:15 -0800 (PST) Received: from lvnvda5233.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id mv1-20020a056214338100b0068f75622543sm435545qvb.1.2024.02.28.23.02.14 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 28 Feb 2024 23:02:15 -0800 (PST) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, pavan.chebbi@broadcom.com, andrew.gospodarek@broadcom.com, jiri@resnulli.us, richardcochran@gmail.com Subject: [PATCH net-next 1/2] bnxt_en: Introduce devlink runtime driver param to set ptp tx timeout Date: Wed, 28 Feb 2024 23:02:01 -0800 Message-Id: <20240229070202.107488-2-michael.chan@broadcom.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20240229070202.107488-1-michael.chan@broadcom.com> References: <20240229070202.107488-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 Sometimes, the current 1ms value that driver waits for firmware to obtain a tx timestamp for a PTP packet may not be sufficient. User may want the driver to wait for a longer custom period before timing out. Introduce a new runtime driver param for devlink "ptp_tx_timeout". Using this parameter the driver can wait for up to the specified time, when it is querying for a TX timestamp from firmware. By default the value is set to 1s. Reviewed-by: Andy Gospodarek Signed-off-by: Pavan Chebbi Signed-off-by: Michael Chan Reviewed-by: Vadim Fedorenko --- .../net/ethernet/broadcom/bnxt/bnxt_devlink.c | 42 +++++++++++++++++++ drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c | 1 + drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.h | 3 ++ 3 files changed, 46 insertions(+) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c index ae4529c043f0..0df0baa9d18c 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c @@ -652,6 +652,7 @@ static const struct devlink_ops bnxt_vf_dl_ops; enum bnxt_dl_param_id { BNXT_DEVLINK_PARAM_ID_BASE = DEVLINK_PARAM_GENERIC_ID_MAX, BNXT_DEVLINK_PARAM_ID_GRE_VER_CHECK, + BNXT_DEVLINK_PARAM_ID_PTP_TXTS_TMO, }; static const struct bnxt_dl_nvm_param nvm_params[] = { @@ -1077,6 +1078,42 @@ static int bnxt_hwrm_nvm_req(struct bnxt *bp, u32 param_id, void *msg, return rc; } +static int bnxt_dl_ptp_param_get(struct devlink *dl, u32 id, + struct devlink_param_gset_ctx *ctx) +{ + struct bnxt *bp = bnxt_get_bp_from_dl(dl); + + if (!bp->ptp_cfg) + return -EOPNOTSUPP; + + ctx->val.vu32 = bp->ptp_cfg->txts_tmo; + return 0; +} + +static int bnxt_dl_ptp_param_set(struct devlink *dl, u32 id, + struct devlink_param_gset_ctx *ctx) +{ + struct bnxt *bp = bnxt_get_bp_from_dl(dl); + + if (!bp->ptp_cfg) + return -EOPNOTSUPP; + + bp->ptp_cfg->txts_tmo = ctx->val.vu32; + return 0; +} + +static int bnxt_dl_ptp_param_validate(struct devlink *dl, u32 id, + union devlink_param_value val, + struct netlink_ext_ack *extack) +{ + if (val.vu32 > BNXT_PTP_MAX_TX_TMO) { + NL_SET_ERR_MSG_FMT_MOD(extack, "TX timeout value exceeds the maximum (%d ms)", + BNXT_PTP_MAX_TX_TMO); + return -EINVAL; + } + return 0; +} + static int bnxt_dl_nvm_param_get(struct devlink *dl, u32 id, struct devlink_param_gset_ctx *ctx) { @@ -1180,6 +1217,11 @@ static const struct devlink_param bnxt_dl_params[] = { BIT(DEVLINK_PARAM_CMODE_PERMANENT), bnxt_dl_nvm_param_get, bnxt_dl_nvm_param_set, NULL), + DEVLINK_PARAM_DRIVER(BNXT_DEVLINK_PARAM_ID_PTP_TXTS_TMO, + "ptp_tx_timeout", DEVLINK_PARAM_TYPE_U32, + BIT(DEVLINK_PARAM_CMODE_RUNTIME), + bnxt_dl_ptp_param_get, bnxt_dl_ptp_param_set, + bnxt_dl_ptp_param_validate), /* keep REMOTE_DEV_RESET last, it is excluded based on caps */ DEVLINK_PARAM_GENERIC(ENABLE_REMOTE_DEV_RESET, BIT(DEVLINK_PARAM_CMODE_RUNTIME), diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c index cc07660330f5..4b50b07b9771 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c @@ -965,6 +965,7 @@ int bnxt_ptp_init(struct bnxt *bp, bool phc_cfg) spin_unlock_bh(&ptp->ptp_lock); ptp_schedule_worker(ptp->ptp_clock, 0); } + ptp->txts_tmo = BNXT_PTP_DFLT_TX_TMO; return 0; out: diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.h b/drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.h index fce8dc39a7d0..ee977620d33e 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.h +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.h @@ -22,6 +22,8 @@ #define BNXT_LO_TIMER_MASK 0x0000ffffffffUL #define BNXT_HI_TIMER_MASK 0xffff00000000UL +#define BNXT_PTP_DFLT_TX_TMO 1000 /* ms */ +#define BNXT_PTP_MAX_TX_TMO 5000 /* ms */ #define BNXT_PTP_QTS_TIMEOUT 1000 #define BNXT_PTP_QTS_TX_ENABLES (PORT_TS_QUERY_REQ_ENABLES_PTP_SEQ_ID | \ PORT_TS_QUERY_REQ_ENABLES_TS_REQ_TIMEOUT | \ @@ -120,6 +122,7 @@ struct bnxt_ptp_cfg { u32 refclk_regs[2]; u32 refclk_mapped_regs[2]; + u32 txts_tmo; }; #if BITS_PER_LONG == 32