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