1 /* SPDX-License-Identifier: GPL-2.0 */ 1 2 /* 3 * Lan Emulation client header file 4 * 5 * Marko Kiiskila <mkiiskila@yahoo.com> 6 */ 7 8 #ifndef _LEC_H_ 9 #define _LEC_H_ 10 11 #include <linux/atmdev.h> 12 #include <linux/netdevice.h> 13 #include <linux/atmlec.h> 14 15 #define LEC_HEADER_LEN 16 16 17 struct lecdatahdr_8023 { 18 __be16 le_header; 19 unsigned char h_dest[ETH_ALEN]; 20 unsigned char h_source[ETH_ALEN]; 21 __be16 h_type; 22 }; 23 24 struct lecdatahdr_8025 { 25 __be16 le_header; 26 unsigned char ac_pad; 27 unsigned char fc; 28 unsigned char h_dest[ETH_ALEN]; 29 unsigned char h_source[ETH_ALEN]; 30 }; 31 32 #define LEC_MINIMUM_8023_SIZE 62 33 #define LEC_MINIMUM_8025_SIZE 16 34 35 /* 36 * Operations that LANE2 capable device can do 37 * are used to make the device do things. See 38 * 39 * The third function is intended for the MPOA 40 * top of the LANE device. The MPOA component 41 * to (*associate_indicator)() and the LANE de 42 * function to tell about TLVs it sees floatin 43 * 44 */ 45 struct lane2_ops { 46 int (*resolve) (struct net_device *dev 47 u8 **tlvs, u32 *sizeof 48 int (*associate_req) (struct net_devic 49 const u8 *tlvs, 50 void (*associate_indicator) (struct ne 51 const u8 52 }; 53 54 /* 55 * ATM LAN Emulation supports both LLC & Dix E 56 * frames. 57 * 58 * 1. Dix Ethernet EtherType frames encoded by 59 * field in h_type field. Data follows imme 60 * 2. LLC Data frames whose total length, incl 61 * but not padding required to meet the min 62 * is less than ETH_P_802_3_MIN MUST be enc 63 * in the h_type field. The LLC field follo 64 * 3. LLC data frames longer than this maximum 65 * the value 0 in the h_type field. 66 * 67 */ 68 69 /* Hash table size */ 70 #define LEC_ARP_TABLE_SIZE 16 71 72 struct lec_priv { 73 unsigned short lecid; 74 struct hlist_head lec_arp_empty_ones; 75 76 struct hlist_head lec_arp_tables[LEC_A 77 78 struct hlist_head lec_no_forward; 79 80 81 82 83 84 85 struct hlist_head mcast_fwds; 86 87 88 89 90 91 92 spinlock_t lec_arp_lock; 93 struct atm_vcc *mcast_vcc; 94 struct atm_vcc *lecd; 95 struct delayed_work lec_arp_work; 96 unsigned int maximum_unknown_frame_cou 97 98 99 100 101 unsigned long max_unknown_frame_time; 102 103 104 105 106 unsigned long vcc_timeout_period; 107 108 109 110 111 112 unsigned short max_retry_count; 113 114 115 116 117 unsigned long aging_time; 118 119 120 121 122 unsigned long forward_delay_time; 123 int topology_change; 124 125 126 127 128 unsigned long arp_response_time; 129 130 131 132 133 unsigned long flush_timeout; 134 135 136 137 138 unsigned long path_switching_delay; 139 140 u8 *tlvs; 141 u32 sizeoftlvs; 142 int lane_version; 143 int itfnum; 144 struct lane2_ops *lane2_ops; 145 int is_proxy; 146 }; 147 148 struct lec_vcc_priv { 149 void (*old_pop) (struct atm_vcc *vcc, 150 int xoff; 151 }; 152 153 #define LEC_VCC_PRIV(vcc) ((struct lec_v 154 155 #endif /* _LEC_H_ */ 156
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.