@@ -192,6 +192,13 @@ static struct workqueue_struct *ixgbe_wq;
192
192
static bool ixgbe_check_cfg_remove (struct ixgbe_hw * hw , struct pci_dev * pdev );
193
193
static void ixgbe_watchdog_link_is_down (struct ixgbe_adapter * );
194
194
195
+ static const struct net_device_ops ixgbe_netdev_ops ;
196
+
197
+ static bool netif_is_ixgbe (struct net_device * dev )
198
+ {
199
+ return dev && (dev -> netdev_ops == & ixgbe_netdev_ops );
200
+ }
201
+
195
202
static int ixgbe_read_pci_cfg_word_parent (struct ixgbe_adapter * adapter ,
196
203
u32 reg , u16 * value )
197
204
{
@@ -4481,8 +4488,9 @@ static void ixgbe_vlan_strip_disable(struct ixgbe_adapter *adapter)
4481
4488
for (i = 0 ; i < adapter -> num_rx_queues ; i ++ ) {
4482
4489
struct ixgbe_ring * ring = adapter -> rx_ring [i ];
4483
4490
4484
- if (ring -> l2_accel_priv )
4491
+ if (! netif_is_ixgbe ( ring -> netdev ) )
4485
4492
continue ;
4493
+
4486
4494
j = ring -> reg_idx ;
4487
4495
vlnctrl = IXGBE_READ_REG (hw , IXGBE_RXDCTL (j ));
4488
4496
vlnctrl &= ~IXGBE_RXDCTL_VME ;
@@ -4518,8 +4526,9 @@ static void ixgbe_vlan_strip_enable(struct ixgbe_adapter *adapter)
4518
4526
for (i = 0 ; i < adapter -> num_rx_queues ; i ++ ) {
4519
4527
struct ixgbe_ring * ring = adapter -> rx_ring [i ];
4520
4528
4521
- if (ring -> l2_accel_priv )
4529
+ if (! netif_is_ixgbe ( ring -> netdev ) )
4522
4530
continue ;
4531
+
4523
4532
j = ring -> reg_idx ;
4524
4533
vlnctrl = IXGBE_READ_REG (hw , IXGBE_RXDCTL (j ));
4525
4534
vlnctrl |= IXGBE_RXDCTL_VME ;
@@ -5333,7 +5342,6 @@ static void ixgbe_disable_fwd_ring(struct ixgbe_fwd_adapter *vadapter,
5333
5342
usleep_range (10000 , 20000 );
5334
5343
ixgbe_irq_disable_queues (adapter , BIT_ULL (index ));
5335
5344
ixgbe_clean_rx_ring (rx_ring );
5336
- rx_ring -> l2_accel_priv = NULL ;
5337
5345
}
5338
5346
5339
5347
static int ixgbe_fwd_ring_down (struct net_device * vdev ,
@@ -5351,10 +5359,8 @@ static int ixgbe_fwd_ring_down(struct net_device *vdev,
5351
5359
adapter -> rx_ring [rxbase + i ]-> netdev = adapter -> netdev ;
5352
5360
}
5353
5361
5354
- for (i = 0 ; i < adapter -> num_rx_queues_per_pool ; i ++ ) {
5355
- adapter -> tx_ring [txbase + i ]-> l2_accel_priv = NULL ;
5362
+ for (i = 0 ; i < adapter -> num_rx_queues_per_pool ; i ++ )
5356
5363
adapter -> tx_ring [txbase + i ]-> netdev = adapter -> netdev ;
5357
- }
5358
5364
5359
5365
5360
5366
return 0 ;
@@ -5384,14 +5390,11 @@ static int ixgbe_fwd_ring_up(struct net_device *vdev,
5384
5390
5385
5391
for (i = 0 ; i < adapter -> num_rx_queues_per_pool ; i ++ ) {
5386
5392
adapter -> rx_ring [rxbase + i ]-> netdev = vdev ;
5387
- adapter -> rx_ring [rxbase + i ]-> l2_accel_priv = accel ;
5388
5393
ixgbe_configure_rx_ring (adapter , adapter -> rx_ring [rxbase + i ]);
5389
5394
}
5390
5395
5391
- for (i = 0 ; i < adapter -> num_rx_queues_per_pool ; i ++ ) {
5396
+ for (i = 0 ; i < adapter -> num_rx_queues_per_pool ; i ++ )
5392
5397
adapter -> tx_ring [txbase + i ]-> netdev = vdev ;
5393
- adapter -> tx_ring [txbase + i ]-> l2_accel_priv = accel ;
5394
- }
5395
5398
5396
5399
queues = min_t (unsigned int ,
5397
5400
adapter -> num_rx_queues_per_pool , vdev -> num_tx_queues );
0 commit comments