All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/7] Convert skb_frag_t to bio_vec
@ 2019-07-23  3:08 Matthew Wilcox
  2019-07-23  3:08 ` [PATCH v3 1/7] net: Use skb accessors in network drivers Matthew Wilcox
                   ` (8 more replies)
  0 siblings, 9 replies; 16+ messages in thread
From: Matthew Wilcox @ 2019-07-23  3:08 UTC (permalink / raw)
  To: davem; +Cc: Matthew Wilcox (Oracle), hch, netdev

From: "Matthew Wilcox (Oracle)" <willy@infradead.org>

The skb_frag_t and bio_vec are fundamentally the same (page, offset,
length) tuple.  This patch series unifies the two, leaving the
skb_frag_t typedef in place.  This has the immediate advantage that
we already have iov_iter support for bvecs and don't need to add
support for iterating skbuffs.  It enables a long-term plan to use
bvecs more broadly within the kernel and should make network-storage
drivers able to do less work converting between skbuffs and biovecs.

It will consume more memory on 32-bit kernels.  If that proves
problematic, we can look at ways of addressing it.

v3: Rebase on latest Linus with net-next merged.
  - Reorder the uncontroversial 'Use skb accessors' patches first so you
    can apply just those two if you want to hold off on the full
    conversion.
  - Convert all the users of 'struct skb_frag_struct' to skb_frag_t.

