linux-can-next-for-4.16-20180105
-----BEGIN PGP SIGNATURE----- iQFHBAABCgAxFiEE4bay/IylYqM/npjQHv7KIOw4HPYFAlpPT5ATHG1rbEBwZW5n dXRyb25peC5kZQAKCRAe/sog7Dgc9tyZB/wNk7hfmWT7qMSq4nB1/l4DvlCVtQR+ 7t7jLltd2ld1bqFr62S1/NExWbgm9GXS25wHgLQQn8I0jwCyuFb8K+VIe/+t9vSu PXOihUlIXCqpJwI9FtvGb/jmIbHV1JbnGv1b/J1q34FzhThsXN3DPX5BI5+T+Hy4 9hnHuYtcveyGlU08RsePyc6WfCzBJafR1YpJYSSsIxmtT6Db0SyRSZjY4MFzv9eA mV+wvSpvepiw7tDN9XhSdNQJR9HAh/AXkYRgU448BysqhR5tK5oq8QAjsJK2Usy7 X1RY/M32fn1QdcwfWEWw5xB9ZblKMnxRzB3vmGLkyvIuPnP/JGQoq5sW =BrhI -----END PGP SIGNATURE----- Merge tag 'linux-can-next-for-4.16-20180105' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next Marc Kleine-Budde says: ==================== pull-request: can-next 2017-12-01,Re: pull-request: can-next this is a pull request of 7 patches for net-next/master. All patches are by me. Patch 6 is for the "can_raw" protocol and add error checking to the bind() function. All other patches clean up the coding style and remove unused parameters in various CAN drivers and infrastructure. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Коммит
79d891c1bb
|
@ -256,7 +256,7 @@ int can_rx_offload_add_timestamp(struct net_device *dev, struct can_rx_offload *
|
|||
weight = offload->mb_first - offload->mb_last;
|
||||
}
|
||||
|
||||
return can_rx_offload_init_queue(dev, offload, weight);;
|
||||
return can_rx_offload_init_queue(dev, offload, weight);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(can_rx_offload_add_timestamp);
|
||||
|
||||
|
|
|
@ -508,7 +508,7 @@ static void slc_sync(void)
|
|||
}
|
||||
|
||||
/* Find a free SLCAN channel, and link in this `tty' line. */
|
||||
static struct slcan *slc_alloc(dev_t line)
|
||||
static struct slcan *slc_alloc(void)
|
||||
{
|
||||
int i;
|
||||
char name[IFNAMSIZ];
|
||||
|
@ -583,7 +583,7 @@ static int slcan_open(struct tty_struct *tty)
|
|||
|
||||
/* OK. Find a free SLCAN channel to use. */
|
||||
err = -ENFILE;
|
||||
sl = slc_alloc(tty_devnum(tty));
|
||||
sl = slc_alloc();
|
||||
if (sl == NULL)
|
||||
goto err_exit;
|
||||
|
||||
|
|
|
@ -612,8 +612,7 @@ static int mcp251x_do_set_bittiming(struct net_device *net)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int mcp251x_setup(struct net_device *net, struct mcp251x_priv *priv,
|
||||
struct spi_device *spi)
|
||||
static int mcp251x_setup(struct net_device *net, struct spi_device *spi)
|
||||
{
|
||||
mcp251x_do_set_bittiming(net);
|
||||
|
||||
|
@ -775,7 +774,7 @@ static void mcp251x_restart_work_handler(struct work_struct *ws)
|
|||
mutex_lock(&priv->mcp_lock);
|
||||
if (priv->after_suspend) {
|
||||
mcp251x_hw_reset(spi);
|
||||
mcp251x_setup(net, priv, spi);
|
||||
mcp251x_setup(net, spi);
|
||||
if (priv->after_suspend & AFTER_SUSPEND_RESTART) {
|
||||
mcp251x_set_normal_mode(spi);
|
||||
} else if (priv->after_suspend & AFTER_SUSPEND_UP) {
|
||||
|
@ -971,7 +970,7 @@ static int mcp251x_open(struct net_device *net)
|
|||
mcp251x_open_clean(net);
|
||||
goto open_unlock;
|
||||
}
|
||||
ret = mcp251x_setup(net, priv, spi);
|
||||
ret = mcp251x_setup(net, spi);
|
||||
if (ret) {
|
||||
mcp251x_open_clean(net);
|
||||
goto open_unlock;
|
||||
|
|
|
@ -243,7 +243,7 @@ static struct gs_tx_context *gs_get_tx_context(struct gs_can *dev,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static int gs_cmd_reset(struct gs_usb *gsusb, struct gs_can *gsdev)
|
||||
static int gs_cmd_reset(struct gs_can *gsdev)
|
||||
{
|
||||
struct gs_device_mode *dm;
|
||||
struct usb_interface *intf = gsdev->iface;
|
||||
|
@ -709,7 +709,7 @@ static int gs_can_close(struct net_device *netdev)
|
|||
atomic_set(&dev->active_tx_urbs, 0);
|
||||
|
||||
/* reset the device */
|
||||
rc = gs_cmd_reset(parent, dev);
|
||||
rc = gs_cmd_reset(dev);
|
||||
if (rc < 0)
|
||||
netdev_warn(netdev, "Couldn't shutdown device (err=%d)", rc);
|
||||
|
||||
|
|
|
@ -158,7 +158,7 @@ void peak_usb_get_ts_time(struct peak_time_ref *time_ref, u32 ts, ktime_t *time)
|
|||
* post received skb after having set any hw timestamp
|
||||
*/
|
||||
int peak_usb_netif_rx(struct sk_buff *skb,
|
||||
struct peak_time_ref *time_ref, u32 ts_low, u32 ts_high)
|
||||
struct peak_time_ref *time_ref, u32 ts_low)
|
||||
{
|
||||
struct skb_shared_hwtstamps *hwts = skb_hwtstamps(skb);
|
||||
|
||||
|
|
|
@ -153,7 +153,7 @@ void peak_usb_update_ts_now(struct peak_time_ref *time_ref, u32 ts_now);
|
|||
void peak_usb_set_ts_now(struct peak_time_ref *time_ref, u32 ts_now);
|
||||
void peak_usb_get_ts_time(struct peak_time_ref *time_ref, u32 ts, ktime_t *tv);
|
||||
int peak_usb_netif_rx(struct sk_buff *skb,
|
||||
struct peak_time_ref *time_ref, u32 ts_low, u32 ts_high);
|
||||
struct peak_time_ref *time_ref, u32 ts_low);
|
||||
void peak_usb_async_complete(struct urb *urb);
|
||||
void peak_usb_restart_complete(struct peak_usb_device *dev);
|
||||
|
||||
|
|
|
@ -513,8 +513,7 @@ static int pcan_usb_fd_decode_canmsg(struct pcan_usb_fd_if *usb_if,
|
|||
else
|
||||
memcpy(cfd->data, rm->d, cfd->len);
|
||||
|
||||
peak_usb_netif_rx(skb, &usb_if->time_ref,
|
||||
le32_to_cpu(rm->ts_low), le32_to_cpu(rm->ts_high));
|
||||
peak_usb_netif_rx(skb, &usb_if->time_ref, le32_to_cpu(rm->ts_low));
|
||||
|
||||
netdev->stats.rx_packets++;
|
||||
netdev->stats.rx_bytes += cfd->len;
|
||||
|
@ -574,8 +573,7 @@ static int pcan_usb_fd_decode_status(struct pcan_usb_fd_if *usb_if,
|
|||
if (!skb)
|
||||
return -ENOMEM;
|
||||
|
||||
peak_usb_netif_rx(skb, &usb_if->time_ref,
|
||||
le32_to_cpu(sm->ts_low), le32_to_cpu(sm->ts_high));
|
||||
peak_usb_netif_rx(skb, &usb_if->time_ref, le32_to_cpu(sm->ts_low));
|
||||
|
||||
netdev->stats.rx_packets++;
|
||||
netdev->stats.rx_bytes += cf->can_dlc;
|
||||
|
@ -617,8 +615,7 @@ static int pcan_usb_fd_decode_overrun(struct pcan_usb_fd_if *usb_if,
|
|||
cf->can_id |= CAN_ERR_CRTL;
|
||||
cf->data[1] |= CAN_ERR_CRTL_RX_OVERFLOW;
|
||||
|
||||
peak_usb_netif_rx(skb, &usb_if->time_ref,
|
||||
le32_to_cpu(ov->ts_low), le32_to_cpu(ov->ts_high));
|
||||
peak_usb_netif_rx(skb, &usb_if->time_ref, le32_to_cpu(ov->ts_low));
|
||||
|
||||
netdev->stats.rx_over_errors++;
|
||||
netdev->stats.rx_errors++;
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
#include <linux/spinlock.h>
|
||||
|
||||
struct dev_rcv_lists;
|
||||
struct can_dev_rcv_lists;
|
||||
struct s_stats;
|
||||
struct s_pstats;
|
||||
|
||||
|
@ -28,7 +28,7 @@ struct netns_can {
|
|||
#endif
|
||||
|
||||
/* receive filters subscribed for 'all' CAN devices */
|
||||
struct dev_rcv_lists *can_rx_alldev_list;
|
||||
struct can_dev_rcv_lists *can_rx_alldev_list;
|
||||
spinlock_t can_rcvlists_lock;
|
||||
struct timer_list can_stattimer;/* timer for statistics update */
|
||||
struct s_stats *can_stats; /* packet statistics */
|
||||
|
|
|
@ -321,13 +321,13 @@ EXPORT_SYMBOL(can_send);
|
|||
* af_can rx path
|
||||
*/
|
||||
|
||||
static struct dev_rcv_lists *find_dev_rcv_lists(struct net *net,
|
||||
static struct can_dev_rcv_lists *find_dev_rcv_lists(struct net *net,
|
||||
struct net_device *dev)
|
||||
{
|
||||
if (!dev)
|
||||
return net->can.can_rx_alldev_list;
|
||||
else
|
||||
return (struct dev_rcv_lists *)dev->ml_priv;
|
||||
return (struct can_dev_rcv_lists *)dev->ml_priv;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -381,7 +381,7 @@ static unsigned int effhash(canid_t can_id)
|
|||
* Reduced can_id to have a preprocessed filter compare value.
|
||||
*/
|
||||
static struct hlist_head *find_rcv_list(canid_t *can_id, canid_t *mask,
|
||||
struct dev_rcv_lists *d)
|
||||
struct can_dev_rcv_lists *d)
|
||||
{
|
||||
canid_t inv = *can_id & CAN_INV_FILTER; /* save flag before masking */
|
||||
|
||||
|
@ -464,7 +464,7 @@ int can_rx_register(struct net *net, struct net_device *dev, canid_t can_id,
|
|||
{
|
||||
struct receiver *r;
|
||||
struct hlist_head *rl;
|
||||
struct dev_rcv_lists *d;
|
||||
struct can_dev_rcv_lists *d;
|
||||
struct s_pstats *can_pstats = net->can.can_pstats;
|
||||
int err = 0;
|
||||
|
||||
|
@ -542,7 +542,7 @@ void can_rx_unregister(struct net *net, struct net_device *dev, canid_t can_id,
|
|||
struct receiver *r = NULL;
|
||||
struct hlist_head *rl;
|
||||
struct s_pstats *can_pstats = net->can.can_pstats;
|
||||
struct dev_rcv_lists *d;
|
||||
struct can_dev_rcv_lists *d;
|
||||
|
||||
if (dev && dev->type != ARPHRD_CAN)
|
||||
return;
|
||||
|
@ -615,7 +615,7 @@ static inline void deliver(struct sk_buff *skb, struct receiver *r)
|
|||
r->matches++;
|
||||
}
|
||||
|
||||
static int can_rcv_filter(struct dev_rcv_lists *d, struct sk_buff *skb)
|
||||
static int can_rcv_filter(struct can_dev_rcv_lists *d, struct sk_buff *skb)
|
||||
{
|
||||
struct receiver *r;
|
||||
int matches = 0;
|
||||
|
@ -682,7 +682,7 @@ static int can_rcv_filter(struct dev_rcv_lists *d, struct sk_buff *skb)
|
|||
|
||||
static void can_receive(struct sk_buff *skb, struct net_device *dev)
|
||||
{
|
||||
struct dev_rcv_lists *d;
|
||||
struct can_dev_rcv_lists *d;
|
||||
struct net *net = dev_net(dev);
|
||||
struct s_stats *can_stats = net->can.can_stats;
|
||||
int matches;
|
||||
|
@ -829,7 +829,7 @@ static int can_notifier(struct notifier_block *nb, unsigned long msg,
|
|||
void *ptr)
|
||||
{
|
||||
struct net_device *dev = netdev_notifier_info_to_dev(ptr);
|
||||
struct dev_rcv_lists *d;
|
||||
struct can_dev_rcv_lists *d;
|
||||
|
||||
if (dev->type != ARPHRD_CAN)
|
||||
return NOTIFY_DONE;
|
||||
|
@ -874,7 +874,7 @@ static int can_pernet_init(struct net *net)
|
|||
{
|
||||
spin_lock_init(&net->can.can_rcvlists_lock);
|
||||
net->can.can_rx_alldev_list =
|
||||
kzalloc(sizeof(struct dev_rcv_lists), GFP_KERNEL);
|
||||
kzalloc(sizeof(struct can_dev_rcv_lists), GFP_KERNEL);
|
||||
if (!net->can.can_rx_alldev_list)
|
||||
goto out;
|
||||
net->can.can_stats = kzalloc(sizeof(struct s_stats), GFP_KERNEL);
|
||||
|
@ -920,7 +920,7 @@ static void can_pernet_exit(struct net *net)
|
|||
rcu_read_lock();
|
||||
for_each_netdev_rcu(net, dev) {
|
||||
if (dev->type == ARPHRD_CAN && dev->ml_priv) {
|
||||
struct dev_rcv_lists *d = dev->ml_priv;
|
||||
struct can_dev_rcv_lists *d = dev->ml_priv;
|
||||
|
||||
BUG_ON(d->entries);
|
||||
kfree(d);
|
||||
|
|
|
@ -67,7 +67,7 @@ struct receiver {
|
|||
enum { RX_ERR, RX_ALL, RX_FIL, RX_INV, RX_MAX };
|
||||
|
||||
/* per device receive filters linked at dev->ml_priv */
|
||||
struct dev_rcv_lists {
|
||||
struct can_dev_rcv_lists {
|
||||
struct hlist_head rx[RX_MAX];
|
||||
struct hlist_head rx_sff[CAN_SFF_RCV_ARRAY_SZ];
|
||||
struct hlist_head rx_eff[CAN_EFF_RCV_ARRAY_SZ];
|
||||
|
|
|
@ -338,7 +338,7 @@ static const struct file_operations can_version_proc_fops = {
|
|||
|
||||
static inline void can_rcvlist_proc_show_one(struct seq_file *m, int idx,
|
||||
struct net_device *dev,
|
||||
struct dev_rcv_lists *d)
|
||||
struct can_dev_rcv_lists *d)
|
||||
{
|
||||
if (!hlist_empty(&d->rx[idx])) {
|
||||
can_print_recv_banner(m);
|
||||
|
@ -353,7 +353,7 @@ static int can_rcvlist_proc_show(struct seq_file *m, void *v)
|
|||
/* double cast to prevent GCC warning */
|
||||
int idx = (int)(long)PDE_DATA(m->file->f_inode);
|
||||
struct net_device *dev;
|
||||
struct dev_rcv_lists *d;
|
||||
struct can_dev_rcv_lists *d;
|
||||
struct net *net = m->private;
|
||||
|
||||
seq_printf(m, "\nreceive list '%s':\n", rx_list_name[idx]);
|
||||
|
@ -417,7 +417,7 @@ static inline void can_rcvlist_proc_show_array(struct seq_file *m,
|
|||
static int can_rcvlist_sff_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
struct net_device *dev;
|
||||
struct dev_rcv_lists *d;
|
||||
struct can_dev_rcv_lists *d;
|
||||
struct net *net = m->private;
|
||||
|
||||
/* RX_SFF */
|
||||
|
@ -461,7 +461,7 @@ static const struct file_operations can_rcvlist_sff_proc_fops = {
|
|||
static int can_rcvlist_eff_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
struct net_device *dev;
|
||||
struct dev_rcv_lists *d;
|
||||
struct can_dev_rcv_lists *d;
|
||||
struct net *net = m->private;
|
||||
|
||||
/* RX_EFF */
|
||||
|
|
|
@ -401,6 +401,8 @@ static int raw_bind(struct socket *sock, struct sockaddr *uaddr, int len)
|
|||
|
||||
if (len < sizeof(*addr))
|
||||
return -EINVAL;
|
||||
if (addr->can_family != AF_CAN)
|
||||
return -EINVAL;
|
||||
|
||||
lock_sock(sk);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче