Lines Matching refs:skb

48 				struct sk_buff *skb, struct rtllib_rx_stats *rx_status,
51 skb->dev = ieee->dev;
52 skb_reset_mac_header(skb);
53 skb_pull(skb, hdr_length);
54 skb->pkt_type = PACKET_OTHERHOST;
55 skb->protocol = htons(ETH_P_80211_RAW);
56 memset(skb->cb, 0, sizeof(skb->cb));
57 netif_rx(skb);
70 if (entry->skb != NULL &&
76 dev_kfree_skb_any(entry->skb);
77 entry->skb = NULL;
80 if (entry->skb != NULL && entry->seq == seq &&
95 struct sk_buff *skb = NULL;
121 skb = dev_alloc_skb(ieee->dev->mtu +
128 if (skb == NULL)
136 if (entry->skb != NULL)
137 dev_kfree_skb_any(entry->skb);
142 entry->skb = skb;
152 skb = entry->skb;
156 return skb;
196 entry->skb = NULL;
206 rtllib_rx_frame_mgmt(struct rtllib_device *ieee, struct sk_buff *skb,
214 struct rtllib_hdr_3addr *hdr = (struct rtllib_hdr_3addr *)skb->data;
216 rx_stats->len = skb->len;
217 rtllib_rx_mgt(ieee, skb, rx_stats);
219 dev_kfree_skb_any(skb);
222 rtllib_rx_frame_softmac(ieee, skb, rx_stats, type, stype);
224 dev_kfree_skb_any(skb);
242 struct sk_buff *skb, size_t hdrlen)
249 if (skb->len < 24)
252 hdr = (struct rtllib_hdr_4addr *) skb->data;
268 if (skb->len < 24 + 8)
272 pos = skb->data + hdrlen;
282 rtllib_rx_frame_decrypt(struct rtllib_device *ieee, struct sk_buff *skb,
292 struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE);
300 hdr = (struct rtllib_hdr_4addr *) skb->data;
304 res = crypt->ops->decrypt_mpdu(skb, hdrlen, crypt->priv);
313 skb->data[hdrlen + 3] >> 6);
324 rtllib_rx_frame_decrypt_msdu(struct rtllib_device *ieee, struct sk_buff *skb,
333 struct cb_desc *tcb_desc = (struct cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE);
341 hdr = (struct rtllib_hdr_4addr *) skb->data;
345 res = crypt->ops->decrypt_msdu(skb, keyidx, hdrlen, crypt->priv);
742 static u8 parse_subframe(struct rtllib_device *ieee, struct sk_buff *skb,
746 struct rtllib_hdr_3addr *hdr = (struct rtllib_hdr_3addr *)skb->data;
760 (((union frameqos *)(skb->data + RTLLIB_3ADDR_LEN))->field.reserved))
770 if (skb->len <= ChkLength)
773 skb_pull(skb, LLCOffset);
779 * The struct buffer size of the skb indicated to upper layer
783 * "skb_copy" and "skb_clone" for "skb".
786 /* Allocate new skb for releasing to upper layer */
791 data_ptr = (u8 *)skb_put(sub_skb, skb->len);
792 memcpy(data_ptr, skb->data, skb->len);
805 while (skb->len > ETHERNET_HEADER_SIZE) {
807 nSubframe_Length = *((u16 *)(skb->data + 12));
811 if (skb->len < (ETHERNET_HEADER_SIZE + nSubframe_Length)) {
819 "nSubframe_Length is : %d\n", skb->len,
826 skb_pull(skb, ETHERNET_HEADER_SIZE);
829 * The struct buffer size of the skb indicated to upper layer
833 * "skb_copy" and "skb_clone" for "skb".
836 /* Allocate new skb for releasing to upper layer */
842 memcpy(data_ptr, skb->data, nSubframe_Length);
851 skb_pull(skb, nSubframe_Length);
853 if (skb->len != 0) {
859 if (skb->len < nPadding_Length)
862 skb_pull(skb, nPadding_Length);
872 struct sk_buff *skb,
875 struct rtllib_hdr_4addr *hdr = (struct rtllib_hdr_4addr *)skb->data;
880 if (HTCCheck(ieee, skb->data)) {
894 struct sk_buff *skb, u8 multicast)
896 struct rtllib_hdr_4addr *hdr = (struct rtllib_hdr_4addr *)skb->data;
908 !IsDataFrame(skb->data) ||
909 IsLegacyDataFrame(skb->data)) {
918 (u8)Frame_QoSTID((u8 *)(skb->data)), RX_DIR, true)) {
1021 static int rtllib_rx_get_crypt(struct rtllib_device *ieee, struct sk_buff *skb,
1024 struct rtllib_hdr_4addr *hdr = (struct rtllib_hdr_4addr *)skb->data;
1029 if (skb->len >= hdrlen + 3)
1030 idx = skb->data[hdrlen + 3] >> 6;
1055 static int rtllib_rx_decrypt(struct rtllib_device *ieee, struct sk_buff *skb,
1064 hdr = (struct rtllib_hdr_4addr *)skb->data;
1074 keyidx = rtllib_rx_frame_decrypt(ieee, skb, crypt);
1080 hdr = (struct rtllib_hdr_4addr *) skb->data;
1089 "Rx cannot get skb from fragment "
1095 flen = skb->len;
1101 "reassembled frame did not fit skb\n",
1109 * beginning of the fragment cache skb */
1110 memcpy(skb_put(frag_skb, flen), skb->data, flen);
1113 * cache skb */
1114 memcpy(skb_put(frag_skb, flen), skb->data + hdrlen,
1117 dev_kfree_skb_any(skb);
1118 skb = NULL;
1121 /* more fragments expected - leave the skb in fragment
1128 * delivered, so remove skb from fragment cache */
1129 skb = frag_skb;
1130 hdr = (struct rtllib_hdr_4addr *) skb->data;
1134 /* skb: hdr + (possible reassembled) full MSDU payload; possibly still
1137 rtllib_rx_frame_decrypt_msdu(ieee, skb, keyidx, crypt)) {
1142 hdr = (struct rtllib_hdr_4addr *) skb->data;
1145 rtllib_is_eapol_frame(ieee, skb, hdrlen)) {
1149 struct eapol *eap = (struct eapol *)(skb->data +
1163 rtllib_is_eapol_frame(ieee, skb, hdrlen)) {
1164 struct eapol *eap = (struct eapol *)(skb->data +
1171 !rtllib_is_eapol_frame(ieee, skb, hdrlen)) {
1180 if (rtllib_is_eapol_frame(ieee, skb, hdrlen))
1261 static int rtllib_rx_InfraAdhoc(struct rtllib_device *ieee, struct sk_buff *skb,
1265 struct rtllib_hdr_4addr *hdr = (struct rtllib_hdr_4addr *)skb->data;
1276 hdr = (struct rtllib_hdr_4addr *)skb->data;
1293 hdrlen = rtllib_rx_get_hdrlen(ieee, skb, rx_stats);
1294 if (skb->len < hdrlen) {
1295 printk(KERN_INFO "%s():ERR!!! skb->len is smaller than hdrlen\n", __func__);
1300 ret = rtllib_rx_check_duplicate(ieee, skb, multicast);
1312 if (rtllib_rx_frame_mgmt(ieee, skb, rx_stats, type, stype))
1335 if (skb->len == hdrlen)
1350 ret = rtllib_rx_get_crypt(ieee, skb, &crypt, hdrlen);
1355 ret = rtllib_rx_decrypt(ieee, skb, rx_stats, crypt, hdrlen);
1362 hdr = (struct rtllib_hdr_4addr *) skb->data;
1363 if (ieee->current_network.qos_data.active && IsQoSDataFrame(skb->data)
1366 TID = Frame_QoSTID(skb->data);
1374 /* skb: hdr + (possible reassembled) full plaintext payload */
1375 payload = skb->data + hdrlen;
1384 if (parse_subframe(ieee, skb, rx_stats, rxb, src, dst) == 0) {
1412 dev_kfree_skb(skb);
1430 static int rtllib_rx_Master(struct rtllib_device *ieee, struct sk_buff *skb,
1436 static int rtllib_rx_Monitor(struct rtllib_device *ieee, struct sk_buff *skb,
1439 struct rtllib_hdr_4addr *hdr = (struct rtllib_hdr_4addr *)skb->data;
1443 if (skb->len < hdrlen) {
1444 printk(KERN_INFO "%s():ERR!!! skb->len is smaller than hdrlen\n", __func__);
1448 if (HTCCheck(ieee, skb->data)) {
1454 rtllib_monitor_rx(ieee, skb, rx_stats, hdrlen);
1456 ieee->stats.rx_bytes += skb->len;
1461 static int rtllib_rx_Mesh(struct rtllib_device *ieee, struct sk_buff *skb,
1467 /* All received frames are sent to this function. @skb contains the frame in
1470 int rtllib_rx(struct rtllib_device *ieee, struct sk_buff *skb,
1475 if ((NULL == ieee) || (NULL == skb) || (NULL == rx_stats)) {
1479 if (skb->len < 10) {
1487 ret = rtllib_rx_InfraAdhoc(ieee, skb, rx_stats);
1491 ret = rtllib_rx_Master(ieee, skb, rx_stats);
1494 ret = rtllib_rx_Monitor(ieee, skb, rx_stats);
1497 ret = rtllib_rx_Mesh(ieee, skb, rx_stats);
2691 struct sk_buff *skb,
2694 struct rtllib_hdr_4addr *header = (struct rtllib_hdr_4addr *)skb->data ;
2735 rtllib_rx_probe_rq(ieee, skb);