亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ircomm_ttp.c

?? 優(yōu)龍2410linux2.6.8內(nèi)核源代碼
?? C
字號(hào):
/********************************************************************* *                 * Filename:      ircomm_ttp.c * Version:       1.0 * Description:   Interface between IrCOMM and IrTTP * Status:        Stable * Author:        Dag Brattli <dagb@cs.uit.no> * Created at:    Sun Jun  6 20:48:27 1999 * Modified at:   Mon Dec 13 11:35:13 1999 * Modified by:   Dag Brattli <dagb@cs.uit.no> *  *     Copyright (c) 1999 Dag Brattli, All Rights Reserved. *     Copyright (c) 2000-2003 Jean Tourrilhes <jt@hpl.hp.com> *      *     This program is free software; you can redistribute it and/or  *     modify it under the terms of the GNU General Public License as  *     published by the Free Software Foundation; either version 2 of  *     the License, or (at your option) any later version. *  *     This program is distributed in the hope that it will be useful, *     but WITHOUT ANY WARRANTY; without even the implied warranty of *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *     GNU General Public License for more details. *  *     You should have received a copy of the GNU General Public License  *     along with this program; if not, write to the Free Software  *     Foundation, Inc., 59 Temple Place, Suite 330, Boston,  *     MA 02111-1307 USA *      ********************************************************************/#include <linux/sched.h>#include <linux/init.h>#include <net/irda/irda.h>#include <net/irda/irlmp.h>#include <net/irda/iriap.h>#include <net/irda/irttp.h>#include <net/irda/ircomm_event.h>#include <net/irda/ircomm_ttp.h>/* * Function ircomm_open_tsap (self) * *     * */int ircomm_open_tsap(struct ircomm_cb *self){	notify_t notify;	IRDA_DEBUG(4, "%s()\n", __FUNCTION__ );	/* Register callbacks */	irda_notify_init(&notify);	notify.data_indication       = ircomm_ttp_data_indication;	notify.connect_confirm       = ircomm_ttp_connect_confirm;	notify.connect_indication    = ircomm_ttp_connect_indication;	notify.flow_indication       = ircomm_ttp_flow_indication;	notify.disconnect_indication = ircomm_ttp_disconnect_indication;	notify.instance = self;	strlcpy(notify.name, "IrCOMM", sizeof(notify.name));	self->tsap = irttp_open_tsap(LSAP_ANY, DEFAULT_INITIAL_CREDIT,				     &notify);	if (!self->tsap) {		IRDA_DEBUG(0, "%sfailed to allocate tsap\n", __FUNCTION__ );		return -1;	}	self->slsap_sel = self->tsap->stsap_sel;	/*	 *  Initialize the call-table for issuing commands	 */	self->issue.data_request       = ircomm_ttp_data_request;	self->issue.connect_request    = ircomm_ttp_connect_request;	self->issue.connect_response   = ircomm_ttp_connect_response;	self->issue.disconnect_request = ircomm_ttp_disconnect_request;	return 0;}/* * Function ircomm_ttp_connect_request (self, userdata) * *     * */int ircomm_ttp_connect_request(struct ircomm_cb *self, 			       struct sk_buff *userdata, 			       struct ircomm_info *info){	int ret = 0;	IRDA_DEBUG(4, "%s()\n", __FUNCTION__ );	/* Don't forget to refcount it - should be NULL anyway */	if(userdata)		skb_get(userdata);	ret = irttp_connect_request(self->tsap, info->dlsap_sel,				    info->saddr, info->daddr, NULL, 				    TTP_SAR_DISABLE, userdata); 	return ret;}	/* * Function ircomm_ttp_connect_response (self, skb) * *     * */int ircomm_ttp_connect_response(struct ircomm_cb *self,				struct sk_buff *userdata){	int ret;	IRDA_DEBUG(4, "%s()\n", __FUNCTION__ );		/* Don't forget to refcount it - should be NULL anyway */	if(userdata)		skb_get(userdata);	ret = irttp_connect_response(self->tsap, TTP_SAR_DISABLE, userdata);	return ret;}/* * Function ircomm_ttp_data_request (self, userdata) * *    Send IrCOMM data to IrTTP layer. Currently we do not try to combine  *    control data with pure data, so they will be sent as separate frames.  *    Should not be a big problem though, since control frames are rare. But *    some of them are sent after connection establishment, so this can  *    increase the latency a bit. */int ircomm_ttp_data_request(struct ircomm_cb *self,			    struct sk_buff *skb, 			    int clen){	int ret;	ASSERT(skb != NULL, return -1;);	IRDA_DEBUG(2, "%s(), clen=%d\n", __FUNCTION__ , clen);	/* 	 * Insert clen field, currently we either send data only, or control	 * only frames, to make things easier and avoid queueing	 */	ASSERT(skb_headroom(skb) >= IRCOMM_HEADER_SIZE, return -1;);	/* Don't forget to refcount it - see ircomm_tty_do_softint() */	skb_get(skb);	skb_push(skb, IRCOMM_HEADER_SIZE);	skb->data[0] = clen;	ret = irttp_data_request(self->tsap, skb);	if (ret) {		ERROR("%s(), failed\n", __FUNCTION__);		/* irttp_data_request already free the packet */	}	return ret;}/* * Function ircomm_ttp_data_indication (instance, sap, skb) * *    Incoming data * */int ircomm_ttp_data_indication(void *instance, void *sap,			       struct sk_buff *skb){	struct ircomm_cb *self = (struct ircomm_cb *) instance;	IRDA_DEBUG(4, "%s()\n", __FUNCTION__ );		ASSERT(self != NULL, return -1;);	ASSERT(self->magic == IRCOMM_MAGIC, return -1;);	ASSERT(skb != NULL, return -1;);	ircomm_do_event(self, IRCOMM_TTP_DATA_INDICATION, skb, NULL);	/* Drop reference count - see ircomm_tty_data_indication(). */	dev_kfree_skb(skb);	return 0;}void ircomm_ttp_connect_confirm(void *instance, void *sap,				struct qos_info *qos, 				__u32 max_sdu_size, 				__u8 max_header_size,				struct sk_buff *skb){	struct ircomm_cb *self = (struct ircomm_cb *) instance;	struct ircomm_info info;	IRDA_DEBUG(4, "%s()\n", __FUNCTION__ );	ASSERT(self != NULL, return;);	ASSERT(self->magic == IRCOMM_MAGIC, return;);	ASSERT(skb != NULL, return;);	ASSERT(qos != NULL, goto out;);	if (max_sdu_size != TTP_SAR_DISABLE) {		ERROR("%s(), SAR not allowed for IrCOMM!\n", __FUNCTION__);		goto out;	}	info.max_data_size = irttp_get_max_seg_size(self->tsap)		- IRCOMM_HEADER_SIZE;	info.max_header_size = max_header_size + IRCOMM_HEADER_SIZE;	info.qos = qos;	ircomm_do_event(self, IRCOMM_TTP_CONNECT_CONFIRM, skb, &info);out:	/* Drop reference count - see ircomm_tty_connect_confirm(). */	dev_kfree_skb(skb);}/* * Function ircomm_ttp_connect_indication (instance, sap, qos, max_sdu_size, *                                         max_header_size, skb) * *     * */void ircomm_ttp_connect_indication(void *instance, void *sap,				   struct qos_info *qos,				   __u32 max_sdu_size,				   __u8 max_header_size,				   struct sk_buff *skb){	struct ircomm_cb *self = (struct ircomm_cb *)instance;	struct ircomm_info info;	IRDA_DEBUG(4, "%s()\n", __FUNCTION__ );	ASSERT(self != NULL, return;);	ASSERT(self->magic == IRCOMM_MAGIC, return;);	ASSERT(skb != NULL, return;);	ASSERT(qos != NULL, goto out;);	if (max_sdu_size != TTP_SAR_DISABLE) {		ERROR("%s(), SAR not allowed for IrCOMM!\n", __FUNCTION__);		goto out;	}	info.max_data_size = irttp_get_max_seg_size(self->tsap)		- IRCOMM_HEADER_SIZE;	info.max_header_size = max_header_size + IRCOMM_HEADER_SIZE;	info.qos = qos;	ircomm_do_event(self, IRCOMM_TTP_CONNECT_INDICATION, skb, &info);out:	/* Drop reference count - see ircomm_tty_connect_indication(). */	dev_kfree_skb(skb);}/* * Function ircomm_ttp_disconnect_request (self, userdata, info) * *     * */int ircomm_ttp_disconnect_request(struct ircomm_cb *self, 				  struct sk_buff *userdata, 				  struct ircomm_info *info){	int ret;	/* Don't forget to refcount it - should be NULL anyway */	if(userdata)		skb_get(userdata);	ret = irttp_disconnect_request(self->tsap, userdata, P_NORMAL);	return ret;}/* * Function ircomm_ttp_disconnect_indication (instance, sap, reason, skb) * *     * */void ircomm_ttp_disconnect_indication(void *instance, void *sap, 				      LM_REASON reason,				      struct sk_buff *skb){	struct ircomm_cb *self = (struct ircomm_cb *) instance;	struct ircomm_info info;	IRDA_DEBUG(2, "%s()\n", __FUNCTION__ );	ASSERT(self != NULL, return;);	ASSERT(self->magic == IRCOMM_MAGIC, return;);	info.reason = reason;	ircomm_do_event(self, IRCOMM_TTP_DISCONNECT_INDICATION, skb, &info);	/* Drop reference count - see ircomm_tty_disconnect_indication(). */	if(skb)		dev_kfree_skb(skb);}/* * Function ircomm_ttp_flow_indication (instance, sap, cmd) * *    Layer below is telling us to start or stop the flow of data * */void ircomm_ttp_flow_indication(void *instance, void *sap, LOCAL_FLOW cmd){	struct ircomm_cb *self = (struct ircomm_cb *) instance;	IRDA_DEBUG(4, "%s()\n", __FUNCTION__ );	ASSERT(self != NULL, return;);	ASSERT(self->magic == IRCOMM_MAGIC, return;);		if (self->notify.flow_indication)		self->notify.flow_indication(self->notify.instance, self, cmd);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品2024| 91黄色激情网站| 亚洲精品欧美激情| 欧美精品一区二区三区蜜臀| 成人小视频在线| 免费在线成人网| 亚洲精品乱码久久久久久| 91精品国产91久久综合桃花| www.欧美色图| 国产一区二区三区视频在线播放| 一区二区三区波多野结衣在线观看| 欧美r级在线观看| 欧美日韩情趣电影| 成人高清视频免费观看| 九九九精品视频| 调教+趴+乳夹+国产+精品| 1000精品久久久久久久久| 日韩精品一区二区三区在线| 欧美图片一区二区三区| 成人深夜视频在线观看| 国产一区二区三区在线观看免费视频 | 青青草97国产精品免费观看 | 免费观看一级特黄欧美大片| 亚洲色图视频网站| 亚洲国产精品二十页| 久久综合色一综合色88| 91精品国产一区二区| 欧美日韩一区成人| 91成人在线免费观看| 日本韩国欧美一区二区三区| 波多野结衣一区二区三区 | 欧美精品 日韩| 欧洲亚洲国产日韩| 在线免费不卡视频| 色噜噜狠狠色综合中国| 色综合av在线| 在线免费视频一区二区| 欧洲日韩一区二区三区| 色婷婷av一区| 欧美午夜电影在线播放| 欧美色爱综合网| 欧美精品777| 欧美一二三四在线| 欧美v日韩v国产v| 久久亚洲一区二区三区四区| 精品国产自在久精品国产| 精品久久久久久久久久久久久久久| 日韩一区二区电影在线| 精品久久人人做人人爰| 久久综合久久综合久久综合| 久久一区二区视频| 亚洲国产高清不卡| 亚洲视频综合在线| 亚洲一级电影视频| 秋霞影院一区二区| 激情综合色综合久久综合| 国产露脸91国语对白| 99免费精品在线观看| 91久久精品国产91性色tv| 欧美日韩激情一区二区三区| 在线不卡欧美精品一区二区三区| 欧美一区二区三区免费视频| 精品国产乱码91久久久久久网站| 久久久激情视频| 亚洲激情校园春色| 日本女优在线视频一区二区| 国产精品综合二区| av成人老司机| 欧美日韩成人综合天天影院 | 亚洲一区二区三区影院| 五月婷婷久久丁香| 国产毛片精品一区| 91美女片黄在线观看91美女| 欧美高清视频在线高清观看mv色露露十八| 日韩欧美资源站| 国产精品欧美一区二区三区| 亚洲夂夂婷婷色拍ww47| 黄页网站大全一区二区| 99精品偷自拍| 欧美日韩高清影院| 亚洲国产电影在线观看| 午夜精品久久久久久久久| 国产老肥熟一区二区三区| 色噜噜狠狠成人中文综合| 26uuu亚洲综合色欧美| 亚洲女爱视频在线| 久久av资源站| 91久久精品网| 亚洲国产成人一区二区三区| 亚洲第一在线综合网站| 丁香啪啪综合成人亚洲小说| 欧美日韩国产123区| 国产精品久久精品日日| 免费成人av在线| 日本高清免费不卡视频| 国产亚洲欧美中文| 免费精品视频在线| 色哟哟日韩精品| 国产三级欧美三级日产三级99| 性感美女极品91精品| 91丨porny丨国产| 国产色综合一区| 久久精品国产成人一区二区三区 | 欧洲精品一区二区三区在线观看| 久久综合成人精品亚洲另类欧美| 亚洲综合视频在线观看| 岛国一区二区在线观看| 精品久久一区二区三区| 亚洲成人av一区| 色播五月激情综合网| 国产精品国产精品国产专区不蜜 | 春色校园综合激情亚洲| 日韩三级视频中文字幕| 亚洲最大的成人av| www.亚洲国产| 国产精品色在线| 国产乱人伦偷精品视频免下载| 日韩精品综合一本久道在线视频| 亚洲国产精品尤物yw在线观看| 91视频国产观看| 欧美极品少妇xxxxⅹ高跟鞋| 国内精品视频666| 精品欧美乱码久久久久久1区2区| 日韩专区欧美专区| 欧美日韩一区二区三区四区五区| 亚洲另类春色国产| 972aa.com艺术欧美| 国产精品五月天| 国产99精品视频| 国产午夜精品福利| 风间由美一区二区三区在线观看| 久久精品一区四区| 国产成人av电影在线观看| 国产午夜亚洲精品不卡| 国产aⅴ综合色| 国产精品无圣光一区二区| 白白色 亚洲乱淫| 亚洲美腿欧美偷拍| 在线观看亚洲a| 亚洲高清视频的网址| 337p亚洲精品色噜噜噜| 蜜臀久久久久久久| 欧美成人video| 国产99久久久久久免费看农村| 国产精品亲子伦对白| 色综合亚洲欧洲| 亚洲v中文字幕| 精品免费一区二区三区| 国产精品18久久久久久久久久久久| 久久久精品综合| www.性欧美| 午夜国产不卡在线观看视频| 91麻豆精品国产91久久久久久| 免费美女久久99| 日本一区二区不卡视频| 91论坛在线播放| 天堂影院一区二区| 精品卡一卡二卡三卡四在线| 成人一区二区三区| 亚洲综合一区二区| 日韩欧美国产一区二区三区| 国产一区二区精品久久91| 国产精品理伦片| 欧美日韩精品专区| 久久av资源站| 亚洲蜜桃精久久久久久久| 91精品国产综合久久婷婷香蕉 | 国产日本亚洲高清| 色综合色综合色综合色综合色综合| 亚洲亚洲精品在线观看| 日韩欧美视频一区| 成人av网站在线| 性久久久久久久久久久久| 久久久777精品电影网影网 | 91国偷自产一区二区开放时间 | 91成人在线免费观看| 老司机精品视频线观看86 | 久久福利视频一区二区| 中文成人av在线| 欧美精品亚洲一区二区在线播放| 久久99国产精品久久| 亚洲欧美偷拍三级| 精品少妇一区二区三区免费观看| jizz一区二区| 美女在线视频一区| 亚洲九九爱视频| 久久一日本道色综合| 欧美日韩你懂得| 95精品视频在线| 国产一区二区三区精品视频| 夜夜嗨av一区二区三区网页| 2020国产精品自拍| 欧美视频一区二区| 99久久精品国产一区| 精品一区二区三区免费播放 | 亚洲夂夂婷婷色拍ww47| 国产日韩欧美不卡在线| 91 com成人网| 91老师片黄在线观看| 国产精品1024|