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

Commit 58e34003 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "net: qrtr: avoid calling node lookup from rx worker"

parents 1cf0b9b5 2b267b35
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -919,14 +919,12 @@ static bool qrtr_must_forward(struct qrtr_node *src,
	return false;
}

static void qrtr_fwd_ctrl_pkt(struct sk_buff *skb)
static void qrtr_fwd_ctrl_pkt(struct qrtr_node *src, struct sk_buff *skb)
{
	struct qrtr_node *node;
	struct qrtr_node *src;
	struct qrtr_cb *cb = (struct qrtr_cb *)skb->cb;

	qrtr_skb_align_linearize(skb);
	src = qrtr_node_lookup(cb->src_node);
	down_read(&qrtr_node_lock);
	list_for_each_entry(node, &qrtr_all_epts, item) {
		struct sockaddr_qrtr from;
@@ -951,7 +949,6 @@ static void qrtr_fwd_ctrl_pkt(struct sk_buff *skb)
		qrtr_node_enqueue(node, skbn, cb->type, &from, &to, 0);
	}
	up_read(&qrtr_node_lock);
	qrtr_node_release(src);
}

static void qrtr_fwd_pkt(struct sk_buff *skb, struct qrtr_cb *cb)
@@ -987,7 +984,7 @@ static void qrtr_node_rx_work(struct kthread_work *work)
		qrtr_node_assign(node, cb->src_node);

		if (cb->type != QRTR_TYPE_DATA)
			qrtr_fwd_ctrl_pkt(skb);
			qrtr_fwd_ctrl_pkt(node, skb);

		if (cb->type == QRTR_TYPE_NEW_SERVER &&
		    skb->len == sizeof(pkt)) {