diff options
Diffstat (limited to 'drivers/net/ethernet/amd/xgbe/xgbe-dev.c')
| -rw-r--r-- | drivers/net/ethernet/amd/xgbe/xgbe-dev.c | 20 |
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) |
