Exemple #1
0
static struct ps_base *
rmt_ps_cas_create(struct rina_component * component)
{
        struct rmt * rmt = rmt_from_component(component);
        struct rmt_ps * ps = rkzalloc(sizeof(*ps), GFP_KERNEL);
        struct cas_rmt_ps_data * data = rkzalloc(sizeof(*data), GFP_KERNEL);

        if (!ps || !data) {
                return NULL;
        }

	/* FIXME: to be configured using rmt_config */
	data->q_max = 200;

        ps->base.set_policy_set_param = rmt_cas_set_policy_set_param;
        ps->dm = rmt;

        ps->priv = data;

        ps->rmt_q_create_policy = cas_rmt_q_create_policy;
        ps->rmt_q_destroy_policy = cas_rmt_q_destroy_policy;
        ps->rmt_enqueue_policy = cas_rmt_enqueue_policy;
        ps->rmt_dequeue_policy = cas_rmt_dequeue_policy;

        return &ps->base;
}
Exemple #2
0
/*
 * CREATE
 */
static struct ps_base * rmt_ps_deltaq_create(
		struct rina_component * component) {

	struct rmt * rmt = rmt_from_component(component);
	rmtdata_p ps = rkzalloc(sizeof(*ps), GFP_KERNEL);

	if (!ps) {
		return NULL;
	}

	ps->base.base.set_policy_set_param = rmt_ps_set_policy_set_param;
	ps->base.dm = rmt;
	ps->base.priv = NULL;

	ps->base.rmt_q_monitor_policy_rx = NULL;
	ps->base.max_q_policy_rx = NULL;

	/* Not used, in-drop at EFCP
	/*
	ps->base.rmt_scheduling_policy_rx = limiter_rx;
	* instead
	*/
	ps->base.rmt_scheduling_policy_rx = NULL;

	ps->base.rmt_q_monitor_policy_tx_enq = NULL;
	ps->base.rmt_enqueue_scheduling_policy_tx = enqueue_tx;
	ps->base.max_q_policy_tx = NULL;

	ps->base.rmt_next_scheduled_policy_tx = dequeue_tx;
	ps->base.rmt_q_monitor_policy_tx_deq = NULL;
	ps->base.rmt_requeue_scheduling_policy_tx = requeue_tx;
	ps->base.rmt_next_scheduled_policy_allownull = true;

	ps->base.rmt_scheduling_create_policy_tx = rmt_ps_deltaq_create;
	ps->base.rmt_scheduling_destroy_policy_tx = rmt_ps_deltaq_destroy;


	ps->portvals_begin = NULL;
	ps->qosparams_begin = NULL;

	ps->bufferST_begin = NULL;
	ps->bufferT_begin = NULL;
	ps->bufferPDU_begin = NULL;

	return &ps->base.base;
}
Exemple #3
0
static struct ps_base *
rmt_ps_default_create(struct rina_component * component)
{
        struct rmt * rmt = rmt_from_component(component);
        struct rmt_ps * ps = rkzalloc(sizeof(*ps), GFP_KERNEL);
        struct rmt_ps_data * data = rkzalloc(sizeof(*data), GFP_KERNEL);

        if (!ps || !data) {
                return NULL;
        }

        /* Allocate policy-set private data. */
        data->ss = rkzalloc(sizeof(*data->ss), GFP_KERNEL);
        if (!data->ss) {
                rkfree(ps);
                rkfree(data);
                return NULL;
        }
        data->outqs = rmt_queue_set_create();
        if (!data->outqs) {
                rkfree(data->ss);
                rkfree(ps);
                rkfree(data);
                return NULL;
        }
        ps->priv = data;

        ps->base.set_policy_set_param = rmt_ps_set_policy_set_param;
        ps->dm          = rmt;

        ps->max_q_policy_tx                  = default_max_q_policy_tx;
        ps->max_q_policy_rx                  = default_max_q_policy_rx;
        ps->rmt_q_monitor_policy_tx          = default_rmt_q_monitor_policy_tx;
        ps->rmt_q_monitor_policy_rx          = default_rmt_q_monitor_policy_rx;
        ps->rmt_next_scheduled_policy_tx     = default_rmt_next_scheduled_policy_tx;
        ps->rmt_enqueue_scheduling_policy_tx = default_rmt_enqueue_scheduling_policy_tx;
        ps->rmt_scheduling_policy_rx         = default_rmt_scheduling_policy_rx;
        ps->rmt_scheduling_create_policy_tx  = default_rmt_scheduling_create_policy_tx;
        ps->rmt_scheduling_destroy_policy_tx = default_rmt_scheduling_destroy_policy_tx;

        return &ps->base;
}
Exemple #4
0
static struct ps_base *
rmt_ps_skeleton_create(struct rina_component * component)
{
    struct rmt * rmt = rmt_from_component(component);
    struct rmt_ps * ps = rkzalloc(sizeof(*ps), GFP_KERNEL);

    if (!ps) {
        return NULL;
    }

    ps->base.set_policy_set_param = rmt_ps_set_policy_set_param;
    ps->dm = rmt;
    ps->priv = NULL;
    ps->max_q_policy_tx = skeleton_max_q_policy_tx;
    ps->max_q_policy_rx = skeleton_max_q_policy_rx;
    ps->rmt_q_monitor_policy_tx = skeleton_rmt_q_monitor_policy_tx;
    ps->rmt_q_monitor_policy_rx = skeleton_rmt_q_monitor_policy_rx;
    ps->rmt_next_scheduled_policy_tx     = skeleton_rmt_next_scheduled_policy_tx;
    ps->rmt_enqueue_scheduling_policy_tx = skeleton_rmt_enqueue_scheduling_policy_tx;
    ps->rmt_scheduling_create_policy_tx  = skeleton_rmt_scheduling_create_policy_tx;
    ps->rmt_scheduling_destroy_policy_tx = skeleton_rmt_scheduling_destroy_policy_tx;

    return &ps->base;
}