net: qrtr: Refactor packet allocation
authorBjorn Andersson <bjorn.andersson@linaro.org>
Wed, 7 Jun 2017 21:07:36 +0000 (14:07 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 8 Jun 2017 15:34:56 +0000 (11:34 -0400)
Extract the allocation and filling in the control message header fields
to a separate function in order to reuse this in subsequent patches.

Cc: Courtney Cavin <ccavin@gmail.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/qrtr/qrtr.c

index a9a8c7d..86d35ed 100644 (file)
@@ -245,14 +245,11 @@ int qrtr_endpoint_post(struct qrtr_endpoint *ep, const void *data, size_t len)
 }
 EXPORT_SYMBOL_GPL(qrtr_endpoint_post);
 
-/* Allocate and construct a resume-tx packet. */
-static struct sk_buff *qrtr_alloc_resume_tx(u32 src_node,
-                                           u32 dst_node, u32 port)
+static struct sk_buff *qrtr_alloc_ctrl_packet(u32 type, size_t pkt_len,
+                                             u32 src_node, u32 dst_node)
 {
-       const int pkt_len = 20;
        struct qrtr_hdr *hdr;
        struct sk_buff *skb;
-       __le32 *buf;
 
        skb = alloc_skb(QRTR_HDR_SIZE + pkt_len, GFP_KERNEL);
        if (!skb)
@@ -261,7 +258,7 @@ static struct sk_buff *qrtr_alloc_resume_tx(u32 src_node,
 
        hdr = (struct qrtr_hdr *)skb_put(skb, QRTR_HDR_SIZE);
        hdr->version = cpu_to_le32(QRTR_PROTO_VER);
-       hdr->type = cpu_to_le32(QRTR_TYPE_RESUME_TX);
+       hdr->type = cpu_to_le32(type);
        hdr->src_node_id = cpu_to_le32(src_node);
        hdr->src_port_id = cpu_to_le32(QRTR_PORT_CTRL);
        hdr->confirm_rx = cpu_to_le32(0);
@@ -269,6 +266,22 @@ static struct sk_buff *qrtr_alloc_resume_tx(u32 src_node,
        hdr->dst_node_id = cpu_to_le32(dst_node);
        hdr->dst_port_id = cpu_to_le32(QRTR_PORT_CTRL);
 
+       return skb;
+}
+
+/* Allocate and construct a resume-tx packet. */
+static struct sk_buff *qrtr_alloc_resume_tx(u32 src_node,
+                                           u32 dst_node, u32 port)
+{
+       const int pkt_len = 20;
+       struct sk_buff *skb;
+       __le32 *buf;
+
+       skb = qrtr_alloc_ctrl_packet(QRTR_TYPE_RESUME_TX, pkt_len,
+                                    src_node, dst_node);
+       if (!skb)
+               return NULL;
+
        buf = (__le32 *)skb_put(skb, pkt_len);
        memset(buf, 0, pkt_len);
        buf[0] = cpu_to_le32(QRTR_TYPE_RESUME_TX);