MCPcopy Create free account
hub / github.com/F-Stack/f-stack / update_link_aq

Function update_link_aq

dpdk/drivers/net/i40e/i40e_ethdev.c:2889–2948  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2887}
2888
2889static __rte_always_inline void
2890update_link_aq(struct i40e_hw *hw, struct rte_eth_link *link,
2891 bool enable_lse, int wait_to_complete)
2892{
2893#define CHECK_INTERVAL 100 /* 100ms */
2894#define MAX_REPEAT_TIME 10 /* 1s (10 * 100ms) in total */
2895 uint32_t rep_cnt = MAX_REPEAT_TIME;
2896 struct i40e_link_status link_status;
2897 int status;
2898
2899 memset(&link_status, 0, sizeof(link_status));
2900
2901 do {
2902 memset(&link_status, 0, sizeof(link_status));
2903
2904 /* Get link status information from hardware */
2905 status = i40e_aq_get_link_info(hw, enable_lse,
2906 &link_status, NULL);
2907 if (unlikely(status != I40E_SUCCESS)) {
2908 link->link_speed = RTE_ETH_SPEED_NUM_NONE;
2909 link->link_duplex = RTE_ETH_LINK_FULL_DUPLEX;
2910 PMD_DRV_LOG(ERR, "Failed to get link info");
2911 return;
2912 }
2913
2914 link->link_status = link_status.link_info & I40E_AQ_LINK_UP;
2915 if (!wait_to_complete || link->link_status)
2916 break;
2917
2918 rte_delay_ms(CHECK_INTERVAL);
2919 } while (--rep_cnt);
2920
2921 /* Parse the link status */
2922 switch (link_status.link_speed) {
2923 case I40E_LINK_SPEED_100MB:
2924 link->link_speed = RTE_ETH_SPEED_NUM_100M;
2925 break;
2926 case I40E_LINK_SPEED_1GB:
2927 link->link_speed = RTE_ETH_SPEED_NUM_1G;
2928 break;
2929 case I40E_LINK_SPEED_10GB:
2930 link->link_speed = RTE_ETH_SPEED_NUM_10G;
2931 break;
2932 case I40E_LINK_SPEED_20GB:
2933 link->link_speed = RTE_ETH_SPEED_NUM_20G;
2934 break;
2935 case I40E_LINK_SPEED_25GB:
2936 link->link_speed = RTE_ETH_SPEED_NUM_25G;
2937 break;
2938 case I40E_LINK_SPEED_40GB:
2939 link->link_speed = RTE_ETH_SPEED_NUM_40G;
2940 break;
2941 default:
2942 if (link->link_status)
2943 link->link_speed = RTE_ETH_SPEED_NUM_UNKNOWN;
2944 else
2945 link->link_speed = RTE_ETH_SPEED_NUM_NONE;
2946 break;

Callers 1

i40e_dev_link_updateFunction · 0.85

Calls 3

memsetFunction · 0.85
i40e_aq_get_link_infoFunction · 0.85
rte_delay_msFunction · 0.85

Tested by

no test coverage detected