|
@@ -426,6 +426,26 @@ static int ax25_ctl_ioctl(const unsigned int cmd, void __user *arg)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static void ax25_fillin_cb_from_dev(ax25_cb *ax25, ax25_dev *ax25_dev)
|
|
|
+{
|
|
|
+ ax25->rtt = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_T1]) / 2;
|
|
|
+ ax25->t1 = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_T1]);
|
|
|
+ ax25->t2 = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_T2]);
|
|
|
+ ax25->t3 = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_T3]);
|
|
|
+ ax25->n2 = ax25_dev->values[AX25_VALUES_N2];
|
|
|
+ ax25->paclen = ax25_dev->values[AX25_VALUES_PACLEN];
|
|
|
+ ax25->idle = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_IDLE]);
|
|
|
+ ax25->backoff = ax25_dev->values[AX25_VALUES_BACKOFF];
|
|
|
+
|
|
|
+ if (ax25_dev->values[AX25_VALUES_AXDEFMODE]) {
|
|
|
+ ax25->modulus = AX25_EMODULUS;
|
|
|
+ ax25->window = ax25_dev->values[AX25_VALUES_EWINDOW];
|
|
|
+ } else {
|
|
|
+ ax25->modulus = AX25_MODULUS;
|
|
|
+ ax25->window = ax25_dev->values[AX25_VALUES_WINDOW];
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* Fill in a created AX.25 created control block with the default
|
|
|
* values for a particular device.
|
|
@@ -435,39 +455,28 @@ void ax25_fillin_cb(ax25_cb *ax25, ax25_dev *ax25_dev)
|
|
|
ax25->ax25_dev = ax25_dev;
|
|
|
|
|
|
if (ax25->ax25_dev != NULL) {
|
|
|
- ax25->rtt = ax25_dev->values[AX25_VALUES_T1] / 2;
|
|
|
- ax25->t1 = ax25_dev->values[AX25_VALUES_T1];
|
|
|
- ax25->t2 = ax25_dev->values[AX25_VALUES_T2];
|
|
|
- ax25->t3 = ax25_dev->values[AX25_VALUES_T3];
|
|
|
- ax25->n2 = ax25_dev->values[AX25_VALUES_N2];
|
|
|
- ax25->paclen = ax25_dev->values[AX25_VALUES_PACLEN];
|
|
|
- ax25->idle = ax25_dev->values[AX25_VALUES_IDLE];
|
|
|
- ax25->backoff = ax25_dev->values[AX25_VALUES_BACKOFF];
|
|
|
-
|
|
|
- if (ax25_dev->values[AX25_VALUES_AXDEFMODE]) {
|
|
|
- ax25->modulus = AX25_EMODULUS;
|
|
|
- ax25->window = ax25_dev->values[AX25_VALUES_EWINDOW];
|
|
|
- } else {
|
|
|
- ax25->modulus = AX25_MODULUS;
|
|
|
- ax25->window = ax25_dev->values[AX25_VALUES_WINDOW];
|
|
|
- }
|
|
|
+ ax25_fillin_cb_from_dev(ax25, ax25_dev);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ /*
|
|
|
+ * No device, use kernel / AX.25 spec default values
|
|
|
+ */
|
|
|
+ ax25->rtt = msecs_to_jiffies(AX25_DEF_T1) / 2;
|
|
|
+ ax25->t1 = msecs_to_jiffies(AX25_DEF_T1);
|
|
|
+ ax25->t2 = msecs_to_jiffies(AX25_DEF_T2);
|
|
|
+ ax25->t3 = msecs_to_jiffies(AX25_DEF_T3);
|
|
|
+ ax25->n2 = AX25_DEF_N2;
|
|
|
+ ax25->paclen = AX25_DEF_PACLEN;
|
|
|
+ ax25->idle = msecs_to_jiffies(AX25_DEF_IDLE);
|
|
|
+ ax25->backoff = AX25_DEF_BACKOFF;
|
|
|
+
|
|
|
+ if (AX25_DEF_AXDEFMODE) {
|
|
|
+ ax25->modulus = AX25_EMODULUS;
|
|
|
+ ax25->window = AX25_DEF_EWINDOW;
|
|
|
} else {
|
|
|
- ax25->rtt = AX25_DEF_T1 / 2;
|
|
|
- ax25->t1 = AX25_DEF_T1;
|
|
|
- ax25->t2 = AX25_DEF_T2;
|
|
|
- ax25->t3 = AX25_DEF_T3;
|
|
|
- ax25->n2 = AX25_DEF_N2;
|
|
|
- ax25->paclen = AX25_DEF_PACLEN;
|
|
|
- ax25->idle = AX25_DEF_IDLE;
|
|
|
- ax25->backoff = AX25_DEF_BACKOFF;
|
|
|
-
|
|
|
- if (AX25_DEF_AXDEFMODE) {
|
|
|
- ax25->modulus = AX25_EMODULUS;
|
|
|
- ax25->window = AX25_DEF_EWINDOW;
|
|
|
- } else {
|
|
|
- ax25->modulus = AX25_MODULUS;
|
|
|
- ax25->window = AX25_DEF_WINDOW;
|
|
|
- }
|
|
|
+ ax25->modulus = AX25_MODULUS;
|
|
|
+ ax25->window = AX25_DEF_WINDOW;
|
|
|
}
|
|
|
}
|
|
|
|