|
@@ -581,7 +581,10 @@ static int mscan_open(struct net_device *dev)
|
|
|
|
|
|
priv->open_time = jiffies;
|
|
|
|
|
|
- clrbits8(®s->canctl1, MSCAN_LISTEN);
|
|
|
+ if (ctrlmode.flags & CAN_CTRLMODE_LISTENONLY)
|
|
|
+ setbits8(®s->canctl1, MSCAN_LISTEN);
|
|
|
+ else
|
|
|
+ clrbits8(®s->canctl1, MSCAN_LISTEN);
|
|
|
|
|
|
ret = mscan_start(dev);
|
|
|
if (ret)
|
|
@@ -690,7 +693,8 @@ struct net_device *alloc_mscandev(void)
|
|
|
priv->can.bittiming_const = &mscan_bittiming_const;
|
|
|
priv->can.do_set_bittiming = mscan_do_set_bittiming;
|
|
|
priv->can.do_set_mode = mscan_do_set_mode;
|
|
|
- priv->can.ctrlmode_supported = CAN_CTRLMODE_3_SAMPLES;
|
|
|
+ priv->can.ctrlmode_supported = CAN_CTRLMODE_3_SAMPLES |
|
|
|
+ CAN_CTRLMODE_LISTENONLY;
|
|
|
|
|
|
for (i = 0; i < TX_QUEUE_SIZE; i++) {
|
|
|
priv->tx_queue[i].id = i;
|