Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3b6a94be authored by Eric W. Biederman's avatar Eric W. Biederman Committed by David S. Miller
Browse files

ax25: Refactor to use private neighbour operations.



AX25 already has it's own private arp cache operations to isolate
it's abuse of dev_rebuild_header to transmit packets.  Add a function
ax25_neigh_construct that will allow all of the ax25 devices to
force using these operations, so that the generic arp code does
not need to.

Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-hams@vger.kernel.org
Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 46d4e47a
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -302,6 +302,7 @@ static const struct net_device_ops sp_netdev_ops = {
	.ndo_stop		= sp_close,
	.ndo_stop		= sp_close,
	.ndo_start_xmit		= sp_xmit,
	.ndo_start_xmit		= sp_xmit,
	.ndo_set_mac_address    = sp_set_mac_address,
	.ndo_set_mac_address    = sp_set_mac_address,
	.ndo_neigh_construct	= ax25_neigh_construct,
};
};


static void sp_setup(struct net_device *dev)
static void sp_setup(struct net_device *dev)
@@ -315,6 +316,7 @@ static void sp_setup(struct net_device *dev)


	dev->addr_len		= AX25_ADDR_LEN;
	dev->addr_len		= AX25_ADDR_LEN;
	dev->type		= ARPHRD_AX25;
	dev->type		= ARPHRD_AX25;
	dev->neigh_priv_len	= sizeof(struct ax25_neigh_priv);
	dev->tx_queue_len	= 10;
	dev->tx_queue_len	= 10;


	/* Only activated in AX.25 mode */
	/* Only activated in AX.25 mode */
+2 −0
Original line number Original line Diff line number Diff line
@@ -1109,6 +1109,7 @@ static const struct net_device_ops baycom_netdev_ops = {
	.ndo_do_ioctl	     = baycom_ioctl,
	.ndo_do_ioctl	     = baycom_ioctl,
	.ndo_start_xmit      = baycom_send_packet,
	.ndo_start_xmit      = baycom_send_packet,
	.ndo_set_mac_address = baycom_set_mac_address,
	.ndo_set_mac_address = baycom_set_mac_address,
	.ndo_neigh_construct = ax25_neigh_construct,
};
};


/*
/*
@@ -1146,6 +1147,7 @@ static void baycom_probe(struct net_device *dev)
	dev->header_ops = &ax25_header_ops;
	dev->header_ops = &ax25_header_ops;
	
	
	dev->type = ARPHRD_AX25;           /* AF_AX25 device */
	dev->type = ARPHRD_AX25;           /* AF_AX25 device */
	dev->neigh_priv_len = sizeof(struct ax25_neigh_priv);
	dev->hard_header_len = AX25_MAX_HEADER_LEN + AX25_BPQ_HEADER_LEN;
	dev->hard_header_len = AX25_MAX_HEADER_LEN + AX25_BPQ_HEADER_LEN;
	dev->mtu = AX25_DEF_PACLEN;        /* eth_mtu is the default */
	dev->mtu = AX25_DEF_PACLEN;        /* eth_mtu is the default */
	dev->addr_len = AX25_ADDR_LEN;     /* sizeof an ax.25 address */
	dev->addr_len = AX25_ADDR_LEN;     /* sizeof an ax.25 address */
+2 −0
Original line number Original line Diff line number Diff line
@@ -469,6 +469,7 @@ static const struct net_device_ops bpq_netdev_ops = {
	.ndo_start_xmit	     = bpq_xmit,
	.ndo_start_xmit	     = bpq_xmit,
	.ndo_set_mac_address = bpq_set_mac_address,
	.ndo_set_mac_address = bpq_set_mac_address,
	.ndo_do_ioctl	     = bpq_ioctl,
	.ndo_do_ioctl	     = bpq_ioctl,
	.ndo_neigh_construct = ax25_neigh_construct,
};
};


