Lines Matching refs:skb
36 ax25_cb *ax25_send_frame(struct sk_buff *skb, int paclen, ax25_address *src, ax25_address *dest, ax… in ax25_send_frame() argument
56 ax25_output(ax25, paclen, skb); in ax25_send_frame()
107 ax25_output(ax25, paclen, skb); in ax25_send_frame()
120 void ax25_output(ax25_cb *ax25, int paclen, struct sk_buff *skb) in ax25_output() argument
128 kfree_skb(skb); in ax25_output()
132 if ((skb->len - 1) > paclen) { in ax25_output()
133 if (*skb->data == AX25_P_TEXT) { in ax25_output()
134 skb_pull(skb, 1); /* skip PID */ in ax25_output()
141 fragno = skb->len / paclen; in ax25_output()
142 if (skb->len % paclen == 0) fragno--; in ax25_output()
144 frontlen = skb_headroom(skb); /* Address space + CTRL */ in ax25_output()
146 while (skb->len > 0) { in ax25_output()
154 if (skb->sk != NULL) in ax25_output()
155 skb_set_owner_w(skbn, skb->sk); in ax25_output()
159 len = (paclen > skb->len) ? skb->len : paclen; in ax25_output()
164 skb_network_offset(skb)); in ax25_output()
165 skb_copy_from_linear_data(skb, skb_put(skbn, len), len); in ax25_output()
178 skb_network_offset(skb)); in ax25_output()
179 skb_copy_from_linear_data(skb, skb_put(skbn, len), len); in ax25_output()
184 skb_pull(skb, len); in ax25_output()
188 kfree_skb(skb); in ax25_output()
190 skb_queue_tail(&ax25->write_queue, skb); /* Throw it on the queue */ in ax25_output()
215 static void ax25_send_iframe(ax25_cb *ax25, struct sk_buff *skb, int poll_bit) in ax25_send_iframe() argument
219 if (skb == NULL) in ax25_send_iframe()
222 skb_reset_network_header(skb); in ax25_send_iframe()
225 frame = skb_push(skb, 1); in ax25_send_iframe()
232 frame = skb_push(skb, 2); in ax25_send_iframe()
242 ax25_transmit_buffer(ax25, skb, AX25_COMMAND); in ax25_send_iframe()
247 struct sk_buff *skb, *skbn; in ax25_kick() local
276 skb = skb_dequeue(&ax25->write_queue); in ax25_kick()
277 if (!skb) in ax25_kick()
283 if ((skbn = skb_clone(skb, GFP_ATOMIC)) == NULL) { in ax25_kick()
284 skb_queue_head(&ax25->write_queue, skb); in ax25_kick()
288 if (skb->sk != NULL) in ax25_kick()
289 skb_set_owner_w(skbn, skb->sk); in ax25_kick()
317 skb_queue_tail(&ax25->ack_queue, skb); in ax25_kick()
319 } while (!last && (skb = skb_dequeue(&ax25->write_queue)) != NULL); in ax25_kick()
330 void ax25_transmit_buffer(ax25_cb *ax25, struct sk_buff *skb, int type) in ax25_transmit_buffer() argument
343 if (skb_headroom(skb) < headroom) { in ax25_transmit_buffer()
344 if ((skbn = skb_realloc_headroom(skb, headroom)) == NULL) { in ax25_transmit_buffer()
346 kfree_skb(skb); in ax25_transmit_buffer()
350 if (skb->sk != NULL) in ax25_transmit_buffer()
351 skb_set_owner_w(skbn, skb->sk); in ax25_transmit_buffer()
353 consume_skb(skb); in ax25_transmit_buffer()
354 skb = skbn; in ax25_transmit_buffer()
357 ptr = skb_push(skb, headroom); in ax25_transmit_buffer()
361 ax25_queue_xmit(skb, ax25->ax25_dev->dev); in ax25_transmit_buffer()
368 void ax25_queue_xmit(struct sk_buff *skb, struct net_device *dev) in ax25_queue_xmit() argument
372 skb->protocol = ax25_type_trans(skb, ax25_fwd_dev(dev)); in ax25_queue_xmit()
374 ptr = skb_push(skb, 1); in ax25_queue_xmit()
377 dev_queue_xmit(skb); in ax25_queue_xmit()