Andrew Gallatin
4b732459f0
iflib: Use a single tx dma map
...
The need for a separate map for TSO and non-TSO seems to have arisen from
a misunderstanding about the DMA requirements for Intel drivers like
ice/ixl/iavf. Specifically, this Intel hardware has a quirk where no
more than N (=8) segs can be DMA'ed per packet on the wire. This limit
was enforced using a DMA map with a low segment limit for non-TSO and a
driver specific check for TSO. This led to a *lot* of complexity in
iflib (~80 extra lines of code that this change removes) when the
limit can simply be enforced via the existing EFBIG mechanisms.
This change adds a new flag, IFLIB_SPARSE_TX, that drivers for hardware
with this quirk must set. When set, it causes non-TSO sends that
exceed isc_tx_nsegment to be treated as if bus_dmamap_load_mbuf_sg()
had returned EFBIG.
Due to the API/KABI change, I've bumped the FreeBSD version as well.
Note kgalazka suggested the flag, rather than a more awkward
mechanism that I had in my initial patch.
Reviewed by: kbowling
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D60175
2026-11-05 11:55:28 -05:00
..
2025-10-20 12:28:42 +08:00
2026-02-24 21:59:34 -08:00
2026-10-17 20:49:19 +01:00
2026-06-24 18:26:33 +03:00
2026-11-04 17:42:36 +00:00
2026-02-24 21:59:34 -08:00
2023-11-26 22:24:00 -07:00
2025-03-27 16:55:12 -04:00
2025-03-27 16:55:12 -04:00
2026-04-23 13:05:53 -04:00
2026-04-23 18:41:19 +02:00
2026-06-14 10:45:52 +02:00
2026-09-18 16:09:32 -07:00
2025-03-27 16:55:12 -04:00
2025-11-26 23:19:26 -07:00
2026-02-24 21:59:34 -08:00
2023-08-16 11:54:11 -06:00
2026-10-09 23:07:02 +01:00
2026-02-24 21:59:34 -08:00
2025-06-21 05:57:45 +03:00
2026-02-24 21:59:34 -08:00
2025-06-21 05:57:45 +03:00
2026-11-04 13:20:40 +01:00
2025-10-31 19:50:40 +01:00
2026-09-08 01:19:36 +01:00
2026-09-24 22:12:32 -07:00
2024-06-16 16:37:25 -04:00
2026-09-06 20:47:44 +01:00
2026-05-18 14:52:23 -04:00
2026-05-24 18:32:04 -07:00
2026-09-23 14:43:13 +02:00
2025-06-21 05:57:45 +03:00
2026-09-18 15:53:44 -07:00
2023-11-26 22:24:00 -07:00
2026-04-01 00:29:46 -07:00
2025-01-02 13:21:30 -05:00
2026-06-14 13:56:59 -07:00
2026-04-04 09:11:10 +02:00
2026-11-04 12:12:14 -05:00
2026-07-20 15:37:34 -07:00
2026-07-20 15:37:34 -07:00
2026-09-18 15:56:01 -07:00
2025-01-02 13:23:16 -05:00
2025-03-27 16:53:24 -04:00
2025-01-02 13:25:12 -05:00
2025-10-31 19:50:41 +01:00
2026-02-24 21:59:34 -08:00
2026-02-24 21:59:34 -08:00
2026-02-24 21:59:34 -08:00
2026-08-17 07:11:52 -06:00
2026-11-05 15:50:36 +01:00
2026-07-29 12:12:41 -07:00
2025-06-21 05:57:45 +03:00
2025-09-27 07:30:40 -07:00
2025-12-03 07:47:41 +01:00
2026-09-18 14:53:39 -07:00
2026-10-01 14:09:51 -07:00
2025-10-18 08:12:37 +03:00
2025-10-17 16:45:58 +00:00
2026-02-24 21:59:34 -08:00
2026-09-26 10:30:42 +02:00
2026-09-26 10:30:42 +02:00
2026-09-26 10:30:42 +02:00
2026-02-24 21:59:34 -08:00
2026-04-23 13:05:54 -04:00
2026-09-30 14:41:12 +01:00
2024-12-06 17:26:16 -05:00
2026-11-04 12:34:53 -07:00
2026-06-20 21:16:37 +03:00
2026-11-02 18:31:51 +00:00
2026-09-18 16:10:30 -07:00
2026-09-16 22:16:42 -07:00
2026-09-21 19:43:31 -03:00
2026-06-14 10:50:59 +02:00
2026-04-16 18:35:45 -04:00
2026-09-13 12:37:39 +03:00
2025-12-09 15:00:06 -05:00
2026-02-24 21:59:34 -08:00
2026-02-24 21:59:34 -08:00
2026-10-23 16:08:31 +02:00
2026-05-28 13:09:52 +02:00
2025-06-11 17:39:02 +01:00
2026-10-14 16:00:47 +00:00
2026-10-23 16:08:31 +02:00
2026-02-24 21:59:34 -08:00
2025-08-13 14:14:00 +03:00
2026-02-24 21:59:34 -08:00
2026-08-17 07:53:07 +02:00
2025-01-02 13:25:12 -05:00
2026-02-24 21:59:34 -08:00
2023-11-26 22:24:00 -07:00
2023-11-26 22:24:00 -07:00
2026-09-26 10:30:42 +02:00
2026-11-04 23:25:44 +00:00
2024-01-10 19:20:26 +01:00
2026-11-04 11:12:09 -08:00
2026-02-24 21:59:34 -08:00
2026-02-24 21:59:34 -08:00
2026-01-26 11:32:10 +02:00
2026-02-24 21:59:34 -08:00
2026-01-26 11:32:10 +02:00
2026-11-05 09:45:58 -04:00
2024-01-10 19:20:28 +01:00
2026-07-13 16:40:42 -03:00
2026-10-20 15:30:38 +00:00
2026-11-05 11:55:28 -05:00
2023-11-26 22:23:30 -07:00
2026-11-05 11:55:28 -05:00
2026-09-17 12:08:43 +03:00
2026-10-28 18:36:05 +03:30
2026-08-17 07:54:10 +02:00
2026-02-24 21:59:34 -08:00
2026-11-02 12:10:17 -05:00
2026-11-03 11:40:29 -05:00
2025-01-02 13:22:20 -05:00
2026-10-19 16:15:09 +01:00
2026-10-28 18:36:05 +03:30
2023-11-26 22:24:00 -07:00
2025-06-11 17:39:02 +01:00
2026-05-18 14:52:23 -04:00
2026-10-08 00:08:22 -04:00
2026-02-24 21:59:34 -08:00
2026-06-08 21:26:07 -07:00
2026-07-29 14:42:19 -04:00
2026-04-04 09:11:11 +02:00
2026-04-23 13:05:55 -04:00
2026-06-24 15:30:55 -04:00
2026-01-12 00:58:11 +00:00
2025-06-21 05:57:45 +03:00
2026-02-24 21:59:34 -08:00
2023-12-28 13:31:56 -05:00
2026-02-24 21:59:34 -08:00
2026-06-08 21:26:07 -07:00
2026-10-17 14:32:51 -07:00
2026-10-18 17:34:46 -07:00
2026-10-07 21:16:44 -07:00
2026-11-04 09:58:26 -07:00
2026-11-05 11:55:28 -05:00
2024-06-16 16:37:26 -04:00
2026-01-12 00:58:11 +00:00
2023-08-16 11:54:36 -06:00
2023-08-16 11:54:18 -06:00
2023-08-16 11:54:11 -06:00
2025-06-21 05:57:45 +03:00
2023-11-26 22:24:00 -07:00
2025-01-02 13:21:30 -05:00
2025-12-16 12:41:02 +08:00
2023-11-26 22:24:00 -07:00
2026-06-08 21:26:07 -07:00
2026-09-18 16:01:09 -07:00
2023-08-16 11:54:58 -06:00
2026-04-23 13:05:54 -04:00
2025-06-21 05:57:45 +03:00
2025-07-05 11:35:53 +03:00
2026-04-30 21:53:47 +02:00
2026-10-13 19:36:17 +01:00
2026-02-24 21:59:34 -08:00
2026-11-02 20:26:24 -08:00
2026-02-24 21:59:34 -08:00
2026-09-18 15:59:12 -07:00
2026-10-30 15:40:58 -07:00
2023-08-16 11:54:11 -06:00
2026-11-05 15:51:34 +01:00
2025-06-21 05:57:45 +03:00
2026-02-24 21:59:34 -08:00
2026-02-24 21:59:34 -08:00
2026-01-26 06:35:31 +00:00
2026-08-07 14:12:17 -07:00
2026-04-30 21:53:47 +02:00
2025-01-02 13:22:35 -05:00
2026-09-17 21:14:41 +00:00
2026-02-24 21:59:34 -08:00
2026-06-15 09:43:57 +08:00
2026-09-18 14:53:39 -07:00
2024-06-28 18:16:29 +08:00
2025-08-13 14:14:00 +03:00
2026-09-12 14:57:24 -07:00
2025-01-02 13:24:28 -05:00
2026-11-01 18:00:09 +00:00
2025-10-16 15:02:50 -07:00
2026-02-24 21:59:34 -08:00
2025-03-27 16:55:12 -04:00
2023-08-16 11:54:36 -06:00
2026-09-15 13:49:47 +00:00
2026-09-04 17:44:07 +03:00
2026-10-18 13:29:41 +11:00
2026-02-24 21:59:34 -08:00
2026-02-17 15:45:13 -05:00
2026-10-22 11:40:50 -05:00
2024-01-10 19:20:31 +01:00
2026-10-08 11:24:45 -04:00
2023-08-16 11:54:11 -06:00
2026-09-23 14:43:13 +02:00
2026-10-28 13:06:58 +00:00
2026-09-26 10:30:42 +02:00
2025-09-19 17:42:45 -07:00
2026-02-24 21:59:34 -08:00
2025-08-13 14:14:00 +03:00
2026-02-24 21:59:34 -08:00
2026-02-17 15:45:13 -05:00
2025-12-09 15:00:06 -05:00
2026-02-24 21:59:34 -08:00
2026-09-30 11:04:08 -04:00
2024-01-10 19:20:34 +01:00
2026-02-24 21:59:34 -08:00
2026-02-24 21:59:34 -08:00
2026-08-17 07:52:09 +02:00
2026-02-24 21:59:34 -08:00
2025-06-11 17:39:02 +01:00
2026-05-12 17:54:40 +01:00
2026-02-24 21:59:34 -08:00
2026-10-16 16:34:20 +03:00
2026-09-12 14:59:00 -07:00
2026-02-17 15:45:13 -05:00
2026-06-24 16:17:01 +00:00
2023-08-16 11:54:36 -06:00
2026-06-14 10:50:02 +02:00
2026-09-26 10:30:42 +02:00
2026-09-14 11:11:34 -04:00
2026-04-10 15:12:11 -07:00
2023-08-11 02:12:55 +00:00
2025-06-21 05:57:45 +03:00
2025-08-19 14:06:02 +00:00
2023-11-26 22:24:00 -07:00
2026-05-18 10:04:11 -07:00
2026-10-30 18:41:13 -07:00
2026-09-18 16:08:28 -07:00
2026-09-18 16:05:10 -07:00
2026-09-18 16:06:33 -07:00
2026-02-17 15:45:25 -05:00
2026-07-20 15:37:34 -07:00
2026-10-20 05:24:13 +00:00
2025-08-13 14:14:00 +03:00
2026-07-19 11:49:14 -07:00
2026-09-26 10:30:42 +02:00
2026-10-13 18:31:50 +02:00
2026-07-19 11:44:36 -07:00
2025-06-11 17:39:02 +01:00
2026-04-30 09:29:19 -07:00
2026-11-02 14:02:11 +11:00
2025-11-07 15:23:42 -08:00
2023-11-26 22:24:00 -07:00
2026-02-24 21:59:34 -08:00
2026-02-17 15:45:13 -05:00
2026-11-05 15:50:51 +01:00
2026-11-04 10:38:49 -05:00
2023-11-26 22:24:00 -07:00
2024-11-04 20:31:16 -05:00
2025-11-22 09:29:35 -05:00
2025-01-02 13:22:35 -05:00
2026-02-24 21:59:34 -08:00
2025-03-27 16:55:12 -04:00
2025-01-02 13:22:35 -05:00
2026-09-23 14:43:13 +02:00
2026-02-24 21:59:34 -08:00
2026-10-28 18:36:05 +03:30
2026-02-24 21:59:34 -08:00
2023-11-26 22:24:00 -07:00
2026-11-05 13:28:15 +01:00
2026-04-24 16:04:43 -06:00
2026-10-20 13:47:20 +02:00
2026-10-23 16:08:31 +02:00
2025-03-27 16:55:12 -04:00
2025-01-02 13:22:35 -05:00
2024-09-03 18:25:33 +08:00
2026-09-12 14:57:24 -07:00
2026-02-02 22:57:56 +01:00
2026-09-26 10:30:42 +02:00
2026-11-04 23:14:13 +00:00
2023-11-26 22:24:00 -07:00
2026-02-24 21:59:34 -08:00
2026-10-09 18:32:34 +01:00
2026-04-23 13:05:54 -04:00
2026-11-04 12:49:28 -07:00
2026-06-15 10:32:02 -04:00
2025-10-16 15:02:50 -07:00
2026-11-04 13:31:03 -04:00
2026-11-03 04:29:46 +00:00
2026-11-04 11:12:09 -08:00
2023-11-26 22:24:00 -07:00
2025-03-27 16:55:12 -04:00
2025-06-21 05:57:45 +03:00
2025-06-21 05:57:45 +03:00
2026-09-14 08:57:36 +02:00
2023-11-26 22:24:00 -07:00
2026-11-04 15:34:17 -06:00
2025-06-17 22:08:02 -04:00
2025-12-09 15:00:06 -05:00
2026-03-27 22:03:35 -06:00
2026-08-08 00:22:48 -07:00
2026-09-11 13:44:07 -07:00
2026-09-18 16:11:48 -07:00
2025-03-27 16:55:12 -04:00
2026-11-04 20:13:50 +03:00
2025-01-02 13:22:35 -05:00
2026-06-10 10:04:40 -04:00
2024-06-16 16:37:26 -04:00
2025-12-09 15:02:43 -05:00
2026-10-20 09:34:03 -05:00
2026-06-08 21:26:07 -07:00
2026-06-16 07:54:55 -07:00
2026-04-23 13:05:54 -04:00
2026-09-14 11:11:34 -04:00
2026-02-24 21:59:34 -08:00
2025-03-27 16:55:12 -04:00
2023-08-16 11:54:36 -06:00
2023-08-16 11:54:18 -06:00