• Anatolii Gerasymenko's avatar
    ice: Do not skip not enabled queues in ice_vc_dis_qs_msg · 05ef6813
    Anatolii Gerasymenko authored
    Disable check for queue being enabled in ice_vc_dis_qs_msg, because
    there could be a case when queues were created, but were not enabled.
    We still need to delete those queues.
    
    Normal workflow for VF looks like:
    Enable path:
    VIRTCHNL_OP_ADD_ETH_ADDR (opcode 10)
    VIRTCHNL_OP_CONFIG_VSI_QUEUES (opcode 6)
    VIRTCHNL_OP_ENABLE_QUEUES (opcode 8)
    
    Disable path:
    VIRTCHNL_OP_DISABLE_QUEUES (opcode 9)
    VIRTCHNL_OP_DEL_ETH_ADDR (opcode 11)
    
    The issue appears only in stress conditions when VF is enabled and
    disabled very fast.
    Eventually there will be a case, when queues are created by
    VIRTCHNL_OP_CONFIG_VSI_QUEUES, but are not enabled by
    VIRTCHNL_OP_ENABLE_QUEUES.
    In turn, these queues are not deleted by VIRTCHNL_OP_DISABLE_QUEUES,
    because there is a check whether queues are enabled in
    ice_vc_dis_qs_msg.
    
    When we bring up the VF again, we will see the "Failed to set LAN Tx queue
    context" error during VIRTCHNL_OP_CONFIG_VSI_QUEUES step. This
    happens because old 16 queues were not deleted and VF requests to create
    16 more, but ice_sched_get_free_qparent in ice_ena_vsi_txq would fail to
    find a parent node for first newly requested queue (because all nodes
    are allocated to 16 old queues).
    
    Testing Hints:
    
    Just enable and disable VF fast enough, so it would be disabled before
    reaching VIRTCHNL_OP_ENABLE_QUEUES.
    
    while true; do
            ip link set dev ens785f0v0 up
            sleep 0.065 # adjust delay value for you machine
            ip link set dev ens785f0v0 down
    done
    
    Fixes: 77ca27c4 ("ice: add support for virtchnl_queue_select.[tx|rx]_queues bitmap")
    Signed-off-by: default avatarAnatolii Gerasymenko <anatolii.gerasymenko@intel.com>
    Tested-by: default avatarKonrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: default avatarAlice Michael <alice.michael@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    05ef6813
ice_virtchnl.c 106 KB