~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/net/bond_3ad.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/net/bond_3ad.h (Version linux-6.12-rc7) and /include/net/bond_3ad.h (Version linux-2.6.0)


  1 /* SPDX-License-Identifier: GPL-2.0-or-later *      1 
  2 /*                                                
  3  * Copyright(c) 1999 - 2004 Intel Corporation.    
  4  */                                               
  5                                                   
  6 #ifndef _NET_BOND_3AD_H                           
  7 #define _NET_BOND_3AD_H                           
  8                                                   
  9 #include <asm/byteorder.h>                        
 10 #include <linux/skbuff.h>                         
 11 #include <linux/netdevice.h>                      
 12 #include <linux/if_ether.h>                       
 13                                                   
 14 /* General definitions */                         
 15 #define PKT_TYPE_LACPDU         cpu_to_be16(ET    
 16 #define AD_TIMER_INTERVAL       100 /*msec*/      
 17                                                   
 18 #define AD_LACP_SLOW 0                            
 19 #define AD_LACP_FAST 1                            
 20                                                   
 21 typedef struct mac_addr {                         
 22         u8 mac_addr_value[ETH_ALEN];              
 23 } __packed mac_addr_t;                            
 24                                                   
 25 enum {                                            
 26         BOND_AD_STABLE = 0,                       
 27         BOND_AD_BANDWIDTH = 1,                    
 28         BOND_AD_COUNT = 2,                        
 29 };                                                
 30                                                   
 31 /* rx machine states(43.4.11 in the 802.3ad st    
 32 typedef enum {                                    
 33         AD_RX_DUMMY,                              
 34         AD_RX_INITIALIZE,       /* rx Machine     
 35         AD_RX_PORT_DISABLED,    /* rx Machine     
 36         AD_RX_LACP_DISABLED,    /* rx Machine     
 37         AD_RX_EXPIRED,          /* rx Machine     
 38         AD_RX_DEFAULTED,        /* rx Machine     
 39         AD_RX_CURRENT           /* rx Machine     
 40 } rx_states_t;                                    
 41                                                   
 42 /* periodic machine states(43.4.12 in the 802.    
 43 typedef enum {                                    
 44         AD_PERIODIC_DUMMY,                        
 45         AD_NO_PERIODIC,         /* periodic ma    
 46         AD_FAST_PERIODIC,       /* periodic ma    
 47         AD_SLOW_PERIODIC,       /* periodic ma    
 48         AD_PERIODIC_TX          /* periodic ma    
 49 } periodic_states_t;                              
 50                                                   
 51 /* mux machine states(43.4.13 in the 802.3ad s    
 52 typedef enum {                                    
 53         AD_MUX_DUMMY,                             
 54         AD_MUX_DETACHED,        /* mux machine    
 55         AD_MUX_WAITING,         /* mux machine    
 56         AD_MUX_ATTACHED,        /* mux machine    
 57         AD_MUX_COLLECTING,      /* mux machine    
 58         AD_MUX_DISTRIBUTING,    /* mux machine    
 59         AD_MUX_COLLECTING_DISTRIBUTING  /* mux    
 60 } mux_states_t;                                   
 61                                                   
 62 /* tx machine states(43.4.15 in the 802.3ad st    
 63 typedef enum {                                    
 64         AD_TX_DUMMY,                              
 65         AD_TRANSMIT             /* tx Machine     
 66 } tx_states_t;                                    
 67                                                   
 68 /* churn machine states(43.4.17 in the 802.3ad    
 69 typedef enum {                                    
 70          AD_CHURN_MONITOR, /* monitoring for c    
 71          AD_CHURN,         /* churn detected (    
 72          AD_NO_CHURN       /* no churn (no err    
 73 } churn_state_t;                                  
 74                                                   
 75 /* rx indication types */                         
 76 typedef enum {                                    
 77         AD_TYPE_LACPDU = 1,     /* type lacpdu    
 78         AD_TYPE_MARKER          /* type marker    
 79 } pdu_type_t;                                     
 80                                                   
 81 /* rx marker indication types */                  
 82 typedef enum {                                    
 83         AD_MARKER_INFORMATION_SUBTYPE = 1,        
 84         AD_MARKER_RESPONSE_SUBTYPE                
 85 } bond_marker_subtype_t;                          
 86                                                   
 87 /* timers types(43.4.9 in the 802.3ad standard    
 88 typedef enum {                                    
 89         AD_CURRENT_WHILE_TIMER,                   
 90         AD_ACTOR_CHURN_TIMER,                     
 91         AD_PERIODIC_TIMER,                        
 92         AD_PARTNER_CHURN_TIMER,                   
 93         AD_WAIT_WHILE_TIMER                       
 94 } ad_timers_t;                                    
 95                                                   
 96 #pragma pack(1)                                   
 97                                                   
 98 /* Link Aggregation Control Protocol(LACP) dat    
 99 typedef struct lacpdu {                           
100         u8 subtype;             /* = LACP(= 0x    
101         u8 version_number;                        
102         u8 tlv_type_actor_info; /* = actor inf    
103         u8 actor_information_length;    /* = 2    
104         __be16 actor_system_priority;             
105         struct mac_addr actor_system;             
106         __be16 actor_key;                         
107         __be16 actor_port_priority;               
108         __be16 actor_port;                        
109         u8 actor_state;                           
110         u8 reserved_3_1[3];             /* = 0    
111         u8 tlv_type_partner_info;       /* = p    
112         u8 partner_information_length;  /* = 2    
113         __be16 partner_system_priority;           
114         struct mac_addr partner_system;           
115         __be16 partner_key;                       
116         __be16 partner_port_priority;             
117         __be16 partner_port;                      
118         u8 partner_state;                         
119         u8 reserved_3_2[3];             /* = 0    
120         u8 tlv_type_collector_info;     /* = c    
121         u8 collector_information_length;/* = 1    
122         __be16 collector_max_delay;               
123         u8 reserved_12[12];                       
124         u8 tlv_type_terminator;         /* = t    
125         u8 terminator_length;           /* = 0    
126         u8 reserved_50[50];             /* = 0    
127 } __packed lacpdu_t;                              
128                                                   
129 typedef struct lacpdu_header {                    
130         struct ethhdr hdr;                        
131         struct lacpdu lacpdu;                     
132 } __packed lacpdu_header_t;                       
133                                                   
134 /* Marker Protocol Data Unit(PDU) structure(43    
135 typedef struct bond_marker {                      
136         u8 subtype;             /* = 0x02  (ma    
137         u8 version_number;      /* = 0x01 */      
138         u8 tlv_type;            /* = 0x01  (ma    
139         /* = 0x02  (marker response informatio    
140         u8 marker_length;       /* = 0x16 */      
141         u16 requester_port;     /* The number     
142         struct mac_addr requester_system;         
143         u32 requester_transaction_id;             
144         u16 pad;                /* = 0 */         
145         u8 tlv_type_terminator; /* = 0x00 */      
146         u8 terminator_length;   /* = 0x00 */      
147         u8 reserved_90[90];     /* = 0 */         
148 } __packed bond_marker_t;                         
149                                                   
150 typedef struct bond_marker_header {               
151         struct ethhdr hdr;                        
152         struct bond_marker marker;                
153 } __packed bond_marker_header_t;                  
154                                                   
155 #pragma pack()                                    
156                                                   
157 struct slave;                                     
158 struct bonding;                                   
159 struct ad_info;                                   
160 struct port;                                      
161                                                   
162 #ifdef __ia64__                                   
163 #pragma pack(8)                                   
164 #endif                                            
165                                                   
166 struct bond_3ad_stats {                           
167         atomic64_t lacpdu_rx;                     
168         atomic64_t lacpdu_tx;                     
169         atomic64_t lacpdu_unknown_rx;             
170         atomic64_t lacpdu_illegal_rx;             
171                                                   
172         atomic64_t marker_rx;                     
173         atomic64_t marker_tx;                     
174         atomic64_t marker_resp_rx;                
175         atomic64_t marker_resp_tx;                
176         atomic64_t marker_unknown_rx;             
177 };                                                
178                                                   
179 /* aggregator structure(43.4.5 in the 802.3ad     
180 typedef struct aggregator {                       
181         struct mac_addr aggregator_mac_address    
182         u16 aggregator_identifier;                
183         bool is_individual;                       
184         u16 actor_admin_aggregator_key;           
185         u16 actor_oper_aggregator_key;            
186         struct mac_addr partner_system;           
187         u16 partner_system_priority;              
188         u16 partner_oper_aggregator_key;          
189         u16 receive_state;      /* BOOLEAN */     
190         u16 transmit_state;     /* BOOLEAN */     
191         struct port *lag_ports;                   
192         /* ****** PRIVATE PARAMETERS ****** */    
193         struct slave *slave;    /* pointer to     
194         u16 is_active;          /* BOOLEAN. In    
195         u16 num_of_ports;                         
196 } aggregator_t;                                   
197                                                   
198 struct port_params {                              
199         struct mac_addr system;                   
200         u16 system_priority;                      
201         u16 key;                                  
202         u16 port_number;                          
203         u16 port_priority;                        
204         u16 port_state;                           
205 };                                                
206                                                   
207 /* port structure(43.4.6 in the 802.3ad standa    
208 typedef struct port {                             
209         u16 actor_port_number;                    
210         u16 actor_port_priority;                  
211         struct mac_addr actor_system;   /* Thi    
212         u16 actor_system_priority;      /* Thi    
213         u16 actor_port_aggregator_identifier;     
214         bool ntt;                                 
215         u16 actor_admin_port_key;                 
216         u16 actor_oper_port_key;                  
217         u8 actor_admin_port_state;                
218         u8 actor_oper_port_state;                 
219                                                   
220         struct port_params partner_admin;         
221         struct port_params partner_oper;          
222                                                   
223         bool is_enabled;                          
224                                                   
225         /* ****** PRIVATE PARAMETERS ****** */    
226         u16 sm_vars;            /* all state m    
227         rx_states_t sm_rx_state;        /* sta    
228         u16 sm_rx_timer_counter;        /* sta    
229         periodic_states_t sm_periodic_state;      
230         u16 sm_periodic_timer_counter;  /* sta    
231         mux_states_t sm_mux_state;      /* sta    
232         u16 sm_mux_timer_counter;       /* sta    
233         tx_states_t sm_tx_state;        /* sta    
234         u16 sm_tx_timer_counter;        /* sta    
235                                          * (al    
236                                          *  st    
237                                          */       
238         u16 sm_churn_actor_timer_counter;         
239         u16 sm_churn_partner_timer_counter;       
240         u32 churn_actor_count;                    
241         u32 churn_partner_count;                  
242         churn_state_t sm_churn_actor_state;       
243         churn_state_t sm_churn_partner_state;     
244         struct slave *slave;            /* poi    
245         struct aggregator *aggregator;  /* poi    
246         struct port *next_port_in_aggregator;     
247         u32 transaction_id;             /* con    
248         struct lacpdu lacpdu;           /* the    
249 } port_t;                                         
250                                                   
251 /* system structure */                            
252 struct ad_system {                                
253         u16 sys_priority;                         
254         struct mac_addr sys_mac_addr;             
255 };                                                
256                                                   
257 #ifdef __ia64__                                   
258 #pragma pack()                                    
259 #endif                                            
260                                                   
261 /* ========== AD Exported structures to the ma    
262 #define BOND_AD_INFO(bond)   ((bond)->ad_info)    
263 #define SLAVE_AD_INFO(slave) ((slave)->ad_info    
264                                                   
265 struct ad_bond_info {                             
266         struct ad_system system;        /* 802    
267         struct bond_3ad_stats stats;              
268         atomic_t agg_select_timer;                
269         u16 aggregator_identifier;                
270 };                                                
271                                                   
272 struct ad_slave_info {                            
273         struct aggregator aggregator;   /* 802    
274         struct port port;               /* 802    
275         struct bond_3ad_stats stats;              
276         u16 id;                                   
277 };                                                
278                                                   
279 static inline const char *bond_3ad_churn_desc(    
280 {                                                 
281         static const char *const churn_descrip    
282                 "monitoring",                     
283                 "churned",                        
284                 "none",                           
285                 "unknown"                         
286         };                                        
287         int max_size = ARRAY_SIZE(churn_descri    
288                                                   
289         if (state >= max_size)                    
290                 state = max_size - 1;             
291                                                   
292         return churn_description[state];          
293 }                                                 
294                                                   
295 /* ========== AD Exported functions to the mai    
296 void bond_3ad_initialize(struct bonding *bond)    
297 void bond_3ad_bind_slave(struct slave *slave);    
298 void bond_3ad_unbind_slave(struct slave *slave    
299 void bond_3ad_state_machine_handler(struct wor    
300 void bond_3ad_initiate_agg_selection(struct bo    
301 void bond_3ad_adapter_speed_duplex_changed(str    
302 void bond_3ad_handle_link_change(struct slave     
303 int  bond_3ad_get_active_agg_info(struct bondi    
304 int  __bond_3ad_get_active_agg_info(struct bon    
305                                     struct ad_    
306 int bond_3ad_lacpdu_recv(const struct sk_buff     
307                          struct slave *slave);    
308 int bond_3ad_set_carrier(struct bonding *bond)    
309 void bond_3ad_update_lacp_rate(struct bonding     
310 void bond_3ad_update_ad_actor_settings(struct     
311 int bond_3ad_stats_fill(struct sk_buff *skb, s    
312 size_t bond_3ad_stats_size(void);                 
313 #endif /* _NET_BOND_3AD_H */                      
314                                                   
315                                                   

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php