Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6e48afd8 authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "drivers: net: rmnet: Priority callbacks"

parents 3b5766a8 0c1f43fb
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -110,6 +110,11 @@ struct rmnet_priv {
	void __rcu *qos_info;
};

enum rmnet_dl_marker_prio {
	RMNET_PERF,
	RMNET_SHS,
};

enum rmnet_trace_func {
	RMNET_MODULE,
	NW_STACK_MODULE,
+1 −0
Original line number Diff line number Diff line
@@ -115,6 +115,7 @@ struct rmnet_map_dl_ind_trl {
} __aligned(1);

struct rmnet_map_dl_ind {
	u8 priority;
	void (*dl_hdr_handler)(struct rmnet_map_dl_ind_hdr *);
	void (*dl_trl_handler)(struct rmnet_map_dl_ind_trl *);
	struct list_head list;
+28 −1
Original line number Diff line number Diff line
@@ -270,10 +270,37 @@ void rmnet_map_cmd_init(struct rmnet_port *port)
int rmnet_map_dl_ind_register(struct rmnet_port *port,
			      struct rmnet_map_dl_ind *dl_ind)
{
	struct rmnet_map_dl_ind *dl_ind_iterator;
	bool empty_ind_list = true;

	if (!port || !dl_ind || !dl_ind->dl_hdr_handler ||
	    !dl_ind->dl_trl_handler)
		return -EINVAL;

	list_for_each_entry_rcu(dl_ind_iterator, &port->dl_list, list) {
		empty_ind_list = false;
		if (dl_ind_iterator->priority < dl_ind->priority) {
			if (dl_ind_iterator->list.next) {
				if (dl_ind->priority
				    < list_entry_rcu(dl_ind_iterator->list.next,
				    typeof(*dl_ind_iterator), list)->priority) {
					list_add_rcu(&dl_ind->list,
						     &dl_ind_iterator->list);
					break;
				}
			} else {
				list_add_rcu(&dl_ind->list,
					     &dl_ind_iterator->list);
				break;
			}
		} else {
			list_add_tail_rcu(&dl_ind->list,
					  &dl_ind_iterator->list);
			break;
		}
	}

	if (empty_ind_list)
		list_add_rcu(&dl_ind->list, &port->dl_list);

	return 0;