Matthew Wilcox (Oracle) (7):
  net: Use skb accessors in network drivers
  net: Use skb accessors in network core
  net: Increase the size of skb_frag_t
  net: Reorder the contents of skb_frag_t
  net: Rename skb_frag page to bv_page
  net: Rename skb_frag_t size to bv_len
  net: Convert skb_frag_t to bio_vec

 drivers/crypto/chelsio/chtls/chtls_io.c       |  6 ++--
 drivers/hsi/clients/ssi_protocol.c            |  3 +-
 drivers/infiniband/hw/hfi1/vnic_sdma.c        |  2 +-
 drivers/net/ethernet/3com/3c59x.c             |  2 +-
 drivers/net/ethernet/agere/et131x.c           |  6 ++--
 drivers/net/ethernet/amd/xgbe/xgbe-desc.c     |  2 +-
 drivers/net/ethernet/amd/xgbe/xgbe-drv.c      |  2 +-
 .../net/ethernet/apm/xgene/xgene_enet_main.c  |  3 +-
 drivers/net/ethernet/atheros/alx/main.c       |  4 +--
 .../net/ethernet/atheros/atl1c/atl1c_main.c   |  4 +--
 .../net/ethernet/atheros/atl1e/atl1e_main.c   |  3 +-
 drivers/net/ethernet/atheros/atlx/atl1.c      |  3 +-
 drivers/net/ethernet/broadcom/bgmac.c         |  2 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt.c     |  2 +-
 drivers/net/ethernet/brocade/bna/bnad.c       |  2 +-
 drivers/net/ethernet/calxeda/xgmac.c          |  2 +-
 .../net/ethernet/cavium/liquidio/lio_main.c   | 23 ++++++-------
 .../ethernet/cavium/liquidio/lio_vf_main.c    | 23 ++++++-------
 .../ethernet/cavium/thunder/nicvf_queues.c    |  4 +--
 drivers/net/ethernet/chelsio/cxgb3/sge.c      |  2 +-
 drivers/net/ethernet/cortina/gemini.c         |  5 ++-
 drivers/net/ethernet/emulex/benet/be_main.c   |  2 +-
 drivers/net/ethernet/freescale/enetc/enetc.c  |  2 +-
 drivers/net/ethernet/freescale/fec_main.c     |  4 +--
 drivers/net/ethernet/hisilicon/hix5hd2_gmac.c |  2 +-
 drivers/net/ethernet/hisilicon/hns/hns_enet.c |  4 +--
 .../net/ethernet/hisilicon/hns3/hns3_enet.c   |  8 ++---
 drivers/net/ethernet/huawei/hinic/hinic_tx.c  |  2 +-
 drivers/net/ethernet/ibm/emac/core.c          |  2 +-
 drivers/net/ethernet/intel/e1000/e1000_main.c |  3 +-
 drivers/net/ethernet/intel/e1000e/netdev.c    |  3 +-
 drivers/net/ethernet/intel/fm10k/fm10k_main.c |  5 +--
 drivers/net/ethernet/intel/i40e/i40e_txrx.c   |  4 +--
 drivers/net/ethernet/intel/i40e/i40e_txrx.h   |  2 +-
 drivers/net/ethernet/intel/iavf/iavf_txrx.c   |  4 +--
 drivers/net/ethernet/intel/iavf/iavf_txrx.h   |  2 +-
 drivers/net/ethernet/intel/ice/ice_txrx.c     |  6 ++--
 drivers/net/ethernet/intel/igb/igb_main.c     |  5 +--
 drivers/net/ethernet/intel/igbvf/netdev.c     |  2 +-
 drivers/net/ethernet/intel/igc/igc_main.c     |  5 +--
 drivers/net/ethernet/intel/ixgb/ixgb_main.c   |  4 +--
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |  9 ++---
 .../net/ethernet/intel/ixgbevf/ixgbevf_main.c |  2 +-
 drivers/net/ethernet/jme.c                    |  5 ++-
 drivers/net/ethernet/marvell/mvneta.c         |  4 +--
 .../net/ethernet/marvell/mvpp2/mvpp2_main.c   |  7 ++--
 drivers/net/ethernet/mediatek/mtk_eth_soc.c   |  4 +--
 drivers/net/ethernet/mellanox/mlx4/en_tx.c    |  4 +--
 .../net/ethernet/mellanox/mlx5/core/en_tx.c   |  2 +-
 drivers/net/ethernet/microchip/lan743x_main.c |  5 ++-
 .../net/ethernet/myricom/myri10ge/myri10ge.c  | 10 +++---
 .../ethernet/netronome/nfp/nfp_net_common.c   |  6 ++--
 .../ethernet/qlogic/netxen/netxen_nic_main.c  |  4 +--
 .../net/ethernet/qlogic/qlcnic/qlcnic_io.c    |  2 +-
 drivers/net/ethernet/qualcomm/emac/emac-mac.c | 12 +++----
 .../net/ethernet/synopsys/dwc-xlgmac-desc.c   |  2 +-
 .../net/ethernet/synopsys/dwc-xlgmac-net.c    |  2 +-
 drivers/net/ethernet/tehuti/tehuti.c          |  2 +-
 drivers/net/usb/usbnet.c                      |  4 +--
 drivers/net/vmxnet3/vmxnet3_drv.c             |  7 ++--
 drivers/net/wireless/ath/wil6210/debugfs.c    |  3 +-
 drivers/net/wireless/ath/wil6210/txrx.c       |  9 +++--
 drivers/net/wireless/ath/wil6210/txrx_edma.c  |  2 +-
 drivers/net/xen-netback/netback.c             |  4 +--
 drivers/s390/net/qeth_core_main.c             |  2 +-
 drivers/scsi/fcoe/fcoe_transport.c            |  2 +-
 drivers/staging/octeon/ethernet-tx.c          |  5 ++-
 .../staging/unisys/visornic/visornic_main.c   |  4 +--
 drivers/target/iscsi/cxgbit/cxgbit_target.c   | 13 +++----
 include/linux/bvec.h                          |  5 ++-
 include/linux/skbuff.h                        | 34 ++++++-------------
 net/core/skbuff.c                             | 26 ++++++++------
 net/core/tso.c                                |  8 ++---
 net/ipv4/tcp.c                                | 14 ++++----
 net/kcm/kcmsock.c                             |  8 ++---
 net/tls/tls_device.c                          | 14 ++++----
 76 files changed, 202 insertions(+), 220 deletions(-)

-- 
2.20.1


