port: switch PHC in jbod mode when in UNCALIBRATED or SLAVE state
In the (still downstream) patch "Add BMCA support for IEEE 802.1AS-2011", we are making ieee8021as_fsm() skip the UNCALIBRATED state. This means that the PHC on which the servo loop is applied will never be switched in JBOD mode. Make the switching logic take place either on a MASTER to SLAVE, or on a MASTER to UNCALIBRATED transition. Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
This commit is contained in:
		
							parent
							
								
									76657d6da3
								
							
						
					
					
						commit
						8001bd3c4e
					
				
							
								
								
									
										9
									
								
								port.c
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								port.c
									
									
									
									
									
								
							| @ -2597,6 +2597,8 @@ void port_dispatch(struct port *p, enum fsm_event event, int mdiff) | |||||||
| 
 | 
 | ||||||
| static void bc_dispatch(struct port *p, enum fsm_event event, int mdiff) | static void bc_dispatch(struct port *p, enum fsm_event event, int mdiff) | ||||||
| { | { | ||||||
|  | 	enum port_state switching_state; | ||||||
|  | 
 | ||||||
| 	if (clock_slave_only(p->clock)) { | 	if (clock_slave_only(p->clock)) { | ||||||
| 		if (event == EV_RS_MASTER || event == EV_RS_GRAND_MASTER) { | 		if (event == EV_RS_MASTER || event == EV_RS_GRAND_MASTER) { | ||||||
| 			port_slave_priority_warning(p); | 			port_slave_priority_warning(p); | ||||||
| @ -2613,7 +2615,12 @@ static void bc_dispatch(struct port *p, enum fsm_event event, int mdiff) | |||||||
| 		port_e2e_transition(p, p->state); | 		port_e2e_transition(p, p->state); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if (p->jbod && p->state == PS_UNCALIBRATED) { | 	if (port_is_ieee8021as(p)) | ||||||
|  | 		switching_state = PS_SLAVE; | ||||||
|  | 	else | ||||||
|  | 		switching_state = PS_UNCALIBRATED; | ||||||
|  | 
 | ||||||
|  | 	if (p->jbod && p->state == switching_state) { | ||||||
| 		if (clock_switch_phc(p->clock, p->phc_index)) { | 		if (clock_switch_phc(p->clock, p->phc_index)) { | ||||||
| 			p->last_fault_type = FT_SWITCH_PHC; | 			p->last_fault_type = FT_SWITCH_PHC; | ||||||
| 			port_dispatch(p, EV_FAULT_DETECTED, 0); | 			port_dispatch(p, EV_FAULT_DETECTED, 0); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user