diff options
| author | Miquel Raynal <miquel.raynal@bootlin.com> | 2022-05-20 13:58:54 +0200 | 
|---|---|---|
| committer | Miquel Raynal <miquel.raynal@bootlin.com> | 2022-05-20 13:58:54 +0200 | 
| commit | e6828be5edcfea25cd70a2d1de41085c67ef9fa5 (patch) | |
| tree | 489ae4cdb47a4d83940e2472f49a3c601806b70e /net/core/skbuff.c | |
| parent | 1fefc8ecb834c88edfc27e712d683872d0c541dd (diff) | |
| parent | c47452194641b5d27c20e557c84a46c85fd7ce37 (diff) | |
Merge tag 'spi-nor/for-5.19' into mtd/next
SPI NOR core changes:
- Read back written SR value to make sure the write was done correctly.
- Introduce a common function for Read ID that manufacturer drivers can
  use to verify the Octal DTR switch worked correctly.
- Add helpers for read/write any register commands so manufacturer
  drivers don't open code it every time.
- Clarify rdsr dummy cycles documentation.
- Add debugfs entry to expose internal flash parameters and state.
SPI NOR manufacturer drivers changes:
- Add support for Winbond W25Q512NW-IM, and Eon EN25QH256A.
- Move spi_nor_write_ear() to Winbond module since only Winbond flashes
  use it.
- Rework Micron and Cypress Octal DTR enable methods to improve
  readability.
- Use the common Read ID function to verify switch to Octal DTR mode for
  Micron and Cypress flashes.
- Skip polling status on volatile register writes for Micron and Cypress
  flashes since the operation is instant.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Diffstat (limited to 'net/core/skbuff.c')
| -rw-r--r-- | net/core/skbuff.c | 15 | 
1 files changed, 11 insertions, 4 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 10bde7c6db44..30b523fa4ad2 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -5276,11 +5276,18 @@ bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,  	if (skb_cloned(to))  		return false; -	/* The page pool signature of struct page will eventually figure out -	 * which pages can be recycled or not but for now let's prohibit slab -	 * allocated and page_pool allocated SKBs from being coalesced. +	/* In general, avoid mixing slab allocated and page_pool allocated +	 * pages within the same SKB. However when @to is not pp_recycle and +	 * @from is cloned, we can transition frag pages from page_pool to +	 * reference counted. +	 * +	 * On the other hand, don't allow coalescing two pp_recycle SKBs if +	 * @from is cloned, in case the SKB is using page_pool fragment +	 * references (PP_FLAG_PAGE_FRAG). Since we only take full page +	 * references for cloned SKBs at the moment that would result in +	 * inconsistent reference counts.  	 */ -	if (to->pp_recycle != from->pp_recycle) +	if (to->pp_recycle != (from->pp_recycle && !skb_cloned(from)))  		return false;  	if (len <= skb_tailroom(to)) {  | 
