11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef _MPC_H_ 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _MPC_H_ 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/types.h> 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/atm.h> 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/atmmpc.h> 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/skbuff.h> 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/spinlock.h> 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include "mpoa_caches.h" 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* kernel -> mpc-daemon */ 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint msg_to_mpoad(struct k_message *msg, struct mpoa_client *mpc); 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct mpoa_client { 15f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki struct mpoa_client *next; 16f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki struct net_device *dev; /* lec in question */ 17f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki int dev_num; /* e.g. 2 for lec2 */ 18788dee0a954745a182f9341539e5e0fe874b48fcStephen Hemminger 19f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki struct atm_vcc *mpoad_vcc; /* control channel to mpoad */ 20f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki uint8_t mps_ctrl_addr[ATM_ESA_LEN]; /* MPS control ATM address */ 21f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki uint8_t our_ctrl_addr[ATM_ESA_LEN]; /* MPC's control ATM address */ 22f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki 23f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki rwlock_t ingress_lock; 24f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki struct in_cache_ops *in_ops; /* ingress cache operations */ 25f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki in_cache_entry *in_cache; /* the ingress cache of this MPC */ 26f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki 27f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki rwlock_t egress_lock; 28f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki struct eg_cache_ops *eg_ops; /* egress cache operations */ 29f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki eg_cache_entry *eg_cache; /* the egress cache of this MPC */ 30f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki 31f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki uint8_t *mps_macs; /* array of MPS MAC addresses, >=1 */ 32f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki int number_of_mps_macs; /* number of the above MAC addresses */ 33f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki struct mpc_parameters parameters; /* parameters for this client */ 34788dee0a954745a182f9341539e5e0fe874b48fcStephen Hemminger 35788dee0a954745a182f9341539e5e0fe874b48fcStephen Hemminger const struct net_device_ops *old_ops; 36788dee0a954745a182f9341539e5e0fe874b48fcStephen Hemminger struct net_device_ops new_ops; 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct atm_mpoa_qos { 41f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki struct atm_mpoa_qos *next; 42f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki __be32 ipaddr; 43f7d57453d20e27de69ecafd121005e9d13a0f427YOSHIFUJI Hideaki struct atm_qos qos; 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* MPOA QoS operations */ 4830d492da738a8d5f4ec884b3e1a13eef97714994Al Virostruct atm_mpoa_qos *atm_mpoa_add_qos(__be32 dst_ip, struct atm_qos *qos); 4930d492da738a8d5f4ec884b3e1a13eef97714994Al Virostruct atm_mpoa_qos *atm_mpoa_search_qos(__be32 dst_ip); 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint atm_mpoa_delete_qos(struct atm_mpoa_qos *qos); 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Display QoS entries. This is for the procfs */ 531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct seq_file; 541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid atm_mpoa_disp_qos(struct seq_file *m); 551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5669263bcfb5016bc3bdd099607a4232cba06f8491Adrian Bunk#ifdef CONFIG_PROC_FS 5769263bcfb5016bc3bdd099607a4232cba06f8491Adrian Bunkint mpc_proc_init(void); 5869263bcfb5016bc3bdd099607a4232cba06f8491Adrian Bunkvoid mpc_proc_clean(void); 5969263bcfb5016bc3bdd099607a4232cba06f8491Adrian Bunk#else 6069263bcfb5016bc3bdd099607a4232cba06f8491Adrian Bunk#define mpc_proc_init() (0) 6169263bcfb5016bc3bdd099607a4232cba06f8491Adrian Bunk#define mpc_proc_clean() do { } while(0) 6269263bcfb5016bc3bdd099607a4232cba06f8491Adrian Bunk#endif 6369263bcfb5016bc3bdd099607a4232cba06f8491Adrian Bunk 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* _MPC_H_ */ 65