aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/amd/xgbe/xgbe-dev.c')
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe-dev.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
index 937f37a5dcb2..24a687ce4388 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
@@ -1896,10 +1896,15 @@ static int xgbe_dev_read(struct xgbe_channel *channel)
1896 1896
1897 /* Get the header length */ 1897 /* Get the header length */
1898 if (XGMAC_GET_BITS_LE(rdesc->desc3, RX_NORMAL_DESC3, FD)) { 1898 if (XGMAC_GET_BITS_LE(rdesc->desc3, RX_NORMAL_DESC3, FD)) {
1899 XGMAC_SET_BITS(packet->attributes, RX_PACKET_ATTRIBUTES,
1900 FIRST, 1);
1899 rdata->rx.hdr_len = XGMAC_GET_BITS_LE(rdesc->desc2, 1901 rdata->rx.hdr_len = XGMAC_GET_BITS_LE(rdesc->desc2,
1900 RX_NORMAL_DESC2, HL); 1902 RX_NORMAL_DESC2, HL);
1901 if (rdata->rx.hdr_len) 1903 if (rdata->rx.hdr_len)
1902 pdata->ext_stats.rx_split_header_packets++; 1904 pdata->ext_stats.rx_split_header_packets++;
1905 } else {
1906 XGMAC_SET_BITS(packet->attributes, RX_PACKET_ATTRIBUTES,
1907 FIRST, 0);
1903 } 1908 }
1904 1909
1905 /* Get the RSS hash */ 1910 /* Get the RSS hash */
@@ -1922,19 +1927,16 @@ static int xgbe_dev_read(struct xgbe_channel *channel)
1922 } 1927 }
1923 } 1928 }
1924 1929
1925 /* Get the packet length */ 1930 /* Not all the data has been transferred for this packet */
1926 rdata->rx.len = XGMAC_GET_BITS_LE(rdesc->desc3, RX_NORMAL_DESC3, PL); 1931 if (!XGMAC_GET_BITS_LE(rdesc->desc3, RX_NORMAL_DESC3, LD))
1927
1928 if (!XGMAC_GET_BITS_LE(rdesc->desc3, RX_NORMAL_DESC3, LD)) {
1929 /* Not all the data has been transferred for this packet */
1930 XGMAC_SET_BITS(packet->attributes, RX_PACKET_ATTRIBUTES,
1931 INCOMPLETE, 1);
1932 return 0; 1932 return 0;
1933 }
1934 1933
1935 /* This is the last of the data for this packet */ 1934 /* This is the last of the data for this packet */
1936 XGMAC_SET_BITS(packet->attributes, RX_PACKET_ATTRIBUTES, 1935 XGMAC_SET_BITS(packet->attributes, RX_PACKET_ATTRIBUTES,
1937 INCOMPLETE, 0); 1936 LAST, 1);
1937
1938 /* Get the packet length */
1939 rdata->rx.len = XGMAC_GET_BITS_LE(rdesc->desc3, RX_NORMAL_DESC3, PL);
1938 1940
1939 /* Set checksum done indicator as appropriate */ 1941 /* Set checksum done indicator as appropriate */
1940 if (netdev->features & NETIF_F_RXCSUM) 1942 if (netdev->features & NETIF_F_RXCSUM)