diff options
Diffstat (limited to 'net/caif/cfdgml.c')
| -rw-r--r-- | net/caif/cfdgml.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/caif/cfdgml.c b/net/caif/cfdgml.c index 53194840ecb6..ed9d53aff280 100644 --- a/net/caif/cfdgml.c +++ b/net/caif/cfdgml.c | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | #define DGM_FLOW_OFF 0x81 | 17 | #define DGM_FLOW_OFF 0x81 |
| 18 | #define DGM_FLOW_ON 0x80 | 18 | #define DGM_FLOW_ON 0x80 |
| 19 | #define DGM_CTRL_PKT_SIZE 1 | 19 | #define DGM_CTRL_PKT_SIZE 1 |
| 20 | #define DGM_MTU 1500 | ||
| 20 | 21 | ||
| 21 | static int cfdgml_receive(struct cflayer *layr, struct cfpkt *pkt); | 22 | static int cfdgml_receive(struct cflayer *layr, struct cfpkt *pkt); |
| 22 | static int cfdgml_transmit(struct cflayer *layr, struct cfpkt *pkt); | 23 | static int cfdgml_transmit(struct cflayer *layr, struct cfpkt *pkt); |
| @@ -30,7 +31,7 @@ struct cflayer *cfdgml_create(u8 channel_id, struct dev_info *dev_info) | |||
| 30 | } | 31 | } |
| 31 | caif_assert(offsetof(struct cfsrvl, layer) == 0); | 32 | caif_assert(offsetof(struct cfsrvl, layer) == 0); |
| 32 | memset(dgm, 0, sizeof(struct cfsrvl)); | 33 | memset(dgm, 0, sizeof(struct cfsrvl)); |
| 33 | cfsrvl_init(dgm, channel_id, dev_info); | 34 | cfsrvl_init(dgm, channel_id, dev_info, true); |
| 34 | dgm->layer.receive = cfdgml_receive; | 35 | dgm->layer.receive = cfdgml_receive; |
| 35 | dgm->layer.transmit = cfdgml_transmit; | 36 | dgm->layer.transmit = cfdgml_transmit; |
| 36 | snprintf(dgm->layer.name, CAIF_LAYER_NAME_SZ - 1, "dgm%d", channel_id); | 37 | snprintf(dgm->layer.name, CAIF_LAYER_NAME_SZ - 1, "dgm%d", channel_id); |
| @@ -89,6 +90,10 @@ static int cfdgml_transmit(struct cflayer *layr, struct cfpkt *pkt) | |||
| 89 | if (!cfsrvl_ready(service, &ret)) | 90 | if (!cfsrvl_ready(service, &ret)) |
| 90 | return ret; | 91 | return ret; |
| 91 | 92 | ||
| 93 | /* STE Modem cannot handle more than 1500 bytes datagrams */ | ||
| 94 | if (cfpkt_getlen(pkt) > DGM_MTU) | ||
| 95 | return -EMSGSIZE; | ||
| 96 | |||
| 92 | cfpkt_add_head(pkt, &zero, 4); | 97 | cfpkt_add_head(pkt, &zero, 4); |
| 93 | 98 | ||
| 94 | /* Add info for MUX-layer to route the packet out. */ | 99 | /* Add info for MUX-layer to route the packet out. */ |
