xref: /openbmc/linux/net/atm/mpc.h (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
21da177e4SLinus Torvalds #ifndef _MPC_H_
31da177e4SLinus Torvalds #define _MPC_H_
41da177e4SLinus Torvalds 
51da177e4SLinus Torvalds #include <linux/types.h>
61da177e4SLinus Torvalds #include <linux/atm.h>
71da177e4SLinus Torvalds #include <linux/atmmpc.h>
81da177e4SLinus Torvalds #include <linux/skbuff.h>
91da177e4SLinus Torvalds #include <linux/spinlock.h>
101da177e4SLinus Torvalds #include "mpoa_caches.h"
111da177e4SLinus Torvalds 
121da177e4SLinus Torvalds /* kernel -> mpc-daemon */
131da177e4SLinus Torvalds int msg_to_mpoad(struct k_message *msg, struct mpoa_client *mpc);
141da177e4SLinus Torvalds 
151da177e4SLinus Torvalds struct mpoa_client {
161da177e4SLinus Torvalds 	struct mpoa_client *next;
171da177e4SLinus Torvalds 	struct net_device *dev;      /* lec in question                     */
181da177e4SLinus Torvalds 	int dev_num;                 /* e.g. 2 for lec2                     */
19788dee0aSStephen Hemminger 
201da177e4SLinus Torvalds 	struct atm_vcc *mpoad_vcc;   /* control channel to mpoad            */
211da177e4SLinus Torvalds 	uint8_t mps_ctrl_addr[ATM_ESA_LEN];  /* MPS control ATM address     */
221da177e4SLinus Torvalds 	uint8_t our_ctrl_addr[ATM_ESA_LEN];  /* MPC's control ATM address   */
231da177e4SLinus Torvalds 
241da177e4SLinus Torvalds 	rwlock_t ingress_lock;
254dd191bbSJulia Lawall 	const struct in_cache_ops *in_ops; /* ingress cache operations      */
261da177e4SLinus Torvalds 	in_cache_entry *in_cache;    /* the ingress cache of this MPC       */
271da177e4SLinus Torvalds 
281da177e4SLinus Torvalds 	rwlock_t egress_lock;
294dd191bbSJulia Lawall 	const struct eg_cache_ops *eg_ops; /* egress cache operations       */
301da177e4SLinus Torvalds 	eg_cache_entry *eg_cache;    /* the egress  cache of this MPC       */
311da177e4SLinus Torvalds 
321da177e4SLinus Torvalds 	uint8_t *mps_macs;           /* array of MPS MAC addresses, >=1     */
331da177e4SLinus Torvalds 	int number_of_mps_macs;      /* number of the above MAC addresses   */
341da177e4SLinus Torvalds 	struct mpc_parameters parameters;  /* parameters for this client    */
35788dee0aSStephen Hemminger 
36788dee0aSStephen Hemminger 	const struct net_device_ops *old_ops;
37788dee0aSStephen Hemminger 	struct net_device_ops new_ops;
381da177e4SLinus Torvalds };
391da177e4SLinus Torvalds 
401da177e4SLinus Torvalds 
411da177e4SLinus Torvalds struct atm_mpoa_qos {
421da177e4SLinus Torvalds 	struct atm_mpoa_qos *next;
4330d492daSAl Viro 	__be32 ipaddr;
441da177e4SLinus Torvalds 	struct atm_qos qos;
451da177e4SLinus Torvalds };
461da177e4SLinus Torvalds 
471da177e4SLinus Torvalds 
481da177e4SLinus Torvalds /* MPOA QoS operations */
4930d492daSAl Viro struct atm_mpoa_qos *atm_mpoa_add_qos(__be32 dst_ip, struct atm_qos *qos);
5030d492daSAl Viro struct atm_mpoa_qos *atm_mpoa_search_qos(__be32 dst_ip);
511da177e4SLinus Torvalds int atm_mpoa_delete_qos(struct atm_mpoa_qos *qos);
521da177e4SLinus Torvalds 
531da177e4SLinus Torvalds /* Display QoS entries. This is for the procfs */
541da177e4SLinus Torvalds struct seq_file;
551da177e4SLinus Torvalds void atm_mpoa_disp_qos(struct seq_file *m);
561da177e4SLinus Torvalds 
5769263bcfSAdrian Bunk #ifdef CONFIG_PROC_FS
5869263bcfSAdrian Bunk int mpc_proc_init(void);
5969263bcfSAdrian Bunk void mpc_proc_clean(void);
6069263bcfSAdrian Bunk #else
6169263bcfSAdrian Bunk #define mpc_proc_init() (0)
6269263bcfSAdrian Bunk #define mpc_proc_clean() do { } while(0)
6369263bcfSAdrian Bunk #endif
6469263bcfSAdrian Bunk 
651da177e4SLinus Torvalds #endif /* _MPC_H_ */
66