@@ -4569,34 +4569,31 @@ int bnxt_hwrm_set_coal(struct bnxt *bp)
4569
4569
/* Each rx completion (2 records) should be DMAed immediately.
4570
4570
* DMA 1/4 of the completion buffers at a time.
4571
4571
*/
4572
- max_buf = min_t (u16 , bp -> rx_coal_bufs / 4 , 2 );
4572
+ max_buf = min_t (u16 , bp -> rx_coal . coal_bufs / 4 , 2 );
4573
4573
/* max_buf must not be zero */
4574
4574
max_buf = clamp_t (u16 , max_buf , 1 , 63 );
4575
- max_buf_irq = clamp_t (u16 , bp -> rx_coal_bufs_irq , 1 , 63 );
4576
- buf_tmr = BNXT_USEC_TO_COAL_TIMER (bp -> rx_coal_ticks );
4575
+ max_buf_irq = clamp_t (u16 , bp -> rx_coal . coal_bufs_irq , 1 , 63 );
4576
+ buf_tmr = BNXT_USEC_TO_COAL_TIMER (bp -> rx_coal . coal_ticks );
4577
4577
/* buf timer set to 1/4 of interrupt timer */
4578
4578
buf_tmr = max_t (u16 , buf_tmr / 4 , 1 );
4579
- buf_tmr_irq = BNXT_USEC_TO_COAL_TIMER (bp -> rx_coal_ticks_irq );
4579
+ buf_tmr_irq = BNXT_USEC_TO_COAL_TIMER (bp -> rx_coal . coal_ticks_irq );
4580
4580
buf_tmr_irq = max_t (u16 , buf_tmr_irq , 1 );
4581
4581
4582
4582
flags = RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_FLAGS_TIMER_RESET ;
4583
4583
4584
- /* RING_IDLE generates more IRQs for lower latency. Enable it only
4585
- * if coal_ticks is less than 25 us.
4586
- */
4587
- if (bp -> rx_coal_ticks < 25 )
4584
+ if (bp -> rx_coal .coal_ticks < bp -> rx_coal .idle_thresh )
4588
4585
flags |= RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_FLAGS_RING_IDLE ;
4589
4586
4590
4587
bnxt_hwrm_set_coal_params (bp , max_buf_irq << 16 | max_buf ,
4591
4588
buf_tmr_irq << 16 | buf_tmr , flags , & req_rx );
4592
4589
4593
4590
/* max_buf must not be zero */
4594
- max_buf = clamp_t (u16 , bp -> tx_coal_bufs , 1 , 63 );
4595
- max_buf_irq = clamp_t (u16 , bp -> tx_coal_bufs_irq , 1 , 63 );
4596
- buf_tmr = BNXT_USEC_TO_COAL_TIMER (bp -> tx_coal_ticks );
4591
+ max_buf = clamp_t (u16 , bp -> tx_coal . coal_bufs , 1 , 63 );
4592
+ max_buf_irq = clamp_t (u16 , bp -> tx_coal . coal_bufs_irq , 1 , 63 );
4593
+ buf_tmr = BNXT_USEC_TO_COAL_TIMER (bp -> tx_coal . coal_ticks );
4597
4594
/* buf timer set to 1/4 of interrupt timer */
4598
4595
buf_tmr = max_t (u16 , buf_tmr / 4 , 1 );
4599
- buf_tmr_irq = BNXT_USEC_TO_COAL_TIMER (bp -> tx_coal_ticks_irq );
4596
+ buf_tmr_irq = BNXT_USEC_TO_COAL_TIMER (bp -> tx_coal . coal_ticks_irq );
4600
4597
buf_tmr_irq = max_t (u16 , buf_tmr_irq , 1 );
4601
4598
4602
4599
flags = RING_CMPL_RING_CFG_AGGINT_PARAMS_REQ_FLAGS_TIMER_RESET ;
@@ -7146,6 +7143,32 @@ static void bnxt_cleanup_pci(struct bnxt *bp)
7146
7143
pci_disable_device (bp -> pdev );
7147
7144
}
7148
7145
7146
+ static void bnxt_init_dflt_coal (struct bnxt * bp )
7147
+ {
7148
+ struct bnxt_coal * coal ;
7149
+
7150
+ /* Tick values in micro seconds.
7151
+ * 1 coal_buf x bufs_per_record = 1 completion record.
7152
+ */
7153
+ coal = & bp -> rx_coal ;
7154
+ coal -> coal_ticks = 14 ;
7155
+ coal -> coal_bufs = 30 ;
7156
+ coal -> coal_ticks_irq = 1 ;
7157
+ coal -> coal_bufs_irq = 2 ;
7158
+ coal -> idle_thresh = 25 ;
7159
+ coal -> bufs_per_record = 2 ;
7160
+ coal -> budget = 64 ; /* NAPI budget */
7161
+
7162
+ coal = & bp -> tx_coal ;
7163
+ coal -> coal_ticks = 28 ;
7164
+ coal -> coal_bufs = 30 ;
7165
+ coal -> coal_ticks_irq = 2 ;
7166
+ coal -> coal_bufs_irq = 2 ;
7167
+ coal -> bufs_per_record = 1 ;
7168
+
7169
+ bp -> stats_coal_ticks = BNXT_DEF_STATS_COAL_TICKS ;
7170
+ }
7171
+
7149
7172
static int bnxt_init_board (struct pci_dev * pdev , struct net_device * dev )
7150
7173
{
7151
7174
int rc ;
@@ -7214,18 +7237,7 @@ static int bnxt_init_board(struct pci_dev *pdev, struct net_device *dev)
7214
7237
bp -> rx_ring_size = BNXT_DEFAULT_RX_RING_SIZE ;
7215
7238
bp -> tx_ring_size = BNXT_DEFAULT_TX_RING_SIZE ;
7216
7239
7217
- /* tick values in micro seconds */
7218
- bp -> rx_coal_ticks = 12 ;
7219
- bp -> rx_coal_bufs = 30 ;
7220
- bp -> rx_coal_ticks_irq = 1 ;
7221
- bp -> rx_coal_bufs_irq = 2 ;
7222
-
7223
- bp -> tx_coal_ticks = 25 ;
7224
- bp -> tx_coal_bufs = 30 ;
7225
- bp -> tx_coal_ticks_irq = 2 ;
7226
- bp -> tx_coal_bufs_irq = 2 ;
7227
-
7228
- bp -> stats_coal_ticks = BNXT_DEF_STATS_COAL_TICKS ;
7240
+ bnxt_init_dflt_coal (bp );
7229
7241
7230
7242
setup_timer (& bp -> timer , bnxt_timer , (unsigned long )bp );
7231
7243
bp -> current_interval = BNXT_TIMER_INTERVAL ;
0 commit comments