net: qrtr: Refactor packet allocation

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>
This commit is contained in:
Bjorn Andersson 2017-06-07 14:07:36 -07:00 committed by David S. Miller
parent 02417f4787
commit 64f9eca064
1 changed files with 19 additions and 6 deletions

View 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); EXPORT_SYMBOL_GPL(qrtr_endpoint_post);
/* Allocate and construct a resume-tx packet. */ static struct sk_buff *qrtr_alloc_ctrl_packet(u32 type, size_t pkt_len,
static struct sk_buff *qrtr_alloc_resume_tx(u32 src_node, u32 src_node, u32 dst_node)
u32 dst_node, u32 port)
{ {
const int pkt_len = 20;
struct qrtr_hdr *hdr; struct qrtr_hdr *hdr;
struct sk_buff *skb; struct sk_buff *skb;
__le32 *buf;
skb = alloc_skb(QRTR_HDR_SIZE + pkt_len, GFP_KERNEL); skb = alloc_skb(QRTR_HDR_SIZE + pkt_len, GFP_KERNEL);
if (!skb) 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 = (struct qrtr_hdr *)skb_put(skb, QRTR_HDR_SIZE);
hdr->version = cpu_to_le32(QRTR_PROTO_VER); 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_node_id = cpu_to_le32(src_node);
hdr->src_port_id = cpu_to_le32(QRTR_PORT_CTRL); hdr->src_port_id = cpu_to_le32(QRTR_PORT_CTRL);
hdr->confirm_rx = cpu_to_le32(0); 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_node_id = cpu_to_le32(dst_node);
hdr->dst_port_id = cpu_to_le32(QRTR_PORT_CTRL); 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); buf = (__le32 *)skb_put(skb, pkt_len);
memset(buf, 0, pkt_len); memset(buf, 0, pkt_len);
buf[0] = cpu_to_le32(QRTR_TYPE_RESUME_TX); buf[0] = cpu_to_le32(QRTR_TYPE_RESUME_TX);