Lines Matching refs:dcb

242 static inline void __qlcnic_init_dcbnl_ops(struct qlcnic_dcb *dcb)  in __qlcnic_init_dcbnl_ops()  argument
244 if (test_bit(QLCNIC_DCB_STATE, &dcb->state)) in __qlcnic_init_dcbnl_ops()
245 dcb->adapter->netdev->dcbnl_ops = &qlcnic_dcbnl_ops; in __qlcnic_init_dcbnl_ops()
251 adapter->dcb->ops = &qlcnic_82xx_dcb_ops; in qlcnic_set_dcb_ops()
253 adapter->dcb->ops = &qlcnic_83xx_dcb_ops; in qlcnic_set_dcb_ops()
258 struct qlcnic_dcb *dcb; in qlcnic_register_dcb() local
263 dcb = kzalloc(sizeof(struct qlcnic_dcb), GFP_ATOMIC); in qlcnic_register_dcb()
264 if (!dcb) in qlcnic_register_dcb()
267 adapter->dcb = dcb; in qlcnic_register_dcb()
268 dcb->adapter = adapter; in qlcnic_register_dcb()
270 dcb->state = 0; in qlcnic_register_dcb()
275 static void __qlcnic_dcb_free(struct qlcnic_dcb *dcb) in __qlcnic_dcb_free() argument
279 if (!dcb) in __qlcnic_dcb_free()
282 adapter = dcb->adapter; in __qlcnic_dcb_free()
284 while (test_bit(QLCNIC_DCB_AEN_MODE, &dcb->state)) in __qlcnic_dcb_free()
287 cancel_delayed_work_sync(&dcb->aen_work); in __qlcnic_dcb_free()
289 if (dcb->wq) { in __qlcnic_dcb_free()
290 destroy_workqueue(dcb->wq); in __qlcnic_dcb_free()
291 dcb->wq = NULL; in __qlcnic_dcb_free()
294 kfree(dcb->cfg); in __qlcnic_dcb_free()
295 dcb->cfg = NULL; in __qlcnic_dcb_free()
296 kfree(dcb->param); in __qlcnic_dcb_free()
297 dcb->param = NULL; in __qlcnic_dcb_free()
298 kfree(dcb); in __qlcnic_dcb_free()
299 adapter->dcb = NULL; in __qlcnic_dcb_free()
302 static void __qlcnic_dcb_get_info(struct qlcnic_dcb *dcb) in __qlcnic_dcb_get_info() argument
304 qlcnic_dcb_get_hw_capability(dcb); in __qlcnic_dcb_get_info()
305 qlcnic_dcb_get_cee_cfg(dcb); in __qlcnic_dcb_get_info()
308 static int __qlcnic_dcb_attach(struct qlcnic_dcb *dcb) in __qlcnic_dcb_attach() argument
312 INIT_DELAYED_WORK(&dcb->aen_work, qlcnic_dcb_aen_work); in __qlcnic_dcb_attach()
314 dcb->wq = create_singlethread_workqueue("qlcnic-dcb"); in __qlcnic_dcb_attach()
315 if (!dcb->wq) { in __qlcnic_dcb_attach()
316 dev_err(&dcb->adapter->pdev->dev, in __qlcnic_dcb_attach()
321 dcb->cfg = kzalloc(sizeof(struct qlcnic_dcb_cfg), GFP_ATOMIC); in __qlcnic_dcb_attach()
322 if (!dcb->cfg) { in __qlcnic_dcb_attach()
327 dcb->param = kzalloc(sizeof(struct qlcnic_dcb_mbx_params), GFP_ATOMIC); in __qlcnic_dcb_attach()
328 if (!dcb->param) { in __qlcnic_dcb_attach()
335 kfree(dcb->cfg); in __qlcnic_dcb_attach()
336 dcb->cfg = NULL; in __qlcnic_dcb_attach()
339 destroy_workqueue(dcb->wq); in __qlcnic_dcb_attach()
340 dcb->wq = NULL; in __qlcnic_dcb_attach()
345 static int __qlcnic_dcb_query_hw_capability(struct qlcnic_dcb *dcb, char *buf) in __qlcnic_dcb_query_hw_capability() argument
347 struct qlcnic_adapter *adapter = dcb->adapter; in __qlcnic_dcb_query_hw_capability()
371 static int __qlcnic_dcb_get_capability(struct qlcnic_dcb *dcb, u32 *val) in __qlcnic_dcb_get_capability() argument
373 struct qlcnic_dcb_capability *cap = &dcb->cfg->capability; in __qlcnic_dcb_get_capability()
379 err = qlcnic_dcb_query_hw_capability(dcb, (char *)val); in __qlcnic_dcb_get_capability()
397 dev_err(&dcb->adapter->pdev->dev, "Invalid DCB configuration\n"); in __qlcnic_dcb_get_capability()
404 static int qlcnic_82xx_dcb_get_hw_capability(struct qlcnic_dcb *dcb) in qlcnic_82xx_dcb_get_hw_capability() argument
406 struct qlcnic_dcb_cfg *cfg = dcb->cfg; in qlcnic_82xx_dcb_get_hw_capability()
411 err = __qlcnic_dcb_get_capability(dcb, &mbx_out); in qlcnic_82xx_dcb_get_hw_capability()
419 set_bit(QLCNIC_DCB_STATE, &dcb->state); in qlcnic_82xx_dcb_get_hw_capability()
424 static int qlcnic_82xx_dcb_query_cee_param(struct qlcnic_dcb *dcb, in qlcnic_82xx_dcb_query_cee_param() argument
428 struct qlcnic_adapter *adapter = dcb->adapter; in qlcnic_82xx_dcb_query_cee_param()
493 static int qlcnic_82xx_dcb_get_cee_cfg(struct qlcnic_dcb *dcb) in qlcnic_82xx_dcb_get_cee_cfg() argument
498 mbx = dcb->param; in qlcnic_82xx_dcb_get_cee_cfg()
502 err = qlcnic_dcb_query_cee_param(dcb, (char *)&mbx->type[0], in qlcnic_82xx_dcb_get_cee_cfg()
507 err = qlcnic_dcb_query_cee_param(dcb, (char *)&mbx->type[1], in qlcnic_82xx_dcb_get_cee_cfg()
512 err = qlcnic_dcb_query_cee_param(dcb, (char *)&mbx->type[2], in qlcnic_82xx_dcb_get_cee_cfg()
519 qlcnic_dcb_data_cee_param_map(dcb->adapter); in qlcnic_82xx_dcb_get_cee_cfg()
526 struct qlcnic_dcb *dcb; in qlcnic_dcb_aen_work() local
528 dcb = container_of(work, struct qlcnic_dcb, aen_work.work); in qlcnic_dcb_aen_work()
530 qlcnic_dcb_get_cee_cfg(dcb); in qlcnic_dcb_aen_work()
531 clear_bit(QLCNIC_DCB_AEN_MODE, &dcb->state); in qlcnic_dcb_aen_work()
534 static void qlcnic_82xx_dcb_aen_handler(struct qlcnic_dcb *dcb, void *data) in qlcnic_82xx_dcb_aen_handler() argument
536 if (test_and_set_bit(QLCNIC_DCB_AEN_MODE, &dcb->state)) in qlcnic_82xx_dcb_aen_handler()
539 queue_delayed_work(dcb->wq, &dcb->aen_work, 0); in qlcnic_82xx_dcb_aen_handler()
542 static int qlcnic_83xx_dcb_get_hw_capability(struct qlcnic_dcb *dcb) in qlcnic_83xx_dcb_get_hw_capability() argument
544 struct qlcnic_dcb_capability *cap = &dcb->cfg->capability; in qlcnic_83xx_dcb_get_hw_capability()
548 err = __qlcnic_dcb_get_capability(dcb, &mbx_out); in qlcnic_83xx_dcb_get_hw_capability()
560 set_bit(QLCNIC_DCB_STATE, &dcb->state); in qlcnic_83xx_dcb_get_hw_capability()
565 static int qlcnic_83xx_dcb_query_cee_param(struct qlcnic_dcb *dcb, in qlcnic_83xx_dcb_query_cee_param() argument
568 struct qlcnic_adapter *adapter = dcb->adapter; in qlcnic_83xx_dcb_query_cee_param()
628 static int qlcnic_83xx_dcb_get_cee_cfg(struct qlcnic_dcb *dcb) in qlcnic_83xx_dcb_get_cee_cfg() argument
632 err = qlcnic_dcb_query_cee_param(dcb, (char *)dcb->param, 0); in qlcnic_83xx_dcb_get_cee_cfg()
636 qlcnic_dcb_data_cee_param_map(dcb->adapter); in qlcnic_83xx_dcb_get_cee_cfg()
641 static void qlcnic_83xx_dcb_aen_handler(struct qlcnic_dcb *dcb, void *data) in qlcnic_83xx_dcb_aen_handler() argument
645 if (test_and_set_bit(QLCNIC_DCB_AEN_MODE, &dcb->state)) in qlcnic_83xx_dcb_aen_handler()
649 set_bit(QLCNIC_DCB_STATE, &dcb->state); in qlcnic_83xx_dcb_aen_handler()
651 clear_bit(QLCNIC_DCB_STATE, &dcb->state); in qlcnic_83xx_dcb_aen_handler()
653 queue_delayed_work(dcb->wq, &dcb->aen_work, 0); in qlcnic_83xx_dcb_aen_handler()
745 struct qlcnic_dcb_mbx_params *mbx = adapter->dcb->param; in qlcnic_dcb_map_cee_params()
747 struct qlcnic_dcb_cfg *cfg = adapter->dcb->cfg; in qlcnic_dcb_map_cee_params()
784 return test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state); in qlcnic_dcb_get_state()
801 type = &adapter->dcb->cfg->type[QLC_DCB_OPER_IDX]; in qlcnic_dcb_get_pg_tc_cfg_tx()
804 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state) || in qlcnic_dcb_get_pg_tc_cfg_tx()
838 type = &adapter->dcb->cfg->type[QLC_DCB_OPER_IDX]; in qlcnic_dcb_get_pg_bwg_cfg_tx()
840 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state) || in qlcnic_dcb_get_pg_bwg_cfg_tx()
864 type = &adapter->dcb->cfg->type[QLC_DCB_OPER_IDX]; in qlcnic_dcb_get_pfc_cfg()
866 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state) || in qlcnic_dcb_get_pfc_cfg()
885 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state)) in qlcnic_dcb_get_capability()
900 *cap = adapter->dcb->cfg->capability.dcb_capability; in qlcnic_dcb_get_capability()
912 struct qlcnic_dcb_cfg *cfg = adapter->dcb->cfg; in qlcnic_dcb_get_num_tcs()
914 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state)) in qlcnic_dcb_get_num_tcs()
937 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state)) in qlcnic_dcb_get_app()
946 struct qlcnic_dcb *dcb = adapter->dcb; in qlcnic_dcb_get_pfc_state() local
948 if (!test_bit(QLCNIC_DCB_STATE, &dcb->state)) in qlcnic_dcb_get_pfc_state()
951 return dcb->cfg->type[QLC_DCB_OPER_IDX].pfc_mode_enable; in qlcnic_dcb_get_pfc_state()
957 struct qlcnic_dcb_cfg *cfg = adapter->dcb->cfg; in qlcnic_dcb_get_dcbx()
959 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state)) in qlcnic_dcb_get_dcbx()
970 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state)) in qlcnic_dcb_get_feat_cfg()
973 type = &adapter->dcb->cfg->type[QLC_DCB_OPER_IDX]; in qlcnic_dcb_get_feat_cfg()
1026 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state)) in qlcnic_dcb_peer_app_info()
1029 peer = &adapter->dcb->cfg->type[QLC_DCB_PEER_IDX]; in qlcnic_dcb_peer_app_info()
1047 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state)) in qlcnic_dcb_peer_app_table()
1050 peer = &adapter->dcb->cfg->type[QLC_DCB_PEER_IDX]; in qlcnic_dcb_peer_app_table()
1072 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state)) in qlcnic_dcb_cee_peer_get_pg()
1075 peer = &adapter->dcb->cfg->type[QLC_DCB_PEER_IDX]; in qlcnic_dcb_cee_peer_get_pg()
1100 struct qlcnic_dcb_cfg *cfg = adapter->dcb->cfg; in qlcnic_dcb_cee_peer_get_pfc()
1107 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state)) in qlcnic_dcb_cee_peer_get_pfc()