Branch data Line data Source code
1 : : /* SPDX-License-Identifier: BSD-3-Clause 2 : : * Copyright(C) 2023 Mucse IC Design Ltd. 3 : : */ 4 : : 5 : : #ifndef _RNP_LINK_H_ 6 : : #define _RNP_LINK_H_ 7 : : 8 : : #define RNP_DEVICE_LINK (0x3000c) 9 : : #define RNP_DEVICE_LINK_EX (0xa800 + 64 * 64 - 4) 10 : : #define RNP_LINK_NOCHANGED(lane_bit, change_lane) \ 11 : : (!((RTE_BIT32(lane_bit)) & (change_lane))) 12 : : #define RNP_LINK_DUPLEX_ATTR_EN (0xA0000000) 13 : : #define RNP_SPEED_META_VALID(magic) (!!((magic) == UINT32_C(0xA0000000))) 14 : : #define RNP_LINK_STATE(n) RTE_BIT32(n) 15 : : #define RNP_LINK_DUPLEX_STATE(sp, n) ((sp) & RTE_BIT32((24) + (n))) 16 : : #define RNP_ALARM_INTERVAL (50000) /* unit us */ 17 : : enum rnp_lane_speed { 18 : : RNP_LANE_SPEED_10M = 0, 19 : : RNP_LANE_SPEED_100M, 20 : : RNP_LANE_SPEED_1G, 21 : : RNP_LANE_SPEED_10G, 22 : : RNP_LANE_SPEED_25G, 23 : : RNP_LANE_SPEED_40G, 24 : : }; 25 : : 26 : : #define RNP_SPEED_CODE_S(n) ((8) + ((4) * (n))) 27 : : #define RNP_SPEED_CODE_START(n) ((8) + ((4) * (n))) 28 : : #define RNP_SPEED_CODE_END(n) ((11) + ((4) * (n))) 29 : : static inline uint32_t 30 : : rnpce_link_speed_code(uint32_t link_state, uint16_t lane_id) 31 : : { 32 : : uint32_t start, end; 33 : : uint32_t speed_code; 34 : : 35 : 0 : start = RNP_SPEED_CODE_START(lane_id); 36 : 0 : end = RNP_SPEED_CODE_END(lane_id); 37 : 0 : link_state &= RTE_GENMASK32(end, start); 38 [ # # # # ]: 0 : speed_code = link_state >> RNP_SPEED_CODE_S(lane_id); 39 : : 40 : : return speed_code; 41 : : } 42 : : 43 : : void rnp_link_event(struct rnp_eth_adapter *adapter, 44 : : struct rnp_mbx_fw_cmd_req *req); 45 : : int rnp_dev_link_update(struct rte_eth_dev *eth_dev, 46 : : int wait_to_complete); 47 : : void rnp_run_link_poll_task(struct rnp_eth_port *port); 48 : : void rnp_cancel_link_poll_task(struct rnp_eth_port *port); 49 : : int rnp_dev_set_link_up(struct rte_eth_dev *eth_dev); 50 : : int rnp_dev_set_link_down(struct rte_eth_dev *eth_dev); 51 : : 52 : : #endif /* _RNP_LINK_H_ */