Commit c0788f74 authored by Pavel Belous's avatar Pavel Belous Committed by David S. Miller
Browse files

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: default avatarPavel Belous <pavel.belous@aquantia.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 55629109
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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;
+2 −2
Original line number Diff line number Diff line
@@ -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;