xref: /openbmc/linux/include/net/phonet/pn_dev.h (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
12b27bdccSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
2f8ff6028SRemi Denis-Courmont /*
3f8ff6028SRemi Denis-Courmont  * File: pn_dev.h
4f8ff6028SRemi Denis-Courmont  *
5f8ff6028SRemi Denis-Courmont  * Phonet network device
6f8ff6028SRemi Denis-Courmont  *
7f8ff6028SRemi Denis-Courmont  * Copyright (C) 2008 Nokia Corporation.
8f8ff6028SRemi Denis-Courmont  */
9f8ff6028SRemi Denis-Courmont 
10f8ff6028SRemi Denis-Courmont #ifndef PN_DEV_H
11f8ff6028SRemi Denis-Courmont #define PN_DEV_H
12f8ff6028SRemi Denis-Courmont 
13*949d6b40SJakub Kicinski #include <linux/list.h>
14*949d6b40SJakub Kicinski #include <linux/mutex.h>
15*949d6b40SJakub Kicinski 
16*949d6b40SJakub Kicinski struct net;
17*949d6b40SJakub Kicinski 
18f8ff6028SRemi Denis-Courmont struct phonet_device_list {
19f8ff6028SRemi Denis-Courmont 	struct list_head list;
20eeb74a9dSRémi Denis-Courmont 	struct mutex lock;
21f8ff6028SRemi Denis-Courmont };
22f8ff6028SRemi Denis-Courmont 
239a3b7a42Sremi.denis-courmont@nokia struct phonet_device_list *phonet_device_list(struct net *net);
24f8ff6028SRemi Denis-Courmont 
25f8ff6028SRemi Denis-Courmont struct phonet_device {
26f8ff6028SRemi Denis-Courmont 	struct list_head list;
27f8ff6028SRemi Denis-Courmont 	struct net_device *netdev;
28f8ff6028SRemi Denis-Courmont 	DECLARE_BITMAP(addrs, 64);
2988e7594aSJiri Pirko 	struct rcu_head	rcu;
30f8ff6028SRemi Denis-Courmont };
31f8ff6028SRemi Denis-Courmont 
3276e02cf6Sremi.denis-courmont@nokia int phonet_device_init(void);
33f8ff6028SRemi Denis-Courmont void phonet_device_exit(void);
34660f706dSremi.denis-courmont@nokia int phonet_netlink_register(void);
35f8ff6028SRemi Denis-Courmont struct net_device *phonet_device_get(struct net *net);
36f8ff6028SRemi Denis-Courmont 
37f8ff6028SRemi Denis-Courmont int phonet_address_add(struct net_device *dev, u8 addr);
38f8ff6028SRemi Denis-Courmont int phonet_address_del(struct net_device *dev, u8 addr);
39f8ff6028SRemi Denis-Courmont u8 phonet_address_get(struct net_device *dev, u8 addr);
4052404881SRémi Denis-Courmont int phonet_address_lookup(struct net *net, u8 addr);
41c7a1a4c8SRémi Denis-Courmont void phonet_address_notify(int event, struct net_device *dev, u8 addr);
42f8ff6028SRemi Denis-Courmont 
4355748ac0SRémi Denis-Courmont int phonet_route_add(struct net_device *dev, u8 daddr);
4455748ac0SRémi Denis-Courmont int phonet_route_del(struct net_device *dev, u8 daddr);
45f062f41dSRémi Denis-Courmont void rtm_phonet_notify(int event, struct net_device *dev, u8 dst);
46e67f88ddSEric Dumazet struct net_device *phonet_route_get_rcu(struct net *net, u8 daddr);
4755748ac0SRémi Denis-Courmont struct net_device *phonet_route_output(struct net *net, u8 daddr);
4855748ac0SRémi Denis-Courmont 
49f8ff6028SRemi Denis-Courmont #define PN_NO_ADDR	0xff
50f8ff6028SRemi Denis-Courmont 
51c3506372SChristoph Hellwig extern const struct seq_operations pn_sock_seq_ops;
52c3506372SChristoph Hellwig extern const struct seq_operations pn_res_seq_ops;
53c1dc13e9SRémi Denis-Courmont 
54f8ff6028SRemi Denis-Courmont #endif
55