diff options
| -rw-r--r-- | drivers/net/usb/cdc-phonet.c | 6 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlegacy/3945.c | 3 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlegacy/4965-mac.c | 3 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-rx.c | 2 | ||||
| -rw-r--r-- | drivers/usb/gadget/f_phonet.c | 2 | ||||
| -rw-r--r-- | include/linux/skbuff.h | 2 | ||||
| -rw-r--r-- | net/core/skbuff.c | 4 |
7 files changed, 13 insertions, 9 deletions
diff --git a/drivers/net/usb/cdc-phonet.c b/drivers/net/usb/cdc-phonet.c index 790cbdea7392..3886b30ed373 100644 --- a/drivers/net/usb/cdc-phonet.c +++ b/drivers/net/usb/cdc-phonet.c | |||
| @@ -164,12 +164,14 @@ static void rx_complete(struct urb *req) | |||
| 164 | /* Can't use pskb_pull() on page in IRQ */ | 164 | /* Can't use pskb_pull() on page in IRQ */ |
| 165 | memcpy(skb_put(skb, 1), page_address(page), 1); | 165 | memcpy(skb_put(skb, 1), page_address(page), 1); |
| 166 | skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, | 166 | skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, |
| 167 | page, 1, req->actual_length); | 167 | page, 1, req->actual_length, |
| 168 | req->actual_length); | ||
| 168 | page = NULL; | 169 | page = NULL; |
| 169 | } | 170 | } |
| 170 | } else { | 171 | } else { |
| 171 | skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, | 172 | skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, |
| 172 | page, 0, req->actual_length); | 173 | page, 0, req->actual_length, |
| 174 | req->actual_length); | ||
| 173 | page = NULL; | 175 | page = NULL; |
| 174 | } | 176 | } |
| 175 | if (req->actual_length < PAGE_SIZE) | 177 | if (req->actual_length < PAGE_SIZE) |
diff --git a/drivers/net/wireless/iwlegacy/3945.c b/drivers/net/wireless/iwlegacy/3945.c index c5b1d199e0bc..b25c01be0d90 100644 --- a/drivers/net/wireless/iwlegacy/3945.c +++ b/drivers/net/wireless/iwlegacy/3945.c | |||
| @@ -499,7 +499,8 @@ il3945_pass_packet_to_mac80211(struct il_priv *il, struct il_rx_buf *rxb, | |||
| 499 | le32_to_cpu(rx_end->status), stats); | 499 | le32_to_cpu(rx_end->status), stats); |
| 500 | 500 | ||
| 501 | skb_add_rx_frag(skb, 0, rxb->page, | 501 | skb_add_rx_frag(skb, 0, rxb->page, |
| 502 | (void *)rx_hdr->payload - (void *)pkt, len); | 502 | (void *)rx_hdr->payload - (void *)pkt, len, |
| 503 | len); | ||
| 503 | 504 | ||
| 504 | il_update_stats(il, false, fc, len); | 505 | il_update_stats(il, false, fc, len); |
| 505 | memcpy(IEEE80211_SKB_RXCB(skb), stats, sizeof(*stats)); | 506 | memcpy(IEEE80211_SKB_RXCB(skb), stats, sizeof(*stats)); |
diff --git a/drivers/net/wireless/iwlegacy/4965-mac.c b/drivers/net/wireless/iwlegacy/4965-mac.c index 7b54dbb338be..17f1c6853182 100644 --- a/drivers/net/wireless/iwlegacy/4965-mac.c +++ b/drivers/net/wireless/iwlegacy/4965-mac.c | |||
| @@ -596,7 +596,8 @@ il4965_pass_packet_to_mac80211(struct il_priv *il, struct ieee80211_hdr *hdr, | |||
| 596 | return; | 596 | return; |
| 597 | } | 597 | } |
| 598 | 598 | ||
| 599 | skb_add_rx_frag(skb, 0, rxb->page, (void *)hdr - rxb_addr(rxb), len); | 599 | skb_add_rx_frag(skb, 0, rxb->page, (void *)hdr - rxb_addr(rxb), len, |
| 600 | len); | ||
| 600 | 601 | ||
| 601 | il_update_stats(il, false, fc, len); | 602 | il_update_stats(il, false, fc, len); |
| 602 | memcpy(IEEE80211_SKB_RXCB(skb), stats, sizeof(*stats)); | 603 | memcpy(IEEE80211_SKB_RXCB(skb), stats, sizeof(*stats)); |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rx.c b/drivers/net/wireless/iwlwifi/iwl-agn-rx.c index 44c6f712b77d..f4b84d1596e3 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-rx.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rx.c | |||
| @@ -796,7 +796,7 @@ static void iwlagn_pass_packet_to_mac80211(struct iwl_priv *priv, | |||
| 796 | 796 | ||
| 797 | offset = (void *)hdr - rxb_addr(rxb); | 797 | offset = (void *)hdr - rxb_addr(rxb); |
| 798 | p = rxb_steal_page(rxb); | 798 | p = rxb_steal_page(rxb); |
| 799 | skb_add_rx_frag(skb, 0, p, offset, len); | 799 | skb_add_rx_frag(skb, 0, p, offset, len, len); |
| 800 | 800 | ||
| 801 | iwl_update_stats(priv, false, fc, len); | 801 | iwl_update_stats(priv, false, fc, len); |
| 802 | 802 | ||
diff --git a/drivers/usb/gadget/f_phonet.c b/drivers/usb/gadget/f_phonet.c index 7cdcb63b21ff..85a5cebe96b3 100644 --- a/drivers/usb/gadget/f_phonet.c +++ b/drivers/usb/gadget/f_phonet.c | |||
| @@ -345,7 +345,7 @@ static void pn_rx_complete(struct usb_ep *ep, struct usb_request *req) | |||
| 345 | } | 345 | } |
| 346 | 346 | ||
| 347 | skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, page, | 347 | skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, page, |
| 348 | skb->len <= 1, req->actual); | 348 | skb->len <= 1, req->actual, req->actual); |
| 349 | page = NULL; | 349 | page = NULL; |
| 350 | 350 | ||
| 351 | if (req->actual < req->length) { /* Last fragment */ | 351 | if (req->actual < req->length) { /* Last fragment */ |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index a2b9953b582d..681a18799140 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -1244,7 +1244,7 @@ static inline void skb_fill_page_desc(struct sk_buff *skb, int i, | |||
| 1244 | } | 1244 | } |
| 1245 | 1245 | ||
| 1246 | extern void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, | 1246 | extern void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, |
| 1247 | int off, int size); | 1247 | int off, int size, unsigned int truesize); |
| 1248 | 1248 | ||
| 1249 | #define SKB_PAGE_ASSERT(skb) BUG_ON(skb_shinfo(skb)->nr_frags) | 1249 | #define SKB_PAGE_ASSERT(skb) BUG_ON(skb_shinfo(skb)->nr_frags) |
| 1250 | #define SKB_FRAG_ASSERT(skb) BUG_ON(skb_has_frag_list(skb)) | 1250 | #define SKB_FRAG_ASSERT(skb) BUG_ON(skb_has_frag_list(skb)) |
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 6eb656acdfe5..a690cae91cdd 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
| @@ -321,12 +321,12 @@ struct sk_buff *__netdev_alloc_skb(struct net_device *dev, | |||
| 321 | EXPORT_SYMBOL(__netdev_alloc_skb); | 321 | EXPORT_SYMBOL(__netdev_alloc_skb); |
| 322 | 322 | ||
| 323 | void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, int off, | 323 | void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, int off, |
| 324 | int size) | 324 | int size, unsigned int truesize) |
| 325 | { | 325 | { |
| 326 | skb_fill_page_desc(skb, i, page, off, size); | 326 | skb_fill_page_desc(skb, i, page, off, size); |
| 327 | skb->len += size; | 327 | skb->len += size; |
| 328 | skb->data_len += size; | 328 | skb->data_len += size; |
| 329 | skb->truesize += size; | 329 | skb->truesize += truesize; |
| 330 | } | 330 | } |
| 331 | EXPORT_SYMBOL(skb_add_rx_frag); | 331 | EXPORT_SYMBOL(skb_add_rx_frag); |
| 332 | 332 | ||
