|
87 | 87 | #define I40E_AQ_LEN 256 |
88 | 88 | #define I40E_AQ_WORK_LIMIT 66 /* max number of VFs + a little */ |
89 | 89 | #define I40E_MAX_USER_PRIORITY 8 |
| 90 | +#define I40E_MAX_QUEUES_PER_CH 64 |
90 | 91 | #define I40E_DEFAULT_TRAFFIC_CLASS BIT(0) |
91 | 92 | #define I40E_DEFAULT_MSG_ENABLE 4 |
92 | 93 | #define I40E_QUEUE_WAIT_RETRY_LIMIT 10 |
@@ -340,6 +341,23 @@ struct i40e_flex_pit { |
340 | 341 | u8 pit_index; |
341 | 342 | }; |
342 | 343 |
|
| 344 | +struct i40e_channel { |
| 345 | + struct list_head list; |
| 346 | + bool initialized; |
| 347 | + u8 type; |
| 348 | + u16 vsi_number; /* Assigned VSI number from AQ 'Add VSI' response */ |
| 349 | + u16 stat_counter_idx; |
| 350 | + u16 base_queue; |
| 351 | + u16 num_queue_pairs; /* Requested by user */ |
| 352 | + u16 seid; |
| 353 | + |
| 354 | + u8 enabled_tc; |
| 355 | + struct i40e_aqc_vsi_properties_data info; |
| 356 | + |
| 357 | + /* track this channel belongs to which VSI */ |
| 358 | + struct i40e_vsi *parent_vsi; |
| 359 | +}; |
| 360 | + |
343 | 361 | /* struct that defines the Ethernet device */ |
344 | 362 | struct i40e_pf { |
345 | 363 | struct pci_dev *pdev; |
@@ -456,6 +474,7 @@ struct i40e_pf { |
456 | 474 | #define I40E_FLAG_CLIENT_RESET BIT(26) |
457 | 475 | #define I40E_FLAG_LINK_DOWN_ON_CLOSE_ENABLED BIT(27) |
458 | 476 | #define I40E_FLAG_SOURCE_PRUNING_DISABLED BIT(28) |
| 477 | +#define I40E_FLAG_TC_MQPRIO BIT(29) |
459 | 478 |
|
460 | 479 | struct i40e_client_instance *cinst; |
461 | 480 | bool stat_offsets_loaded; |
@@ -536,6 +555,8 @@ struct i40e_pf { |
536 | 555 | u32 ioremap_len; |
537 | 556 | u32 fd_inv; |
538 | 557 | u16 phy_led_val; |
| 558 | + |
| 559 | + u16 override_q_count; |
539 | 560 | }; |
540 | 561 |
|
541 | 562 | /** |
@@ -700,6 +721,15 @@ struct i40e_vsi { |
700 | 721 | bool current_isup; /* Sync 'link up' logging */ |
701 | 722 | enum i40e_aq_link_speed current_speed; /* Sync link speed logging */ |
702 | 723 |
|
| 724 | + /* channel specific fields */ |
| 725 | + u16 cnt_q_avail; /* num of queues available for channel usage */ |
| 726 | + u16 orig_rss_size; |
| 727 | + u16 current_rss_size; |
| 728 | + |
| 729 | + u16 next_base_queue; /* next queue to be used for channel setup */ |
| 730 | + |
| 731 | + struct list_head ch_list; |
| 732 | + |
703 | 733 | void *priv; /* client driver data reference. */ |
704 | 734 |
|
705 | 735 | /* VSI specific handlers */ |
@@ -1004,4 +1034,6 @@ static inline bool i40e_enabled_xdp_vsi(struct i40e_vsi *vsi) |
1004 | 1034 | { |
1005 | 1035 | return !!vsi->xdp_prog; |
1006 | 1036 | } |
| 1037 | + |
| 1038 | +int i40e_create_queue_channel(struct i40e_vsi *vsi, struct i40e_channel *ch); |
1007 | 1039 | #endif /* _I40E_H_ */ |
0 commit comments