All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] can: pcan_usb: don't provide CAN FD bittimings by non-FD adapters
@ 2015-07-30 21:53 Oliver Hartkopp
  2015-08-02 11:16 ` Stéphane Grosjean
  2015-08-06  7:54 ` Marc Kleine-Budde
  0 siblings, 2 replies; 5+ messages in thread
From: Oliver Hartkopp @ 2015-07-30 21:53 UTC (permalink / raw)
  To: linux-can; +Cc: s.grosjean, Oliver Hartkopp

The CAN FD data bittiming constants are provided via netlink only when there
are valid CAN FD constants available in priv->data_bittiming_const.

Due to the indirection of pointer assignments in the peak_usb driver the
priv->data_bittiming_const never becomes NULL - not even for non-FD adapters.

The data_bittiming_const points to zero'ed data which leads to this result
when running 'ip -details link show can0':

35: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN mode DEFAULT group default qlen 10
    link/can  promiscuity 0
    can state STOPPED restart-ms 0
	  pcan_usb: tseg1 1..16 tseg2 1..8 sjw 1..4 brp 1..64 brp-inc 1
	  : dtseg1 0..0 dtseg2 0..0 dsjw 1..0 dbrp 0..0 dbrp-inc 0  <== BROKEN!
	  clock 8000000

This patch sets the dev_set_data_bittiming in struct peak_adapter to NULL to
be able to disable the CAN FD specific information on non-FD adapters.

