Lines Matching +full:tcs +full:- +full:offset
3 Copyright (c) 2013-2018, Intel Corporation
70 u8 *buf = tlv->tlvinfo; in i40e_parse_ieee_etscfg_tlv()
71 u16 offset = 0; in i40e_parse_ieee_etscfg_tlv() local
76 * -------------------------- in i40e_parse_ieee_etscfg_tlv()
77 * |will-|CBS | Re- | Max | in i40e_parse_ieee_etscfg_tlv()
78 * |ing | |served| TCs | in i40e_parse_ieee_etscfg_tlv()
79 * -------------------------- in i40e_parse_ieee_etscfg_tlv()
82 etscfg = &dcbcfg->etscfg; in i40e_parse_ieee_etscfg_tlv()
83 etscfg->willing = (u8)((buf[offset] & I40E_IEEE_ETS_WILLING_MASK) >> in i40e_parse_ieee_etscfg_tlv()
85 etscfg->cbs = (u8)((buf[offset] & I40E_IEEE_ETS_CBS_MASK) >> in i40e_parse_ieee_etscfg_tlv()
87 etscfg->maxtcs = (u8)((buf[offset] & I40E_IEEE_ETS_MAXTC_MASK) >> in i40e_parse_ieee_etscfg_tlv()
90 /* Move offset to Priority Assignment Table */ in i40e_parse_ieee_etscfg_tlv()
91 offset++; in i40e_parse_ieee_etscfg_tlv()
95 * ----------------------------------------- in i40e_parse_ieee_etscfg_tlv()
97 * ----------------------------------------- in i40e_parse_ieee_etscfg_tlv()
99 * ----------------------------------------- in i40e_parse_ieee_etscfg_tlv()
102 priority = (u8)((buf[offset] & I40E_IEEE_ETS_PRIO_1_MASK) >> in i40e_parse_ieee_etscfg_tlv()
104 etscfg->prioritytable[i * 2] = priority; in i40e_parse_ieee_etscfg_tlv()
105 priority = (u8)((buf[offset] & I40E_IEEE_ETS_PRIO_0_MASK) >> in i40e_parse_ieee_etscfg_tlv()
107 etscfg->prioritytable[i * 2 + 1] = priority; in i40e_parse_ieee_etscfg_tlv()
108 offset++; in i40e_parse_ieee_etscfg_tlv()
113 * --------------------------------- in i40e_parse_ieee_etscfg_tlv()
115 * --------------------------------- in i40e_parse_ieee_etscfg_tlv()
118 etscfg->tcbwtable[i] = buf[offset++]; in i40e_parse_ieee_etscfg_tlv()
122 * --------------------------------- in i40e_parse_ieee_etscfg_tlv()
124 * --------------------------------- in i40e_parse_ieee_etscfg_tlv()
127 etscfg->tsatable[i] = buf[offset++]; in i40e_parse_ieee_etscfg_tlv()
140 u8 *buf = tlv->tlvinfo; in i40e_parse_ieee_etsrec_tlv()
141 u16 offset = 0; in i40e_parse_ieee_etsrec_tlv() local
145 /* Move offset to priority table */ in i40e_parse_ieee_etsrec_tlv()
146 offset++; in i40e_parse_ieee_etsrec_tlv()
150 * ----------------------------------------- in i40e_parse_ieee_etsrec_tlv()
152 * ----------------------------------------- in i40e_parse_ieee_etsrec_tlv()
154 * ----------------------------------------- in i40e_parse_ieee_etsrec_tlv()
157 priority = (u8)((buf[offset] & I40E_IEEE_ETS_PRIO_1_MASK) >> in i40e_parse_ieee_etsrec_tlv()
159 dcbcfg->etsrec.prioritytable[i*2] = priority; in i40e_parse_ieee_etsrec_tlv()
160 priority = (u8)((buf[offset] & I40E_IEEE_ETS_PRIO_0_MASK) >> in i40e_parse_ieee_etsrec_tlv()
162 dcbcfg->etsrec.prioritytable[i*2 + 1] = priority; in i40e_parse_ieee_etsrec_tlv()
163 offset++; in i40e_parse_ieee_etsrec_tlv()
168 * --------------------------------- in i40e_parse_ieee_etsrec_tlv()
170 * --------------------------------- in i40e_parse_ieee_etsrec_tlv()
173 dcbcfg->etsrec.tcbwtable[i] = buf[offset++]; in i40e_parse_ieee_etsrec_tlv()
177 * --------------------------------- in i40e_parse_ieee_etsrec_tlv()
179 * --------------------------------- in i40e_parse_ieee_etsrec_tlv()
182 dcbcfg->etsrec.tsatable[i] = buf[offset++]; in i40e_parse_ieee_etsrec_tlv()
195 u8 *buf = tlv->tlvinfo; in i40e_parse_ieee_pfccfg_tlv()
197 /* ---------------------------------------- in i40e_parse_ieee_pfccfg_tlv()
198 * |will-|MBC | Re- | PFC | PFC Enable | in i40e_parse_ieee_pfccfg_tlv()
200 * ----------------------------------------- in i40e_parse_ieee_pfccfg_tlv()
203 dcbcfg->pfc.willing = (u8)((buf[0] & I40E_IEEE_PFC_WILLING_MASK) >> in i40e_parse_ieee_pfccfg_tlv()
205 dcbcfg->pfc.mbc = (u8)((buf[0] & I40E_IEEE_PFC_MBC_MASK) >> in i40e_parse_ieee_pfccfg_tlv()
207 dcbcfg->pfc.pfccap = (u8)((buf[0] & I40E_IEEE_PFC_CAP_MASK) >> in i40e_parse_ieee_pfccfg_tlv()
209 dcbcfg->pfc.pfcenable = buf[1]; in i40e_parse_ieee_pfccfg_tlv()
223 u16 offset = 0; in i40e_parse_ieee_app_tlv() local
228 typelength = I40E_NTOHS(tlv->typelength); in i40e_parse_ieee_app_tlv()
231 buf = tlv->tlvinfo; in i40e_parse_ieee_app_tlv()
234 length -= (sizeof(tlv->ouisubtype) + 1); in i40e_parse_ieee_app_tlv()
236 /* Move offset to App Priority Table */ in i40e_parse_ieee_app_tlv()
237 offset++; in i40e_parse_ieee_app_tlv()
241 * ----------------------------------------- in i40e_parse_ieee_app_tlv()
243 * ----------------------------------------- in i40e_parse_ieee_app_tlv()
245 * ----------------------------------------- in i40e_parse_ieee_app_tlv()
247 while (offset < length) { in i40e_parse_ieee_app_tlv()
248 dcbcfg->app[i].priority = (u8)((buf[offset] & in i40e_parse_ieee_app_tlv()
251 dcbcfg->app[i].selector = (u8)((buf[offset] & in i40e_parse_ieee_app_tlv()
254 dcbcfg->app[i].protocolid = (buf[offset + 1] << 0x8) | in i40e_parse_ieee_app_tlv()
255 buf[offset + 2]; in i40e_parse_ieee_app_tlv()
257 offset += 3; in i40e_parse_ieee_app_tlv()
263 dcbcfg->numapps = i; in i40e_parse_ieee_app_tlv()
280 ouisubtype = I40E_NTOHL(tlv->ouisubtype); in i40e_parse_ieee_tlv()
312 u8 *buf = tlv->tlvinfo; in i40e_parse_cee_pgcfg_tlv()
313 u16 offset = 0; in i40e_parse_cee_pgcfg_tlv() local
317 etscfg = &dcbcfg->etscfg; in i40e_parse_cee_pgcfg_tlv()
319 if (tlv->en_will_err & I40E_CEE_FEAT_TLV_WILLING_MASK) in i40e_parse_cee_pgcfg_tlv()
320 etscfg->willing = 1; in i40e_parse_cee_pgcfg_tlv()
322 etscfg->cbs = 0; in i40e_parse_cee_pgcfg_tlv()
325 * ----------------------------------------- in i40e_parse_cee_pgcfg_tlv()
327 * ----------------------------------------- in i40e_parse_cee_pgcfg_tlv()
329 * ----------------------------------------- in i40e_parse_cee_pgcfg_tlv()
332 priority = (u8)((buf[offset] & I40E_CEE_PGID_PRIO_1_MASK) >> in i40e_parse_cee_pgcfg_tlv()
334 etscfg->prioritytable[i * 2] = priority; in i40e_parse_cee_pgcfg_tlv()
335 priority = (u8)((buf[offset] & I40E_CEE_PGID_PRIO_0_MASK) >> in i40e_parse_cee_pgcfg_tlv()
337 etscfg->prioritytable[i * 2 + 1] = priority; in i40e_parse_cee_pgcfg_tlv()
338 offset++; in i40e_parse_cee_pgcfg_tlv()
343 * --------------------------------- in i40e_parse_cee_pgcfg_tlv()
345 * --------------------------------- in i40e_parse_cee_pgcfg_tlv()
348 etscfg->tcbwtable[i] = buf[offset++]; in i40e_parse_cee_pgcfg_tlv()
350 if (etscfg->prioritytable[i] == I40E_CEE_PGID_STRICT) in i40e_parse_cee_pgcfg_tlv()
351 dcbcfg->etscfg.tsatable[i] = I40E_IEEE_TSA_STRICT; in i40e_parse_cee_pgcfg_tlv()
353 dcbcfg->etscfg.tsatable[i] = I40E_IEEE_TSA_ETS; in i40e_parse_cee_pgcfg_tlv()
356 /* Number of TCs supported (1 octet) */ in i40e_parse_cee_pgcfg_tlv()
357 etscfg->maxtcs = buf[offset]; in i40e_parse_cee_pgcfg_tlv()
370 u8 *buf = tlv->tlvinfo; in i40e_parse_cee_pfccfg_tlv()
372 if (tlv->en_will_err & I40E_CEE_FEAT_TLV_WILLING_MASK) in i40e_parse_cee_pfccfg_tlv()
373 dcbcfg->pfc.willing = 1; in i40e_parse_cee_pfccfg_tlv()
375 /* ------------------------ in i40e_parse_cee_pfccfg_tlv()
376 * | PFC Enable | PFC TCs | in i40e_parse_cee_pfccfg_tlv()
377 * ------------------------ in i40e_parse_cee_pfccfg_tlv()
380 dcbcfg->pfc.pfcenable = buf[0]; in i40e_parse_cee_pfccfg_tlv()
381 dcbcfg->pfc.pfccap = buf[1]; in i40e_parse_cee_pfccfg_tlv()
394 u16 length, typelength, offset = 0; in i40e_parse_cee_app_tlv() local
398 typelength = I40E_NTOHS(tlv->hdr.typelen); in i40e_parse_cee_app_tlv()
402 dcbcfg->numapps = length / sizeof(*app); in i40e_parse_cee_app_tlv()
403 if (!dcbcfg->numapps) in i40e_parse_cee_app_tlv()
405 if (dcbcfg->numapps > I40E_DCBX_MAX_APPS) in i40e_parse_cee_app_tlv()
406 dcbcfg->numapps = I40E_DCBX_MAX_APPS; in i40e_parse_cee_app_tlv()
408 for (i = 0; i < dcbcfg->numapps; i++) { in i40e_parse_cee_app_tlv()
411 app = (struct i40e_cee_app_prio *)(tlv->tlvinfo + offset); in i40e_parse_cee_app_tlv()
413 if (app->prio_map & BIT(up)) in i40e_parse_cee_app_tlv()
416 dcbcfg->app[i].priority = up; in i40e_parse_cee_app_tlv()
419 selector = (app->upper_oui_sel & I40E_CEE_APP_SELECTOR_MASK); in i40e_parse_cee_app_tlv()
422 dcbcfg->app[i].selector = I40E_APP_SEL_ETHTYPE; in i40e_parse_cee_app_tlv()
425 dcbcfg->app[i].selector = I40E_APP_SEL_TCPIP; in i40e_parse_cee_app_tlv()
429 dcbcfg->app[i].selector = selector; in i40e_parse_cee_app_tlv()
432 dcbcfg->app[i].protocolid = I40E_NTOHS(app->protocol); in i40e_parse_cee_app_tlv()
434 offset += sizeof(*app); in i40e_parse_cee_app_tlv()
454 ouisubtype = I40E_NTOHL(tlv->ouisubtype); in i40e_parse_cee_tlv()
461 typelength = I40E_NTOHS(tlv->typelength); in i40e_parse_cee_tlv()
464 len = sizeof(tlv->typelength) + sizeof(ouisubtype) + in i40e_parse_cee_tlv()
472 typelength = I40E_NTOHS(sub_tlv->hdr.typelen); in i40e_parse_cee_tlv()
489 return; /* Invalid Sub-type return */ in i40e_parse_cee_tlv()
494 sizeof(sub_tlv->hdr.typelen) + in i40e_parse_cee_tlv()
513 ouisubtype = I40E_NTOHL(tlv->ouisubtype); in i40e_parse_org_tlv()
543 u16 offset = 0; in i40e_lldp_to_dcb_config() local
552 typelength = I40E_NTOHS(tlv->typelength); in i40e_lldp_to_dcb_config()
557 offset += sizeof(typelength) + length; in i40e_lldp_to_dcb_config()
560 if ((type == I40E_TLV_TYPE_END) || (offset > I40E_LLDPDU_SIZE)) in i40e_lldp_to_dcb_config()
573 sizeof(tlv->typelength) + in i40e_lldp_to_dcb_config()
628 u16 status, tlv_status = LE16_TO_CPU(cee_cfg->tlv_status); in i40e_cee_to_dcb_v1_config()
629 u16 app_prio = LE16_TO_CPU(cee_cfg->oper_app_prio); in i40e_cee_to_dcb_v1_config()
633 dcbcfg->etscfg.maxtcs = cee_cfg->oper_num_tc; in i40e_cee_to_dcb_v1_config()
636 * from those in the CEE Priority Group sub-TLV. in i40e_cee_to_dcb_v1_config()
639 tc = (u8)((cee_cfg->oper_prio_tc[i] & in i40e_cee_to_dcb_v1_config()
642 dcbcfg->etscfg.prioritytable[i*2] = tc; in i40e_cee_to_dcb_v1_config()
643 tc = (u8)((cee_cfg->oper_prio_tc[i] & in i40e_cee_to_dcb_v1_config()
646 dcbcfg->etscfg.prioritytable[i*2 + 1] = tc; in i40e_cee_to_dcb_v1_config()
650 dcbcfg->etscfg.tcbwtable[i] = cee_cfg->oper_tc_bw[i]; in i40e_cee_to_dcb_v1_config()
653 if (dcbcfg->etscfg.prioritytable[i] == I40E_CEE_PGID_STRICT) { in i40e_cee_to_dcb_v1_config()
655 dcbcfg->etscfg.prioritytable[i] = in i40e_cee_to_dcb_v1_config()
656 cee_cfg->oper_num_tc - 1; in i40e_cee_to_dcb_v1_config()
657 dcbcfg->etscfg.tsatable[i] = I40E_IEEE_TSA_STRICT; in i40e_cee_to_dcb_v1_config()
659 dcbcfg->etscfg.tsatable[i] = I40E_IEEE_TSA_ETS; in i40e_cee_to_dcb_v1_config()
664 dcbcfg->pfc.pfcenable = cee_cfg->oper_pfc_en; in i40e_cee_to_dcb_v1_config()
665 dcbcfg->pfc.pfccap = I40E_MAX_TRAFFIC_CLASS; in i40e_cee_to_dcb_v1_config()
673 dcbcfg->numapps = I40E_CEE_OPER_MAX_APPS; in i40e_cee_to_dcb_v1_config()
676 dcbcfg->app[0].priority = in i40e_cee_to_dcb_v1_config()
679 dcbcfg->app[0].selector = I40E_APP_SEL_ETHTYPE; in i40e_cee_to_dcb_v1_config()
680 dcbcfg->app[0].protocolid = I40E_APP_PROTOID_FCOE; in i40e_cee_to_dcb_v1_config()
683 dcbcfg->app[1].priority = in i40e_cee_to_dcb_v1_config()
686 dcbcfg->app[1].selector = I40E_APP_SEL_TCPIP; in i40e_cee_to_dcb_v1_config()
687 dcbcfg->app[1].protocolid = I40E_APP_PROTOID_ISCSI; in i40e_cee_to_dcb_v1_config()
690 dcbcfg->app[2].priority = in i40e_cee_to_dcb_v1_config()
693 dcbcfg->app[2].selector = I40E_APP_SEL_ETHTYPE; in i40e_cee_to_dcb_v1_config()
694 dcbcfg->app[2].protocolid = I40E_APP_PROTOID_FIP; in i40e_cee_to_dcb_v1_config()
709 u32 status, tlv_status = LE32_TO_CPU(cee_cfg->tlv_status); in i40e_cee_to_dcb_config()
710 u16 app_prio = LE16_TO_CPU(cee_cfg->oper_app_prio); in i40e_cee_to_dcb_config()
714 dcbcfg->etscfg.maxtcs = cee_cfg->oper_num_tc; in i40e_cee_to_dcb_config()
717 * from those in the CEE Priority Group sub-TLV. in i40e_cee_to_dcb_config()
720 tc = (u8)((cee_cfg->oper_prio_tc[i] & in i40e_cee_to_dcb_config()
723 dcbcfg->etscfg.prioritytable[i*2] = tc; in i40e_cee_to_dcb_config()
724 tc = (u8)((cee_cfg->oper_prio_tc[i] & in i40e_cee_to_dcb_config()
727 dcbcfg->etscfg.prioritytable[i*2 + 1] = tc; in i40e_cee_to_dcb_config()
731 dcbcfg->etscfg.tcbwtable[i] = cee_cfg->oper_tc_bw[i]; in i40e_cee_to_dcb_config()
734 if (dcbcfg->etscfg.prioritytable[i] == I40E_CEE_PGID_STRICT) { in i40e_cee_to_dcb_config()
736 dcbcfg->etscfg.prioritytable[i] = in i40e_cee_to_dcb_config()
737 cee_cfg->oper_num_tc - 1; in i40e_cee_to_dcb_config()
738 dcbcfg->etscfg.tsatable[i] = I40E_IEEE_TSA_STRICT; in i40e_cee_to_dcb_config()
740 dcbcfg->etscfg.tsatable[i] = I40E_IEEE_TSA_ETS; in i40e_cee_to_dcb_config()
745 dcbcfg->pfc.pfcenable = cee_cfg->oper_pfc_en; in i40e_cee_to_dcb_config()
746 dcbcfg->pfc.pfccap = I40E_MAX_TRAFFIC_CLASS; in i40e_cee_to_dcb_config()
757 dcbcfg->app[i].priority = in i40e_cee_to_dcb_config()
760 dcbcfg->app[i].selector = I40E_APP_SEL_ETHTYPE; in i40e_cee_to_dcb_config()
761 dcbcfg->app[i].protocolid = I40E_APP_PROTOID_FCOE; in i40e_cee_to_dcb_config()
773 dcbcfg->app[i].priority = in i40e_cee_to_dcb_config()
776 dcbcfg->app[i].selector = I40E_APP_SEL_TCPIP; in i40e_cee_to_dcb_config()
777 dcbcfg->app[i].protocolid = I40E_APP_PROTOID_ISCSI; in i40e_cee_to_dcb_config()
789 dcbcfg->app[i].priority = in i40e_cee_to_dcb_config()
792 dcbcfg->app[i].selector = I40E_APP_SEL_ETHTYPE; in i40e_cee_to_dcb_config()
793 dcbcfg->app[i].protocolid = I40E_APP_PROTOID_FIP; in i40e_cee_to_dcb_config()
796 dcbcfg->numapps = i; in i40e_cee_to_dcb_config()
810 hw->local_dcbx_config.dcbx_mode = I40E_DCBX_MODE_IEEE; in i40e_get_ieee_dcb_config()
813 &hw->local_dcbx_config); in i40e_get_ieee_dcb_config()
820 &hw->remote_dcbx_config); in i40e_get_ieee_dcb_config()
822 if (hw->aq.asq_last_status == I40E_AQ_RC_ENOENT) in i40e_get_ieee_dcb_config()
842 if ((hw->mac.type == I40E_MAC_XL710) && in i40e_get_dcb_config()
843 (((hw->aq.fw_maj_ver == 4) && (hw->aq.fw_min_ver < 33)) || in i40e_get_dcb_config()
844 (hw->aq.fw_maj_ver < 4))) in i40e_get_dcb_config()
848 if ((hw->mac.type == I40E_MAC_XL710) && in i40e_get_dcb_config()
849 ((hw->aq.fw_maj_ver == 4) && (hw->aq.fw_min_ver == 33))) { in i40e_get_dcb_config()
854 hw->local_dcbx_config.dcbx_mode = I40E_DCBX_MODE_CEE; in i40e_get_dcb_config()
855 hw->local_dcbx_config.tlv_status = in i40e_get_dcb_config()
858 &hw->local_dcbx_config); in i40e_get_dcb_config()
865 hw->local_dcbx_config.dcbx_mode = I40E_DCBX_MODE_CEE; in i40e_get_dcb_config()
866 hw->local_dcbx_config.tlv_status = in i40e_get_dcb_config()
869 &hw->local_dcbx_config); in i40e_get_dcb_config()
874 if (hw->aq.asq_last_status == I40E_AQ_RC_ENOENT) in i40e_get_dcb_config()
882 &hw->desired_dcbx_config); in i40e_get_dcb_config()
889 &hw->remote_dcbx_config); in i40e_get_dcb_config()
891 if (hw->aq.asq_last_status == I40E_AQ_RC_ENOENT) in i40e_get_dcb_config()
911 if (!hw->func_caps.dcb) in i40e_init_dcb()
915 if (hw->flags & I40E_HW_FLAG_FW_LLDP_PERSISTENT) { in i40e_init_dcb()
916 u8 offset = 0; in i40e_init_dcb() local
918 if (hw->mac.type == I40E_MAC_XL710) in i40e_init_dcb()
919 offset = I40E_LLDP_CURRENT_STATUS_XL710_OFFSET; in i40e_init_dcb()
920 else if (hw->mac.type == I40E_MAC_X722) in i40e_init_dcb()
921 offset = I40E_LLDP_CURRENT_STATUS_X722_OFFSET; in i40e_init_dcb()
927 offset, in i40e_init_dcb()
938 adminstatus = lldp_cfg.adminstatus >> (hw->port * 4); in i40e_init_dcb()
943 hw->dcbx_status = I40E_DCBX_STATUS_DISABLED; in i40e_init_dcb()
948 ret = i40e_get_dcbx_status(hw, &hw->dcbx_status); in i40e_init_dcb()
953 if (hw->dcbx_status == I40E_DCBX_STATUS_DONE || in i40e_init_dcb()
954 hw->dcbx_status == I40E_DCBX_STATUS_IN_PROGRESS) { in i40e_init_dcb()
959 } else if (hw->dcbx_status == I40E_DCBX_STATUS_DISABLED) { in i40e_init_dcb()
1000 } else if (hw->aq.asq_last_status == I40E_AQ_RC_ENOENT) { in i40e_get_fw_lldp_status()
1004 } else if (hw->aq.asq_last_status == I40E_AQ_RC_EPERM) { in i40e_get_fw_lldp_status()
1015 * i40e_add_ieee_ets_tlv - Prepare ETS TLV in IEEE format
1026 u16 offset = 0, typelength, i; in i40e_add_ieee_ets_tlv() local
1027 u8 *buf = tlv->tlvinfo; in i40e_add_ieee_ets_tlv()
1032 tlv->typelength = I40E_HTONS(typelength); in i40e_add_ieee_ets_tlv()
1036 tlv->ouisubtype = I40E_HTONL(ouisubtype); in i40e_add_ieee_ets_tlv()
1039 * -------------------------- in i40e_add_ieee_ets_tlv()
1040 * |will-|CBS | Re- | Max | in i40e_add_ieee_ets_tlv()
1041 * |ing | |served| TCs | in i40e_add_ieee_ets_tlv()
1042 * -------------------------- in i40e_add_ieee_ets_tlv()
1045 etscfg = &dcbcfg->etscfg; in i40e_add_ieee_ets_tlv()
1046 if (etscfg->willing) in i40e_add_ieee_ets_tlv()
1048 maxtcwilling |= etscfg->maxtcs & I40E_IEEE_ETS_MAXTC_MASK; in i40e_add_ieee_ets_tlv()
1049 buf[offset] = maxtcwilling; in i40e_add_ieee_ets_tlv()
1051 /* Move offset to Priority Assignment Table */ in i40e_add_ieee_ets_tlv()
1052 offset++; in i40e_add_ieee_ets_tlv()
1056 * ----------------------------------------- in i40e_add_ieee_ets_tlv()
1058 * ----------------------------------------- in i40e_add_ieee_ets_tlv()
1060 * ----------------------------------------- in i40e_add_ieee_ets_tlv()
1063 priority0 = etscfg->prioritytable[i * 2] & 0xF; in i40e_add_ieee_ets_tlv()
1064 priority1 = etscfg->prioritytable[i * 2 + 1] & 0xF; in i40e_add_ieee_ets_tlv()
1065 buf[offset] = (priority0 << I40E_IEEE_ETS_PRIO_1_SHIFT) | in i40e_add_ieee_ets_tlv()
1067 offset++; in i40e_add_ieee_ets_tlv()
1072 * --------------------------------- in i40e_add_ieee_ets_tlv()
1074 * --------------------------------- in i40e_add_ieee_ets_tlv()
1077 buf[offset++] = etscfg->tcbwtable[i]; in i40e_add_ieee_ets_tlv()
1081 * --------------------------------- in i40e_add_ieee_ets_tlv()
1083 * --------------------------------- in i40e_add_ieee_ets_tlv()
1086 buf[offset++] = etscfg->tsatable[i]; in i40e_add_ieee_ets_tlv()
1090 * i40e_add_ieee_etsrec_tlv - Prepare ETS Recommended TLV in IEEE format
1100 u16 offset = 0, typelength, i; in i40e_add_ieee_etsrec_tlv() local
1102 u8 *buf = tlv->tlvinfo; in i40e_add_ieee_etsrec_tlv()
1107 tlv->typelength = I40E_HTONS(typelength); in i40e_add_ieee_etsrec_tlv()
1111 tlv->ouisubtype = I40E_HTONL(ouisubtype); in i40e_add_ieee_etsrec_tlv()
1113 etsrec = &dcbcfg->etsrec; in i40e_add_ieee_etsrec_tlv()
1115 /* Move offset to Priority Assignment Table */ in i40e_add_ieee_etsrec_tlv()
1116 offset++; in i40e_add_ieee_etsrec_tlv()
1120 * ----------------------------------------- in i40e_add_ieee_etsrec_tlv()
1122 * ----------------------------------------- in i40e_add_ieee_etsrec_tlv()
1124 * ----------------------------------------- in i40e_add_ieee_etsrec_tlv()
1127 priority0 = etsrec->prioritytable[i * 2] & 0xF; in i40e_add_ieee_etsrec_tlv()
1128 priority1 = etsrec->prioritytable[i * 2 + 1] & 0xF; in i40e_add_ieee_etsrec_tlv()
1129 buf[offset] = (priority0 << I40E_IEEE_ETS_PRIO_1_SHIFT) | in i40e_add_ieee_etsrec_tlv()
1131 offset++; in i40e_add_ieee_etsrec_tlv()
1136 * --------------------------------- in i40e_add_ieee_etsrec_tlv()
1138 * --------------------------------- in i40e_add_ieee_etsrec_tlv()
1141 buf[offset++] = etsrec->tcbwtable[i]; in i40e_add_ieee_etsrec_tlv()
1145 * --------------------------------- in i40e_add_ieee_etsrec_tlv()
1147 * --------------------------------- in i40e_add_ieee_etsrec_tlv()
1150 buf[offset++] = etsrec->tsatable[i]; in i40e_add_ieee_etsrec_tlv()
1154 * i40e_add_ieee_pfc_tlv - Prepare PFC TLV in IEEE format
1163 u8 *buf = tlv->tlvinfo; in i40e_add_ieee_pfc_tlv()
1169 tlv->typelength = I40E_HTONS(typelength); in i40e_add_ieee_pfc_tlv()
1173 tlv->ouisubtype = I40E_HTONL(ouisubtype); in i40e_add_ieee_pfc_tlv()
1175 /* ---------------------------------------- in i40e_add_ieee_pfc_tlv()
1176 * |will-|MBC | Re- | PFC | PFC Enable | in i40e_add_ieee_pfc_tlv()
1178 * ----------------------------------------- in i40e_add_ieee_pfc_tlv()
1181 if (dcbcfg->pfc.willing) in i40e_add_ieee_pfc_tlv()
1184 if (dcbcfg->pfc.mbc) in i40e_add_ieee_pfc_tlv()
1187 buf[0] |= dcbcfg->pfc.pfccap & 0xF; in i40e_add_ieee_pfc_tlv()
1188 buf[1] = dcbcfg->pfc.pfcenable; in i40e_add_ieee_pfc_tlv()
1192 * i40e_add_ieee_app_pri_tlv - Prepare APP TLV in IEEE format
1201 u16 typelength, length, offset = 0; in i40e_add_ieee_app_pri_tlv() local
1203 u8 *buf = tlv->tlvinfo; in i40e_add_ieee_app_pri_tlv()
1207 if (dcbcfg->numapps == 0) in i40e_add_ieee_app_pri_tlv()
1211 tlv->ouisubtype = I40E_HTONL(ouisubtype); in i40e_add_ieee_app_pri_tlv()
1213 /* Move offset to App Priority Table */ in i40e_add_ieee_app_pri_tlv()
1214 offset++; in i40e_add_ieee_app_pri_tlv()
1217 * ----------------------------------------- in i40e_add_ieee_app_pri_tlv()
1219 * ----------------------------------------- in i40e_add_ieee_app_pri_tlv()
1221 * ----------------------------------------- in i40e_add_ieee_app_pri_tlv()
1223 while (i < dcbcfg->numapps) { in i40e_add_ieee_app_pri_tlv()
1224 priority = dcbcfg->app[i].priority & 0x7; in i40e_add_ieee_app_pri_tlv()
1225 selector = dcbcfg->app[i].selector & 0x7; in i40e_add_ieee_app_pri_tlv()
1226 buf[offset] = (priority << I40E_IEEE_APP_PRIO_SHIFT) | selector; in i40e_add_ieee_app_pri_tlv()
1227 buf[offset + 1] = (dcbcfg->app[i].protocolid >> 0x8) & 0xFF; in i40e_add_ieee_app_pri_tlv()
1228 buf[offset + 2] = dcbcfg->app[i].protocolid & 0xFF; in i40e_add_ieee_app_pri_tlv()
1230 offset += 3; in i40e_add_ieee_app_pri_tlv()
1236 length = sizeof(tlv->ouisubtype) + 1 + (i*3); in i40e_add_ieee_app_pri_tlv()
1239 tlv->typelength = I40E_HTONS(typelength); in i40e_add_ieee_app_pri_tlv()
1243 * i40e_add_dcb_tlv - Add all IEEE TLVs
1271 * i40e_set_dcb_config - Set the local LLDP MIB to FW
1285 dcbcfg = &hw->local_dcbx_config; in i40e_set_dcb_config()
1292 if (dcbcfg->app_mode == I40E_DCBX_APPS_NON_WILLING) { in i40e_set_dcb_config()
1305 * i40e_dcb_config_to_lldp - Convert Dcbconfig to MIB format
1315 u16 length, offset = 0, tlvid = I40E_TLV_ID_START; in i40e_dcb_config_to_lldp() local
1323 typelength = I40E_NTOHS(tlv->typelength); in i40e_dcb_config_to_lldp()
1327 offset += length + 2; in i40e_dcb_config_to_lldp()
1330 (offset > I40E_LLDPDU_SIZE)) in i40e_dcb_config_to_lldp()
1335 sizeof(tlv->typelength) + length); in i40e_dcb_config_to_lldp()
1337 *miblen = offset; in i40e_dcb_config_to_lldp()
1343 * _i40e_read_lldp_cfg - generic read of LLDP Configuration data from NVM
1347 * @word_offset: offset of LLDP configuration
1355 u32 address, offset = (2 * word_offset); in _i40e_read_lldp_cfg() local
1383 ret = i40e_aq_read_nvm(hw, module, offset, sizeof(raw_mem), &raw_mem, in _i40e_read_lldp_cfg()
1390 offset = mem + word_offset; in _i40e_read_lldp_cfg()
1391 offset *= 2; in _i40e_read_lldp_cfg()
1397 ret = i40e_aq_read_nvm(hw, 0, address + offset, in _i40e_read_lldp_cfg()
1407 * i40e_read_lldp_cfg - read LLDP Configuration data from NVM