Lines Matching refs:skb

20 void hostap_dump_tx_80211(const char *name, struct sk_buff *skb)  in hostap_dump_tx_80211()  argument
25 hdr = (struct ieee80211_hdr *) skb->data; in hostap_dump_tx_80211()
28 name, skb->len, jiffies); in hostap_dump_tx_80211()
30 if (skb->len < 2) in hostap_dump_tx_80211()
40 if (skb->len < IEEE80211_DATA_HDR3_LEN) { in hostap_dump_tx_80211()
51 if (skb->len >= 30) in hostap_dump_tx_80211()
60 netdev_tx_t hostap_data_start_xmit(struct sk_buff *skb, in hostap_data_start_xmit() argument
79 if (skb->len < ETH_HLEN) { in hostap_data_start_xmit()
81 "(len=%d)\n", dev->name, skb->len); in hostap_data_start_xmit()
82 kfree_skb(skb); in hostap_data_start_xmit()
96 kfree_skb(skb); in hostap_data_start_xmit()
103 kfree_skb(skb); in hostap_data_start_xmit()
107 !ether_addr_equal(skb->data + ETH_ALEN, dev->dev_addr)) { in hostap_data_start_xmit()
121 ethertype = (skb->data[12] << 8) | skb->data[13]; in hostap_data_start_xmit()
155 skb_copy_from_linear_data_offset(skb, ETH_ALEN, in hostap_data_start_xmit()
169 skb_copy_from_linear_data_offset(skb, ETH_ALEN, in hostap_data_start_xmit()
177 is_multicast_ether_addr(skb->data)) in hostap_data_start_xmit()
185 skb_copy_from_linear_data(skb, &hdr.addr3, ETH_ALEN); in hostap_data_start_xmit()
189 skb_copy_from_linear_data(skb, &hdr.addr1, ETH_ALEN); in hostap_data_start_xmit()
191 skb_copy_from_linear_data_offset(skb, ETH_ALEN, &hdr.addr3, in hostap_data_start_xmit()
198 skb_copy_from_linear_data_offset(skb, ETH_ALEN, &hdr.addr2, in hostap_data_start_xmit()
200 skb_copy_from_linear_data(skb, &hdr.addr3, ETH_ALEN); in hostap_data_start_xmit()
203 skb_copy_from_linear_data(skb, &hdr.addr1, ETH_ALEN); in hostap_data_start_xmit()
204 skb_copy_from_linear_data_offset(skb, ETH_ALEN, &hdr.addr2, in hostap_data_start_xmit()
211 skb_pull(skb, skip_header_bytes); in hostap_data_start_xmit()
213 if (skb_tailroom(skb) < need_tailroom) { in hostap_data_start_xmit()
214 skb = skb_unshare(skb, GFP_ATOMIC); in hostap_data_start_xmit()
215 if (skb == NULL) { in hostap_data_start_xmit()
219 if (pskb_expand_head(skb, need_headroom, need_tailroom, in hostap_data_start_xmit()
221 kfree_skb(skb); in hostap_data_start_xmit()
225 } else if (skb_headroom(skb) < need_headroom) { in hostap_data_start_xmit()
226 struct sk_buff *tmp = skb; in hostap_data_start_xmit()
227 skb = skb_realloc_headroom(skb, need_headroom); in hostap_data_start_xmit()
229 if (skb == NULL) { in hostap_data_start_xmit()
234 skb = skb_unshare(skb, GFP_ATOMIC); in hostap_data_start_xmit()
235 if (skb == NULL) { in hostap_data_start_xmit()
242 memcpy(skb_push(skb, encaps_len), encaps_data, encaps_len); in hostap_data_start_xmit()
243 memcpy(skb_push(skb, hdr_len), &hdr, hdr_len); in hostap_data_start_xmit()
245 memcpy(skb_put(skb, ETH_ALEN), &hdr.addr4, ETH_ALEN); in hostap_data_start_xmit()
249 iface->stats.tx_bytes += skb->len; in hostap_data_start_xmit()
251 skb_reset_mac_header(skb); in hostap_data_start_xmit()
252 meta = (struct hostap_skb_tx_data *) skb->cb; in hostap_data_start_xmit()
261 skb->dev = local->dev; in hostap_data_start_xmit()
262 dev_queue_xmit(skb); in hostap_data_start_xmit()
268 netdev_tx_t hostap_mgmt_start_xmit(struct sk_buff *skb, in hostap_mgmt_start_xmit() argument
280 if (skb->len < 10) { in hostap_mgmt_start_xmit()
282 "(len=%d)\n", dev->name, skb->len); in hostap_mgmt_start_xmit()
283 kfree_skb(skb); in hostap_mgmt_start_xmit()
288 iface->stats.tx_bytes += skb->len; in hostap_mgmt_start_xmit()
290 meta = (struct hostap_skb_tx_data *) skb->cb; in hostap_mgmt_start_xmit()
295 if (skb->len >= IEEE80211_DATA_HDR3_LEN + sizeof(rfc1042_header) + 2) { in hostap_mgmt_start_xmit()
296 hdr = (struct ieee80211_hdr *) skb->data; in hostap_mgmt_start_xmit()
300 u8 *pos = &skb->data[IEEE80211_DATA_HDR3_LEN + in hostap_mgmt_start_xmit()
307 skb->dev = local->dev; in hostap_mgmt_start_xmit()
308 dev_queue_xmit(skb); in hostap_mgmt_start_xmit()
314 static struct sk_buff * hostap_tx_encrypt(struct sk_buff *skb, in hostap_tx_encrypt() argument
322 iface = netdev_priv(skb->dev); in hostap_tx_encrypt()
325 if (skb->len < IEEE80211_DATA_HDR3_LEN) { in hostap_tx_encrypt()
326 kfree_skb(skb); in hostap_tx_encrypt()
332 hdr = (struct ieee80211_hdr *) skb->data; in hostap_tx_encrypt()
338 kfree_skb(skb); in hostap_tx_encrypt()
342 skb = skb_unshare(skb, GFP_ATOMIC); in hostap_tx_encrypt()
343 if (skb == NULL) in hostap_tx_encrypt()
350 if ((skb_headroom(skb) < prefix_len || in hostap_tx_encrypt()
351 skb_tailroom(skb) < postfix_len) && in hostap_tx_encrypt()
352 pskb_expand_head(skb, prefix_len, postfix_len, GFP_ATOMIC)) { in hostap_tx_encrypt()
353 kfree_skb(skb); in hostap_tx_encrypt()
357 hdr = (struct ieee80211_hdr *) skb->data; in hostap_tx_encrypt()
365 res = crypt->ops->encrypt_msdu(skb, hdr_len, crypt->priv); in hostap_tx_encrypt()
367 res = crypt->ops->encrypt_mpdu(skb, hdr_len, crypt->priv); in hostap_tx_encrypt()
370 kfree_skb(skb); in hostap_tx_encrypt()
374 return skb; in hostap_tx_encrypt()
381 netdev_tx_t hostap_master_start_xmit(struct sk_buff *skb, in hostap_master_start_xmit() argument
397 tx.skb = skb; in hostap_master_start_xmit()
400 meta = (struct hostap_skb_tx_data *) skb->cb; in hostap_master_start_xmit()
420 if (skb->len < 24) { in hostap_master_start_xmit()
422 "(len=%d)\n", dev->name, skb->len); in hostap_master_start_xmit()
433 skb = tx.skb; in hostap_master_start_xmit()
434 meta = (struct hostap_skb_tx_data *) skb->cb; in hostap_master_start_xmit()
435 hdr = (struct ieee80211_hdr *) skb->data; in hostap_master_start_xmit()
448 hostap_dump_tx_80211(dev->name, skb); in hostap_master_start_xmit()
515 skb = hostap_tx_encrypt(skb, tx.crypt); in hostap_master_start_xmit()
516 if (skb == NULL) { in hostap_master_start_xmit()
522 meta = (struct hostap_skb_tx_data *) skb->cb; in hostap_master_start_xmit()
534 if (local->func->tx == NULL || local->func->tx(skb, dev)) { in hostap_master_start_xmit()
540 iface->stats.tx_bytes += skb->len; in hostap_master_start_xmit()
544 if (ret == NETDEV_TX_OK && skb) in hostap_master_start_xmit()
545 dev_kfree_skb(skb); in hostap_master_start_xmit()