mirror of
https://github.com/torvalds/linux.git
synced 2024-12-19 17:41:29 +00:00
be2net: pad skb to meet minimum TX pkt size in BE3
On BE3 chips in SRIOV configs, the TX path stalls when a packet less than 32B is received from the host. A workaround to pad such packets already exists for the Skyhawk and Lancer chips. Use the same workaround for BE3 chips too. Signed-off-by: Suresh Reddy <suresh.reddy@avagotech.com> Signed-off-by: Sathya Perla <sathya.perla@avagotech.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
0c8845679f
commit
8227e9901d
@ -1123,11 +1123,12 @@ static struct sk_buff *be_xmit_workarounds(struct be_adapter *adapter,
|
||||
struct sk_buff *skb,
|
||||
struct be_wrb_params *wrb_params)
|
||||
{
|
||||
/* Lancer, SH-R ASICs have a bug wherein Packets that are 32 bytes or
|
||||
* less may cause a transmit stall on that port. So the work-around is
|
||||
* to pad short packets (<= 32 bytes) to a 36-byte length.
|
||||
/* Lancer, SH and BE3 in SRIOV mode have a bug wherein
|
||||
* packets that are 32b or less may cause a transmit stall
|
||||
* on that port. The workaround is to pad such packets
|
||||
* (len <= 32 bytes) to a minimum length of 36b.
|
||||
*/
|
||||
if (unlikely(!BEx_chip(adapter) && skb->len <= 32)) {
|
||||
if (skb->len <= 32) {
|
||||
if (skb_put_padto(skb, 36))
|
||||
return NULL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user