qed: Add Multi-TC RoCE support
RoCE qps use a pair of physical queues (pq) received from the Queue Manager (QM) - an offload queue (OFLD) and a low latency queue (LLT). The QM block creates a pq for each TC, and allows RoCE qps to ask for a pq with a specific TC. As a result, qps with different VLAN priorities can be mapped to different TCs, and employ features such as PFC and ETS. Signed-off-by: Michal Kalderon <michal.kalderon@cavium.com> Signed-off-by: Ariel Elior <ariel.elior@cavium.com> Signed-off-by: Denis Bolotin <denis.bolotin@cavium.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
c4259dda17
commit
61be82b087
@@ -338,6 +338,9 @@ struct qed_hw_info {
|
||||
u8 offload_tc;
|
||||
bool offload_tc_set;
|
||||
|
||||
bool multi_tc_roce_en;
|
||||
#define IS_QED_MULTI_TC_ROCE(p_hwfn) (((p_hwfn)->hw_info.multi_tc_roce_en))
|
||||
|
||||
u32 concrete_fid;
|
||||
u16 opaque_fid;
|
||||
u16 ovlan;
|
||||
@@ -400,8 +403,8 @@ struct qed_qm_info {
|
||||
u16 start_pq;
|
||||
u8 start_vport;
|
||||
u16 pure_lb_pq;
|
||||
u16 offload_pq;
|
||||
u16 low_latency_pq;
|
||||
u16 first_ofld_pq;
|
||||
u16 first_llt_pq;
|
||||
u16 pure_ack_pq;
|
||||
u16 ooo_pq;
|
||||
u16 first_vf_pq;
|
||||
@@ -882,11 +885,14 @@ void qed_set_fw_mac_addr(__le16 *fw_msb,
|
||||
#define PQ_FLAGS_OFLD (BIT(5))
|
||||
#define PQ_FLAGS_VFS (BIT(6))
|
||||
#define PQ_FLAGS_LLT (BIT(7))
|
||||
#define PQ_FLAGS_MTC (BIT(8))
|
||||
|
||||
/* physical queue index for cm context intialization */
|
||||
u16 qed_get_cm_pq_idx(struct qed_hwfn *p_hwfn, u32 pq_flags);
|
||||
u16 qed_get_cm_pq_idx_mcos(struct qed_hwfn *p_hwfn, u8 tc);
|
||||
u16 qed_get_cm_pq_idx_vf(struct qed_hwfn *p_hwfn, u16 vf);
|
||||
u16 qed_get_cm_pq_idx_ofld_mtc(struct qed_hwfn *p_hwfn, u8 tc);
|
||||
u16 qed_get_cm_pq_idx_llt_mtc(struct qed_hwfn *p_hwfn, u8 tc);
|
||||
|
||||
#define QED_LEADING_HWFN(dev) (&dev->hwfns[0])
|
||||
|
||||
|
Reference in New Issue
Block a user