• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/net/irda/

Lines Matching refs:skb

47 				 struct sk_buff *skb);
49 struct sk_buff *skb);
54 __u8 header_size, struct sk_buff *skb);
57 __u8 header_size, struct sk_buff *skb);
62 static void irttp_fragment_skb(struct tsap_cb *self, struct sk_buff *skb);
207 struct sk_buff* skb;
215 while ((skb = skb_dequeue(&self->tx_queue)) != NULL)
216 dev_kfree_skb(skb);
219 while ((skb = skb_dequeue(&self->rx_queue)) != NULL)
220 dev_kfree_skb(skb);
223 while ((skb = skb_dequeue(&self->rx_fragments)) != NULL)
224 dev_kfree_skb(skb);
230 * Makes a new (continuous) skb of all the fragments in the fragment
236 struct sk_buff *skb, *frag;
245 skb = dev_alloc_skb(TTP_HEADER + self->rx_sdu_size);
246 if (!skb)
250 * Need to reserve space for TTP header in case this skb needs to
253 skb_reserve(skb, TTP_HEADER);
254 skb_put(skb, self->rx_sdu_size);
260 skb_copy_to_linear_data_offset(skb, n, frag->data, frag->len);
278 skb_trim(skb, n);
282 return skb;
286 * Function irttp_fragment_skb (skb)
292 struct sk_buff *skb)
301 IRDA_ASSERT(skb != NULL, return;);
306 while (skb->len > self->max_seg_size) {
317 /* Copy data from the original skb into this fragment. */
318 skb_copy_from_linear_data(skb, skb_put(frag, self->max_seg_size),
325 /* Hide the copied data from the original skb */
326 skb_pull(skb, self->max_seg_size);
331 /* Queue what is left of the original skb */
334 frame = skb_push(skb, TTP_HEADER);
338 skb_queue_tail(&self->tx_queue, skb);
546 * Function irttp_udata_request (self, skb)
551 int irttp_udata_request(struct tsap_cb *self, struct sk_buff *skb)
555 IRDA_ASSERT(skb != NULL, return -1;);
560 if ((skb->len == 0) || (!self->connected)) {
566 if (skb->len > self->max_seg_size) {
572 irlmp_udata_request(self->lsap, skb);
578 dev_kfree_skb(skb);
585 * Function irttp_data_request (handle, skb)
590 int irttp_data_request(struct tsap_cb *self, struct sk_buff *skb)
597 IRDA_ASSERT(skb != NULL, return -1;);
603 if ((skb->len == 0) || (!self->connected)) {
613 if ((self->tx_max_sdu_size == 0) && (skb->len > self->max_seg_size)) {
626 (skb->len > self->tx_max_sdu_size))
649 if ((self->tx_max_sdu_size == 0) || (skb->len < self->max_seg_size)) {
651 IRDA_ASSERT(skb_headroom(skb) >= TTP_HEADER, return -1;);
652 frame = skb_push(skb, TTP_HEADER);
655 skb_queue_tail(&self->tx_queue, skb);
663 irttp_fragment_skb(self, skb);
690 dev_kfree_skb(skb);
703 struct sk_buff *skb;
720 (skb = skb_dequeue(&self->tx_queue)))
746 skb->data[0] |= (n & 0x7f);
749 * The current skb has a reference to the socket that sent
750 * it (skb->sk). When we pass it to IrLMP, the skb will be
756 * When the skb is freed (kfree_skb), if it is associated
766 if (skb->sk != NULL) {
768 skb_orphan(skb);
772 /* Pass the skb to IrLMP - done */
773 irlmp_data_request(self->lsap, skb);
855 * Function irttp_udata_indication (instance, sap, skb)
861 struct sk_buff *skb)
872 IRDA_ASSERT(skb != NULL, return -1;);
879 self,skb);
885 dev_kfree_skb(skb);
891 * Function irttp_data_indication (instance, sap, skb)
897 struct sk_buff *skb)
905 n = skb->data[0] & 0x7f; /* Extract the credits */
916 if (skb->len > 1)
924 if (skb->len > 1) {
929 skb_queue_tail(&self->rx_queue, skb);
932 dev_kfree_skb(skb);
1180 * Function irttp_connect_confirm (handle, qos, skb)
1187 __u8 max_header_size, struct sk_buff *skb)
1201 IRDA_ASSERT(skb != NULL, return;);
1217 n = skb->data[0] & 0x7f;
1225 parameters = skb->data[0] & 0x80;
1227 IRDA_ASSERT(skb->len >= TTP_HEADER, return;);
1228 skb_pull(skb, TTP_HEADER);
1231 plen = skb->data[0];
1233 ret = irda_param_extract_all(self, skb->data+1,
1234 IRDA_MIN(skb->len-1, plen),
1241 dev_kfree_skb(skb);
1247 skb_pull(skb, IRDA_MIN(skb->len, plen+1));
1259 self->max_header_size, skb);
1261 dev_kfree_skb(skb);
1265 * Function irttp_connect_indication (handle, skb)
1272 struct sk_buff *skb)
1285 IRDA_ASSERT(skb != NULL, return;);
1297 n = skb->data[0] & 0x7f;
1302 parameters = skb->data[0] & 0x80;
1304 IRDA_ASSERT(skb->len >= TTP_HEADER, return;);
1305 skb_pull(skb, TTP_HEADER);
1308 plen = skb->data[0];
1310 ret = irda_param_extract_all(self, skb->data+1,
1311 IRDA_MIN(skb->len-1, plen),
1318 dev_kfree_skb(skb);
1325 skb_pull(skb, IRDA_MIN(skb->len, plen+1));
1331 self->max_header_size, skb);
1333 dev_kfree_skb(skb);
1585 LM_REASON reason, struct sk_buff *skb)
1603 if (skb)
1604 dev_kfree_skb(skb);
1618 reason, skb);
1620 if (skb)
1621 dev_kfree_skb(skb);
1625 * Function irttp_do_data_indication (self, skb)
1627 * Try to deliver reassembled skb to layer above, and requeue it if that
1631 static void irttp_do_data_indication(struct tsap_cb *self, struct sk_buff *skb)
1637 dev_kfree_skb(skb);
1641 err = self->notify.data_indication(self->notify.instance, self, skb);
1649 IRDA_DEBUG(0, "%s() requeueing skb!\n", __func__);
1655 skb_push(skb, TTP_HEADER);
1656 skb->data[0] = 0x00; /* Make sure MORE bit is cleared */
1658 /* Put skb back on queue */
1659 skb_queue_head(&self->rx_queue, skb);
1671 struct sk_buff *skb;
1684 while (!self->rx_sdu_busy && (skb = skb_dequeue(&self->rx_queue))) {
1686 more = skb->data[0] & 0x80;
1689 skb_pull(skb, TTP_HEADER);
1692 self->rx_sdu_size += skb->len;
1701 irttp_do_data_indication(self, skb);
1716 skb_queue_tail(&self->rx_fragments, skb);
1719 dev_kfree_skb(skb);
1737 skb);
1739 skb = irttp_reassemble_skb(self);
1742 /* Now we can deliver the reassembled skb */
1743 irttp_do_data_indication(self, skb);
1748 dev_kfree_skb(skb);
1751 skb = irttp_reassemble_skb(self);
1753 irttp_do_data_indication(self, skb);