^ permalink raw reply	[flat|nested] 16+ messages in thread
* [PATCH v3 0/7] Convert skb_frag_t to bio_vec
@ 2019-07-12 13:43 Matthew Wilcox
  2019-07-12 13:43 ` [PATCH v3 2/7] net: Use skb accessors in network core Matthew Wilcox
  0 siblings, 1 reply; 16+ messages in thread
From: Matthew Wilcox @ 2019-07-12 13:43 UTC (permalink / raw)
  To: davem; +Cc: Matthew Wilcox (Oracle), hch, netdev

From: "Matthew Wilcox (Oracle)" <willy@infradead.org>

The skb_frag_t and bio_vec are fundamentally the same (page, offset,
length) tuple.  This patch series unifies the two, leaving the
skb_frag_t typedef in place.  This has the immediate advantage that
we already have iov_iter support for bvecs and don't need to add
support for iterating skbuffs.  It enables a long-term plan to use
bvecs more broadly within the kernel and should make network-storage
drivers able to do less work converting between skbuffs and biovecs.

It will consume more memory on 32-bit kernels.  If that proves
problematic, we can look at ways of addressing it.

v3: Rebase on latest Linus with net-next merged.
  - Reorder the uncontroversial 'Use skb accessors' patches first so you
    can apply just those two if you want to hold off on the full
    conversion.
  - Convert all the users of 'struct skb_frag_struct' to skb_frag_t.

Matthew Wilcox (Oracle) (7):
  net: Use skb accessors in network drivers
  net: Use skb accessors in network core
  net: Increase the size of skb_frag_t
  net: Reorder the contents of skb_frag_t
  net: Rename skb_frag page to bv_page
  net: Rename skb_frag_t size to bv_len
  net: Convert skb_frag_t to bio_vec

 drivers/crypto/chelsio/chtls/chtls_io.c       |  6 ++--
 drivers/hsi/clients/ssi_protocol.c            |  3 +-
 drivers/infiniband/hw/hfi1/vnic_sdma.c        |  2 +-
 drivers/net/ethernet/3com/3c59x.c             |  2 +-
 drivers/net/ethernet/agere/et131x.c           |  6 ++--
 drivers/net/ethernet/amd/xgbe/xgbe-desc.c     |  2 +-
 drivers/net/ethernet/amd/xgbe/xgbe-drv.c      |  2 +-
 .../net/ethernet/apm/xgene/xgene_enet_main.c  |  3 +-
 drivers/net/ethernet/atheros/alx/main.c       |  4 +--
 .../net/ethernet/atheros/atl1c/atl1c_main.c   |  4 +--
 .../net/ethernet/atheros/atl1e/atl1e_main.c   |  3 +-
 drivers/net/ethernet/atheros/atlx/atl1.c      |  3 +-
 drivers/net/ethernet/broadcom/bgmac.c         |  2 +-
 drivers/net/ethernet/broadcom/bnxt/bnxt.c     |  2 +-
 drivers/net/ethernet/brocade/bna/bnad.c       |  2 +-
 drivers/net/ethernet/calxeda/xgmac.c          |  2 +-
 .../net/ethernet/cavium/liquidio/lio_main.c   | 23 ++++++-------
 .../ethernet/cavium/liquidio/lio_vf_main.c    | 23 ++++++-------
 .../ethernet/cavium/thunder/nicvf_queues.c    |  4 +--
 drivers/net/ethernet/chelsio/cxgb3/sge.c      |  2 +-
 drivers/net/ethernet/cortina/gemini.c         |  5 ++-
 drivers/net/ethernet/emulex/benet/be_main.c   |  2 +-
 drivers/net/ethernet/freescale/enetc/enetc.c  |  2 +-
 drivers/net/ethernet/freescale/fec_main.c     |  4 +--
 drivers/net/ethernet/hisilicon/hix5hd2_gmac.c |  2 +-
 drivers/net/ethernet/hisilicon/hns/hns_enet.c |  4 +--
 .../net/ethernet/hisilicon/hns3/hns3_enet.c   |  8 ++---
 drivers/net/ethernet/huawei/hinic/hinic_tx.c  |  2 +-
 drivers/net/ethernet/ibm/emac/core.c          |  2 +-
 drivers/net/ethernet/intel/e1000/e1000_main.c |  3 +-
 drivers/net/ethernet/intel/e1000e/netdev.c    |  3 +-
 drivers/net/ethernet/intel/fm10k/fm10k_main.c |  5 +--
 drivers/net/ethernet/intel/i40e/i40e_txrx.c   |  4 +--
 drivers/net/ethernet/intel/i40e/i40e_txrx.h   |  2 +-
 drivers/net/ethernet/intel/iavf/iavf_txrx.c   |  4 +--
 drivers/net/ethernet/intel/iavf/iavf_txrx.h   |  2 +-
 drivers/net/ethernet/intel/ice/ice_txrx.c     |  6 ++--
 drivers/net/ethernet/intel/igb/igb_main.c     |  5 +--
 drivers/net/ethernet/intel/igbvf/netdev.c     |  2 +-
 drivers/net/ethernet/intel/igc/igc_main.c     |  5 +--
 drivers/net/ethernet/intel/ixgb/ixgb_main.c   |  4 +--
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |  9 ++---
 .../net/ethernet/intel/ixgbevf/ixgbevf_main.c |  2 +-
 drivers/net/ethernet/jme.c                    |  5 ++-
 drivers/net/ethernet/marvell/mvneta.c         |  4 +--
 .../net/ethernet/marvell/mvpp2/mvpp2_main.c   |  7 ++--
 drivers/net/ethernet/mediatek/mtk_eth_soc.c   |  4 +--
 drivers/net/ethernet/mellanox/mlx4/en_tx.c    |  4 +--
 .../net/ethernet/mellanox/mlx5/core/en_tx.c   |  2 +-
 drivers/net/ethernet/microchip/lan743x_main.c |  5 ++-
 .../net/ethernet/myricom/myri10ge/myri10ge.c  | 10 +++---
 .../ethernet/netronome/nfp/nfp_net_common.c   |  6 ++--
 .../ethernet/qlogic/netxen/netxen_nic_main.c  |  4 +--
 .../net/ethernet/qlogic/qlcnic/qlcnic_io.c    |  2 +-
 drivers/net/ethernet/qualcomm/emac/emac-mac.c | 12 +++----
 .../net/ethernet/synopsys/dwc-xlgmac-desc.c   |  2 +-
 .../net/ethernet/synopsys/dwc-xlgmac-net.c    |  2 +-
 drivers/net/ethernet/tehuti/tehuti.c          |  2 +-
 drivers/net/usb/usbnet.c                      |  4 +--
 drivers/net/vmxnet3/vmxnet3_drv.c             |  7 ++--
 drivers/net/wireless/ath/wil6210/debugfs.c    |  3 +-
 drivers/net/wireless/ath/wil6210/txrx.c       |  9 +++--
 drivers/net/wireless/ath/wil6210/txrx_edma.c  |  2 +-
 drivers/net/xen-netback/netback.c             |  4 +--
 drivers/s390/net/qeth_core_main.c             |  2 +-
 drivers/scsi/fcoe/fcoe_transport.c            |  2 +-
 drivers/staging/octeon/ethernet-tx.c          |  5 ++-
 .../staging/unisys/visornic/visornic_main.c   |  4 +--
 drivers/target/iscsi/cxgbit/cxgbit_target.c   | 13 +++----
 include/linux/bvec.h                          |  5 ++-
 include/linux/skbuff.h                        | 34 ++++++-------------
 net/core/skbuff.c                             | 26 ++++++++------
 net/core/tso.c                                |  8 ++---
 net/ipv4/tcp.c                                | 14 ++++----
 net/kcm/kcmsock.c                             |  8 ++---
 net/tls/tls_device.c                          | 14 ++++----
 76 files changed, 202 insertions(+), 220 deletions(-)

-- 
2.20.1


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2019-07-25 16:27 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-23  3:08 [PATCH v3 0/7] Convert skb_frag_t to bio_vec Matthew Wilcox
2019-07-23  3:08 ` [PATCH v3 1/7] net: Use skb accessors in network drivers Matthew Wilcox
2019-07-23  3:08 ` [PATCH v3 2/7] net: Use skb accessors in network core Matthew Wilcox
2019-07-23  3:56   ` Yunsheng Lin
2019-07-23 11:17     ` Matthew Wilcox
2019-07-23  3:08 ` [PATCH v3 3/7] net: Increase the size of skb_frag_t Matthew Wilcox
2019-07-23  3:08 ` [PATCH v3 4/7] net: Reorder the contents " Matthew Wilcox
2019-07-23  3:08 ` [PATCH v3 5/7] net: Rename skb_frag page to bv_page Matthew Wilcox
2019-07-23  3:08 ` [PATCH v3 6/7] net: Rename skb_frag_t size to bv_len Matthew Wilcox
2019-07-24 10:49   ` David Laight
2019-07-24 11:41     ` Matthew Wilcox
2019-07-24 18:46       ` David Miller
2019-07-23  3:08 ` [PATCH v3 7/7] net: Convert skb_frag_t to bio_vec Matthew Wilcox
2019-07-23  3:48 ` [PATCH v3 0/7] " David Miller
2019-07-25 16:26 ` Jonathan Lemon
  -- strict thread matches above, loose matches on Subject: below --
2019-07-12 13:43 Matthew Wilcox
2019-07-12 13:43 ` [PATCH v3 2/7] net: Use skb accessors in network core Matthew Wilcox

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.