|
@@ -80,7 +80,6 @@ static const char rx_list_name[][8] = {
|
|
|
[RX_ALL] = "rx_all",
|
|
|
[RX_FIL] = "rx_fil",
|
|
|
[RX_INV] = "rx_inv",
|
|
|
- [RX_EFF] = "rx_eff",
|
|
|
};
|
|
|
|
|
|
/*
|
|
@@ -456,6 +455,49 @@ static const struct file_operations can_rcvlist_sff_proc_fops = {
|
|
|
.release = single_release,
|
|
|
};
|
|
|
|
|
|
+
|
|
|
+static int can_rcvlist_eff_proc_show(struct seq_file *m, void *v)
|
|
|
+{
|
|
|
+ struct net_device *dev;
|
|
|
+ struct dev_rcv_lists *d;
|
|
|
+
|
|
|
+ /* RX_EFF */
|
|
|
+ seq_puts(m, "\nreceive list 'rx_eff':\n");
|
|
|
+
|
|
|
+ rcu_read_lock();
|
|
|
+
|
|
|
+ /* eff receive list for 'all' CAN devices (dev == NULL) */
|
|
|
+ d = &can_rx_alldev_list;
|
|
|
+ can_rcvlist_proc_show_array(m, NULL, d->rx_eff, ARRAY_SIZE(d->rx_eff));
|
|
|
+
|
|
|
+ /* eff receive list for registered CAN devices */
|
|
|
+ for_each_netdev_rcu(&init_net, dev) {
|
|
|
+ if (dev->type == ARPHRD_CAN && dev->ml_priv) {
|
|
|
+ d = dev->ml_priv;
|
|
|
+ can_rcvlist_proc_show_array(m, dev, d->rx_eff,
|
|
|
+ ARRAY_SIZE(d->rx_eff));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ rcu_read_unlock();
|
|
|
+
|
|
|
+ seq_putc(m, '\n');
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static int can_rcvlist_eff_proc_open(struct inode *inode, struct file *file)
|
|
|
+{
|
|
|
+ return single_open(file, can_rcvlist_eff_proc_show, NULL);
|
|
|
+}
|
|
|
+
|
|
|
+static const struct file_operations can_rcvlist_eff_proc_fops = {
|
|
|
+ .owner = THIS_MODULE,
|
|
|
+ .open = can_rcvlist_eff_proc_open,
|
|
|
+ .read = seq_read,
|
|
|
+ .llseek = seq_lseek,
|
|
|
+ .release = single_release,
|
|
|
+};
|
|
|
+
|
|
|
/*
|
|
|
* proc utility functions
|
|
|
*/
|
|
@@ -495,8 +537,8 @@ void can_init_proc(void)
|
|
|
&can_rcvlist_proc_fops, (void *)RX_FIL);
|
|
|
pde_rcvlist_inv = proc_create_data(CAN_PROC_RCVLIST_INV, 0644, can_dir,
|
|
|
&can_rcvlist_proc_fops, (void *)RX_INV);
|
|
|
- pde_rcvlist_eff = proc_create_data(CAN_PROC_RCVLIST_EFF, 0644, can_dir,
|
|
|
- &can_rcvlist_proc_fops, (void *)RX_EFF);
|
|
|
+ pde_rcvlist_eff = proc_create(CAN_PROC_RCVLIST_EFF, 0644, can_dir,
|
|
|
+ &can_rcvlist_eff_proc_fops);
|
|
|
pde_rcvlist_sff = proc_create(CAN_PROC_RCVLIST_SFF, 0644, can_dir,
|
|
|
&can_rcvlist_sff_proc_fops);
|
|
|
}
|