Beispiel #1
0
static void uct_ud_mlx5_iface_progress(void *arg)
{
    uct_ud_mlx5_iface_t *iface = arg;
    ucs_status_t status;

    uct_ud_enter(&iface->super);
    status = uct_ud_mlx5_iface_poll_rx(iface);
    if (status == UCS_ERR_NO_PROGRESS) {
        uct_ud_mlx5_iface_poll_tx(iface);
    }
    uct_ud_iface_progress_pending(&iface->super, 0);
    uct_ud_leave(&iface->super);
}
Beispiel #2
0
static void uct_ud_mlx5_iface_async_progress(void *arg)
{
    uct_ud_mlx5_iface_t *iface = arg;
    ucs_status_t status;

    do {
        status = uct_ud_mlx5_iface_poll_rx(iface);
    } while (status == UCS_OK);

    uct_ud_mlx5_iface_poll_tx(iface);
    uct_ud_iface_progress_pending(&iface->super, 1);

}
Beispiel #3
0
static void uct_ud_mlx5_iface_progress(void *arg)
{
    uct_ud_mlx5_iface_t *iface = arg;
    ucs_status_t status;

    status = uct_ud_mlx5_iface_poll_rx(iface);
    if (status == UCS_ERR_NO_PROGRESS) {
        uct_ud_mlx5_iface_poll_tx(iface);
    }
    if (uct_ud_iface_has_pending(&iface->super)) {
        uct_ud_iface_progress_pending(&iface->super, uct_ud_mlx5_ep_tx_ctl_skb);
    }
}