Project

General

Profile

Bug #12849

ixgbe can do unnecessary allocations during tx

Added by Jason King about 2 months ago. Updated about 1 month ago.

Status:
New
Priority:
Normal
Assignee:
Category:
driver - device drivers
Start date:
Due date:
% Done:

0%

Estimated time:
Difficulty:
Medium
Tags:
Gerrit CR:

Description

In ixgbe_ring_tx, when LSO is active it may allocate and move around new mblk_ts based on the dblk_t alignment in order to get all of the headers (ethernet, IP, TCP/UDP) into a single aligned mblk_t. However, it then sets the copy threshold to the size of all the combined headers. This means the dblk_ts containing the headers (after all the shuffling) are not mapped to the device, but instead are copied into an already mapped buffer.

All of this shuffling also greatly complicates the TX code, making it hard to analyze or make changes, and is ultimately unnecessary -- we can copy the headers directly from their existing dblk_ts into an already mapped buffer and forgo the allocb() calls, and then proceed as we currently do with the remaining contents of the packet. It also allows us to drastically simplify the logic in ixgbe_ring_tx.

History

#1

Updated by Electric Monk about 1 month ago

  • Gerrit CR set to 728

Also available in: Atom PDF