xref: /OK3568_Linux_fs/kernel/include/net/ncsi.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun #ifndef __NET_NCSI_H
3*4882a593Smuzhiyun #define __NET_NCSI_H
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun /*
6*4882a593Smuzhiyun  * The NCSI device states seen from external. More NCSI device states are
7*4882a593Smuzhiyun  * only visible internally (in net/ncsi/internal.h). When the NCSI device
8*4882a593Smuzhiyun  * is registered, it's in ncsi_dev_state_registered state. The state
9*4882a593Smuzhiyun  * ncsi_dev_state_start is used to drive to choose active package and
10*4882a593Smuzhiyun  * channel. After that, its state is changed to ncsi_dev_state_functional.
11*4882a593Smuzhiyun  *
12*4882a593Smuzhiyun  * The state ncsi_dev_state_stop helps to shut down the currently active
13*4882a593Smuzhiyun  * package and channel while ncsi_dev_state_config helps to reconfigure
14*4882a593Smuzhiyun  * them.
15*4882a593Smuzhiyun  */
16*4882a593Smuzhiyun enum {
17*4882a593Smuzhiyun 	ncsi_dev_state_registered	= 0x0000,
18*4882a593Smuzhiyun 	ncsi_dev_state_functional	= 0x0100,
19*4882a593Smuzhiyun 	ncsi_dev_state_probe		= 0x0200,
20*4882a593Smuzhiyun 	ncsi_dev_state_config		= 0x0300,
21*4882a593Smuzhiyun 	ncsi_dev_state_suspend		= 0x0400,
22*4882a593Smuzhiyun };
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun struct ncsi_dev {
25*4882a593Smuzhiyun 	int               state;
26*4882a593Smuzhiyun 	int		  link_up;
27*4882a593Smuzhiyun 	struct net_device *dev;
28*4882a593Smuzhiyun 	void		  (*handler)(struct ncsi_dev *ndev);
29*4882a593Smuzhiyun };
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun #ifdef CONFIG_NET_NCSI
32*4882a593Smuzhiyun int ncsi_vlan_rx_add_vid(struct net_device *dev, __be16 proto, u16 vid);
33*4882a593Smuzhiyun int ncsi_vlan_rx_kill_vid(struct net_device *dev, __be16 proto, u16 vid);
34*4882a593Smuzhiyun struct ncsi_dev *ncsi_register_dev(struct net_device *dev,
35*4882a593Smuzhiyun 				   void (*notifier)(struct ncsi_dev *nd));
36*4882a593Smuzhiyun int ncsi_start_dev(struct ncsi_dev *nd);
37*4882a593Smuzhiyun void ncsi_stop_dev(struct ncsi_dev *nd);
38*4882a593Smuzhiyun void ncsi_unregister_dev(struct ncsi_dev *nd);
39*4882a593Smuzhiyun #else /* !CONFIG_NET_NCSI */
ncsi_vlan_rx_add_vid(struct net_device * dev,__be16 proto,u16 vid)40*4882a593Smuzhiyun static inline int ncsi_vlan_rx_add_vid(struct net_device *dev, __be16 proto, u16 vid)
41*4882a593Smuzhiyun {
42*4882a593Smuzhiyun 	return -EINVAL;
43*4882a593Smuzhiyun }
44*4882a593Smuzhiyun 
ncsi_vlan_rx_kill_vid(struct net_device * dev,__be16 proto,u16 vid)45*4882a593Smuzhiyun static inline int ncsi_vlan_rx_kill_vid(struct net_device *dev, __be16 proto, u16 vid)
46*4882a593Smuzhiyun {
47*4882a593Smuzhiyun 	return -EINVAL;
48*4882a593Smuzhiyun }
49*4882a593Smuzhiyun 
ncsi_register_dev(struct net_device * dev,void (* notifier)(struct ncsi_dev * nd))50*4882a593Smuzhiyun static inline struct ncsi_dev *ncsi_register_dev(struct net_device *dev,
51*4882a593Smuzhiyun 					void (*notifier)(struct ncsi_dev *nd))
52*4882a593Smuzhiyun {
53*4882a593Smuzhiyun 	return NULL;
54*4882a593Smuzhiyun }
55*4882a593Smuzhiyun 
ncsi_start_dev(struct ncsi_dev * nd)56*4882a593Smuzhiyun static inline int ncsi_start_dev(struct ncsi_dev *nd)
57*4882a593Smuzhiyun {
58*4882a593Smuzhiyun 	return -ENOTTY;
59*4882a593Smuzhiyun }
60*4882a593Smuzhiyun 
ncsi_stop_dev(struct ncsi_dev * nd)61*4882a593Smuzhiyun static void ncsi_stop_dev(struct ncsi_dev *nd)
62*4882a593Smuzhiyun {
63*4882a593Smuzhiyun }
64*4882a593Smuzhiyun 
ncsi_unregister_dev(struct ncsi_dev * nd)65*4882a593Smuzhiyun static inline void ncsi_unregister_dev(struct ncsi_dev *nd)
66*4882a593Smuzhiyun {
67*4882a593Smuzhiyun }
68*4882a593Smuzhiyun #endif /* CONFIG_NET_NCSI */
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun #endif /* __NET_NCSI_H */
71