Message ID | 20230821125504.169064-1-radoslawx.tyl@intel.com |
---|---|
State | Changes Requested |
Headers | show |
Series | [iwl-net,v2] igb: set max size RX buffer when store bad packet is enabled | expand |
On 8/21/2023 5:55 AM, Radoslaw Tyl wrote: > Increase the RX buffer size to 3K when the SBP bit is on. The size of > the RX buffer determines the number of pages allocated which may not > be sufficient for receive frames larger than the set MTU size. > > Fixes: 89eaefb61dc9 ("igb: Support RX-ALL feature flag.") > Signed-off-by: Radoslaw Tyl <radoslawx.tyl@intel.com> > --- > v2: fix lkm build warning > --- > drivers/net/ethernet/intel/igb/igb_main.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c > index 2293ae78f711..5d15bbdef03b 100644 > --- a/drivers/net/ethernet/intel/igb/igb_main.c > +++ b/drivers/net/ethernet/intel/igb/igb_main.c > @@ -4814,6 +4814,9 @@ void igb_configure_rx_ring(struct igb_adapter *adapter, > static void igb_set_rx_buffer_len(struct igb_adapter *adapter, > struct igb_ring *rx_ring) > { > +#if (PAGE_SIZE < 8192) > + struct e1000_hw *hw = &adapter->hw; > +#endif Need a newline > /* set build_skb and buffer size flags */ > clear_ring_build_skb_enabled(rx_ring); > clear_ring_uses_large_buffer(rx_ring); > @@ -4824,10 +4827,9 @@ static void igb_set_rx_buffer_len(struct igb_adapter *adapter, > set_ring_build_skb_enabled(rx_ring); > > #if (PAGE_SIZE < 8192) > - if (adapter->max_frame_size <= IGB_MAX_FRAME_BUILD_SKB) > - return; > - > - set_ring_uses_large_buffer(rx_ring); > + if (adapter->max_frame_size > IGB_MAX_FRAME_BUILD_SKB || > + rd32(E1000_RCTL) & E1000_RCTL_SBP) > + set_ring_uses_large_buffer(rx_ring); > #endif > } >
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index 2293ae78f711..5d15bbdef03b 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -4814,6 +4814,9 @@ void igb_configure_rx_ring(struct igb_adapter *adapter, static void igb_set_rx_buffer_len(struct igb_adapter *adapter, struct igb_ring *rx_ring) { +#if (PAGE_SIZE < 8192) + struct e1000_hw *hw = &adapter->hw; +#endif /* set build_skb and buffer size flags */ clear_ring_build_skb_enabled(rx_ring); clear_ring_uses_large_buffer(rx_ring); @@ -4824,10 +4827,9 @@ static void igb_set_rx_buffer_len(struct igb_adapter *adapter, set_ring_build_skb_enabled(rx_ring); #if (PAGE_SIZE < 8192) - if (adapter->max_frame_size <= IGB_MAX_FRAME_BUILD_SKB) - return; - - set_ring_uses_large_buffer(rx_ring); + if (adapter->max_frame_size > IGB_MAX_FRAME_BUILD_SKB || + rd32(E1000_RCTL) & E1000_RCTL_SBP) + set_ring_uses_large_buffer(rx_ring); #endif }
Increase the RX buffer size to 3K when the SBP bit is on. The size of the RX buffer determines the number of pages allocated which may not be sufficient for receive frames larger than the set MTU size. Fixes: 89eaefb61dc9 ("igb: Support RX-ALL feature flag.") Signed-off-by: Radoslaw Tyl <radoslawx.tyl@intel.com> --- v2: fix lkm build warning --- drivers/net/ethernet/intel/igb/igb_main.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)