diff options
author | Henry Orosco | 2016-10-11 04:12:10 +0200 |
---|---|---|
committer | Doug Ledford | 2016-12-03 21:24:51 +0100 |
commit | 0fc2dc58896f182daeeb4a7b5fc8d763afec3117 (patch) | |
tree | 6840ddfd1c50f0486c9eb5410994d7070890bf63 /drivers/infiniband/hw/i40iw/i40iw_type.h | |
parent | net/mlx5e: Add tc support for FWD rule with counter (diff) | |
download | kernel-qcow2-linux-0fc2dc58896f182daeeb4a7b5fc8d763afec3117.tar.gz kernel-qcow2-linux-0fc2dc58896f182daeeb4a7b5fc8d763afec3117.tar.xz kernel-qcow2-linux-0fc2dc58896f182daeeb4a7b5fc8d763afec3117.zip |
i40iw: Add Quality of Service support
Add support for QoS on QPs. Upon device initialization,
a map is created from user priority to queue set
handles. On QP creation, use ToS to look up the queue
set handle for use with the QP.
Signed-off-by: Faisal Latif <faisal.latif@intel.com>
Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
Signed-off-by: Henry Orosco <henry.orosco@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/hw/i40iw/i40iw_type.h')
-rw-r--r-- | drivers/infiniband/hw/i40iw/i40iw_type.h | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/i40iw/i40iw_type.h b/drivers/infiniband/hw/i40iw/i40iw_type.h index 2b1a04e9ca3c..b6f448a8d2e0 100644 --- a/drivers/infiniband/hw/i40iw/i40iw_type.h +++ b/drivers/infiniband/hw/i40iw/i40iw_type.h @@ -397,6 +397,9 @@ struct i40iw_sc_qp { bool virtual_map; bool flush_sq; bool flush_rq; + u8 user_pri; + struct list_head list; + bool on_qoslist; bool sq_flush; enum i40iw_flush_opcode flush_code; enum i40iw_term_eventtypes eventtype; @@ -424,6 +427,12 @@ struct i40iw_vchnl_vf_msg_buffer { char parm_buffer[I40IW_VCHNL_MAX_VF_MSG_SIZE - 1]; }; +struct i40iw_qos { + struct list_head qplist; + spinlock_t lock; /* qos list */ + u16 qs_handle; +}; + struct i40iw_vfdev { struct i40iw_sc_dev *pf_dev; u8 *hmc_info_mem; @@ -482,7 +491,8 @@ struct i40iw_sc_dev { const struct i40iw_vf_cqp_ops *iw_vf_cqp_ops; struct i40iw_hmc_fpm_misc hmc_fpm_misc; - u16 qs_handle; + struct i40iw_qos qos[I40IW_MAX_USER_PRIORITY]; + u16 mss; u32 debug_mask; u16 exception_lan_queue; u8 hmc_fn_id; @@ -564,7 +574,7 @@ struct i40iw_device_init_info { struct i40iw_hw *hw; void __iomem *bar0; enum i40iw_status_code (*vchnl_send)(struct i40iw_sc_dev *, u32, u8 *, u16); - u16 qs_handle; + struct i40iw_l2params l2params; u16 exception_lan_queue; u8 hmc_fn_id; bool is_pf; @@ -722,6 +732,8 @@ struct i40iw_qp_host_ctx_info { bool iwarp_info_valid; bool err_rq_idx_valid; u16 err_rq_idx; + bool add_to_qoslist; + u8 user_pri; }; struct i40iw_aeqe_info { @@ -886,7 +898,7 @@ struct i40iw_qhash_table_info { bool ipv4_valid; u8 mac_addr[6]; u16 vlan_id; - u16 qs_handle; + u8 user_pri; u32 qp_num; u32 dest_ip[4]; u32 src_ip[4]; |