Lines Matching defs:pSkb

300     int (*pfnStartXmit)(struct sk_buff *pSkb, struct net_device *pDev);
317 * @param pSkb The socket buffer to transmit.
320 static int vboxNetFltLinuxStartXmitFilter(struct sk_buff *pSkb, struct net_device *pDev)
344 dev_kfree_skb(pSkb);
356 cbHdrs = skb_headlen(pSkb);
358 pEtherHdr = (PCRTNETETHERHDR)skb_header_pointer(pSkb, 0, cbHdrs, &abHdrBuf[0]);
371 dev_kfree_skb(pSkb);
377 return pOverride->OVR_XMIT(pSkb, pDev);
1033 * @param pSkb The GSO socket buffer.
1037 static bool vboxNetFltLinuxCanForwardAsGso(PVBOXNETFLTINS pThis, struct sk_buff *pSkb, uint32_t fSrc,
1060 if (RT_UNLIKELY( skb_shinfo(pSkb)->gso_type & ~(SKB_GSO_UDP | SKB_GSO_DODGY | SKB_GSO_TCPV6 | SKB_GSO_TCPV4) ))
1062 Log5(("vboxNetFltLinuxCanForwardAsGso: gso_type=%#x\n", skb_shinfo(pSkb)->gso_type));
1065 if (RT_UNLIKELY( skb_shinfo(pSkb)->gso_size < 1
1066 || pSkb->len > VBOX_MAX_GSO_SIZE ))
1068 Log5(("vboxNetFltLinuxCanForwardAsGso: gso_size=%#x skb_len=%#x (max=%#x)\n", skb_shinfo(pSkb)->gso_size, pSkb->len, VBOX_MAX_GSO_SIZE));
1082 pSkb->mac_len = skb_network_header(pSkb) - skb_mac_header(pSkb);
1083 skb_push(pSkb, pSkb->mac_len);
1085 pSkb->mac_len, pSkb->data, skb_mac_header(pSkb), skb_network_header(pSkb)));
1097 skb_reset_mac_header(pSkb);
1098 pSkb->mac_len = pSkb->network_header - pSkb->mac_header;
1100 pSkb->mac.raw = pSkb->data;
1101 pSkb->mac_len = pSkb->nh.raw - pSkb->data;
1108 uEtherType = pSkb->protocol;
1110 && pSkb->mac_len == sizeof(RTNETETHERHDR) + sizeof(uint32_t))
1112 uint16_t const *puEtherType = skb_header_pointer(pSkb, sizeof(RTNETETHERHDR) + sizeof(uint16_t), sizeof(uint16_t), &Buf);
1121 PCRTNETIPV4 pIPv4 = (PCRTNETIPV4)skb_header_pointer(pSkb, pSkb->mac_len, sizeof(Buf.IPv4), &Buf);
1137 offTransport = pSkb->mac_len + cbHdr;
1150 PCRTNETIPV6 pIPv6 = (PCRTNETIPV6)skb_header_pointer(pSkb, pSkb->mac_len, sizeof(Buf.IPv6), &Buf);
1158 offTransport = pSkb->mac_len + sizeof(RTNETIPV6);
1182 || offTransport + cbTransport > pSkb->len
1186 offTransport, cbTransport, offTransport + cbTransport, pSkb->len, PDMNetGsoTypeName(enmGsoType) ));
1195 PCRTNETTCP pTcp = (PCRTNETTCP)skb_header_pointer(pSkb, offTransport, sizeof(Buf.Tcp), &Buf);
1207 || offTransport + cbTransportHdr >= pSkb->len ))
1209 Log5(("vboxNetFltLinuxCanForwardAsGso: No space for TCP header; off=%#x cb=%#x skb_len=%#x\n", offTransport, cbTransportHdr, pSkb->len));
1220 || offTransport + cbTransportHdr >= pSkb->len ))
1222 Log5(("vboxNetFltLinuxCanForwardAsGso: No space for UDP header; off=%#x skb_len=%#x\n", offTransport, pSkb->len));
1232 pGsoCtx->cbMaxSeg = skb_shinfo(pSkb)->gso_size;
1233 pGsoCtx->offHdr1 = pSkb->mac_len;
1245 * @param pSkb The GSO socket buffer.
1249 static int vboxNetFltLinuxForwardAsGso(PVBOXNETFLTINS pThis, struct sk_buff *pSkb, uint32_t fSrc, PCPDMNETWORKGSO pGsoCtx)
1252 unsigned cSegs = vboxNetFltLinuxCalcSGSegments(pSkb);
1258 vboxNetFltLinuxSkBufToSG(pThis, pSkb, pSG, cSegs, fSrc, pGsoCtx);
1279 dev_kfree_skb(pSkb);