]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/net/macsec.c
dpaa2-eth: Fix TX FQID values
[linux.git] / drivers / net / macsec.c
index 75aebf65cd09941f462b9f5774d952600358f3ae..cb7637364b40d85c9595da833873be1e99db3f7c 100644 (file)
@@ -865,6 +865,7 @@ static void macsec_reset_skb(struct sk_buff *skb, struct net_device *dev)
 
 static void macsec_finalize_skb(struct sk_buff *skb, u8 icv_len, u8 hdr_len)
 {
+       skb->ip_summed = CHECKSUM_NONE;
        memmove(skb->data + hdr_len, skb->data, 2 * ETH_ALEN);
        skb_pull(skb, hdr_len);
        pskb_trim_unique(skb, skb->len - icv_len);
@@ -1099,10 +1100,9 @@ static rx_handler_result_t macsec_handle_frame(struct sk_buff **pskb)
        }
 
        skb = skb_unshare(skb, GFP_ATOMIC);
-       if (!skb) {
-               *pskb = NULL;
+       *pskb = skb;
+       if (!skb)
                return RX_HANDLER_CONSUMED;
-       }
 
        pulled_sci = pskb_may_pull(skb, macsec_extra_len(true));
        if (!pulled_sci) {
@@ -1235,6 +1235,7 @@ static rx_handler_result_t macsec_handle_frame(struct sk_buff **pskb)
                macsec_rxsa_put(rx_sa);
        macsec_rxsc_put(rx_sc);
 
+       skb_orphan(skb);
        ret = gro_cells_receive(&macsec->gro_cells, skb);
        if (ret == NET_RX_SUCCESS)
                count_rx(dev, skb->len);