Lines Matching refs:dcb

241 static inline void __qlcnic_init_dcbnl_ops(struct qlcnic_dcb *dcb)  in __qlcnic_init_dcbnl_ops()  argument
243 if (test_bit(QLCNIC_DCB_STATE, &dcb->state)) in __qlcnic_init_dcbnl_ops()
244 dcb->adapter->netdev->dcbnl_ops = &qlcnic_dcbnl_ops; in __qlcnic_init_dcbnl_ops()
250 adapter->dcb->ops = &qlcnic_82xx_dcb_ops; in qlcnic_set_dcb_ops()
252 adapter->dcb->ops = &qlcnic_83xx_dcb_ops; in qlcnic_set_dcb_ops()
257 struct qlcnic_dcb *dcb; in qlcnic_register_dcb() local
262 dcb = kzalloc(sizeof(struct qlcnic_dcb), GFP_ATOMIC); in qlcnic_register_dcb()
263 if (!dcb) in qlcnic_register_dcb()
266 adapter->dcb = dcb; in qlcnic_register_dcb()
267 dcb->adapter = adapter; in qlcnic_register_dcb()
269 dcb->state = 0; in qlcnic_register_dcb()
274 static void __qlcnic_dcb_free(struct qlcnic_dcb *dcb) in __qlcnic_dcb_free() argument
278 if (!dcb) in __qlcnic_dcb_free()
281 adapter = dcb->adapter; in __qlcnic_dcb_free()
283 while (test_bit(QLCNIC_DCB_AEN_MODE, &dcb->state)) in __qlcnic_dcb_free()
286 cancel_delayed_work_sync(&dcb->aen_work); in __qlcnic_dcb_free()
288 if (dcb->wq) { in __qlcnic_dcb_free()
289 destroy_workqueue(dcb->wq); in __qlcnic_dcb_free()
290 dcb->wq = NULL; in __qlcnic_dcb_free()
293 kfree(dcb->cfg); in __qlcnic_dcb_free()
294 dcb->cfg = NULL; in __qlcnic_dcb_free()
295 kfree(dcb->param); in __qlcnic_dcb_free()
296 dcb->param = NULL; in __qlcnic_dcb_free()
297 kfree(dcb); in __qlcnic_dcb_free()
298 adapter->dcb = NULL; in __qlcnic_dcb_free()
301 static void __qlcnic_dcb_get_info(struct qlcnic_dcb *dcb) in __qlcnic_dcb_get_info() argument
303 qlcnic_dcb_get_hw_capability(dcb); in __qlcnic_dcb_get_info()
304 qlcnic_dcb_get_cee_cfg(dcb); in __qlcnic_dcb_get_info()
307 static int __qlcnic_dcb_attach(struct qlcnic_dcb *dcb) in __qlcnic_dcb_attach() argument
311 INIT_DELAYED_WORK(&dcb->aen_work, qlcnic_dcb_aen_work); in __qlcnic_dcb_attach()
313 dcb->wq = create_singlethread_workqueue("qlcnic-dcb"); in __qlcnic_dcb_attach()
314 if (!dcb->wq) { in __qlcnic_dcb_attach()
315 dev_err(&dcb->adapter->pdev->dev, in __qlcnic_dcb_attach()
320 dcb->cfg = kzalloc(sizeof(struct qlcnic_dcb_cfg), GFP_ATOMIC); in __qlcnic_dcb_attach()
321 if (!dcb->cfg) { in __qlcnic_dcb_attach()
326 dcb->param = kzalloc(sizeof(struct qlcnic_dcb_mbx_params), GFP_ATOMIC); in __qlcnic_dcb_attach()
327 if (!dcb->param) { in __qlcnic_dcb_attach()
334 kfree(dcb->cfg); in __qlcnic_dcb_attach()
335 dcb->cfg = NULL; in __qlcnic_dcb_attach()
338 destroy_workqueue(dcb->wq); in __qlcnic_dcb_attach()
339 dcb->wq = NULL; in __qlcnic_dcb_attach()
344 static int __qlcnic_dcb_query_hw_capability(struct qlcnic_dcb *dcb, char *buf) in __qlcnic_dcb_query_hw_capability() argument
346 struct qlcnic_adapter *adapter = dcb->adapter; in __qlcnic_dcb_query_hw_capability()
370 static int __qlcnic_dcb_get_capability(struct qlcnic_dcb *dcb, u32 *val) in __qlcnic_dcb_get_capability() argument
372 struct qlcnic_dcb_capability *cap = &dcb->cfg->capability; in __qlcnic_dcb_get_capability()
378 err = qlcnic_dcb_query_hw_capability(dcb, (char *)val); in __qlcnic_dcb_get_capability()
396 dev_err(&dcb->adapter->pdev->dev, "Invalid DCB configuration\n"); in __qlcnic_dcb_get_capability()
403 static int qlcnic_82xx_dcb_get_hw_capability(struct qlcnic_dcb *dcb) in qlcnic_82xx_dcb_get_hw_capability() argument
405 struct qlcnic_dcb_cfg *cfg = dcb->cfg; in qlcnic_82xx_dcb_get_hw_capability()
410 err = __qlcnic_dcb_get_capability(dcb, &mbx_out); in qlcnic_82xx_dcb_get_hw_capability()
418 set_bit(QLCNIC_DCB_STATE, &dcb->state); in qlcnic_82xx_dcb_get_hw_capability()
423 static int qlcnic_82xx_dcb_query_cee_param(struct qlcnic_dcb *dcb, in qlcnic_82xx_dcb_query_cee_param() argument
427 struct qlcnic_adapter *adapter = dcb->adapter; in qlcnic_82xx_dcb_query_cee_param()
492 static int qlcnic_82xx_dcb_get_cee_cfg(struct qlcnic_dcb *dcb) in qlcnic_82xx_dcb_get_cee_cfg() argument
497 mbx = dcb->param; in qlcnic_82xx_dcb_get_cee_cfg()
501 err = qlcnic_dcb_query_cee_param(dcb, (char *)&mbx->type[0], in qlcnic_82xx_dcb_get_cee_cfg()
506 err = qlcnic_dcb_query_cee_param(dcb, (char *)&mbx->type[1], in qlcnic_82xx_dcb_get_cee_cfg()
511 err = qlcnic_dcb_query_cee_param(dcb, (char *)&mbx->type[2], in qlcnic_82xx_dcb_get_cee_cfg()
518 qlcnic_dcb_data_cee_param_map(dcb->adapter); in qlcnic_82xx_dcb_get_cee_cfg()
525 struct qlcnic_dcb *dcb; in qlcnic_dcb_aen_work() local
527 dcb = container_of(work, struct qlcnic_dcb, aen_work.work); in qlcnic_dcb_aen_work()
529 qlcnic_dcb_get_cee_cfg(dcb); in qlcnic_dcb_aen_work()
530 clear_bit(QLCNIC_DCB_AEN_MODE, &dcb->state); in qlcnic_dcb_aen_work()
533 static void qlcnic_82xx_dcb_aen_handler(struct qlcnic_dcb *dcb, void *data) in qlcnic_82xx_dcb_aen_handler() argument
535 if (test_and_set_bit(QLCNIC_DCB_AEN_MODE, &dcb->state)) in qlcnic_82xx_dcb_aen_handler()
538 queue_delayed_work(dcb->wq, &dcb->aen_work, 0); in qlcnic_82xx_dcb_aen_handler()
541 static int qlcnic_83xx_dcb_get_hw_capability(struct qlcnic_dcb *dcb) in qlcnic_83xx_dcb_get_hw_capability() argument
543 struct qlcnic_dcb_capability *cap = &dcb->cfg->capability; in qlcnic_83xx_dcb_get_hw_capability()
547 err = __qlcnic_dcb_get_capability(dcb, &mbx_out); in qlcnic_83xx_dcb_get_hw_capability()
559 set_bit(QLCNIC_DCB_STATE, &dcb->state); in qlcnic_83xx_dcb_get_hw_capability()
564 static int qlcnic_83xx_dcb_query_cee_param(struct qlcnic_dcb *dcb, in qlcnic_83xx_dcb_query_cee_param() argument
567 struct qlcnic_adapter *adapter = dcb->adapter; in qlcnic_83xx_dcb_query_cee_param()
627 static int qlcnic_83xx_dcb_get_cee_cfg(struct qlcnic_dcb *dcb) in qlcnic_83xx_dcb_get_cee_cfg() argument
631 err = qlcnic_dcb_query_cee_param(dcb, (char *)dcb->param, 0); in qlcnic_83xx_dcb_get_cee_cfg()
635 qlcnic_dcb_data_cee_param_map(dcb->adapter); in qlcnic_83xx_dcb_get_cee_cfg()
640 static void qlcnic_83xx_dcb_aen_handler(struct qlcnic_dcb *dcb, void *data) in qlcnic_83xx_dcb_aen_handler() argument
644 if (test_and_set_bit(QLCNIC_DCB_AEN_MODE, &dcb->state)) in qlcnic_83xx_dcb_aen_handler()
648 set_bit(QLCNIC_DCB_STATE, &dcb->state); in qlcnic_83xx_dcb_aen_handler()
650 clear_bit(QLCNIC_DCB_STATE, &dcb->state); in qlcnic_83xx_dcb_aen_handler()
652 queue_delayed_work(dcb->wq, &dcb->aen_work, 0); in qlcnic_83xx_dcb_aen_handler()
744 struct qlcnic_dcb_mbx_params *mbx = adapter->dcb->param; in qlcnic_dcb_map_cee_params()
746 struct qlcnic_dcb_cfg *cfg = adapter->dcb->cfg; in qlcnic_dcb_map_cee_params()
783 return test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state); in qlcnic_dcb_get_state()
800 type = &adapter->dcb->cfg->type[QLC_DCB_OPER_IDX]; in qlcnic_dcb_get_pg_tc_cfg_tx()
803 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state) || in qlcnic_dcb_get_pg_tc_cfg_tx()
837 type = &adapter->dcb->cfg->type[QLC_DCB_OPER_IDX]; in qlcnic_dcb_get_pg_bwg_cfg_tx()
839 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state) || in qlcnic_dcb_get_pg_bwg_cfg_tx()
863 type = &adapter->dcb->cfg->type[QLC_DCB_OPER_IDX]; in qlcnic_dcb_get_pfc_cfg()
865 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state) || in qlcnic_dcb_get_pfc_cfg()
884 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state)) in qlcnic_dcb_get_capability()
899 *cap = adapter->dcb->cfg->capability.dcb_capability; in qlcnic_dcb_get_capability()
911 struct qlcnic_dcb_cfg *cfg = adapter->dcb->cfg; in qlcnic_dcb_get_num_tcs()
913 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state)) in qlcnic_dcb_get_num_tcs()
936 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state)) in qlcnic_dcb_get_app()
945 struct qlcnic_dcb *dcb = adapter->dcb; in qlcnic_dcb_get_pfc_state() local
947 if (!test_bit(QLCNIC_DCB_STATE, &dcb->state)) in qlcnic_dcb_get_pfc_state()
950 return dcb->cfg->type[QLC_DCB_OPER_IDX].pfc_mode_enable; in qlcnic_dcb_get_pfc_state()
956 struct qlcnic_dcb_cfg *cfg = adapter->dcb->cfg; in qlcnic_dcb_get_dcbx()
958 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state)) in qlcnic_dcb_get_dcbx()
969 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state)) in qlcnic_dcb_get_feat_cfg()
972 type = &adapter->dcb->cfg->type[QLC_DCB_OPER_IDX]; in qlcnic_dcb_get_feat_cfg()
1025 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state)) in qlcnic_dcb_peer_app_info()
1028 peer = &adapter->dcb->cfg->type[QLC_DCB_PEER_IDX]; in qlcnic_dcb_peer_app_info()
1046 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state)) in qlcnic_dcb_peer_app_table()
1049 peer = &adapter->dcb->cfg->type[QLC_DCB_PEER_IDX]; in qlcnic_dcb_peer_app_table()
1071 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state)) in qlcnic_dcb_cee_peer_get_pg()
1074 peer = &adapter->dcb->cfg->type[QLC_DCB_PEER_IDX]; in qlcnic_dcb_cee_peer_get_pg()
1099 struct qlcnic_dcb_cfg *cfg = adapter->dcb->cfg; in qlcnic_dcb_cee_peer_get_pfc()
1106 if (!test_bit(QLCNIC_DCB_STATE, &adapter->dcb->state)) in qlcnic_dcb_cee_peer_get_pfc()