aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Belous <pavel.belous@aquantia.com>2017-02-20 14:36:48 -0500
committerDavid S. Miller <davem@davemloft.net>2017-02-20 17:11:09 -0500
commitc0788f7463f138bb1d30552b3edac442781b4e11 (patch)
tree5bfd232af73b0fccafaf68724846b97649c8eb64
parent55629109d934b2c1b25457424fa72eb94e8c2a26 (diff)
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>
-rw-r--r--drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c4
-rw-r--r--drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c4
2 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c
index 1f388054a6c7..a2b746a2dd50 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c
@@ -659,8 +659,8 @@ static int hw_atl_a0_hw_ring_rx_receive(struct aq_hw_s *self,
659 } 659 }
660 660
661 if (HW_ATL_A0_RXD_WB_STAT2_EOP & rxd_wb->status) { 661 if (HW_ATL_A0_RXD_WB_STAT2_EOP & rxd_wb->status) {
662 buff->len = (rxd_wb->pkt_len & 662 buff->len = rxd_wb->pkt_len %
663 (AQ_CFG_RX_FRAME_MAX - 1U)); 663 AQ_CFG_RX_FRAME_MAX;
664 buff->len = buff->len ? 664 buff->len = buff->len ?
665 buff->len : AQ_CFG_RX_FRAME_MAX; 665 buff->len : AQ_CFG_RX_FRAME_MAX;
666 buff->next = 0U; 666 buff->next = 0U;
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
index e7e694f693bd..cab2931dab9a 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
@@ -673,8 +673,8 @@ static int hw_atl_b0_hw_ring_rx_receive(struct aq_hw_s *self,
673 } 673 }
674 674
675 if (HW_ATL_B0_RXD_WB_STAT2_EOP & rxd_wb->status) { 675 if (HW_ATL_B0_RXD_WB_STAT2_EOP & rxd_wb->status) {
676 buff->len = (rxd_wb->pkt_len & 676 buff->len = rxd_wb->pkt_len %
677 (AQ_CFG_RX_FRAME_MAX - 1U)); 677 AQ_CFG_RX_FRAME_MAX;
678 buff->len = buff->len ? 678 buff->len = buff->len ?
679 buff->len : AQ_CFG_RX_FRAME_MAX; 679 buff->len : AQ_CFG_RX_FRAME_MAX;
680 buff->next = 0U; 680 buff->next = 0U;