/tools/include/asm-generic/bitops/

TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ #include #include #include #include #include #include #include #include #include "qed.h" #include "qed_cxt.h" #include "qed_dcbx.h" #include "qed_hsi.h" #include "qed_sp.h" #include "qed_sriov.h" #include "qed_rdma.h" #ifdef CONFIG_DCB #include #endif #define QED_DCBX_MAX_MIB_READ_TRY (100) #define QED_ETH_TYPE_DEFAULT (0) #define QED_ETH_TYPE_ROCE (0x8915) #define QED_UDP_PORT_TYPE_ROCE_V2 (0x12B7) #define QED_ETH_TYPE_FCOE (0x8906) #define QED_TCP_PORT_ISCSI (0xCBC) #define QED_DCBX_INVALID_PRIORITY 0xFF /* Get Traffic Class from priority traffic class table, 4 bits represent * the traffic class corresponding to the priority. */ #define QED_DCBX_PRIO2TC(prio_tc_tbl, prio) \ ((u32)(prio_tc_tbl >> ((7 - prio) * 4)) & 0x7) static const struct qed_dcbx_app_metadata qed_dcbx_app_update[] = { {DCBX_PROTOCOL_ISCSI, "ISCSI", QED_PCI_ISCSI}, {DCBX_PROTOCOL_FCOE, "FCOE", QED_PCI_FCOE}, {DCBX_PROTOCOL_ROCE, "ROCE", QED_PCI_ETH_ROCE}, {DCBX_PROTOCOL_ROCE_V2, "ROCE_V2", QED_PCI_ETH_ROCE}, {DCBX_PROTOCOL_ETH, "ETH", QED_PCI_ETH}, }; static bool qed_dcbx_app_ethtype(u32 app_info_bitmap) { return !!(QED_MFW_GET_FIELD(app_info_bitmap, DCBX_APP_SF) == DCBX_APP_SF_ETHTYPE); } static bool qed_dcbx_ieee_app_ethtype(u32 app_info_bitmap) { u8 mfw_val = QED_MFW_GET_FIELD(app_info_bitmap, DCBX_APP_SF_IEEE); /* Old MFW */ if (mfw_val == DCBX_APP_SF_IEEE_RESERVED) return qed_dcbx_app_ethtype(app_info_bitmap); return !!(mfw_val == DCBX_APP_SF_IEEE_ETHTYPE); } static bool qed_dcbx_app_port(u32 app_info_bitmap) { return !!(QED_MFW_GET_FIELD(app_info_bitmap, DCBX_APP_SF) == DCBX_APP_SF_PORT); } static bool qed_dcbx_ieee_app_port(u32 app_info_bitmap, u8 type) { u8 mfw_val = QED_MFW_GET_FIELD(app_info_bitmap, DCBX_APP_SF_IEEE); /* Old MFW */ if (mfw_val == DCBX_APP_SF_IEEE_RESERVED) return qed_dcbx_app_port(app_info_bitmap); return !!(mfw_val == type || mfw_val == DCBX_APP_SF_IEEE_TCP_UDP_PORT); } static bool qed_dcbx_default_tlv(u32 app_info_bitmap, u16 prot