[DAHDI] make sure LAPD transmits with correct SAPI

This commit is contained in:
Harald Welte 2011-02-05 20:20:50 +01:00
parent 8fc66a0c4d
commit 4ee2eaf3c4
3 changed files with 7 additions and 6 deletions

View File

@ -169,7 +169,8 @@ static int handle_ts1_write(struct bsc_fd *bfd)
return 0;
}
lapd_transmit(e1i_ts->driver.dahdi.lapd, sign_link->tei, msg->data, msg->len);
lapd_transmit(e1i_ts->driver.dahdi.lapd, sign_link->tei,
sign_link->sapi, msg->data, msg->len);
msgb_free(msg);
/* set tx delay timer for next event */

View File

@ -97,7 +97,6 @@ struct lapd_tei {
struct llist_head list;
uint8_t tei;
uint8_t sapi;
/* A valid N(R) value is one that is in the range V(A) ≤ N(R) ≤ V(S). */
int vs; /* next to be transmitted */
int va; /* last acked by peer */
@ -456,7 +455,7 @@ uint8_t *lapd_receive(struct lapd_instance *li, uint8_t * data, unsigned int len
return NULL;
};
void lapd_transmit(struct lapd_instance *li, uint8_t tei,
void lapd_transmit(struct lapd_instance *li, uint8_t tei, uint8_t sapi,
uint8_t *data, unsigned int len)
{
//printf("lapd_transmit %d, %d\n", tei, len);
@ -475,8 +474,8 @@ void lapd_transmit(struct lapd_instance *li, uint8_t tei,
memmove(buf + 4, data, len);
len += 4;
buf[0] = (teip->sapi << 2) | (li->network_side ? 2 : 0);
buf[1] = (teip->tei << 1) | 1;
buf[0] = (sapi << 2) | (li->network_side ? 2 : 0);
buf[1] = (tei << 1) | 1;
buf[2] = (LAPD_NS(teip) << 1);
buf[3] = (LAPD_NR(teip) << 1) | 0;

View File

@ -29,7 +29,8 @@ struct lapd_instance {
extern uint8_t *lapd_receive(struct lapd_instance *li, uint8_t *data, unsigned int len,
int *ilen, lapd_mph_type *prim);
extern void lapd_transmit(struct lapd_instance *li, uint8_t tei, uint8_t *data, unsigned int len);
extern void lapd_transmit(struct lapd_instance *li, uint8_t tei, uint8_t sapi,
uint8_t *data, unsigned int len);
struct lapd_instance *lapd_instance_alloc(void (*tx_cb)(uint8_t *data, int len,
void *cbdata), void *cbdata);