• Arkadiusz Kubalewski's avatar
    i40e: Add support for a new feature Total Port Shutdown · d5ec9e2c
    Arkadiusz Kubalewski authored
    After OS requests to down a link on a physical network port, the
    traffic is no longer being processed but the physical link with
    a link partner is still established.
    
    Currently there is a feature (Link down on close) which allows
    to physically bring the link down (after OS request).
    
    With this patch new feature with similar capability is introduced:
    TOTAL_PORT_SHUTDOWN
    Allows to physically disable the link on the NIC's port.
    If enabled, (after link down request from the OS)
    no link, traffic or led activity is possible on that port.
    
    If I40E_FLAG_TOTAL_PORT_SHUTDOWN is enabled, the
    I40E_FLAG_LINK_DOWN_ON_CLOSE_ENABLED must be explicitly forced to
    true and cannot be disabled at that time.
    The functionalities are exclusive in terms of configuration, but
    they also have similar behavior (allowing to disable physical link
    of the port), with following differences:
    - LINK_DOWN_ON_CLOSE_ENABLED is configurable at host OS run-time
      and is supported by whole family of 7xx Intel Ethernet Controllers
    - TOTAL_PORT_SHUTDOWN may be enabled only before OS loads (in BIOS)
      only if motherboard's BIOS and NIC's FW has support of it
    - when LINK_DOWN_ON_CLOSE_ENABLED is used, the link is being brought
      down by sending phy_type=0 to NIC's FW
    - when TOTAL_PORT_SHUTDOWN is used, phy_type is not altered, instead
      the link is being brought down by clearing bit
      (I40E_AQ_PHY_ENABLE_LINK) in abilities field of
      i40e_aq_set_phy_config structure
    
    Introduced changes:
    - new private flag I40E_FLAG_TOTAL_PORT_SHUTDOWN for handling the
      feature
    - probe of NVM if the feature was enabled at driver's port
      initialization
    - special handling on link-down procedure to let FW physically
      shutdown the port if the feature was enabled
    Signed-off-by: default avatarArkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
    Signed-off-by: default avatarAleksandr Loktionov <aleksandr.loktionov@intel.com>
    Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    d5ec9e2c
i40e_main.c 439 KB