static void bpq_setup(struct net_device *dev)
static void bpq_setup(struct net_device *dev)
@@ -486,6 +487,7 @@ static void bpq_setup(struct net_device *dev)
#endif
#endif


	dev->type            = ARPHRD_AX25;
	dev->type            = ARPHRD_AX25;
	dev->neigh_priv_len  = sizeof(struct ax25_neigh_priv);
	dev->hard_header_len = AX25_MAX_HEADER_LEN + AX25_BPQ_HEADER_LEN;
	dev->hard_header_len = AX25_MAX_HEADER_LEN + AX25_BPQ_HEADER_LEN;
	dev->mtu             = AX25_DEF_PACLEN;
	dev->mtu             = AX25_DEF_PACLEN;
	dev->addr_len        = AX25_ADDR_LEN;
	dev->addr_len        = AX25_ADDR_LEN;
+2 −0
Original line number Original line Diff line number Diff line
@@ -433,6 +433,7 @@ module_exit(dmascc_exit);
static void __init dev_setup(struct net_device *dev)
static void __init dev_setup(struct net_device *dev)
{
{
	dev->type = ARPHRD_AX25;
	dev->type = ARPHRD_AX25;
	dev->neigh_priv_len = sizeof(struct ax25_neigh_priv);
	dev->hard_header_len = AX25_MAX_HEADER_LEN;
	dev->hard_header_len = AX25_MAX_HEADER_LEN;
	dev->mtu = 1500;
	dev->mtu = 1500;
	dev->addr_len = AX25_ADDR_LEN;
	dev->addr_len = AX25_ADDR_LEN;
@@ -447,6 +448,7 @@ static const struct net_device_ops scc_netdev_ops = {
	.ndo_start_xmit = scc_send_packet,
	.ndo_start_xmit = scc_send_packet,
	.ndo_do_ioctl = scc_ioctl,
	.ndo_do_ioctl = scc_ioctl,
	.ndo_set_mac_address = scc_set_mac_address,
	.ndo_set_mac_address = scc_set_mac_address,
	.ndo_neigh_construct = ax25_neigh_construct,
};
};


static int __init setup_adapter(int card_base, int type, int n)
static int __init setup_adapter(int card_base, int type, int n)
+2 −0
Original line number Original line Diff line number Diff line
@@ -626,6 +626,7 @@ static const struct net_device_ops hdlcdrv_netdev = {
	.ndo_start_xmit = hdlcdrv_send_packet,
	.ndo_start_xmit = hdlcdrv_send_packet,
	.ndo_do_ioctl	= hdlcdrv_ioctl,
	.ndo_do_ioctl	= hdlcdrv_ioctl,
	.ndo_set_mac_address = hdlcdrv_set_mac_address,
	.ndo_set_mac_address = hdlcdrv_set_mac_address,
	.ndo_neigh_construct = ax25_neigh_construct,
};
};


/*
/*
@@ -676,6 +677,7 @@ static void hdlcdrv_setup(struct net_device *dev)
	dev->header_ops = &ax25_header_ops;
	dev->header_ops = &ax25_header_ops;
	
	
	dev->type = ARPHRD_AX25;           /* AF_AX25 device */
	dev->type = ARPHRD_AX25;           /* AF_AX25 device */
	dev->neigh_priv_len = sizeof(struct ax25_neigh_priv);
	dev->hard_header_len = AX25_MAX_HEADER_LEN + AX25_BPQ_HEADER_LEN;
	dev->hard_header_len = AX25_MAX_HEADER_LEN + AX25_BPQ_HEADER_LEN;
	dev->mtu = AX25_DEF_PACLEN;        /* eth_mtu is the default */
	dev->mtu = AX25_DEF_PACLEN;        /* eth_mtu is the default */
	dev->addr_len = AX25_ADDR_LEN;     /* sizeof an ax.25 address */
	dev->addr_len = AX25_ADDR_LEN;     /* sizeof an ax.25 address */
Loading