hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/drivers/net/ethernet/sun/sunvnet_common.c
....@@ -1088,7 +1088,7 @@
10881088 vaddr = kmap_atomic(skb_frag_page(f));
10891089 blen = skb_frag_size(f);
10901090 blen += 8 - (blen & 7);
1091
- err = ldc_map_single(lp, vaddr + f->page_offset,
1091
+ err = ldc_map_single(lp, vaddr + skb_frag_off(f),
10921092 blen, cookies + nc, ncookies - nc,
10931093 map_perm);
10941094 kunmap_atomic(vaddr);
....@@ -1124,7 +1124,7 @@
11241124 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
11251125 skb_frag_t *f = &skb_shinfo(skb)->frags[i];
11261126
1127
- docopy |= f->page_offset & 7;
1127
+ docopy |= skb_frag_off(f) & 7;
11281128 }
11291129 if (((unsigned long)skb->data & 7) != VNET_PACKET_SKIP ||
11301130 skb_tailroom(skb) < pad ||
....@@ -1168,7 +1168,7 @@
11681168 *(__sum16 *)(skb->data + offset) = 0;
11691169 csum = skb_copy_and_csum_bits(skb, start,
11701170 nskb->data + start,
1171
- skb->len - start, 0);
1171
+ skb->len - start);
11721172
11731173 /* add in the header checksums */
11741174 if (skb->protocol == htons(ETH_P_IP)) {
....@@ -1223,7 +1223,7 @@
12231223 {
12241224 struct net_device *dev = VNET_PORT_TO_NET_DEVICE(port);
12251225 struct vio_dring_state *dr = &port->vio.drings[VIO_DRIVER_TX_RING];
1226
- struct sk_buff *segs;
1226
+ struct sk_buff *segs, *curr, *next;
12271227 int maclen, datalen;
12281228 int status;
12291229 int gso_size, gso_type, gso_segs;
....@@ -1282,11 +1282,8 @@
12821282 skb_reset_mac_header(skb);
12831283
12841284 status = 0;
1285
- while (segs) {
1286
- struct sk_buff *curr = segs;
1287
-
1288
- segs = segs->next;
1289
- curr->next = NULL;
1285
+ skb_list_walk_safe(segs, curr, next) {
1286
+ skb_mark_not_on_list(curr);
12901287 if (port->tso && curr->len > dev->mtu) {
12911288 skb_shinfo(curr)->gso_size = gso_size;
12921289 skb_shinfo(curr)->gso_type = gso_type;
....@@ -1517,15 +1514,14 @@
15171514 else if (port)
15181515 del_timer(&port->clean_timer);
15191516 rcu_read_unlock();
1520
- if (skb)
1521
- dev_kfree_skb(skb);
1517
+ dev_kfree_skb(skb);
15221518 vnet_free_skbs(freeskbs);
15231519 dev->stats.tx_dropped++;
15241520 return NETDEV_TX_OK;
15251521 }
15261522 EXPORT_SYMBOL_GPL(sunvnet_start_xmit_common);
15271523
1528
-void sunvnet_tx_timeout_common(struct net_device *dev)
1524
+void sunvnet_tx_timeout_common(struct net_device *dev, unsigned int txqueue)
15291525 {
15301526 /* XXX Implement me XXX */
15311527 }