mirror of https://gitee.com/openkylin/linux.git
net: ethernet: aquantia: Fixed incorrect buff->len calculation.
rxd_wb->pkt_len is the total length of the packet. If we received a large packet (with length > AQ_CFG_RX_FRAME_MAX) then we will get multiple buffers. We need to fix the length of the last buffer. Signed-off-by: Pavel Belous <pavel.belous@aquantia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
55629109d9
commit
c0788f7463
|
@ -659,8 +659,8 @@ static int hw_atl_a0_hw_ring_rx_receive(struct aq_hw_s *self,
|
|||
}
|
||||
|
||||
if (HW_ATL_A0_RXD_WB_STAT2_EOP & rxd_wb->status) {
|
||||
buff->len = (rxd_wb->pkt_len &
|
||||
(AQ_CFG_RX_FRAME_MAX - 1U));
|
||||
buff->len = rxd_wb->pkt_len %
|
||||
AQ_CFG_RX_FRAME_MAX;
|
||||
buff->len = buff->len ?
|
||||
buff->len : AQ_CFG_RX_FRAME_MAX;
|
||||
buff->next = 0U;
|
||||
|
|
|
@ -673,8 +673,8 @@ static int hw_atl_b0_hw_ring_rx_receive(struct aq_hw_s *self,
|
|||
}
|
||||
|
||||
if (HW_ATL_B0_RXD_WB_STAT2_EOP & rxd_wb->status) {
|
||||
buff->len = (rxd_wb->pkt_len &
|
||||
(AQ_CFG_RX_FRAME_MAX - 1U));
|
||||
buff->len = rxd_wb->pkt_len %
|
||||
AQ_CFG_RX_FRAME_MAX;
|
||||
buff->len = buff->len ?
|
||||
buff->len : AQ_CFG_RX_FRAME_MAX;
|
||||
buff->next = 0U;
|
||||
|
|
Loading…
Reference in New Issue