于 2012年12月04日 00:03, Paul Fulghum 写道: > On 12/2/2012 8:20 PM, Chen Gang wrote: >> pardon (I am just learning) >> does 65535 mean HDLC_MAX_FRAME_SIZE ? >> why do we need info->max_frame_size >= 4096 ? >> in drivers/tty/synclink_gt.c: >> 3550 if (info->max_frame_size < 4096) >> 3551 info->max_frame_size = 4096; >> 3552 else if (info->max_frame_size > 65535) >> 3553 info->max_frame_size = 65535; >> 3554 >> ... >> 3603 info->max_frame_size = 4096; > > The hardware can send and receive HDLC frames up to > 64K in size. The driver defaults to 4K max frame size > to save buffer space for the common case > (line 3603 in alloc_dev()). > > The module parameter max_frame_size can override the default > in add_device() (lines 3550-3554 are from add_device() > range checking the module parameter) > thank you. sorry for reply late (yesterday, I have an annual leave for personal things, and not connect net). by the way: does it also need check the length in function rx_get_buf ? (it seems not, but I am not quite sure, can you give a confirm ?) 4779 /* 4780 * pass receive buffer (RAW synchronous mode) to tty layer 4781 * return true if buffer available, otherwise false 4782 */ 4783 static bool rx_get_buf(struct slgt_info *info) 4784 { 4785 unsigned int i = info->rbuf_current; 4786 unsigned int count; 4787 4788 if (!desc_complete(info->rbufs[i])) 4789 return false; 4790 count = desc_count(info->rbufs[i]); 4791 switch(info->params.mode) { 4792 case MGSL_MODE_MONOSYNC: 4793 case MGSL_MODE_BISYNC: 4794 case MGSL_MODE_XSYNC: 4795 /* ignore residue in byte synchronous modes */ 4796 if (desc_residue(info->rbufs[i])) 4797 count--; 4798 break; 4799 } 4800 DBGDATA(info, info->rbufs[i].buf, count, "rx"); 4801 DBGINFO(("rx_get_buf size=%d\n", count)); 4802 if (count) 4803 ldisc_receive_buf(info->port.tty, info->rbufs[i].buf, 4804 info->flag_buf, count); 4805 free_rbufs(info, i, i); 4806 return true; 4807 } -- Chen Gang Asianux Corporation -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html