Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F176916916
D61017.1793610178.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
1 KB
Referenced Files
None
Subscribers
None
D61017.1793610178.diff
View Options
diff --git a/sys/dev/dwc/dwc4_dma.c b/sys/dev/dwc/dwc4_dma.c
--- a/sys/dev/dwc/dwc4_dma.c
+++ b/sys/dev/dwc/dwc4_dma.c
@@ -112,6 +112,7 @@
#define TDES3_CIC_FULLP (0x3 << TDES3_CIC_S) /* IP header, payload, pseudo-hdr*/
#define TDES3_TPL_S 0 /* TCP Payload Length */
#define TDES3_TPL_M (0x3ffff << TDES3_TPL_S)
+#define TDES3_PL_M 0x7fff /* Packet Length */
/*
* A hardware buffer descriptor. Rx and Tx buffers have the same descriptor
@@ -170,7 +171,7 @@
inline static void
txdesc_setup(struct dwc_softc *sc, int idx, bus_addr_t paddr,
- uint32_t len, uint32_t flags, bool first, bool last)
+ uint32_t len, uint32_t pktlen, uint32_t flags, bool first, bool last)
{
uint32_t tdes0, tdes1, tdes2, tdes3;
@@ -178,7 +179,8 @@
tdes0 = (uint32_t)paddr;
tdes1 = (uint32_t)((uint64_t)paddr >> 32);
tdes2 = len | TDES2_TTSE;
- tdes3 = flags;
+ /* The core needs the total packet length in TDES3. */
+ tdes3 = flags | (pktlen & TDES3_PL_M);
if (first)
tdes3 |= TDES3_FD;
@@ -275,7 +277,7 @@
for (i = 0; i < nsegs; i++) {
txdesc_setup(sc, sc->tx_desc_head,
- segs[i].ds_addr, segs[i].ds_len,
+ segs[i].ds_addr, segs[i].ds_len, m->m_pkthdr.len,
(i == 0) ? flags : 0, /* only first desc needs flags */
(i == 0),
(i == nsegs - 1));
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Nov 2, 9:02 AM (10 h, 12 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41256934
Default Alt Text
D61017.1793610178.diff (1 KB)
Attached To
Mode
D61017: dwc: Set the packet length in the TX descriptors of the QoS core
Attached
Detach File
Event Timeline