• Peiyang Wang's avatar
    net: hns3: using user configure after hardware reset · 05eb60e9
    Peiyang Wang authored
    When a reset occurring, it's supposed to recover user's configuration.
    Currently, the port info(speed, duplex and autoneg) is stored in hclge_mac
    and will be scheduled updated. Consider the case that reset was happened
    consecutively. During the first reset, the port info is configured with
    a temporary value cause the PHY is reset and looking for best link config.
    Second reset start and use pervious configuration which is not the user's.
    The specific process is as follows:
    
    +------+               +----+                +----+
    | USER |               | PF |                | HW |
    +---+--+               +-+--+                +-+--+
        |  ethtool --reset   |                     |
        +------------------->|    reset command    |
        |  ethtool --reset   +-------------------->|
        +------------------->|                     +---+
        |                    +---+                 |   |
        |                    |   |reset currently  |   | HW RESET
        |                    |   |and wait to do   |   |
        |                    |<--+                 |   |
        |                    | send pervious cfg   |<--+
        |                    | (1000M FULL AN_ON)  |
        |                    +-------------------->|
        |                    | read cfg(time task) |
        |                    | (10M HALF AN_OFF)   +---+
        |                    |<--------------------+   | cfg take effect
        |                    |    reset command    |<--+
        |                    +-------------------->|
        |                    |                     +---+
        |                    | send pervious cfg   |   | HW RESET
        |                    | (10M HALF AN_OFF)   |<--+
        |                    +-------------------->|
        |                    | read cfg(time task) |
        |                    |  (10M HALF AN_OFF)  +---+
        |                    |<--------------------+   | cfg take effect
        |                    |                     |   |
        |                    | read cfg(time task) |<--+
        |                    |  (10M HALF AN_OFF)  |
        |                    |<--------------------+
        |                    |                     |
        v                    v                     v
    
    To avoid aboved situation, this patch introduced req_speed, req_duplex,
    req_autoneg to store user's configuration and it only be used after
    hardware reset and to recover user's configuration
    
    Fixes: f5f2b3e4 ("net: hns3: add support for imp-controlled PHYs")
    Signed-off-by: default avatarPeiyang Wang <wangpeiyang1@huawei.com>
    Signed-off-by: default avatarJijie Shao <shaojijie@huawei.com>
    Reviewed-by: default avatarPrzemek Kitszel <przemyslaw.kitszel@intel.com>
    Reviewed-by: default avatarSimon Horman <horms@kernel.org>
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    05eb60e9
hclge_main.c 345 KB