Skip to content

Commit e167359

Browse files
committed
Merge tag 'linux-can-next-for-4.1-20150323' of git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next
Marc Kleine-Budde says: ==================== pull-request: can-next 2015-03-23 this is a pull request of 6 patches for net-next/master. A patch by Florian Westphal, converts the skb->destructor to use sock_efree() instead of own destructor. Ahmed S. Darwish's patch converts the kvaser_usb driver to use unregister_candev(). A patch by me removes a return from a void function in the m_can driver. Yegor Yefremov contributes a patch for combined rx/tx LED trigger support. A sparse warning in the esd_usb2 driver was fixes by Thomas Körper. Ben Dooks converts the at91_can driver to use endian agnostic IO accessors. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
2 parents 40451fd + af9bfbd commit e167359

File tree

8 files changed

+33
-18
lines changed

8 files changed

+33
-18
lines changed

drivers/net/can/at91_can.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -291,13 +291,13 @@ static inline unsigned int get_tx_echo_mb(const struct at91_priv *priv)
291291

292292
static inline u32 at91_read(const struct at91_priv *priv, enum at91_reg reg)
293293
{
294-
return __raw_readl(priv->reg_base + reg);
294+
return readl_relaxed(priv->reg_base + reg);
295295
}
296296

297297
static inline void at91_write(const struct at91_priv *priv, enum at91_reg reg,
298298
u32 value)
299299
{
300-
__raw_writel(value, priv->reg_base + reg);
300+
writel_relaxed(value, priv->reg_base + reg);
301301
}
302302

303303
static inline void set_mb_mode_prio(const struct at91_priv *priv,

drivers/net/can/led.c

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,28 @@ void can_led_event(struct net_device *netdev, enum can_led_event event)
3030
case CAN_LED_EVENT_OPEN:
3131
led_trigger_event(priv->tx_led_trig, LED_FULL);
3232
led_trigger_event(priv->rx_led_trig, LED_FULL);
33+
led_trigger_event(priv->rxtx_led_trig, LED_FULL);
3334
break;
3435
case CAN_LED_EVENT_STOP:
3536
led_trigger_event(priv->tx_led_trig, LED_OFF);
3637
led_trigger_event(priv->rx_led_trig, LED_OFF);
38+
led_trigger_event(priv->rxtx_led_trig, LED_OFF);
3739
break;
3840
case CAN_LED_EVENT_TX:
39-
if (led_delay)
41+
if (led_delay) {
4042
led_trigger_blink_oneshot(priv->tx_led_trig,
4143
&led_delay, &led_delay, 1);
44+
led_trigger_blink_oneshot(priv->rxtx_led_trig,
45+
&led_delay, &led_delay, 1);
46+
}
4247
break;
4348
case CAN_LED_EVENT_RX:
44-
if (led_delay)
49+
if (led_delay) {
4550
led_trigger_blink_oneshot(priv->rx_led_trig,
4651
&led_delay, &led_delay, 1);
52+
led_trigger_blink_oneshot(priv->rxtx_led_trig,
53+
&led_delay, &led_delay, 1);
54+
}
4755
break;
4856
}
4957
}
@@ -55,6 +63,7 @@ static void can_led_release(struct device *gendev, void *res)
5563

5664
led_trigger_unregister_simple(priv->tx_led_trig);
5765
led_trigger_unregister_simple(priv->rx_led_trig);
66+
led_trigger_unregister_simple(priv->rxtx_led_trig);
5867
}
5968

