|
|
@@ -3443,7 +3443,7 @@ static int niu_process_rx_pkt(struct napi_struct *napi, struct niu *np,
|
|
|
|
|
|
len = (val & RCR_ENTRY_L2_LEN) >>
|
|
|
RCR_ENTRY_L2_LEN_SHIFT;
|
|
|
- len -= ETH_FCS_LEN;
|
|
|
+ append_size = len + ETH_HLEN + ETH_FCS_LEN;
|
|
|
|
|
|
addr = (val & RCR_ENTRY_PKT_BUF_ADDR) <<
|
|
|
RCR_ENTRY_PKT_BUF_ADDR_SHIFT;
|
|
|
@@ -3453,7 +3453,6 @@ static int niu_process_rx_pkt(struct napi_struct *napi, struct niu *np,
|
|
|
RCR_ENTRY_PKTBUFSZ_SHIFT];
|
|
|
|
|
|
off = addr & ~PAGE_MASK;
|
|
|
- append_size = rcr_size;
|
|
|
if (num_rcr == 1) {
|
|
|
int ptype;
|
|
|
|
|
|
@@ -3466,7 +3465,7 @@ static int niu_process_rx_pkt(struct napi_struct *napi, struct niu *np,
|
|
|
else
|
|
|
skb_checksum_none_assert(skb);
|
|
|
} else if (!(val & RCR_ENTRY_MULTI))
|
|
|
- append_size = len - skb->len;
|
|
|
+ append_size = append_size - skb->len;
|
|
|
|
|
|
niu_rx_skb_append(skb, page, off, append_size, rcr_size);
|
|
|
if ((page->index + rp->rbr_block_size) - rcr_size == addr) {
|