Relevant for stable kernels 4.0+

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
---
 drivers/net/can/usb/peak_usb/pcan_usb.c      | 1 +
 drivers/net/can/usb/peak_usb/pcan_usb_core.c | 9 +++++++--
 drivers/net/can/usb/peak_usb/pcan_usb_pro.c  | 1 +
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/net/can/usb/peak_usb/pcan_usb.c b/drivers/net/can/usb/peak_usb/pcan_usb.c
index 6b94007..5c4b270 100644
--- a/drivers/net/can/usb/peak_usb/pcan_usb.c
+++ b/drivers/net/can/usb/peak_usb/pcan_usb.c
@@ -896,6 +896,7 @@ const struct peak_usb_adapter pcan_usb = {
 	.dev_init = pcan_usb_init,
 	.dev_set_bus = pcan_usb_write_mode,
 	.dev_set_bittiming = pcan_usb_set_bittiming,
+	.dev_set_data_bittiming = NULL,
 	.dev_get_device_id = pcan_usb_get_device_id,
 	.dev_decode_buf = pcan_usb_decode_buf,
 	.dev_encode_msg = pcan_usb_encode_msg,
diff --git a/drivers/net/can/usb/peak_usb/pcan_usb_core.c b/drivers/net/can/usb/peak_usb/pcan_usb_core.c
index 7921cff..76c0624 100644
--- a/drivers/net/can/usb/peak_usb/pcan_usb_core.c
+++ b/drivers/net/can/usb/peak_usb/pcan_usb_core.c
@@ -794,8 +794,13 @@ static int peak_usb_create_dev(const struct peak_usb_adapter *peak_usb_adapter,
 	dev->can.clock = peak_usb_adapter->clock;
 	dev->can.bittiming_const = &peak_usb_adapter->bittiming_const;
 	dev->can.do_set_bittiming = peak_usb_set_bittiming;
-	dev->can.data_bittiming_const = &peak_usb_adapter->data_bittiming_const;
-	dev->can.do_set_data_bittiming = peak_usb_set_data_bittiming;
+	if (peak_usb_adapter->dev_set_data_bittiming) {
+		dev->can.data_bittiming_const = &peak_usb_adapter->data_bittiming_const;
+		dev->can.do_set_data_bittiming = peak_usb_set_data_bittiming;
+	} else {
+		dev->can.data_bittiming_const = NULL;
+		dev->can.do_set_data_bittiming = NULL;
+	}
 	dev->can.do_set_mode = peak_usb_set_mode;
 	dev->can.do_get_berr_counter = peak_usb_adapter->do_get_berr_counter;
 	dev->can.ctrlmode_supported = peak_usb_adapter->ctrlmode_supported;
diff --git a/drivers/net/can/usb/peak_usb/pcan_usb_pro.c b/drivers/net/can/usb/peak_usb/pcan_usb_pro.c
index 7d61b32..9111a54 100644
--- a/drivers/net/can/usb/peak_usb/pcan_usb_pro.c
+++ b/drivers/net/can/usb/peak_usb/pcan_usb_pro.c
@@ -1048,6 +1048,7 @@ const struct peak_usb_adapter pcan_usb_pro = {
 	.dev_free = pcan_usb_pro_free,
 	.dev_set_bus = pcan_usb_pro_set_bus,
 	.dev_set_bittiming = pcan_usb_pro_set_bittiming,
+	.dev_set_data_bittiming = NULL,
 	.dev_get_device_id = pcan_usb_pro_get_device_id,
 	.dev_decode_buf = pcan_usb_pro_decode_buf,
 	.dev_encode_msg = pcan_usb_pro_encode_msg,
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 5+ messages in thread
* pull-request: can 2015-08-24
@ 2015-08-24  9:20 Marc Kleine-Budde
  2015-08-24  9:20 ` [PATCH] can: pcan_usb: don't provide CAN FD bittimings by non-FD adapters Marc Kleine-Budde
  0 siblings, 1 reply; 5+ messages in thread
From: Marc Kleine-Budde @ 2015-08-24  9:20 UTC (permalink / raw)
  To: netdev; +Cc: davem, linux-can, kernel

Hello David,

this is a pull request of one patch by me for the peak_usb driver. It fixes the
driver, so that non FD adapters don't provide CAN FD bittimings.

regards,
Marc

----

The following changes since commit b6df7d61c8776a882dd47ba4714d1445dd7ef2d9:

  net: bcmgenet: fix uncleaned dma flags (2015-08-23 23:00:41 -0700)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can.git tags/linux-can-fixes-for-4.2-20150824

for you to fetch changes up to ffa115d30dec793f37ca661d2d3f8e35c14559e9:

  can: pcan_usb: don't provide CAN FD bittimings by non-FD adapters (2015-08-24 11:15:10 +0200)

----------------------------------------------------------------
linux-can-fixes-for-4.2-20150824

----------------------------------------------------------------
Marc Kleine-Budde (1):
      can: pcan_usb: don't provide CAN FD bittimings by non-FD adapters

 drivers/net/can/usb/peak_usb/pcan_usb.c      | 24 +++----
 drivers/net/can/usb/peak_usb/pcan_usb_core.c |  4 +-
 drivers/net/can/usb/peak_usb/pcan_usb_core.h |  4 +-
 drivers/net/can/usb/peak_usb/pcan_usb_fd.c   | 96 +++++++++++++++-------------
 drivers/net/can/usb/peak_usb/pcan_usb_pro.c  | 24 +++----
 5 files changed, 82 insertions(+), 70 deletions(-)

^ permalink raw reply	[flat|nested] 5+ messages in thread
* pull-request: can 2015-08-25
@ 2015-08-25  6:55 Marc Kleine-Budde
  2015-08-25  6:55 ` [PATCH] can: pcan_usb: don't provide CAN FD bittimings by non-FD adapters Marc Kleine-Budde
  0 siblings, 1 reply; 5+ messages in thread
From: Marc Kleine-Budde @ 2015-08-25  6:55 UTC (permalink / raw)
  To: netdev; +Cc: davem, linux-can, kernel

Hello David,

this is the updated pull request of one patch by me for the peak_usb driver. It
fixes the driver, so that non FD adapters don't provide CAN FD bittimings.

regards,
Marc

---

The following changes since commit b6df7d61c8776a882dd47ba4714d1445dd7ef2d9:

  net: bcmgenet: fix uncleaned dma flags (2015-08-23 23:00:41 -0700)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can.git tags/linux-can-fixes-for-4.2-20150825

for you to fetch changes up to 06b23f7fbbf26a025fd68395c7586949db586b47:

  can: pcan_usb: don't provide CAN FD bittimings by non-FD adapters (2015-08-25 08:50:00 +0200)

----------------------------------------------------------------
linux-can-fixes-for-4.2-20150825

----------------------------------------------------------------
Marc Kleine-Budde (1):
      can: pcan_usb: don't provide CAN FD bittimings by non-FD adapters

 drivers/net/can/usb/peak_usb/pcan_usb.c      | 24 +++----
 drivers/net/can/usb/peak_usb/pcan_usb_core.c |  4 +-
 drivers/net/can/usb/peak_usb/pcan_usb_core.h |  4 +-
 drivers/net/can/usb/peak_usb/pcan_usb_fd.c   | 96 +++++++++++++++-------------
 drivers/net/can/usb/peak_usb/pcan_usb_pro.c  | 24 +++----
 5 files changed, 82 insertions(+), 70 deletions(-)

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-08-25  6:56 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-30 21:53 [PATCH] can: pcan_usb: don't provide CAN FD bittimings by non-FD adapters Oliver Hartkopp
2015-08-02 11:16 ` Stéphane Grosjean
2015-08-06  7:54 ` Marc Kleine-Budde
  -- strict thread matches above, loose matches on Subject: below --
2015-08-24  9:20 pull-request: can 2015-08-24 Marc Kleine-Budde
2015-08-24  9:20 ` [PATCH] can: pcan_usb: don't provide CAN FD bittimings by non-FD adapters Marc Kleine-Budde
2015-08-25  6:55 pull-request: can 2015-08-25 Marc Kleine-Budde
2015-08-25  6:55 ` [PATCH] can: pcan_usb: don't provide CAN FD bittimings by non-FD adapters Marc Kleine-Budde

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.