From b92521c119b5e3830648ff1b4879e55d8f146b52 Mon Sep 17 00:00:00 2001 From: Chris Lew Date: Fri, 29 Jun 2018 15:54:03 -0700 Subject: [PATCH] net: qrtr: Add node assignment on new server The remote processor will not forward a hello packet for the other processors that it is forwarding from. Discover nodes through QRTR_TYPE_NEW_SERVER messages as well in order to find remote hosts which require more than one hop to reach it. Change-Id: Ia79df1fa2730250786d221fb847029046a53bea4 Signed-off-by: Gustavo Solaira Signed-off-by: Chris Lew --- net/qrtr/qrtr.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/net/qrtr/qrtr.c b/net/qrtr/qrtr.c index b375bd73ec17..70e722932538 100644 --- a/net/qrtr/qrtr.c +++ b/net/qrtr/qrtr.c @@ -475,6 +475,7 @@ int qrtr_endpoint_post(struct qrtr_endpoint *ep, const void *data, size_t len) struct qrtr_node *node = ep->node; const struct qrtr_hdr_v1 *v1; const struct qrtr_hdr_v2 *v2; + struct qrtr_ctrl_pkt *pkt; struct qrtr_sock *ipc; struct sk_buff *skb; struct qrtr_cb *cb; @@ -545,6 +546,10 @@ int qrtr_endpoint_post(struct qrtr_endpoint *ep, const void *data, size_t len) skb_store_bits(skb, 0, data + hdrlen, size); qrtr_node_assign(node, cb->src_node); + if (cb->type == QRTR_TYPE_NEW_SERVER) { + pkt = (void *)data + hdrlen; + qrtr_node_assign(node, le32_to_cpu(pkt->server.node)); + } if (cb->type == QRTR_TYPE_RESUME_TX) { qrtr_tx_resume(node, skb);