| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
|---|
| 1 | 2 | /* net/atm/clip.c - RFC1577 Classical IP over ATM */ |
|---|
| 2 | 3 | |
|---|
| 3 | 4 | /* Written 1995-2000 by Werner Almesberger, EPFL LRC/ICA */ |
|---|
| .. | .. |
|---|
| 88 | 89 | struct clip_vcc **walk; |
|---|
| 89 | 90 | |
|---|
| 90 | 91 | if (!entry) { |
|---|
| 91 | | - pr_crit("!clip_vcc->entry (clip_vcc %p)\n", clip_vcc); |
|---|
| 92 | + pr_err("!clip_vcc->entry (clip_vcc %p)\n", clip_vcc); |
|---|
| 92 | 93 | return; |
|---|
| 93 | 94 | } |
|---|
| 94 | 95 | netif_tx_lock_bh(entry->neigh->dev); /* block clip_start_xmit() */ |
|---|
| .. | .. |
|---|
| 108 | 109 | error = neigh_update(entry->neigh, NULL, NUD_NONE, |
|---|
| 109 | 110 | NEIGH_UPDATE_F_ADMIN, 0); |
|---|
| 110 | 111 | if (error) |
|---|
| 111 | | - pr_crit("neigh_update failed with %d\n", error); |
|---|
| 112 | + pr_err("neigh_update failed with %d\n", error); |
|---|
| 112 | 113 | goto out; |
|---|
| 113 | 114 | } |
|---|
| 114 | | - pr_crit("ATMARP: failed (entry %p, vcc 0x%p)\n", entry, clip_vcc); |
|---|
| 115 | + pr_err("ATMARP: failed (entry %p, vcc 0x%p)\n", entry, clip_vcc); |
|---|
| 115 | 116 | out: |
|---|
| 116 | 117 | netif_tx_unlock_bh(entry->neigh->dev); |
|---|
| 117 | 118 | } |
|---|
| .. | .. |
|---|
| 345 | 346 | return NETDEV_TX_OK; |
|---|
| 346 | 347 | } |
|---|
| 347 | 348 | rt = (struct rtable *) dst; |
|---|
| 348 | | - if (rt->rt_gateway) |
|---|
| 349 | | - daddr = &rt->rt_gateway; |
|---|
| 349 | + if (rt->rt_gw_family == AF_INET) |
|---|
| 350 | + daddr = &rt->rt_gw4; |
|---|
| 350 | 351 | else |
|---|
| 351 | 352 | daddr = &ip_hdr(skb)->daddr; |
|---|
| 352 | 353 | n = dst_neigh_lookup(dst, daddr); |
|---|