Lines Matching refs:pSgBuf

177     PPDMSCATTERGATHER pSgBuf = (PPDMSCATTERGATHER)RTMemAlloc(  RT_ALIGN_Z(sizeof(*pSgBuf), 16)
180 if (!pSgBuf)
186 pSgBuf->fFlags = PDMSCATTERGATHER_FLAGS_MAGIC | PDMSCATTERGATHER_FLAGS_OWNER_1;
187 pSgBuf->cbUsed = 0;
188 pSgBuf->cbAvailable = RT_ALIGN_Z(cbMin, 16);
189 pSgBuf->pvAllocator = NULL;
191 pSgBuf->pvUser = NULL;
194 pSgBuf->pvUser = (uint8_t *)(pSgBuf + 1) + pSgBuf->cbAvailable;
195 *(PPDMNETWORKGSO)pSgBuf->pvUser = *pGso;
197 pSgBuf->cSegs = 1;
198 pSgBuf->aSegs[0].cbSeg = pSgBuf->cbAvailable;
199 pSgBuf->aSegs[0].pvSeg = pSgBuf + 1;
202 memset(pSgBuf->aSegs[0].pvSeg, 'F', pSgBuf->aSegs[0].cbSeg);
204 *ppSgBuf = pSgBuf;
212 static DECLCALLBACK(int) drvTAPNetworkUp_FreeBuf(PPDMINETWORKUP pInterface, PPDMSCATTERGATHER pSgBuf)
216 if (pSgBuf)
218 Assert((pSgBuf->fFlags & PDMSCATTERGATHER_FLAGS_MAGIC_MASK) == PDMSCATTERGATHER_FLAGS_MAGIC);
219 pSgBuf->fFlags = 0;
220 RTMemFree(pSgBuf);
229 static DECLCALLBACK(int) drvTAPNetworkUp_SendBuf(PPDMINETWORKUP pInterface, PPDMSCATTERGATHER pSgBuf, bool fOnWorkerThread)
233 STAM_COUNTER_ADD(&pThis->StatPktSentBytes, pSgBuf->cbUsed);
236 AssertPtr(pSgBuf);
237 Assert((pSgBuf->fFlags & PDMSCATTERGATHER_FLAGS_MAGIC_MASK) == PDMSCATTERGATHER_FLAGS_MAGIC);
244 if (!pSgBuf->pvUser)
249 pSgBuf->cbUsed, u64Now, u64Now - pThis->u64LastReceiveTS, u64Now - pThis->u64LastTransferTS));
252 Log2(("drvTAPSend: pSgBuf->aSegs[0].pvSeg=%p pSgBuf->cbUsed=%#x\n"
254 pSgBuf->aSegs[0].pvSeg, pSgBuf->cbUsed, pSgBuf->cbUsed, pSgBuf->aSegs[0].pvSeg));
256 rc = RTFileWrite(pThis->hFileDevice, pSgBuf->aSegs[0].pvSeg, pSgBuf->cbUsed, NULL);
261 uint8_t const *pbFrame = (uint8_t const *)pSgBuf->aSegs[0].pvSeg;
262 PCPDMNETWORKGSO pGso = (PCPDMNETWORKGSO)pSgBuf->pvUser;
263 uint32_t const cSegs = PDMNetGsoCalcSegmentCount(pGso, pSgBuf->cbUsed); Assert(cSegs > 1);
268 void *pvSegFrame = PDMNetGsoCarveSegmentQD(pGso, (uint8_t *)pbFrame, pSgBuf->cbUsed, abHdrScratch,
276 pSgBuf->fFlags = 0;
277 RTMemFree(pSgBuf);