@@ -373,7 +373,6 @@ struct control_buf {
373
373
u8 allmulti ;
374
374
__virtio16 vid ;
375
375
__virtio64 offloads ;
376
- struct virtio_net_ctrl_rss rss ;
377
376
struct virtio_net_ctrl_coal_tx coal_tx ;
378
377
struct virtio_net_ctrl_coal_rx coal_rx ;
379
378
struct virtio_net_ctrl_coal_vq coal_vq ;
@@ -416,6 +415,7 @@ struct virtnet_info {
416
415
u16 rss_indir_table_size ;
417
416
u32 rss_hash_types_supported ;
418
417
u32 rss_hash_types_saved ;
418
+ struct virtio_net_ctrl_rss rss ;
419
419
420
420
/* Has control virtqueue */
421
421
bool has_cvq ;
@@ -3243,17 +3243,17 @@ static bool virtnet_commit_rss_command(struct virtnet_info *vi)
3243
3243
sg_init_table (sgs , 4 );
3244
3244
3245
3245
sg_buf_size = offsetof(struct virtio_net_ctrl_rss , indirection_table );
3246
- sg_set_buf (& sgs [0 ], & vi -> ctrl -> rss , sg_buf_size );
3246
+ sg_set_buf (& sgs [0 ], & vi -> rss , sg_buf_size );
3247
3247
3248
- sg_buf_size = sizeof (uint16_t ) * (vi -> ctrl -> rss .indirection_table_mask + 1 );
3249
- sg_set_buf (& sgs [1 ], vi -> ctrl -> rss .indirection_table , sg_buf_size );
3248
+ sg_buf_size = sizeof (uint16_t ) * (vi -> rss .indirection_table_mask + 1 );
3249
+ sg_set_buf (& sgs [1 ], vi -> rss .indirection_table , sg_buf_size );
3250
3250
3251
3251
sg_buf_size = offsetof(struct virtio_net_ctrl_rss , key )
3252
3252
- offsetof(struct virtio_net_ctrl_rss , max_tx_vq );
3253
- sg_set_buf (& sgs [2 ], & vi -> ctrl -> rss .max_tx_vq , sg_buf_size );
3253
+ sg_set_buf (& sgs [2 ], & vi -> rss .max_tx_vq , sg_buf_size );
3254
3254
3255
3255
sg_buf_size = vi -> rss_key_size ;
3256
- sg_set_buf (& sgs [3 ], vi -> ctrl -> rss .key , sg_buf_size );
3256
+ sg_set_buf (& sgs [3 ], vi -> rss .key , sg_buf_size );
3257
3257
3258
3258
if (!virtnet_send_command (vi , VIRTIO_NET_CTRL_MQ ,
3259
3259
vi -> has_rss ? VIRTIO_NET_CTRL_MQ_RSS_CONFIG
@@ -3269,21 +3269,21 @@ static void virtnet_init_default_rss(struct virtnet_info *vi)
3269
3269
u32 indir_val = 0 ;
3270
3270
int i = 0 ;
3271
3271
3272
- vi -> ctrl -> rss .hash_types = vi -> rss_hash_types_supported ;
3272
+ vi -> rss .hash_types = vi -> rss_hash_types_supported ;
3273
3273
vi -> rss_hash_types_saved = vi -> rss_hash_types_supported ;
3274
- vi -> ctrl -> rss .indirection_table_mask = vi -> rss_indir_table_size
3274
+ vi -> rss .indirection_table_mask = vi -> rss_indir_table_size
3275
3275
? vi -> rss_indir_table_size - 1 : 0 ;
3276
- vi -> ctrl -> rss .unclassified_queue = 0 ;
3276
+ vi -> rss .unclassified_queue = 0 ;
3277
3277
3278
3278
for (; i < vi -> rss_indir_table_size ; ++ i ) {
3279
3279
indir_val = ethtool_rxfh_indir_default (i , vi -> curr_queue_pairs );
3280
- vi -> ctrl -> rss .indirection_table [i ] = indir_val ;
3280
+ vi -> rss .indirection_table [i ] = indir_val ;
3281
3281
}
3282
3282
3283
- vi -> ctrl -> rss .max_tx_vq = vi -> has_rss ? vi -> curr_queue_pairs : 0 ;
3284
- vi -> ctrl -> rss .hash_key_length = vi -> rss_key_size ;
3283
+ vi -> rss .max_tx_vq = vi -> has_rss ? vi -> curr_queue_pairs : 0 ;
3284
+ vi -> rss .hash_key_length = vi -> rss_key_size ;
3285
3285
3286
- netdev_rss_key_fill (vi -> ctrl -> rss .key , vi -> rss_key_size );
3286
+ netdev_rss_key_fill (vi -> rss .key , vi -> rss_key_size );
3287
3287
}
3288
3288
3289
3289
static void virtnet_get_hashflow (const struct virtnet_info * vi , struct ethtool_rxnfc * info )
@@ -3394,7 +3394,7 @@ static bool virtnet_set_hashflow(struct virtnet_info *vi, struct ethtool_rxnfc *
3394
3394
3395
3395
if (new_hashtypes != vi -> rss_hash_types_saved ) {
3396
3396
vi -> rss_hash_types_saved = new_hashtypes ;
3397
- vi -> ctrl -> rss .hash_types = vi -> rss_hash_types_saved ;
3397
+ vi -> rss .hash_types = vi -> rss_hash_types_saved ;
3398
3398
if (vi -> dev -> features & NETIF_F_RXHASH )
3399
3399
return virtnet_commit_rss_command (vi );
3400
3400
}
@@ -4574,11 +4574,11 @@ static int virtnet_get_rxfh(struct net_device *dev,
4574
4574
4575
4575
if (rxfh -> indir ) {
4576
4576
for (i = 0 ; i < vi -> rss_indir_table_size ; ++ i )
4577
- rxfh -> indir [i ] = vi -> ctrl -> rss .indirection_table [i ];
4577
+ rxfh -> indir [i ] = vi -> rss .indirection_table [i ];
4578
4578
}
4579
4579
4580
4580
if (rxfh -> key )
4581
- memcpy (rxfh -> key , vi -> ctrl -> rss .key , vi -> rss_key_size );
4581
+ memcpy (rxfh -> key , vi -> rss .key , vi -> rss_key_size );
4582
4582
4583
4583
rxfh -> hfunc = ETH_RSS_HASH_TOP ;
4584
4584
@@ -4602,7 +4602,7 @@ static int virtnet_set_rxfh(struct net_device *dev,
4602
4602
return - EOPNOTSUPP ;
4603
4603
4604
4604
for (i = 0 ; i < vi -> rss_indir_table_size ; ++ i )
4605
- vi -> ctrl -> rss .indirection_table [i ] = rxfh -> indir [i ];
4605
+ vi -> rss .indirection_table [i ] = rxfh -> indir [i ];
4606
4606
update = true;
4607
4607
}
4608
4608
@@ -4614,7 +4614,7 @@ static int virtnet_set_rxfh(struct net_device *dev,
4614
4614
if (!vi -> has_rss && !vi -> has_rss_hash_report )
4615
4615
return - EOPNOTSUPP ;
4616
4616
4617
- memcpy (vi -> ctrl -> rss .key , rxfh -> key , vi -> rss_key_size );
4617
+ memcpy (vi -> rss .key , rxfh -> key , vi -> rss_key_size );
4618
4618
update = true;
4619
4619
}
4620
4620
@@ -5028,9 +5028,9 @@ static int virtnet_set_features(struct net_device *dev,
5028
5028
5029
5029
if ((dev -> features ^ features ) & NETIF_F_RXHASH ) {
5030
5030
if (features & NETIF_F_RXHASH )
5031
- vi -> ctrl -> rss .hash_types = vi -> rss_hash_types_saved ;
5031
+ vi -> rss .hash_types = vi -> rss_hash_types_saved ;
5032
5032
else
5033
- vi -> ctrl -> rss .hash_types = VIRTIO_NET_HASH_REPORT_NONE ;
5033
+ vi -> rss .hash_types = VIRTIO_NET_HASH_REPORT_NONE ;
5034
5034
5035
5035
if (!virtnet_commit_rss_command (vi ))
5036
5036
return - EINVAL ;
0 commit comments