Changeset 38549 in vbox for trunk/src/VBox/HostDrivers/VBoxNetFlt/linux
- Timestamp:
- Aug 26, 2011 1:26:07 PM (14 years ago)
- svn:sync-xref-src-repo-rev:
- 73704
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
r38063 r38549 1198 1198 * directly as it may be immediately forwarded by IP layer @bugref{5020}. 1199 1199 */ 1200 Assert(skb_headlen(pPkt) >= pSG->GsoCtx.cbHdrs );1200 Assert(skb_headlen(pPkt) >= pSG->GsoCtx.cbHdrsTotal); 1201 1201 pPkt->ip_summed = CHECKSUM_PARTIAL; 1202 1202 # if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22) … … 1460 1460 static void vboxNetFltDumpPacket(PINTNETSG pSG, bool fEgress, const char *pszWhere, int iIncrement) 1461 1461 { 1462 int i, offSeg; 1462 1463 uint8_t *pInt, *pExt; 1463 1464 static int iPacketNo = 1; … … 1479 1480 pExt[0], pExt[1], pExt[2], pExt[3], pExt[4], pExt[5], 1480 1481 pSG->cbTotal, iPacketNo)); 1481 Log3(("%.*Rhxd\n", pSG->aSegs[0].cb, pSG->aSegs[0].pv)); 1482 if (pSG->cSegsUsed == 1) 1483 { 1484 Log3(("%.*Rhxd\n", pSG->aSegs[0].cb, pSG->aSegs[0].pv)); 1485 } 1486 else 1487 { 1488 for (i = 0, offSeg = 0; i < pSG->cSegsUsed; i++) 1489 { 1490 Log3(("-- segment %d at 0x%x (%d bytes) --\n%.*Rhxd\n", 1491 i, offSeg, pSG->aSegs[i].cb, pSG->aSegs[i].cb, pSG->aSegs[i].pv)); 1492 offSeg += pSG->aSegs[i].cb; 1493 } 1494 } 1495 1482 1496 } 1483 1497 #else … … 1663 1677 1664 1678 cbTransportHdr = pTcp->th_off * 4; 1679 pGsoCtx->cbHdrsSeg = offTransport + cbTransportHdr; 1665 1680 if (RT_UNLIKELY( cbTransportHdr < RTNETTCP_MIN_LEN 1666 1681 || cbTransportHdr > cbTransport … … 1677 1692 Assert(uProtocol == RTNETIPV4_PROT_UDP); 1678 1693 cbTransportHdr = sizeof(RTNETUDP); 1694 pGsoCtx->cbHdrsSeg = offTransport; /* Exclude UDP header */ 1679 1695 if (RT_UNLIKELY( offTransport + cbTransportHdr >= UINT8_MAX 1680 1696 || offTransport + cbTransportHdr >= pSkb->len )) … … 1689 1705 */ 1690 1706 pGsoCtx->u8Type = enmGsoType; 1691 pGsoCtx->cbHdrs 1707 pGsoCtx->cbHdrsTotal = offTransport + cbTransportHdr; 1692 1708 pGsoCtx->cbMaxSeg = skb_shinfo(pSkb)->gso_size; 1693 1709 pGsoCtx->offHdr1 = pSkb->mac_len; 1694 1710 pGsoCtx->offHdr2 = offTransport; 1695 pGsoCtx->au8Unused[0] = 0; 1696 pGsoCtx->au8Unused[1] = 0; 1711 pGsoCtx->u8Unused = 0; 1697 1712 1698 1713 return true; … … 1948 1963 fGsoCapabilites |= RT_BIT_32(PDMNETWORKGSOTYPE_IPV6_UDP); 1949 1964 # endif 1965 Log3(("vboxNetFltLinuxReportNicGsoCapabilities: reporting wire %s%s%s%s\n", 1966 (fGsoCapabilites & RT_BIT_32(PDMNETWORKGSOTYPE_IPV4_TCP)) ? "tso " : "", 1967 (fGsoCapabilites & RT_BIT_32(PDMNETWORKGSOTYPE_IPV6_TCP)) ? "tso6 " : "", 1968 (fGsoCapabilites & RT_BIT_32(PDMNETWORKGSOTYPE_IPV4_UDP)) ? "ufo " : "", 1969 (fGsoCapabilites & RT_BIT_32(PDMNETWORKGSOTYPE_IPV6_UDP)) ? "ufo6 " : "")); 1950 1970 pThis->pSwitchPort->pfnReportGsoCapabilities(pThis->pSwitchPort, fGsoCapabilites, INTNETTRUNKDIR_WIRE); 1951 1971 } … … 2426 2446 /** @todo duplicate work here now? Attach */ 2427 2447 #if defined(VBOXNETFLT_WITH_GSO_XMIT_HOST) 2448 Log3(("vboxNetFltOsConnectIt: reporting host tso tso6 ufo\n")); 2428 2449 pThis->pSwitchPort->pfnReportGsoCapabilities(pThis->pSwitchPort, 2429 2450 0 2430 2451 | RT_BIT_32(PDMNETWORKGSOTYPE_IPV4_TCP) 2431 2452 | RT_BIT_32(PDMNETWORKGSOTYPE_IPV6_TCP) 2453 | RT_BIT_32(PDMNETWORKGSOTYPE_IPV4_UDP) 2432 2454 # if 0 /** @todo GSO: Test UDP offloading (UFO) on linux. */ 2433 | RT_BIT_32(PDMNETWORKGSOTYPE_IPV4_UDP)2434 2455 | RT_BIT_32(PDMNETWORKGSOTYPE_IPV6_UDP) 2435 2456 # endif
Note:
See TracChangeset
for help on using the changeset viewer.