forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/net/ethernet/cavium/thunder/nicvf_queues.c
....@@ -1,9 +1,6 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * Copyright (C) 2015 Cavium, Inc.
3
- *
4
- * This program is free software; you can redistribute it and/or modify it
5
- * under the terms of version 2 of the GNU General Public License
6
- * as published by the Free Software Foundation.
74 */
85
96 #include <linux/pci.h>
....@@ -59,7 +56,7 @@
5956 dmem->q_len = q_len;
6057 dmem->size = (desc_size * q_len) + align_bytes;
6158 /* Save address, need it while freeing */
62
- dmem->unalign_base = dma_zalloc_coherent(&nic->pdev->dev, dmem->size,
59
+ dmem->unalign_base = dma_alloc_coherent(&nic->pdev->dev, dmem->size,
6360 &dmem->dma, GFP_KERNEL);
6461 if (!dmem->unalign_base)
6562 return -ENOMEM;
....@@ -463,9 +460,9 @@
463460 }
464461
465462 /* In Softirq context, alloc rcv buffers in atomic mode */
466
-void nicvf_rbdr_task(unsigned long data)
463
+void nicvf_rbdr_task(struct tasklet_struct *t)
467464 {
468
- struct nicvf *nic = (struct nicvf *)data;
465
+ struct nicvf *nic = from_tasklet(nic, t, rbdr_task);
469466
470467 nicvf_refill_rbdr(nic, GFP_ATOMIC);
471468 if (nic->rb_alloc_fail) {
....@@ -1182,13 +1179,12 @@
11821179 void nicvf_sq_free_used_descs(struct net_device *netdev, struct snd_queue *sq,
11831180 int qidx)
11841181 {
1185
- u64 head, tail;
1182
+ u64 head;
11861183 struct sk_buff *skb;
11871184 struct nicvf *nic = netdev_priv(netdev);
11881185 struct sq_hdr_subdesc *hdr;
11891186
11901187 head = nicvf_queue_reg_read(nic, NIC_QSET_SQ_0_7_HEAD, qidx) >> 4;
1191
- tail = nicvf_queue_reg_read(nic, NIC_QSET_SQ_0_7_TAIL, qidx) >> 4;
11921188 while (sq->head != head) {
11931189 hdr = (struct sq_hdr_subdesc *)GET_SQ_DESC(sq, sq->head);
11941190 if (hdr->subdesc_type != SQ_DESC_TYPE_HEADER) {
....@@ -1493,9 +1489,10 @@
14931489 int seg_subdescs = 0, desc_cnt = 0;
14941490 int seg_len, total_len, data_left;
14951491 int hdr_qentry = qentry;
1496
- int hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
1492
+ int hdr_len;
14971493
1498
- tso_start(skb, &tso);
1494
+ hdr_len = tso_start(skb, &tso);
1495
+
14991496 total_len = skb->len - hdr_len;
15001497 while (total_len > 0) {
15011498 char *hdr;
....@@ -1591,15 +1588,13 @@
15911588 goto doorbell;
15921589
15931590 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
1594
- const struct skb_frag_struct *frag;
1595
-
1596
- frag = &skb_shinfo(skb)->frags[i];
1591
+ const skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
15971592
15981593 qentry = nicvf_get_nxt_sqentry(sq, qentry);
15991594 size = skb_frag_size(frag);
16001595 dma_addr = dma_map_page_attrs(&nic->pdev->dev,
16011596 skb_frag_page(frag),
1602
- frag->page_offset, size,
1597
+ skb_frag_off(frag), size,
16031598 DMA_TO_DEVICE,
16041599 DMA_ATTR_SKIP_CPU_SYNC);
16051600 if (dma_mapping_error(&nic->pdev->dev, dma_addr)) {