From patchwork Wed Dec 23 12:02:58 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Kleine-Budde X-Patchwork-Id: 41660 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id A74B8B7BF1 for ; Wed, 23 Dec 2009 23:03:22 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754891AbZLWMDM (ORCPT ); Wed, 23 Dec 2009 07:03:12 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755025AbZLWMDL (ORCPT ); Wed, 23 Dec 2009 07:03:11 -0500 Received: from metis.ext.pengutronix.de ([92.198.50.35]:35848 "EHLO metis.ext.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754908AbZLWMDJ (ORCPT ); Wed, 23 Dec 2009 07:03:09 -0500 Received: from themisto.ext.pengutronix.de ([92.198.50.58] helo=localhost.localdomain) by metis.ext.pengutronix.de with esmtp (Exim 4.69) (envelope-from ) id 1NNPvm-0002Cl-PY; Wed, 23 Dec 2009 13:03:07 +0100 From: Marc Kleine-Budde To: netdev@vger.kernel.org Cc: socketcan-core@lists.berlios.de, Wolfgang Grandegger , shemminger@vyatta.com, Marc Kleine-Budde Date: Wed, 23 Dec 2009 13:02:58 +0100 Message-Id: <1261569778-23669-1-git-send-email-mkl@pengutronix.de> X-Mailer: git-send-email 1.6.5.7 X-SA-Exim-Connect-IP: 92.198.50.58 X-SA-Exim-Mail-From: mkl@pengutronix.de X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on metis.extern.pengutronix.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=4.5 tests=AWL,BAYES_00,HELO_LH_LD shortcircuit=no autolearn=no version=3.2.5 Subject: [PATCH] iplink_can: add support to set one-shot mode X-SA-Exim-Version: 4.2.1 (built Wed, 25 Jun 2008 17:14:11 +0000) X-SA-Exim-Scanned: Yes (on metis.ext.pengutronix.de) X-PTX-Original-Recipient: netdev@vger.kernel.org Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patch adds the flag CAN_CTRLMODE_ONE_SHOT. It is used as mask or flag in the "struct can_ctrlmode". It also adds to "ip" the option to set a CAN controller into the special "one-shot" mode. In this mode, if supported by the CAN controller, tries only once to deliver a CAN frame and aborts it if an error (e.g.: arbitration lost) happens. Signed-off-by: Marc Kleine-Budde Acked-by: Wolfgang Grandegger --- include/linux/can/netlink.h | 1 + ip/iplink_can.c | 6 ++++++ 2 files changed, 7 insertions(+), 0 deletions(-) diff --git a/include/linux/can/netlink.h b/include/linux/can/netlink.h index 9ecbb78..c818335 100644 --- a/include/linux/can/netlink.h +++ b/include/linux/can/netlink.h @@ -80,6 +80,7 @@ struct can_ctrlmode { #define CAN_CTRLMODE_LOOPBACK 0x1 /* Loopback mode */ #define CAN_CTRLMODE_LISTENONLY 0x2 /* Listen-only mode */ #define CAN_CTRLMODE_3_SAMPLES 0x4 /* Triple sampling mode */ +#define CAN_CTRLMODE_ONE_SHOT 0x8 /* One-Shot mode */ /* * CAN device statistics diff --git a/ip/iplink_can.c b/ip/iplink_can.c index 50221e1..5d0d82c 100644 --- a/ip/iplink_can.c +++ b/ip/iplink_can.c @@ -30,6 +30,7 @@ static void usage(void) "\t[ loopback { on | off } ]\n" "\t[ listen-only { on | off } ]\n" "\t[ triple-sampling { on | off } ]\n" + "\t[ one-shot { on | off } ]\n" "\n" "\t[ restart-ms TIME-MS ]\n" "\t[ restart ]\n" @@ -84,6 +85,7 @@ static void print_ctrlmode(FILE *f, __u32 cm) _PF(CAN_CTRLMODE_LOOPBACK, "LOOPBACK"); _PF(CAN_CTRLMODE_LISTENONLY, "LISTEN-ONLY"); _PF(CAN_CTRLMODE_3_SAMPLES, "TRIPLE-SAMPLING"); + _PF(CAN_CTRLMODE_ONE_SHOT, "ONE-SHOT"); #undef _PF if (cm) fprintf(f, "%x", cm); @@ -142,6 +144,10 @@ static int can_parse_opt(struct link_util *lu, int argc, char **argv, NEXT_ARG(); set_ctrlmode("triple-sampling", *argv, &cm, CAN_CTRLMODE_3_SAMPLES); + } else if (matches(*argv, "one-shot") == 0) { + NEXT_ARG(); + set_ctrlmode("one-shot", *argv, &cm, + CAN_CTRLMODE_ONE_SHOT); } else if (matches(*argv, "restart") == 0) { __u32 val = 1;