diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2015-03-03 10:41:47 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-03-03 14:44:41 -0500 |
commit | 1d5da757da860a6916adbf68b09e868062b4b3b8 (patch) | |
tree | deee80ad76638718a7babc524235ff13f35b2f98 /include/net/ax25.h | |
parent | bcc90e3fb132f009e647c9032eab4fedb6399339 (diff) |
ax25: Stop using magic neighbour cache operations.
Before the ax25 stack calls dev_queue_xmit it always calls
ax25_type_trans which sets skb->protocol to ETH_P_AX25.
Which means that by looking at the protocol type it is possible to
detect IP packets that have not been munged by the ax25 stack in
ndo_start_xmit and call a function to munge them.
Rename ax25_neigh_xmit to ax25_ip_xmit and tweak the return type and
value to be appropriate for an ndo_start_xmit function.
Update all of the ax25 devices to test the protocol type for ETH_P_IP
and return ax25_ip_xmit as the first thing they do. This preserves
the existing semantics of IP packet processing, but the timing will be
a little different as the IP packets now pass through the qdisc layer
before reaching the ax25 ip packet processing.
Remove the now unnecessary ax25 neighbour table operations.
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/ax25.h')
-rw-r--r-- | include/net/ax25.h | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/include/net/ax25.h b/include/net/ax25.h index 45feeba7a325..16a923a3a43a 100644 --- a/include/net/ax25.h +++ b/include/net/ax25.h | |||
@@ -367,11 +367,8 @@ int ax25_kiss_rcv(struct sk_buff *, struct net_device *, struct packet_type *, | |||
367 | struct net_device *); | 367 | struct net_device *); |
368 | 368 | ||
369 | /* ax25_ip.c */ | 369 | /* ax25_ip.c */ |
370 | int ax25_neigh_construct(struct neighbour *neigh); | 370 | netdev_tx_t ax25_ip_xmit(struct sk_buff *skb); |
371 | extern const struct header_ops ax25_header_ops; | 371 | extern const struct header_ops ax25_header_ops; |
372 | struct ax25_neigh_priv { | ||
373 | struct neigh_ops ops; | ||
374 | }; | ||
375 | 372 | ||
376 | /* ax25_out.c */ | 373 | /* ax25_out.c */ |
377 | ax25_cb *ax25_send_frame(struct sk_buff *, int, ax25_address *, ax25_address *, | 374 | ax25_cb *ax25_send_frame(struct sk_buff *, int, ax25_address *, ax25_address *, |