mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
net: add netmem to skb_frag_t
Use struct netmem* instead of page in skb_frag_t. Currently struct netmem* is always a struct page underneath, but the abstraction allows efforts to add support for skb frags not backed by pages. There is unfortunately 1 instance where the skb_frag_t is assumed to be a exactly a bio_vec in kcm. For this case, WARN_ON_ONCE and return error before doing a cast. Add skb[_frag]_fill_netmem_*() and skb_add_rx_frag_netmem() helpers so that the API can be used to create netmem skbs. Signed-off-by: Mina Almasry <almasrymina@google.com> Acked-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
committed by
Paolo Abeni
parent
18ddbf5cf0
commit
21d2e6737c
@@ -627,7 +627,8 @@ retry:
|
||||
skb = txm->frag_skb;
|
||||
}
|
||||
|
||||
if (WARN_ON(!skb_shinfo(skb)->nr_frags)) {
|
||||
if (WARN_ON(!skb_shinfo(skb)->nr_frags) ||
|
||||
WARN_ON_ONCE(!skb_frag_page(&skb_shinfo(skb)->frags[0]))) {
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
@@ -637,8 +638,8 @@ retry:
|
||||
msize += skb_frag_size(&skb_shinfo(skb)->frags[i]);
|
||||
|
||||
iov_iter_bvec(&msg.msg_iter, ITER_SOURCE,
|
||||
skb_shinfo(skb)->frags, skb_shinfo(skb)->nr_frags,
|
||||
msize);
|
||||
(const struct bio_vec *)skb_shinfo(skb)->frags,
|
||||
skb_shinfo(skb)->nr_frags, msize);
|
||||
iov_iter_advance(&msg.msg_iter, txm->frag_offset);
|
||||
|
||||
do {
|
||||
|
||||
Reference in New Issue
Block a user