• Vladimir Oltean's avatar
    net: dpaa2-switch: disable the control interface on error path · cd0a719f
    Vladimir Oltean authored
    Currently dpaa2_switch_takedown has a funny name and does not do the
    opposite of dpaa2_switch_init, which makes probing fail when we need to
    handle an -EPROBE_DEFER.
    
    A sketch of what dpaa2_switch_init does:
    
    	dpsw_open
    
    	dpaa2_switch_detect_features
    
    	dpsw_reset
    
    	for (i = 0; i < ethsw->sw_attr.num_ifs; i++) {
    		dpsw_if_disable
    
    		dpsw_if_set_stp
    
    		dpsw_vlan_remove_if_untagged
    
    		dpsw_if_set_tci
    
    		dpsw_vlan_remove_if
    	}
    
    	dpsw_vlan_remove
    
    	alloc_ordered_workqueue
    
    	dpsw_fdb_remove
    
    	dpaa2_switch_ctrl_if_setup
    
    When dpaa2_switch_takedown is called from the error path of
    dpaa2_switch_probe(), the control interface, enabled by
    dpaa2_switch_ctrl_if_setup from dpaa2_switch_init, remains enabled,
    because dpaa2_switch_takedown does not call
    dpaa2_switch_ctrl_if_teardown.
    
    Since dpaa2_switch_probe might fail due to EPROBE_DEFER of a PHY, this
    means that a second probe of the driver will happen with the control
    interface directly enabled.
    
    This will trigger a second error:
    
    [   93.273528] fsl_dpaa2_switch dpsw.0: dpsw_ctrl_if_set_pools() failed
    [   93.281966] fsl_dpaa2_switch dpsw.0: fsl_mc_driver_probe failed: -13
    [   93.288323] fsl_dpaa2_switch: probe of dpsw.0 failed with error -13
    
    Which if we investigate the /dev/dpaa2_mc_console log, we find out is
    caused by:
    
    [E, ctrl_if_set_pools:2211, DPMNG]  ctrl_if must be disabled
    
    So make dpaa2_switch_takedown do the opposite of dpaa2_switch_init (in
    reasonable limits, no reason to change STP state, re-add VLANs etc), and
    rename it to something more conventional, like dpaa2_switch_teardown.
    
    Fixes: 613c0a58 ("staging: dpaa2-switch: enable the control interface")
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Reviewed-by: default avatarIoana Ciornei <ioana.ciornei@nxp.com>
    Link: https://lore.kernel.org/r/20210819141755.1931423-1-vladimir.oltean@nxp.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    cd0a719f
dpaa2-switch.c 84.5 KB