Skip to content

Commit 6e97c17

Browse files
Tushar DaveJeff Kirsher
authored andcommitted
e1000e: Minimum packet size must be 17 bytes
This is a HW requirement. Although a buffer as short as 1 byte is allowed, the total length of packet before, padding and CRC insertion, must be at least 17 bytes. So pad all small packets manually up to 17 bytes before delivering them to HW. Signed-off-by: Tushar Dave <[email protected]> Tested-by: Jeff Pieper <[email protected]> Signed-off-by: Jeff Kirsher <[email protected]>
1 parent 598e74f commit 6e97c17

File tree

1 file changed

+11
-0
lines changed
  • drivers/net/ethernet/intel/e1000e

1 file changed

+11
-0
lines changed

drivers/net/ethernet/intel/e1000e/netdev.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5067,6 +5067,17 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb,
50675067
return NETDEV_TX_OK;
50685068
}
50695069

5070+
/*
5071+
* The minimum packet size with TCTL.PSP set is 17 bytes so
5072+
* pad skb in order to meet this minimum size requirement
5073+
*/
5074+
if (unlikely(skb->len < 17)) {
5075+
if (skb_pad(skb, 17 - skb->len))
5076+
return NETDEV_TX_OK;
5077+
skb->len = 17;
5078+
skb_set_tail_pointer(skb, 17);
5079+
}
5080+
50705081
mss = skb_shinfo(skb)->gso_size;
50715082
if (mss) {
50725083
u8 hdr_len;

0 commit comments

Comments
 (0)