diff options
Diffstat (limited to 'drivers/net/ethernet/intel/e1000e/netdev.c')
-rw-r--r-- | drivers/net/ethernet/intel/e1000e/netdev.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c index f444eb0b76d8..dadb13be479a 100644 --- a/drivers/net/ethernet/intel/e1000e/netdev.c +++ b/drivers/net/ethernet/intel/e1000e/netdev.c | |||
@@ -5067,6 +5067,17 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb, | |||
5067 | return NETDEV_TX_OK; | 5067 | return NETDEV_TX_OK; |
5068 | } | 5068 | } |
5069 | 5069 | ||
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 | |||
5070 | mss = skb_shinfo(skb)->gso_size; | 5081 | mss = skb_shinfo(skb)->gso_size; |
5071 | if (mss) { | 5082 | if (mss) { |
5072 | u8 hdr_len; | 5083 | u8 hdr_len; |