net: qrtr: Do not call wait while holding spinlock
Do not call wait_for_completion holding spinlock inside qrtr_local_enqueue().This will result in disabling interrupts for long time if we did not get signal for rx_queue_has_space completion from qrtr_recvmsg() for control port. This wait mechanisim we added to avoid the packet drop issue via the control port for control packets where we are waiting for the space in the control socket using wait api's. this wait api will be signaled once control sock has some space. This patch will removes the wait inside spinlock. Change-Id: I469c860e1a016348235f11e1e21ed97743325773 Signed-off-by: Sivaji Boddupilli <quic_boddupil@quicinc.com> Signed-off-by: Linux Image Build Automation <quic_ibautomat@quicinc.com>
This commit is contained in:
parent
0a6cdea3d8
commit
4b977c48ea
@ -1480,13 +1480,12 @@ void qrtr_endpoint_unregister(struct qrtr_endpoint *ep)
|
||||
if (*slot != node)
|
||||
continue;
|
||||
src.sq_node = iter.index;
|
||||
skb = qrtr_alloc_ctrl_packet(&pkt, GFP_ATOMIC);
|
||||
spin_unlock_irqrestore(&qrtr_nodes_lock, flags);
|
||||
skb = qrtr_alloc_ctrl_packet(&pkt, GFP_KERNEL);
|
||||
if (skb) {
|
||||
pkt->cmd = cpu_to_le32(QRTR_TYPE_BYE);
|
||||
qrtr_local_enqueue(NULL, skb, QRTR_TYPE_BYE, &src, &dst, 0);
|
||||
}
|
||||
|
||||
spin_unlock_irqrestore(&qrtr_nodes_lock, flags);
|
||||
qrtr_fwd_del_proc(node, iter.index);
|
||||
spin_lock_irqsave(&qrtr_nodes_lock, flags);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user