- Timestamp:
- Aug 2, 2010 9:11:22 AM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 64298
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/pdmnetinline.h
r31271 r31272 43 43 * Checksum type. 44 44 */ 45 typedef enum RTNETCSUMTYPE45 typedef enum PDMNETCSUMTYPE 46 46 { 47 47 /** No checksum. */ 48 RTNETCSUMTYPE_NONE = 0,48 PDMNETCSUMTYPE_NONE = 0, 49 49 /** Normal TCP checksum. */ 50 RTNETCSUMTYPE_COMPLETE,50 PDMNETCSUMTYPE_COMPLETE, 51 51 /** Checksum on pseudo header (used with GSO). */ 52 RTNETCSUMTYPE_PSEUDO,52 PDMNETCSUMTYPE_PSEUDO, 53 53 /** The usual 32-bit hack. */ 54 RTNETCSUMTYPE_32_BIT_HACK = 0x7fffffff55 } RTNETCSUMTYPE;54 PDMNETCSUMTYPE_32_BIT_HACK = 0x7fffffff 55 } PDMNETCSUMTYPE; 56 56 57 57 … … 184 184 DECLINLINE(void) pdmNetGsoUpdateUdpHdr(uint32_t u32PseudoSum, uint8_t *pbSegHdrs, uint8_t offUdpHdr, 185 185 uint8_t const *pbPayload, uint32_t cbPayload, uint8_t cbHdrs, 186 RTNETCSUMTYPE enmCsumType)186 PDMNETCSUMTYPE enmCsumType) 187 187 { 188 188 PRTNETUDP pUdpHdr = (PRTNETUDP)&pbSegHdrs[offUdpHdr]; … … 190 190 switch (enmCsumType) 191 191 { 192 case RTNETCSUMTYPE_NONE:192 case PDMNETCSUMTYPE_NONE: 193 193 pUdpHdr->uh_sum = 0; 194 194 break; 195 case RTNETCSUMTYPE_COMPLETE:195 case PDMNETCSUMTYPE_COMPLETE: 196 196 pUdpHdr->uh_sum = RTNetUDPChecksum(u32PseudoSum, pUdpHdr); 197 197 break; 198 /* @todo: Implement:199 case RTNETCSUMTYPE_PSEUDO:200 pUdpHdr->uh_sum = RTNetUDPChecksum(u32PseudoSum, pUdpHdr);198 /** @todo: Implement: 199 case PDMNETCSUMTYPE_PSEUDO: 200 pUdpHdr->uh_sum = ???; 201 201 break; */ 202 202 default: 203 Log(("pdmNetGsoUpdateUdpHdr: Invalid checksum type: %d\n", enmCsumType));203 AssertFailed(); 204 204 break; 205 205 } … … 226 226 DECLINLINE(void) pdmNetGsoUpdateTcpHdr(uint32_t u32PseudoSum, uint8_t *pbSegHdrs, uint8_t offTcpHdr, 227 227 uint8_t const *pbPayload, uint32_t cbPayload, uint32_t offPayload, uint8_t cbHdrs, 228 bool fLastSeg, RTNETCSUMTYPE enmCsumType)228 bool fLastSeg, PDMNETCSUMTYPE enmCsumType) 229 229 { 230 230 PRTNETTCP pTcpHdr = (PRTNETTCP)&pbSegHdrs[offTcpHdr]; … … 234 234 switch (enmCsumType) 235 235 { 236 case RTNETCSUMTYPE_NONE:236 case PDMNETCSUMTYPE_NONE: 237 237 pTcpHdr->th_sum = 0; 238 238 break; 239 case RTNETCSUMTYPE_COMPLETE:239 case PDMNETCSUMTYPE_COMPLETE: 240 240 pTcpHdr->th_sum = RTNetTCPChecksum(u32PseudoSum, pTcpHdr, pbPayload, cbPayload); 241 241 break; 242 case RTNETCSUMTYPE_PSEUDO:242 case PDMNETCSUMTYPE_PSEUDO: 243 243 pTcpHdr->th_sum = ~RTNetIPv4FinalizeChecksum(u32PseudoSum); 244 244 break; 245 245 default: 246 Log(("pdmNetGsoUpdateTcpHdr: Invalid checksum type: %d\n", enmCsumType));246 AssertFailed(); 247 247 break; 248 248 } … … 353 353 pdmNetGsoUpdateTcpHdr(pdmNetGsoUpdateIPv4Hdr(pbSegHdrs, pGso->offHdr1, cbSegPayload, iSeg, pGso->cbHdrs), 354 354 pbSegHdrs, pGso->offHdr2, pbSegPayload, cbSegPayload, iSeg * pGso->cbMaxSeg, 355 pGso->cbHdrs, iSeg + 1 == cSegs, RTNETCSUMTYPE_COMPLETE);355 pGso->cbHdrs, iSeg + 1 == cSegs, PDMNETCSUMTYPE_COMPLETE); 356 356 break; 357 357 case PDMNETWORKGSOTYPE_IPV4_UDP: 358 358 pdmNetGsoUpdateUdpHdr(pdmNetGsoUpdateIPv4Hdr(pbSegHdrs, pGso->offHdr1, cbSegPayload, iSeg, pGso->cbHdrs), 359 pbSegHdrs, pGso->offHdr2, pbSegPayload, cbSegPayload, pGso->cbHdrs, RTNETCSUMTYPE_COMPLETE);359 pbSegHdrs, pGso->offHdr2, pbSegPayload, cbSegPayload, pGso->cbHdrs, PDMNETCSUMTYPE_COMPLETE); 360 360 break; 361 361 case PDMNETWORKGSOTYPE_IPV6_TCP: … … 363 363 pGso->offHdr2, RTNETIPV4_PROT_TCP), 364 364 pbSegHdrs, pGso->offHdr2, pbSegPayload, cbSegPayload, iSeg * pGso->cbMaxSeg, 365 pGso->cbHdrs, iSeg + 1 == cSegs, RTNETCSUMTYPE_COMPLETE);365 pGso->cbHdrs, iSeg + 1 == cSegs, PDMNETCSUMTYPE_COMPLETE); 366 366 break; 367 367 case PDMNETWORKGSOTYPE_IPV6_UDP: 368 368 pdmNetGsoUpdateUdpHdr(pdmNetGsoUpdateIPv6Hdr(pbSegHdrs, pGso->offHdr1, cbSegPayload, pGso->cbHdrs, 369 369 pGso->offHdr2, RTNETIPV4_PROT_UDP), 370 pbSegHdrs, pGso->offHdr2, pbSegPayload, cbSegPayload, pGso->cbHdrs, RTNETCSUMTYPE_COMPLETE);370 pbSegHdrs, pGso->offHdr2, pbSegPayload, cbSegPayload, pGso->cbHdrs, PDMNETCSUMTYPE_COMPLETE); 371 371 break; 372 372 case PDMNETWORKGSOTYPE_IPV4_IPV6_TCP: … … 375 375 cbSegPayload, pGso->cbHdrs, pGso->offHdr2, RTNETIPV4_PROT_TCP), 376 376 pbSegHdrs, pGso->offHdr2, pbSegPayload, cbSegPayload, iSeg * pGso->cbMaxSeg, 377 pGso->cbHdrs, iSeg + 1 == cSegs, RTNETCSUMTYPE_COMPLETE);377 pGso->cbHdrs, iSeg + 1 == cSegs, PDMNETCSUMTYPE_COMPLETE); 378 378 break; 379 379 case PDMNETWORKGSOTYPE_IPV4_IPV6_UDP: … … 381 381 pdmNetGsoUpdateUdpHdr(pdmNetGsoUpdateIPv6Hdr(pbSegHdrs, pgmNetGsoCalcIpv6Offset(pbSegHdrs, pGso->offHdr1), 382 382 cbSegPayload, pGso->cbHdrs, pGso->offHdr2, RTNETIPV4_PROT_UDP), 383 pbSegHdrs, pGso->offHdr2, pbSegPayload, cbSegPayload, pGso->cbHdrs, RTNETCSUMTYPE_COMPLETE);383 pbSegHdrs, pGso->offHdr2, pbSegPayload, cbSegPayload, pGso->cbHdrs, PDMNETCSUMTYPE_COMPLETE); 384 384 break; 385 385 case PDMNETWORKGSOTYPE_INVALID: … … 446 446 pdmNetGsoUpdateTcpHdr(pdmNetGsoUpdateIPv4Hdr(pbSegHdrs, pGso->offHdr1, cbSegPayload, iSeg, pGso->cbHdrs), 447 447 pbSegHdrs, pGso->offHdr2, pbSegPayload, cbSegPayload, iSeg * pGso->cbMaxSeg, 448 pGso->cbHdrs, iSeg + 1 == cSegs, RTNETCSUMTYPE_COMPLETE);448 pGso->cbHdrs, iSeg + 1 == cSegs, PDMNETCSUMTYPE_COMPLETE); 449 449 break; 450 450 case PDMNETWORKGSOTYPE_IPV4_UDP: 451 451 pdmNetGsoUpdateUdpHdr(pdmNetGsoUpdateIPv4Hdr(pbSegHdrs, pGso->offHdr1, cbSegPayload, iSeg, pGso->cbHdrs), 452 pbSegHdrs, pGso->offHdr2, pbSegPayload, cbSegPayload, pGso->cbHdrs, RTNETCSUMTYPE_COMPLETE);452 pbSegHdrs, pGso->offHdr2, pbSegPayload, cbSegPayload, pGso->cbHdrs, PDMNETCSUMTYPE_COMPLETE); 453 453 break; 454 454 case PDMNETWORKGSOTYPE_IPV6_TCP: … … 456 456 pGso->offHdr2, RTNETIPV4_PROT_TCP), 457 457 pbSegHdrs, pGso->offHdr2, pbSegPayload, cbSegPayload, iSeg * pGso->cbMaxSeg, 458 pGso->cbHdrs, iSeg + 1 == cSegs, RTNETCSUMTYPE_COMPLETE);458 pGso->cbHdrs, iSeg + 1 == cSegs, PDMNETCSUMTYPE_COMPLETE); 459 459 break; 460 460 case PDMNETWORKGSOTYPE_IPV6_UDP: 461 461 pdmNetGsoUpdateUdpHdr(pdmNetGsoUpdateIPv6Hdr(pbSegHdrs, pGso->offHdr1, cbSegPayload, pGso->cbHdrs, 462 462 pGso->offHdr2, RTNETIPV4_PROT_UDP), 463 pbSegHdrs, pGso->offHdr2, pbSegPayload, cbSegPayload, pGso->cbHdrs, RTNETCSUMTYPE_COMPLETE);463 pbSegHdrs, pGso->offHdr2, pbSegPayload, cbSegPayload, pGso->cbHdrs, PDMNETCSUMTYPE_COMPLETE); 464 464 break; 465 465 case PDMNETWORKGSOTYPE_IPV4_IPV6_TCP: … … 468 468 cbSegPayload, pGso->cbHdrs, pGso->offHdr2, RTNETIPV4_PROT_TCP), 469 469 pbSegHdrs, pGso->offHdr2, pbSegPayload, cbSegPayload, iSeg * pGso->cbMaxSeg, 470 pGso->cbHdrs, iSeg + 1 == cSegs, RTNETCSUMTYPE_COMPLETE);470 pGso->cbHdrs, iSeg + 1 == cSegs, PDMNETCSUMTYPE_COMPLETE); 471 471 break; 472 472 case PDMNETWORKGSOTYPE_IPV4_IPV6_UDP: … … 474 474 pdmNetGsoUpdateUdpHdr(pdmNetGsoUpdateIPv6Hdr(pbSegHdrs, pgmNetGsoCalcIpv6Offset(pbSegHdrs, pGso->offHdr1), 475 475 cbSegPayload, pGso->cbHdrs, pGso->offHdr2, RTNETIPV4_PROT_UDP), 476 pbSegHdrs, pGso->offHdr2, pbSegPayload, cbSegPayload, pGso->cbHdrs, RTNETCSUMTYPE_COMPLETE);476 pbSegHdrs, pGso->offHdr2, pbSegPayload, cbSegPayload, pGso->cbHdrs, PDMNETCSUMTYPE_COMPLETE); 477 477 break; 478 478 case PDMNETWORKGSOTYPE_INVALID: … … 496 496 * header or nothing. 497 497 */ 498 DECLINLINE(void) PDMNetGsoPrepForDirectUse(PCPDMNETWORKGSO pGso, void *pvFrame, size_t cbFrame, RTNETCSUMTYPE enmCsumType)498 DECLINLINE(void) PDMNetGsoPrepForDirectUse(PCPDMNETWORKGSO pGso, void *pvFrame, size_t cbFrame, PDMNETCSUMTYPE enmCsumType) 499 499 { 500 500 /* -
trunk/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c
r31271 r31272 1120 1120 # endif 1121 1121 if (!fDstWire) 1122 PDMNetGsoPrepForDirectUse(&pSG->GsoCtx, pPkt->data, pSG->cbTotal, RTNETCSUMTYPE_PSEUDO);1122 PDMNetGsoPrepForDirectUse(&pSG->GsoCtx, pPkt->data, pSG->cbTotal, PDMNETCSUMTYPE_PSEUDO); 1123 1123 } 1124 1124 #endif /* VBOXNETFLT_WITH_GSO_XMIT_WIRE || VBOXNETFLT_WITH_GSO_XMIT_HOST */ … … 1453 1453 #endif /* !VBOXNETFLT_WITH_GRO */ 1454 1454 } 1455 else 1455 else 1456 1456 { 1457 1457 /* -
trunk/src/VBox/NetworkServices/NetLib/VBoxNetUDP.cpp
r31271 r31272 123 123 */ 124 124 if (pGso) 125 PDMNetGsoPrepForDirectUse(pGso, (void *)pvFrame, cbFrame, RTNETCSUMTYPE_NONE);125 PDMNetGsoPrepForDirectUse(pGso, (void *)pvFrame, cbFrame, PDMNETCSUMTYPE_NONE); 126 126 127 127 /*
Note:
See TracChangeset
for help on using the changeset viewer.