@@ -190,11 +190,8 @@ qed_dcbx_dp_protocol(struct qed_hwfn *p_hwfn, struct qed_dcbx_results *p_data)
190
190
191
191
static void
192
192
qed_dcbx_set_params (struct qed_dcbx_results * p_data ,
193
- struct qed_hwfn * p_hwfn ,
194
- struct qed_hw_info * p_info ,
195
- bool enable ,
196
- u8 prio ,
197
- u8 tc ,
193
+ struct qed_hwfn * p_hwfn , struct qed_ptt * p_ptt ,
194
+ bool enable , u8 prio , u8 tc ,
198
195
enum dcbx_protocol_type type ,
199
196
enum qed_pci_personality personality )
200
197
{
@@ -213,18 +210,24 @@ qed_dcbx_set_params(struct qed_dcbx_results *p_data,
213
210
p_data -> arr [type ].dont_add_vlan0 = true;
214
211
215
212
/* QM reconf data */
216
- if (p_info -> personality == personality )
217
- qed_hw_info_set_offload_tc (p_info , tc );
213
+ if (p_hwfn -> hw_info .personality == personality )
214
+ qed_hw_info_set_offload_tc (& p_hwfn -> hw_info , tc );
215
+
216
+ /* Configure dcbx vlan priority in doorbell block for roce EDPM */
217
+ if (test_bit (QED_MF_UFP_SPECIFIC , & p_hwfn -> cdev -> mf_bits ) &&
218
+ type == DCBX_PROTOCOL_ROCE ) {
219
+ qed_wr (p_hwfn , p_ptt , DORQ_REG_TAG1_OVRD_MODE , 1 );
220
+ qed_wr (p_hwfn , p_ptt , DORQ_REG_PF_PCP_BB_K2 , prio << 1 );
221
+ }
218
222
}
219
223
220
224
/* Update app protocol data and hw_info fields with the TLV info */
221
225
static void
222
226
qed_dcbx_update_app_info (struct qed_dcbx_results * p_data ,
223
- struct qed_hwfn * p_hwfn ,
224
- bool enable ,
225
- u8 prio , u8 tc , enum dcbx_protocol_type type )
227
+ struct qed_hwfn * p_hwfn , struct qed_ptt * p_ptt ,
228
+ bool enable , u8 prio , u8 tc ,
229
+ enum dcbx_protocol_type type )
226
230
{
227
- struct qed_hw_info * p_info = & p_hwfn -> hw_info ;
228
231
enum qed_pci_personality personality ;
229
232
enum dcbx_protocol_type id ;
230
233
int i ;
@@ -237,7 +240,7 @@ qed_dcbx_update_app_info(struct qed_dcbx_results *p_data,
237
240
238
241
personality = qed_dcbx_app_update [i ].personality ;
239
242
240
- qed_dcbx_set_params (p_data , p_hwfn , p_info , enable ,
243
+ qed_dcbx_set_params (p_data , p_hwfn , p_ptt , enable ,
241
244
prio , tc , type , personality );
242
245
}
243
246
}
@@ -271,7 +274,7 @@ qed_dcbx_get_app_protocol_type(struct qed_hwfn *p_hwfn,
271
274
* reconfiguring QM. Get protocol specific data for PF update ramrod command.
272
275
*/
273
276
static int
274
- qed_dcbx_process_tlv (struct qed_hwfn * p_hwfn ,
277
+ qed_dcbx_process_tlv (struct qed_hwfn * p_hwfn , struct qed_ptt * p_ptt ,
275
278
struct qed_dcbx_results * p_data ,
276
279
struct dcbx_app_priority_entry * p_tbl ,
277
280
u32 pri_tc_tbl , int count , u8 dcbx_version )
@@ -315,7 +318,7 @@ qed_dcbx_process_tlv(struct qed_hwfn *p_hwfn,
315
318
enable = true;
316
319
}
317
320
318
- qed_dcbx_update_app_info (p_data , p_hwfn , enable ,
321
+ qed_dcbx_update_app_info (p_data , p_hwfn , p_ptt , enable ,
319
322
priority , tc , type );
320
323
}
321
324
}
@@ -337,7 +340,7 @@ qed_dcbx_process_tlv(struct qed_hwfn *p_hwfn,
337
340
continue ;
338
341
339
342
enable = (type == DCBX_PROTOCOL_ETH ) ? false : !!dcbx_version ;
340
- qed_dcbx_update_app_info (p_data , p_hwfn , enable ,
343
+ qed_dcbx_update_app_info (p_data , p_hwfn , p_ptt , enable ,
341
344
priority , tc , type );
342
345
}
343
346
@@ -347,7 +350,8 @@ qed_dcbx_process_tlv(struct qed_hwfn *p_hwfn,
347
350
/* Parse app TLV's to update TC information in hw_info structure for
348
351
* reconfiguring QM. Get protocol specific data for PF update ramrod command.
349
352
*/
350
- static int qed_dcbx_process_mib_info (struct qed_hwfn * p_hwfn )
353
+ static int
354
+ qed_dcbx_process_mib_info (struct qed_hwfn * p_hwfn , struct qed_ptt * p_ptt )
351
355
{
352
356
struct dcbx_app_priority_feature * p_app ;
353
357
struct dcbx_app_priority_entry * p_tbl ;
@@ -371,7 +375,7 @@ static int qed_dcbx_process_mib_info(struct qed_hwfn *p_hwfn)
371
375
p_info = & p_hwfn -> hw_info ;
372
376
num_entries = QED_MFW_GET_FIELD (p_app -> flags , DCBX_APP_NUM_ENTRIES );
373
377
374
- rc = qed_dcbx_process_tlv (p_hwfn , & data , p_tbl , pri_tc_tbl ,
378
+ rc = qed_dcbx_process_tlv (p_hwfn , p_ptt , & data , p_tbl , pri_tc_tbl ,
375
379
num_entries , dcbx_version );
376
380
if (rc )
377
381
return rc ;
@@ -897,7 +901,7 @@ qed_dcbx_mib_update_event(struct qed_hwfn *p_hwfn,
897
901
return rc ;
898
902
899
903
if (type == QED_DCBX_OPERATIONAL_MIB ) {
900
- rc = qed_dcbx_process_mib_info (p_hwfn );
904
+ rc = qed_dcbx_process_mib_info (p_hwfn , p_ptt );
901
905
if (!rc ) {
902
906
/* reconfigure tcs of QM queues according
903
907
* to negotiation results
0 commit comments