patch-2.1.25 linux/net/ax25/ax25_out.c
Next file: linux/net/ax25/ax25_route.c
Previous file: linux/net/ax25/ax25_in.c
Back to the patch index
Back to the overall index
- Lines: 55
- Date:
Sun Feb 2 15:18:48 1997
- Orig file:
v2.1.24/linux/net/ax25/ax25_out.c
- Orig date:
Thu Jan 23 21:06:54 1997
diff -u --recursive --new-file v2.1.24/linux/net/ax25/ax25_out.c linux/net/ax25/ax25_out.c
@@ -55,10 +55,12 @@
#include <linux/interrupt.h>
/*
- * All outgoing AX.25 I frames pass via this routine. Therefore this is
- * where the fragmentation of frames takes place.
+ * All outgoing AX.25 I frames pass via this routine. Therefore this is
+ * where the fragmentation of frames takes place. If fragment is set to
+ * zero then we are not allowed to do fragmentation, even if the frame
+ * is too large.
*/
-void ax25_output(ax25_cb *ax25, struct sk_buff *skb)
+void ax25_output(ax25_cb *ax25, int fragment, struct sk_buff *skb)
{
struct sk_buff *skbn;
unsigned char *p;
@@ -67,7 +69,7 @@
mtu = ax25->paclen;
- if ((skb->len - 1) > mtu) {
+ if ((skb->len - 1) > mtu && fragment) {
if (*skb->data == AX25_P_TEXT) {
skb_pull(skb, 1); /* skip PID */
ka9qfrag = 0;
@@ -96,8 +98,6 @@
restore_flags(flags);
- skbn->arp = 1;
-
len = (mtu > skb->len) ? skb->len : mtu;
if (ka9qfrag == 1) {
@@ -257,7 +257,6 @@
ptr = skb_push(skb, size_ax25_addr(ax25->digipeat));
build_ax25_addr(ptr, &ax25->source_addr, &ax25->dest_addr, ax25->digipeat, type, ax25->modulus);
- skb->arp = 1;
skb->dev = ax25->device;
skb->priority = SOPRI_NORMAL;
@@ -397,9 +396,9 @@
if (!ax25o->dama_slave)
continue;
- if ( !(ax25o->condition & AX25_COND_PEER_RX_BUSY) &&
- (ax25o->state == AX25_STATE_3 ||
- (ax25o->state == AX25_STATE_4 && ax25o->t1timer == 0))) {
+ if (!(ax25o->condition & AX25_COND_PEER_RX_BUSY) &&
+ (ax25o->state == AX25_STATE_3 ||
+ (ax25o->state == AX25_STATE_4 && ax25o->t1timer == 0))) {
ax25_requeue_frames(ax25o);
ax25_kick(ax25o);
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov