BUG: UDP Packet Corruption Issue with stmmac Driver on Linux 5.15.21-rt30

Oleksandr Makarov [GL] Oleksandr.Makarov at qsc.com
Mon Aug 5 04:40:25 PDT 2024


Hello all,

On my MSC SM2S-EL [1] there is an Ethernet device driven by the stmmac driver, running on Linux version 5.15.21-rt30. I've encountered an issue where UDP packets with multiple fragments are being corrupted.

The problem appears to be that the stmmac driver is truncating UDP packets with payloads larger than 1470 bytes down to 256 bytes. UDP payloads of 1470 bytes or less, which do not set the "More fragments" IP field, are transmitted correctly.

This issue can be reproduced by sending large test data over UDP to my Elkhart Lake machine and observing the data corruption. Attached are two packet captures: sender.pcap, showing the result of `nc -u [EHL machine IP] 2323 < pattern.txt` from my workstation, where the outgoing UDP fragments have the correct content, and receiver.pcap, showing packets captured on the EHL machine with corrupted UDP fragments. The contents are trimmed at 256 bytes.

I tracked the issue down to drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:5553, where the data corruption occurs:

```
                if (!skb) {
                        unsigned int pre_len, sync_len;

                        dma_sync_single_for_cpu(priv->device, buf->addr,
                                                buf1_len, dma_dir);

                        xdp_init_buff(&ctx.xdp, buf_sz, &rx_q->xdp_rxq);

```

After the driver finishes synchronizing the DMA-mapped memory for consumption by calling dma_sync_single_for_cpu, the content of buf->page is incomplete. A diagnostic message using print_hex_bytes shows that buf->page contains nothing (or sometimes garbage bytes) past the 0xff mark:

```
[  606.090539] dma: 00000000: 3000 29d6 c48d bf08 30b8 6280 0008 0045  .0.).....0.b..E.
[  606.090545] dma: 00000010: dc05 b373 0020 1140 25af a8c0 6d58 a8c0  ..s. . at ..%..Xm..
[  606.090547] dma: 00000020: 7a58 13c2 1309 ca05 4e6c 3030 3130 203a  Xz......lN0001:
[  606.090549] dma: 00000030: 6f59 7275 7320 7274 6e69 2067 6568 6572  Your string here
[  606.090551] dma: 00000040: 300a 3030 3a32 5920 756f 2072 7473 6972  .0002: Your stri
[  606.090553] dma: 00000050: 676e 6820 7265 0a65 3030 3330 203a 6f59  ng here.0003: Yo
[  606.090555] dma: 00000060: 7275 7320 7274 6e69 2067 6568 6572 300a  ur string here.0
[  606.090556] dma: 00000070: 3030 3a34 5920 756f 2072 7473 6972 676e  004: Your string
[  606.090558] dma: 00000080: 6820 7265 0a65 3030 3530 203a 6f59 7275   here.0005: Your
[  606.090560] dma: 00000090: 7320 7274 6e69 2067 6568 6572 300a 3030   string here.000
[  606.090562] dma: 000000a0: 3a36 5920 756f 2072 7473 6972 676e 6820  6: Your string h
[  606.090564] dma: 000000b0: 7265 0a65 3030 3730 203a 6f59 7275 7320  ere.0007: Your s
[  606.090566] dma: 000000c0: 7274 6e69 2067 6568 6572 300a 3030 3a38  tring here.0008:
[  606.090567] dma: 000000d0: 5920 756f 2072 7473 6972 676e 6820 7265   Your string her
[  606.090569] dma: 000000e0: 0a65 3030 3930 203a 6f59 7275 7320 7274  e.0009: Your str
[  606.090571] dma: 000000f0: 6e69 2067 6568 6572 300a 3130 3a30 5920  ing here.0010: Y
[  606.090573] dma: 00000100: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[  606.090575] dma: 00000110: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[  606.090577] dma: 00000120: 0000 0000 0000 0000 0000 0000 0000 0000  ................
[  606.090578] dma: 00000130: 0000 0000 0000 0000 0000 0000 0000 0000  ................
```

I would appreciate any insights or suggestions on how to resolve this issue.

Best regards,

Aleksandr

1 - https://embedded.avnet.com/product/msc-sm2s-el/
-------------- next part --------------
0001: Your string here
0002: Your string here
0003: Your string here
0004: Your string here
0005: Your string here
0006: Your string here
0007: Your string here
0008: Your string here
0009: Your string here
0010: Your string here
0011: Your string here
0012: Your string here
0013: Your string here
0014: Your string here
0015: Your string here
0016: Your string here
0017: Your string here
0018: Your string here
0019: Your string here
0020: Your string here
0021: Your string here
0022: Your string here
0023: Your string here
0024: Your string here
0025: Your string here
0026: Your string here
0027: Your string here
0028: Your string here
0029: Your string here
0030: Your string here
0031: Your string here
0032: Your string here
0033: Your string here
0034: Your string here
0035: Your string here
0036: Your string here
0037: Your string here
0038: Your string here
0039: Your string here
0040: Your string here
0041: Your string here
0042: Your string here
0043: Your string here
0044: Your string here
0045: Your string here
0046: Your string here
0047: Your string here
0048: Your string here
0049: Your string here
0050: Your string here
0051: Your string here
0052: Your string here
0053: Your string here
0054: Your string here
0055: Your string here
0056: Your string here
0057: Your string here
0058: Your string here
0059: Your string here
0060: Your string here
0061: Your string here
0062: Your string here
0063: Your string here
0064: Your string here
0065: Your string here
0066: Your string here
0067: Your string here
0068: Your string here
0069: Your string here
0070: Your string here
0071: Your string here
0072: Your string here
0073: Your string here
0074: Your string here
0075: Your string here
0076: Your string here
0077: Your string here
0078: Your string here
0079: Your string here
0080: Your string here
0081: Your string here
0082: Your string here
0083: Your string here
0084: Your string here
0085: Your string here
0086: Your string here
0087: Your string here
0088: Your string here
0089: Your string here
0090: Your string here
0091: Your string here
0092: Your string here
0093: Your string here
0094: Your string here
0095: Your string here
0096: Your string here
0097: Your string here
0098: Your string here
0099: Your string here
0100: Your string here
0101: Your string here
0102: Your string here
0103: Your string here
0104: Your string here
0105: Your string here
0106: Your string here
0107: Your string here
0108: Your string here
0109: Your string here
0110: Your string here
0111: Your string here
0112: Your string here
0113: Your string here
0114: Your string here
0115: Your string here
0116: Your string here
0117: Your string here
0118: Your string here
0119: Your string here
0120: Your string here
0121: Your string here
0122: Your string here
0123: Your string here
0124: Your string here
0125: Your string here
0126: Your string here
0127: Your string here
0128: Your string here
0129: Your string here
0130: Your string here
0131: Your string here
0132: Your string here
0133: Your string here
0134: Your string here
0135: Your string here
0136: Your string here
0137: Your string here
0138: Your string here
0139: Your string here
0140: Your string here
0141: Your string here
0142: Your string here
0143: Your string here
0144: Your string here
0145: Your string here
0146: Your string here
0147: Your string here
0148: Your string here
0149: Your string here
0150: Your string here
0151: Your string here
0152: Your string here
0153: Your string here
0154: Your string here
0155: Your string here
0156: Your string here
0157: Your string here
0158: Your string here
0159: Your string here
0160: Your string here
0161: Your string here
0162: Your string here
0163: Your string here
0164: Your string here
0165: Your string here
0166: Your string here
0167: Your string here
0168: Your string here
0169: Your string here
0170: Your string here
0171: Your string here
0172: Your string here
0173: Your string here
0174: Your string here
0175: Your string here
0176: Your string here
0177: Your string here
0178: Your string here
0179: Your string here
0180: Your string here
0181: Your string here
0182: Your string here
0183: Your string here
0184: Your string here
0185: Your string here
0186: Your string here
0187: Your string here
0188: Your string here
0189: Your string here
0190: Your string here
0191: Your string here
0192: Your string here
0193: Your string here
0194: Your string here
0195: Your string here
0196: Your string here
0197: Your string here
0198: Your string here
0199: Your string here
0200: Your string here
0201: Your string here
0202: Your string here
0203: Your string here
0204: Your string here
0205: Your string here
0206: Your string here
0207: Your string here
0208: Your string here
0209: Your string here
0210: Your string here
0211: Your string here
0212: Your string here
0213: Your string here
0214: Your string here
0215: Your string here
0216: Your string here
0217: Your string here
0218: Your string here
0219: Your string here
0220: Your string here
0221: Your string here
0222: Your string here
0223: Your string here
0224: Your string here
0225: Your string here
0226: Your string here
0227: Your string here
0228: Your string here
0229: Your string here
0230: Your string here
0231: Your string here
0232: Your string here
0233: Your string here
0234: Your string here
0235: Your string here
0236: Your string here
0237: Your string here
0238: Your string here
0239: Your string here
0240: Your string here
0241: Your string here
0242: Your string here
0243: Your string here
0244: Your string here
0245: Your string here
0246: Your string here
0247: Your string here
0248: Your string here
0249: Your string here
0250: Your string here
0251: Your string here
0252: Your string here
0253: Your string here
0254: Your string here
0255: Your string here
0256: Your string here
0257: Your string here
0258: Your string here
0259: Your string here
0260: Your string here
0261: Your string here
0262: Your string here
0263: Your string here
0264: Your string here
0265: Your string here
0266: Your string here
0267: Your string here
0268: Your string here
0269: Your string here
0270: Your string here
0271: Your string here
0272: Your string here
0273: Your string here
0274: Your string here
0275: Your string here
0276: Your string here
0277: Your string here
0278: Your string here
0279: Your string here
0280: Your string here
0281: Your string here
0282: Your string here
0283: Your string here
0284: Your string here
0285: Your string here
0286: Your string here
0287: Your string here
0288: Your string here
0289: Your string here
0290: Your string here
0291: Your string here
0292: Your string here
0293: Your string here
0294: Your string here
0295: Your string here
0296: Your string here
0297: Your string here
0298: Your string here
0299: Your string here
0300: Your string here
0301: Your string here
0302: Your string here
0303: Your string here
0304: Your string here
0305: Your string here
0306: Your string here
0307: Your string here
0308: Your string here
0309: Your string here
0310: Your string here
0311: Your string here
0312: Your string here
0313: Your string here
0314: Your string here
0315: Your string here
0316: Your string here
0317: Your string here
0318: Your string here
0319: Your string here
0320: Your string here
0321: Your string here
0322: Your string here
0323: Your string here
0324: Your string here
0325: Your string here
0326: Your string here
0327: Your string here
0328: Your string here
0329: Your string here
0330: Your string here
0331: Your string here
0332: Your string here
0333: Your string here
0334: Your string here
0335: Your string here
0336: Your string here
0337: Your string here
0338: Your string here
0339: Your string here
0340: Your string here
0341: Your string here
0342: Your string here
0343: Your string here
0344: Your string here
0345: Your string here
0346: Your string here
0347: Your string here
0348: Your string here
0349: Your string here
0350: Your string here
0351: Your string here
0352: Your string here
0353: Your string here
0354: Your string here
0355: Your string here
0356: Your string here
0357: Your string here
0358: Your string here
0359: Your string here
0360: Your string here
0361: Your string here
0362: Your string here
0363: Your string here
0364: Your string here
0365: Your string here
0366: Your string here
0367: Your string here
0368: Your string here
0369: Your string here
0370: Your string here
0371: Your string here
0372: Your string here
0373: Your string here
0374: Your string here
0375: Your string here
0376: Your string here
0377: Your string here
0378: Your string here
0379: Your string here
0380: Your string here
0381: Your string here
0382: Your string here
0383: Your string here
0384: Your string here
0385: Your string here
0386: Your string here
0387: Your string here
0388: Your string here
0389: Your string here
0390: Your string here
0391: Your string here
0392: Your string here
0393: Your string here
0394: Your string here
0395: Your string here
0396: Your string here
0397: Your string here
0398: Your string here
0399: Your string here
0400: Your string here
0401: Your string here
0402: Your string here
0403: Your string here
0404: Your string here
0405: Your string here
0406: Your string here
0407: Your string here
0408: Your string here
0409: Your string here
0410: Your string here
0411: Your string here
0412: Your string here
0413: Your string here
0414: Your string here
0415: Your string here
0416: Your string here
0417: Your string here
0418: Your string here
0419: Your string here
0420: Your string here
0421: Your string here
0422: Your string here
0423: Your string here
0424: Your string here
0425: Your string here
0426: Your string here
0427: Your string here
0428: Your string here
0429: Your string here
0430: Your string here
0431: Your string here
0432: Your string here
0433: Your string here
0434: Your string here
0435: Your string here
0436: Your string here
0437: Your string here
0438: Your string here
0439: Your string here
0440: Your string here
0441: Your string here
0442: Your string here
0443: Your string here
0444: Your string here
0445: Your string here
0446: Your string here
0447: Your string here
0448: Your string here
0449: Your string here
0450: Your string here
0451: Your string here
0452: Your string here
0453: Your string here
0454: Your string here
0455: Your string here
0456: Your string here
0457: Your string here
0458: Your string here
0459: Your string here
0460: Your string here
0461: Your string here
0462: Your string here
0463: Your string here
0464: Your string here
0465: Your string here
0466: Your string here
0467: Your string here
0468: Your string here
0469: Your string here
0470: Your string here
0471: Your string here
0472: Your string here
0473: Your string here
0474: Your string here
0475: Your string here
0476: Your string here
0477: Your string here
0478: Your string here
0479: Your string here
0480: Your string here
0481: Your string here
0482: Your string here
0483: Your string here
0484: Your string here
0485: Your string here
0486: Your string here
0487: Your string here
0488: Your string here
0489: Your string here
0490: Your string here
0491: Your string here
0492: Your string here
0493: Your string here
0494: Your string here
0495: Your string here
0496: Your string here
0497: Your string here
0498: Your string here
0499: Your string here
0500: Your string here
0501: Your string here
0502: Your string here
0503: Your string here
0504: Your string here
0505: Your string here
0506: Your string here
0507: Your string here
0508: Your string here
0509: Your string here
0510: Your string here
0511: Your string here
0512: Your string here
0513: Your string here
0514: Your string here
0515: Your string here
0516: Your string here
0517: Your string here
0518: Your string here
0519: Your string here
0520: Your string here
0521: Your string here
0522: Your string here
0523: Your string here
0524: Your string here
0525: Your string here
0526: Your string here
0527: Your string here
0528: Your string here
0529: Your string here
0530: Your string here
0531: Your string here
0532: Your string here
0533: Your string here
0534: Your string here
0535: Your string here
0536: Your string here
0537: Your string here
0538: Your string here
0539: Your string here
0540: Your string here
0541: Your string here
0542: Your string here
0543: Your string here
0544: Your string here
0545: Your string here
0546: Your string here
0547: Your string here
0548: Your string here
0549: Your string here
0550: Your string here
0551: Your string here
0552: Your string here
0553: Your string here
0554: Your string here
0555: Your string here
0556: Your string here
0557: Your string here
0558: Your string here
0559: Your string here
0560: Your string here
0561: Your string here
0562: Your string here
0563: Your string here
0564: Your string here
0565: Your string here
0566: Your string here
0567: Your string here
0568: Your string here
0569: Your string here
0570: Your string here
0571: Your string here
0572: Your string here
0573: Your string here
0574: Your string here
0575: Your string here
0576: Your string here
0577: Your string here
0578: Your string here
0579: Your string here
0580: Your string here
0581: Your string here
0582: Your string here
0583: Your string here
0584: Your string here
0585: Your string here
0586: Your string here
0587: Your string here
0588: Your string here
0589: Your string here
0590: Your string here
0591: Your string here
0592: Your string here
0593: Your string here
0594: Your string here
0595: Your string here
0596: Your string here
0597: Your string here
0598: Your string here
0599: Your string here
0600: Your string here
0601: Your string here
0602: Your string here
0603: Your string here
0604: Your string here
0605: Your string here
0606: Your string here
0607: Your string here
0608: Your string here
0609: Your string here
0610: Your string here
0611: Your string here
0612: Your string here
0613: Your string here
0614: Your string here
0615: Your string here
0616: Your string here
0617: Your string here
0618: Your string here
0619: Your string here
0620: Your string here
0621: Your string here
0622: Your string here
0623: Your string here
0624: Your string here
0625: Your string here
0626: Your string here
0627: Your string here
0628: Your string here
0629: Your string here
0630: Your string here
0631: Your string here
0632: Your string here
0633: Your string here
0634: Your string here
0635: Your string here
0636: Your string here
0637: Your string here
0638: Your string here
0639: Your string here
0640: Your string here
0641: Your string here
0642: Your string here
0643: Your string here
0644: Your string here
0645: Your string here
0646: Your string here
0647: Your string here
0648: Your string here
0649: Your string here
0650: Your string here
0651: Your string here
0652: Your string here
0653: Your string here
0654: Your string here
0655: Your string here
0656: Your string here
0657: Your string here
0658: Your string here
0659: Your string here
0660: Your string here
0661: Your string here
0662: Your string here
0663: Your string here
0664: Your string here
0665: Your string here
0666: Your string here
0667: Your string here
0668: Your string here
0669: Your string here
0670: Your string here
0671: Your string here
0672: Your string here
0673: Your string here
0674: Your string here
0675: Your string here
0676: Your string here
0677: Your string here
0678: Your string here
0679: Your string here
0680: Your string here
0681: Your string here
0682: Your string here
0683: Your string here
0684: Your string here
0685: Your string here
0686: Your string here
0687: Your string here
0688: Your string here
0689: Your string here
0690: Your string here
0691: Your string here
0692: Your string here
0693: Your string here
0694: Your string here
0695: Your string here
0696: Your string here
0697: Your string here
0698: Your string here
0699: Your string here
0700: Your string here
0701: Your string here
0702: Your string here
0703: Your string here
0704: Your string here
0705: Your string here
0706: Your string here
0707: Your string here
0708: Your string here
0709: Your string here
0710: Your string here
0711: Your string here
0712: Your string here
0713: Your string here
0714: Your string here
0715: Your string here
0716: Your string here
0717: Your string here
0718: Your string here
0719: Your string here
0720: Your string here
0721: Your string here
0722: Your string here
0723: Your string here
0724: Your string here
0725: Your string here
0726: Your string here
0727: Your string here
0728: Your string here
0729: Your string here
0730: Your string here
0731: Your string here
0732: Your string here
0733: Your string here
0734: Your string here
0735: Your string here
0736: Your string here
0737: Your string here
0738: Your string here
0739: Your string here
0740: Your string here
0741: Your string here
0742: Your string here
0743: Your string here
0744: Your string here
0745: Your string here
0746: Your string here
0747: Your string here
0748: Your string here
0749: Your string here
0750: Your string here
0751: Your string here
0752: Your string here
0753: Your string here
0754: Your string here
0755: Your string here
0756: Your string here
0757: Your string here
0758: Your string here
0759: Your string here
0760: Your string here
0761: Your string here
0762: Your string here
0763: Your string here
0764: Your string here
0765: Your string here
0766: Your string here
0767: Your string here
0768: Your string here
0769: Your string here
0770: Your string here
0771: Your string here
0772: Your string here
0773: Your string here
0774: Your string here
0775: Your string here
0776: Your string here
0777: Your string here
0778: Your string here
0779: Your string here
0780: Your string here
0781: Your string here
0782: Your string here
0783: Your string here
0784: Your string here
0785: Your string here
0786: Your string here
0787: Your string here
0788: Your string here
0789: Your string here
0790: Your string here
0791: Your string here
0792: Your string here
0793: Your string here
0794: Your string here
0795: Your string here
0796: Your string here
0797: Your string here
0798: Your string here
0799: Your string here
0800: Your string here
0801: Your string here
0802: Your string here
0803: Your string here
0804: Your string here
0805: Your string here
0806: Your string here
0807: Your string here
0808: Your string here
0809: Your string here
0810: Your string here
0811: Your string here
0812: Your string here
0813: Your string here
0814: Your string here
0815: Your string here
0816: Your string here
0817: Your string here
0818: Your string here
0819: Your string here
0820: Your string here
0821: Your string here
0822: Your string here
0823: Your string here
0824: Your string here
0825: Your string here
0826: Your string here
0827: Your string here
0828: Your string here
0829: Your string here
0830: Your string here
0831: Your string here
0832: Your string here
0833: Your string here
0834: Your string here
0835: Your string here
0836: Your string here
0837: Your string here
0838: Your string here
0839: Your string here
0840: Your string here
0841: Your string here
0842: Your string here
0843: Your string here
0844: Your string here
0845: Your string here
0846: Your string here
0847: Your string here
0848: Your string here
0849: Your string here
0850: Your string here
0851: Your string here
0852: Your string here
0853: Your string here
0854: Your string here
0855: Your string here
0856: Your string here
0857: Your string here
0858: Your string here
0859: Your string here
0860: Your string here
0861: Your string here
0862: Your string here
0863: Your string here
0864: Your string here
0865: Your string here
0866: Your string here
0867: Your string here
0868: Your string here
0869: Your string here
0870: Your string here
0871: Your string here
0872: Your string here
0873: Your string here
0874: Your string here
0875: Your string here
0876: Your string here
0877: Your string here
0878: Your string here
0879: Your string here
0880: Your string here
0881: Your string here
0882: Your string here
0883: Your string here
0884: Your string here
0885: Your string here
0886: Your string here
0887: Your string here
0888: Your string here
0889: Your string here
0890: Your string here
0891: Your string here
0892: Your string here
0893: Your string here
0894: Your string here
0895: Your string here
0896: Your string here
0897: Your string here
0898: Your string here
0899: Your string here
0900: Your string here
0901: Your string here
0902: Your string here
0903: Your string here
0904: Your string here
0905: Your string here
0906: Your string here
0907: Your string here
0908: Your string here
0909: Your string here
0910: Your string here
0911: Your string here
0912: Your string here
0913: Your string here
0914: Your string here
0915: Your string here
0916: Your string here
0917: Your string here
0918: Your string here
0919: Your string here
0920: Your string here
0921: Your string here
0922: Your string here
0923: Your string here
0924: Your string here
0925: Your string here
0926: Your string here
0927: Your string here
0928: Your string here
0929: Your string here
0930: Your string here
0931: Your string here
0932: Your string here
0933: Your string here
0934: Your string here
0935: Your string here
0936: Your string here
0937: Your string here
0938: Your string here
0939: Your string here
0940: Your string here
0941: Your string here
0942: Your string here
0943: Your string here
0944: Your string here
0945: Your string here
0946: Your string here
0947: Your string here
0948: Your string here
0949: Your string here
0950: Your string here
0951: Your string here
0952: Your string here
0953: Your string here
0954: Your string here
0955: Your string here
0956: Your string here
0957: Your string here
0958: Your string here
0959: Your string here
0960: Your string here
0961: Your string here
0962: Your string here
0963: Your string here
0964: Your string here
0965: Your string here
0966: Your string here
0967: Your string here
0968: Your string here
0969: Your string here
0970: Your string here
0971: Your string here
0972: Your string here
0973: Your string here
0974: Your string here
0975: Your string here
0976: Your string here
0977: Your string here
0978: Your string here
0979: Your string here
0980: Your string here
0981: Your string here
0982: Your string here
0983: Your string here
0984: Your string here
0985: Your string here
0986: Your string here
0987: Your string here
0988: Your string here
0989: Your string here
0990: Your string here
0991: Your string here
0992: Your string here
0993: Your string here
0994: Your string here
0995: Your string here
0996: Your string here
0997: Your string here
0998: Your string here
0999: Your string here
1000: Your string here
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sender.pcap
Type: application/vnd.tcpdump.pcap
Size: 23890 bytes
Desc: sender.pcap
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20240805/5836b09f/attachment.pcap>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: receiver.pcap
Type: application/vnd.tcpdump.pcap
Size: 23890 bytes
Desc: receiver.pcap
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20240805/5836b09f/attachment-0001.pcap>


More information about the linux-arm-kernel mailing list