Hi all, I realize this already is merged, and it had some previous review comments that led to the decisions in this patch, but I'd still like to ask here, where I think I'm reaching the relevant parties: On Wed, Jul 10, 2019 at 1:43 AM Jian-Hong Pan <jian-hong@xxxxxxxxxxxx> wrote: ... > This patch allocates a new, data-sized skb first in RX ISR. After > copying the data in, we pass it to the upper layers. However, if skb > allocation fails, we effectively drop the frame. In both cases, the > original, full size ring skb is reused. > > In addition, by fixing the kernel crash, the RX routine should now > generally behave better under low memory conditions. > > Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=204053 > Signed-off-by: Jian-Hong Pan <jian-hong@xxxxxxxxxxxx> > Cc: <stable@xxxxxxxxxxxxxxx> > --- > v2: > - Allocate new data-sized skb and put data into it, then pass it to > mac80211. Reuse the original skb in RX ring by DMA sync. Is it really wise to force an extra memcpy() for *every* delivery? Isn't there some other strategy that could be used to properly handle low-memory scenarios while still passing the original buffer up to higher layers most of the time? Or is it really so bad to keep re-allocating RTK_PCI_RX_BUF_SIZE (>8KB) of contiguous memory, to re-fill the RX ring? And if that is so bad, can we reduce the requirement for contiguous memory instead? (e.g., keep with smaller buffers, and perform aggregation / scatter-gather only for frames that are really larger?) Anyway, that's mostly a long-term thought, as this patch is good for fixing the important memory errors, even if it's not necessarily the ideal solution. Regards, Brian