Lines Matching refs:skb
35 ax25_cb *ax25_send_frame(struct sk_buff *skb, int paclen, ax25_address *src, ax25_address *dest, ax… in ax25_send_frame() argument
55 ax25_output(ax25, paclen, skb); in ax25_send_frame()
106 ax25_output(ax25, paclen, skb); in ax25_send_frame()
119 void ax25_output(ax25_cb *ax25, int paclen, struct sk_buff *skb) in ax25_output() argument
127 kfree_skb(skb); in ax25_output()
131 if ((skb->len - 1) > paclen) { in ax25_output()
132 if (*skb->data == AX25_P_TEXT) { in ax25_output()
133 skb_pull(skb, 1); /* skip PID */ in ax25_output()
140 fragno = skb->len / paclen; in ax25_output()
141 if (skb->len % paclen == 0) fragno--; in ax25_output()
143 frontlen = skb_headroom(skb); /* Address space + CTRL */ in ax25_output()
145 while (skb->len > 0) { in ax25_output()
153 if (skb->sk != NULL) in ax25_output()
154 skb_set_owner_w(skbn, skb->sk); in ax25_output()
158 len = (paclen > skb->len) ? skb->len : paclen; in ax25_output()
163 skb_network_offset(skb)); in ax25_output()
164 skb_copy_from_linear_data(skb, skb_put(skbn, len), len); in ax25_output()
177 skb_network_offset(skb)); in ax25_output()
178 skb_copy_from_linear_data(skb, skb_put(skbn, len), len); in ax25_output()
183 skb_pull(skb, len); in ax25_output()
187 kfree_skb(skb); in ax25_output()
189 skb_queue_tail(&ax25->write_queue, skb); /* Throw it on the queue */ in ax25_output()
214 static void ax25_send_iframe(ax25_cb *ax25, struct sk_buff *skb, int poll_bit) in ax25_send_iframe() argument
218 if (skb == NULL) in ax25_send_iframe()
221 skb_reset_network_header(skb); in ax25_send_iframe()
224 frame = skb_push(skb, 1); in ax25_send_iframe()
231 frame = skb_push(skb, 2); in ax25_send_iframe()
241 ax25_transmit_buffer(ax25, skb, AX25_COMMAND); in ax25_send_iframe()
246 struct sk_buff *skb, *skbn; in ax25_kick() local
275 skb = skb_dequeue(&ax25->write_queue); in ax25_kick()
276 if (!skb) in ax25_kick()
282 if ((skbn = skb_clone(skb, GFP_ATOMIC)) == NULL) { in ax25_kick()
283 skb_queue_head(&ax25->write_queue, skb); in ax25_kick()
287 if (skb->sk != NULL) in ax25_kick()
288 skb_set_owner_w(skbn, skb->sk); in ax25_kick()
316 skb_queue_tail(&ax25->ack_queue, skb); in ax25_kick()
318 } while (!last && (skb = skb_dequeue(&ax25->write_queue)) != NULL); in ax25_kick()
329 void ax25_transmit_buffer(ax25_cb *ax25, struct sk_buff *skb, int type) in ax25_transmit_buffer() argument
342 if (skb_headroom(skb) < headroom) { in ax25_transmit_buffer()
343 if ((skbn = skb_realloc_headroom(skb, headroom)) == NULL) { in ax25_transmit_buffer()
345 kfree_skb(skb); in ax25_transmit_buffer()
349 if (skb->sk != NULL) in ax25_transmit_buffer()
350 skb_set_owner_w(skbn, skb->sk); in ax25_transmit_buffer()
352 consume_skb(skb); in ax25_transmit_buffer()
353 skb = skbn; in ax25_transmit_buffer()
356 ptr = skb_push(skb, headroom); in ax25_transmit_buffer()
360 ax25_queue_xmit(skb, ax25->ax25_dev->dev); in ax25_transmit_buffer()
367 void ax25_queue_xmit(struct sk_buff *skb, struct net_device *dev) in ax25_queue_xmit() argument
371 skb->protocol = ax25_type_trans(skb, ax25_fwd_dev(dev)); in ax25_queue_xmit()
373 ptr = skb_push(skb, 1); in ax25_queue_xmit()
376 dev_queue_xmit(skb); in ax25_queue_xmit()