6069
/* Register CAN LED triggers for a CAN device
@@ -76,11 +85,15 @@ void devm_can_led_init(struct net_device *netdev)
7685
"%s-tx", netdev->name);
7786
snprintf(priv->rx_led_trig_name, sizeof(priv->rx_led_trig_name),
7887
"%s-rx", netdev->name);
88+
snprintf(priv->rxtx_led_trig_name, sizeof(priv->rxtx_led_trig_name),
89+
"%s-rxtx", netdev->name);
7990

8091
led_trigger_register_simple(priv->tx_led_trig_name,
8192
&priv->tx_led_trig);
8293
led_trigger_register_simple(priv->rx_led_trig_name,
8394
&priv->rx_led_trig);
95+
led_trigger_register_simple(priv->rxtx_led_trig_name,
96+
&priv->rxtx_led_trig);
8497

8598
devres_add(&netdev->dev, res);
8699
}
@@ -97,7 +110,7 @@ static int can_led_notifier(struct notifier_block *nb, unsigned long msg,
97110
if (!priv)
98111
return NOTIFY_DONE;
99112

100-
if (!priv->tx_led_trig || !priv->rx_led_trig)
113+
if (!priv->tx_led_trig || !priv->rx_led_trig || !priv->rxtx_led_trig)
101114
return NOTIFY_DONE;
102115

103116
if (msg == NETDEV_CHANGENAME) {
@@ -106,6 +119,9 @@ static int can_led_notifier(struct notifier_block *nb, unsigned long msg,
106119

107120
snprintf(name, sizeof(name), "%s-rx", netdev->name);
108121
led_trigger_rename_static(name, priv->rx_led_trig);
122+
123+
snprintf(name, sizeof(name), "%s-rxtx", netdev->name);
124+
led_trigger_rename_static(name, priv->rxtx_led_trig);
109125
}
110126

111127
return NOTIFY_DONE;

drivers/net/can/m_can/m_can.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,8 +312,8 @@ static inline u32 m_can_fifo_read(const struct m_can_priv *priv,
312312
static inline void m_can_fifo_write(const struct m_can_priv *priv,
313313
u32 fpi, unsigned int offset, u32 val)
314314
{
315-
return writel(val, priv->mram_base + priv->mcfg[MRAM_TXB].off +
316-
fpi * TXB_ELEMENT_SIZE + offset);
315+
writel(val, priv->mram_base + priv->mcfg[MRAM_TXB].off +
316+
fpi * TXB_ELEMENT_SIZE + offset);
317317
}
318318

319319
static inline void m_can_config_endisable(const struct m_can_priv *priv,

drivers/net/can/usb/esd_usb2.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ struct tx_msg {
139139
u8 cmd;
140140
u8 net;
141141
u8 dlc;
142-
__le32 hnd;
142+
u32 hnd; /* opaque handle, not used by device */
143143
__le32 id; /* upper 3 bits contain flags */
144144
u8 data[8];
145145
};
@@ -149,7 +149,7 @@ struct tx_done_msg {
149149
u8 cmd;
150150
u8 net;
151151
u8 status;
152-
__le32 hnd;
152+
u32 hnd; /* opaque handle, not used by device */
153153
__le32 ts;
154154
};
155155

drivers/net/can/usb/kvaser_usb.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1856,7 +1856,7 @@ static void kvaser_usb_remove_interfaces(struct kvaser_usb *dev)
18561856
if (!dev->nets[i])
18571857
continue;
18581858

1859-
unregister_netdev(dev->nets[i]->netdev);
1859+
unregister_candev(dev->nets[i]->netdev);
18601860
}
18611861

18621862
kvaser_usb_unlink_all_urbs(dev);

include/linux/can/dev.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ struct can_priv {
6161
char tx_led_trig_name[CAN_LED_NAME_SZ];
6262
struct led_trigger *rx_led_trig;
6363
char rx_led_trig_name[CAN_LED_NAME_SZ];
64+
struct led_trigger *rxtx_led_trig;
65+
char rxtx_led_trig_name[CAN_LED_NAME_SZ];
6466
#endif
6567
};
6668

include/linux/can/led.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@ enum can_led_event {
2121

2222
#ifdef CONFIG_CAN_LEDS
2323

24-
/* keep space for interface name + "-tx"/"-rx" suffix and null terminator */
25-
#define CAN_LED_NAME_SZ (IFNAMSIZ + 4)
24+
/* keep space for interface name + "-tx"/"-rx"/"-rxtx"
25+
* suffix and null terminator
26+
*/
27+
#define CAN_LED_NAME_SZ (IFNAMSIZ + 6)
2628

2729
void can_led_event(struct net_device *netdev, enum can_led_event event);
2830
void devm_can_led_init(struct net_device *netdev);

include/linux/can/skb.h

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,11 @@ static inline void can_skb_reserve(struct sk_buff *skb)
4444
skb_reserve(skb, sizeof(struct can_skb_priv));
4545
}
4646

47-
static inline void can_skb_destructor(struct sk_buff *skb)
48-
{
49-
sock_put(skb->sk);
50-
}
51-
5247
static inline void can_skb_set_owner(struct sk_buff *skb, struct sock *sk)
5348
{
5449
if (sk) {
5550
sock_hold(sk);
56-
skb->destructor = can_skb_destructor;
51+
skb->destructor = sock_efree;
5752
skb->sk = sk;
5853
}
5954
}

0 commit comments

Comments
 (0)