From nobody Tue Feb 10 02:55:02 2026 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (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 F09CC2C0F69 for ; Wed, 31 Dec 2025 18:17:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767205071; cv=none; b=hY9WSHaXhe9xD9YFlhRySukq9RE2vqhGOhKGzifPiF+9iip082NZE/zefOZ0AOBIj4o0+ooQQPWcl5IBXyF0tmVsq2dCKfMBnzbA9Vs4ejEu1TSMxEIA5Cvovh7GvJohADLQDlrCySTDBijjDJqbxSpzA6W3Kovnuj0u52nIg4k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767205071; c=relaxed/simple; bh=dB2DxS6/hQ4cWBT1mL/g2GXYJzNqtTvACLxfJuWsr64=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=O2vhnJCYsjgegIVhsivKpOT0wbvgivHcBnORY3kKvPeM6OLTPYQatoEFkT4goWJkaYTwAlodHvr6ES0k2CJIZmSRF5BrN+QtTAZxJd48s0CBr4C7C/Q7BiVPj0eX+Th5r5xY0UKOZGZSeOWiWVatXgaa1YnnimSbWkfPU5t6wyE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=iKvHlqcY; arc=none smtp.client-ip=209.85.214.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="iKvHlqcY" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-2a0a33d0585so101561195ad.1 for ; Wed, 31 Dec 2025 10:17:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767205067; x=1767809867; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6XFZphiT5rD5wJiK3SZFCUG5+Jd7y/1KKNDXda+ZvC8=; b=iKvHlqcYXdTOvI7/I4Mb3etqb1U1e6p6U6rBO4gMPVp1HZBjYmcoswmJ9b8KRlkuIP 4Q5RX7RIT7PtCQu8hybAIAoT4SrKoaRgbXTD2guo1teB8SwlYJ87GLxoOmlR5aKZEdIB oxXhSIDkuXcd2tIuQ+yIvb/+SacrQp89PBEYkTDGTXD2FhA8JxsIGT+YHwfVc/mYSCb3 G7w5pV4xNcUIReSMgfsoH608axEsXbB8VNNI4y4DQBkFs1xupdb9NrmLRcHFdYwiwMiU 73juPxwnd0/ONQhRwo2knG9+g4H3Ou+909tklFoz0Z/U0vJoO81OXWT8h7gGEIUuE8V+ 2sQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767205067; x=1767809867; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6XFZphiT5rD5wJiK3SZFCUG5+Jd7y/1KKNDXda+ZvC8=; b=K0ylFEV05Q5v7zbdh7KcUnVphF6WthZ1MLy1PhqL51IWB5ciyXb5P5PmbAMxkpRtOO Lu3hxvwn1STICzwWwqGJGG6QhyQeg6HlA1smUiPm2L6kYQWe3VJFtyEI+y29WkdMQM6P dnHDIEUtEMDxYx5h0+8kQa/KX4UTQkGokPSDNNCx9kBnUaxfHvgg7You+4bj46MZugO2 tw2GifekHDzeCGVojM74w+y1l/JjDhm5Tn3XIkATYtWPOD+RUWAheX7L25Y45w6uBoMs fn0ICN0U1I+VOVBGzkSys+GQk0qOwxTCTNDH2bMBsEWZCk4cOLopZ5BCJdNePwL3S6wO XvFA== X-Forwarded-Encrypted: i=1; AJvYcCXspXeygElz4AZ3x73PqID0f4C3FtoXSdH/3ph9vvNJ7sNcwz40r0xKYK11t7nFC9huPcKT1k+guSOJPnE=@vger.kernel.org X-Gm-Message-State: AOJu0Yy8Xmc0LFe3JsLW9O1x0V3DsqPk68+UKFQRXY1ZDojzy3RYE0zj MB9ZkaAI9AYia2KSxdcpqPb4ybLhjV56TGbMQpmvrr3OVU0VZ+7AHTuJ X-Gm-Gg: AY/fxX7pJ0ODKFAyMkMjFvnSsMMLICB1hED18sIjQTaK4Aky8kQObLG9AalgilrXRRP wBOkA0pD2JwzC4/3UtFXLQdwvqYWJfv5IS7Ab50kttQzzMQT5Ky7s4yEOsO3CJ/YA6sWgZuyHgB GKFTX49uViJeUMMYc1QEwbHm8sBQAJNflQNp+qyociCoGiChYsojlYzdzMOCu+qtXwNbI5MX8v1 RcOihkuHsNSr3kujmBrBAcQjYZ3fNE5eNLEWdi2sjSBxjpC9343YOMpgzrqy7lSqs7h/y6VPEi9 6J1U1jxHR7k0CVROSViEVXFutJUFgQ0mfQ0ls9PtyNv/epj6mb0NTqElqr7e2i+S+s4z1dxUxOq Y6GT6vUt/eWdbwczUMO+j7SMlHY7uavAuQAo35Y2Q0lmf3aANSKfaMCATD1z9+oHG+Np562s/J/ GH0K+KFXfhTeNAfVud X-Google-Smtp-Source: AGHT+IFLyU879sREsum14e+whPX7oYGacLa8gelBRymC+21ag2DKvCrTdgtlaY0XNOiocu/U2/AN4g== X-Received: by 2002:a17:902:ef52:b0:2a0:dabc:1383 with SMTP id d9443c01a7336-2a2f22234a1mr428210655ad.14.1767205067215; Wed, 31 Dec 2025 10:17:47 -0800 (PST) Received: from rakuram-MSI ([2401:4900:93ef:93d6:a0f7:dedb:d261:86b]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a2f3c66473sm310787225ad.13.2025.12.31.10.17.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 31 Dec 2025 10:17:46 -0800 (PST) From: Rakuram Eswaran To: rakuram.e96@gmail.com, Marc Kleine-Budde , Vincent Mailhol , Oliver Hartkopp , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Jonathan Corbet Cc: linux-can@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, linux-doc@vger.kernel.org Subject: [PATCH 1/2] can: dummy_can: add CAN termination support Date: Wed, 31 Dec 2025 23:43:15 +0530 Message-ID: <20251231-can_doc_update_v1-v1-1-97aac5c20a35@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251231-can_doc_update_v1-v1-0-97aac5c20a35@gmail.com> References: <20251231-can_doc_update_v1-v1-0-97aac5c20a35@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767203695; l=2548; i=rakuram.e96@gmail.com; s=20251022; h=from:subject:message-id; bh=/VHe7Ay06eDBrZBDf+ehbGiVOu/+rnbHmhOETk1LKwI=; b=sPrViP4uOkV7IW1k0c9KOtZspggUOvc61/3MFqzPJvuvo4iwL8SjEOEGfppeLYBMDtbtRG33N gsDpLOxiZriDgaoKrRfTbr65iwa2klYgamdPkXFZTBxlbALdBtdWPLu X-Developer-Key: i=rakuram.e96@gmail.com; a=ed25519; pk=swrXGNLB3jH+d6pqdVOCwq0slsYH5rn9IkMak1fIfgA= Content-Transfer-Encoding: quoted-printable Add support for configuring bus termination in the dummy_can driver. This allows users to emulate a properly terminated CAN bus when setting up virtual test environments. Signed-off-by: Rakuram Eswaran Reviewed-by: Vincent Mailhol --- Tested the termination setting using below iproute commands: ip link set can0 type can termination 120 ip link set can0 type can termination off ip link set can0 type can termination potato ip link set can0 type can termination 10000 =20 drivers/net/can/dummy_can.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/drivers/net/can/dummy_can.c b/drivers/net/can/dummy_can.c index 41953655e3d3c9187d6574710e6aa90fc01c92a7..418d9e25bfca1c7af924ad451c8= dd8ae1bca78a3 100644 --- a/drivers/net/can/dummy_can.c +++ b/drivers/net/can/dummy_can.c @@ -86,6 +86,11 @@ static const struct can_pwm_const dummy_can_pwm_const = =3D { .pwmo_max =3D 16, }; =20 +static const u16 dummy_can_termination_const[] =3D { + CAN_TERMINATION_DISABLED, /* 0 =3D off */ + 120, /* 120 Ohms */ +}; + static void dummy_can_print_bittiming(struct net_device *dev, struct can_bittiming *bt) { @@ -179,6 +184,16 @@ static void dummy_can_print_bittiming_info(struct net_= device *dev) netdev_dbg(dev, "\n"); } =20 +static int dummy_can_set_termination(struct net_device *dev, u16 term) +{ + struct dummy_can *priv =3D netdev_priv(dev); + + netdev_dbg(dev, "set termination to %u Ohms\n", term); + priv->can.termination =3D term; + + return 0; +} + static int dummy_can_netdev_open(struct net_device *dev) { int ret; @@ -243,17 +258,23 @@ static int __init dummy_can_init(void) dev->ethtool_ops =3D &dummy_can_ethtool_ops; priv =3D netdev_priv(dev); priv->can.bittiming_const =3D &dummy_can_bittiming_const; - priv->can.bitrate_max =3D 20 * MEGA /* BPS */; - priv->can.clock.freq =3D 160 * MEGA /* Hz */; priv->can.fd.data_bittiming_const =3D &dummy_can_fd_databittiming_const; priv->can.fd.tdc_const =3D &dummy_can_fd_tdc_const; priv->can.xl.data_bittiming_const =3D &dummy_can_xl_databittiming_const; priv->can.xl.tdc_const =3D &dummy_can_xl_tdc_const; priv->can.xl.pwm_const =3D &dummy_can_pwm_const; + priv->can.bitrate_max =3D 20 * MEGA /* BPS */; + priv->can.clock.freq =3D 160 * MEGA /* Hz */; + priv->can.termination_const_cnt =3D ARRAY_SIZE(dummy_can_termination_cons= t); + priv->can.termination_const =3D dummy_can_termination_const; + priv->can.ctrlmode_supported =3D CAN_CTRLMODE_LISTENONLY | CAN_CTRLMODE_FD | CAN_CTRLMODE_TDC_AUTO | CAN_CTRLMODE_RESTRICTED | CAN_CTRLMODE_XL | CAN_CTRLMODE_XL_TDC_AUTO | CAN_CTRLMODE_XL_TMS; + + priv->can.do_set_termination =3D dummy_can_set_termination; + priv->dev =3D dev; =20 ret =3D register_candev(priv->dev); --=20 2.51.0