Marc Kleine-Budde wrote: > Hello, > > Wolfgang Grandegger wrote: >>>> I saw that the mcp2515 chip supports a one-shot mode. It's just setting bit >>>> 3 (OSM) of the CANCTRL register. I'd mentioned this to Christian, and I >>>> don't thing setting the register is a big deal, but the issue will be >>>> setting this mode with ip or some other user space tool. >>> what about adding the one shot mode to the ctrl_mode? It already holds >>> the tipple sample and listen-only feature. > > [...] > >> I will apply the patch to the SVN trunk. Are you going to prepare a >> patch for mainline as well? If yes, please post it together with the >> necessary changes for iproute2, which should be trivial. > > Here it goes, compile time tested only: > > cheers, Marc > > --- > > From 8c0479ef365a52d53212fb4b8905b755a2a4c5e2 Mon Sep 17 00:00:00 2001 > From: Marc Kleine-Budde <[email protected]> > Date: Tue, 22 Dec 2009 20:30:17 +0100 > Subject: [PATCH] iplink_can: add support to set one-shot mode > > Signed-off-by: Marc Kleine-Budde <[email protected]> > --- > 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; > > > > ------------------------------------------------------------------------
Looks good. Feel free to add my sob line here as well (or I will add it when you have posted the patch to the netdev ml). Thanks, Wolfgang. _______________________________________________ Socketcan-core mailing list [email protected] https://lists.berlios.de/mailman/listinfo/socketcan-core
