]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - net/ieee802154/header_ops.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
[karo-tx-linux.git] / net / ieee802154 / header_ops.c
index a051b69931779438b33f61456203c451167fa591..c7439f0fbbdf817b7baadc08cd20d825a57eb298 100644 (file)
@@ -83,35 +83,35 @@ ieee802154_hdr_push_sechdr(u8 *buf, const struct ieee802154_sechdr *hdr)
 }
 
 int
-ieee802154_hdr_push(struct sk_buff *skb, const struct ieee802154_hdr *hdr)
+ieee802154_hdr_push(struct sk_buff *skb, struct ieee802154_hdr *hdr)
 {
-       u8 buf[MAC802154_FRAME_HARD_HEADER_LEN];
+       u8 buf[IEEE802154_MAX_HEADER_LEN];
        int pos = 2;
        int rc;
-       struct ieee802154_hdr_fc fc = hdr->fc;
+       struct ieee802154_hdr_fc *fc = &hdr->fc;
 
        buf[pos++] = hdr->seq;
 
-       fc.dest_addr_mode = hdr->dest.mode;
+       fc->dest_addr_mode = hdr->dest.mode;
 
        rc = ieee802154_hdr_push_addr(buf + pos, &hdr->dest, false);
        if (rc < 0)
                return -EINVAL;
        pos += rc;
 
-       fc.source_addr_mode = hdr->source.mode;
+       fc->source_addr_mode = hdr->source.mode;
 
        if (hdr->source.pan_id == hdr->dest.pan_id &&
            hdr->dest.mode != IEEE802154_ADDR_NONE)
-               fc.intra_pan = true;
+               fc->intra_pan = true;
 
-       rc = ieee802154_hdr_push_addr(buf + pos, &hdr->source, fc.intra_pan);
+       rc = ieee802154_hdr_push_addr(buf + pos, &hdr->source, fc->intra_pan);
        if (rc < 0)
                return -EINVAL;
        pos += rc;
 
-       if (fc.security_enabled) {
-               fc.version = 1;
+       if (fc->security_enabled) {
+               fc->version = 1;
 
                rc = ieee802154_hdr_push_sechdr(buf + pos, &hdr->sec);
                if (rc < 0)
@@ -120,7 +120,7 @@ ieee802154_hdr_push(struct sk_buff *skb, const struct ieee802154_hdr *hdr)
                pos += rc;
        }
 
-       memcpy(buf, &fc, 2);
+       memcpy(buf, fc, 2);
 
        memcpy(skb_push(skb, pos), buf, pos);