Lines Matching refs:pSgBuf

137     PPDMSCATTERGATHER pSgBuf = (PPDMSCATTERGATHER)RTMemAlloc(  RT_ALIGN_Z(sizeof(*pSgBuf), 16)
140 if (!pSgBuf)
146 pSgBuf->fFlags = PDMSCATTERGATHER_FLAGS_MAGIC | PDMSCATTERGATHER_FLAGS_OWNER_1;
147 pSgBuf->cbUsed = 0;
148 pSgBuf->cbAvailable = RT_ALIGN_Z(cbMin, 16);
149 pSgBuf->pvAllocator = NULL;
151 pSgBuf->pvUser = NULL;
154 pSgBuf->pvUser = (uint8_t *)(pSgBuf + 1) + pSgBuf->cbAvailable;
155 *(PPDMNETWORKGSO)pSgBuf->pvUser = *pGso;
157 pSgBuf->cSegs = 1;
158 pSgBuf->aSegs[0].cbSeg = pSgBuf->cbAvailable;
159 pSgBuf->aSegs[0].pvSeg = pSgBuf + 1;
162 memset(pSgBuf->aSegs[0].pvSeg, 'F', pSgBuf->aSegs[0].cbSeg);
164 *ppSgBuf = pSgBuf;
172 static DECLCALLBACK(int) drvUDPTunnelUp_FreeBuf(PPDMINETWORKUP pInterface, PPDMSCATTERGATHER pSgBuf)
176 if (pSgBuf)
178 Assert((pSgBuf->fFlags & PDMSCATTERGATHER_FLAGS_MAGIC_MASK) == PDMSCATTERGATHER_FLAGS_MAGIC);
179 pSgBuf->fFlags = 0;
180 RTMemFree(pSgBuf);
189 static DECLCALLBACK(int) drvUDPTunnelUp_SendBuf(PPDMINETWORKUP pInterface, PPDMSCATTERGATHER pSgBuf, bool fOnWorkerThread)
193 STAM_COUNTER_ADD(&pThis->StatPktSentBytes, pSgBuf->cbUsed);
196 AssertPtr(pSgBuf);
197 Assert((pSgBuf->fFlags & PDMSCATTERGATHER_FLAGS_MAGIC_MASK) == PDMSCATTERGATHER_FLAGS_MAGIC);
204 if (!pSgBuf->pvUser)
209 pSgBuf->cbUsed, u64Now, u64Now - pThis->u64LastReceiveTS, u64Now - pThis->u64LastTransferTS));
212 Log2(("pSgBuf->aSegs[0].pvSeg=%p pSgBuf->cbUsed=%#x\n%.*Rhxd\n",
213 pSgBuf->aSegs[0].pvSeg, pSgBuf->cbUsed, pSgBuf->cbUsed, pSgBuf->aSegs[0].pvSeg));
215 rc = RTUdpWrite(pThis->pServer, pSgBuf->aSegs[0].pvSeg, pSgBuf->cbUsed, &pThis->DestAddress);
220 uint8_t const *pbFrame = (uint8_t const *)pSgBuf->aSegs[0].pvSeg;
221 PCPDMNETWORKGSO pGso = (PCPDMNETWORKGSO)pSgBuf->pvUser;
222 uint32_t const cSegs = PDMNetGsoCalcSegmentCount(pGso, pSgBuf->cbUsed); Assert(cSegs > 1);
227 void *pvSegFrame = PDMNetGsoCarveSegmentQD(pGso, (uint8_t *)pbFrame, pSgBuf->cbUsed, abHdrScratch,
233 pSgBuf->fFlags = 0;
234 RTMemFree(pSgBuf);