iPXE
Functions
mlx_mtu.c File Reference
#include "mlx_mtu.h"
#include "../../include/public/mlx_memory.h"
#include "../../include/public/mlx_bail.h"

Go to the source code of this file.

Functions

 FILE_LICENCE (GPL2_OR_LATER)
mlx_status mlx_get_max_mtu (IN mlx_utils *utils, IN mlx_uint8 port_num, OUT mlx_uint32 *max_mtu)
mlx_status mlx_set_admin_mtu (IN mlx_utils *utils, IN mlx_uint8 port_num, IN mlx_uint32 admin_mtu)

Function Documentation

FILE_LICENCE ( GPL2_OR_LATER  )
mlx_status mlx_get_max_mtu ( IN mlx_utils utils,
IN mlx_uint8  port_num,
OUT mlx_uint32 max_mtu 
)

Definition at line 27 of file mlx_mtu.c.

References BYTE_TO_BIT, mlx_mtu::local_port, mlx_mtu::max_mtu, MLX_CHECK_STATUS, MLX_DEBUG_ERROR, MLX_FAILED, MLX_INVALID_PARAMETER, mlx_memory_set(), mlx_reg_access(), MLX_SUCCESS, NULL, port_num, and status.

{
        mlx_status status = MLX_SUCCESS;
        struct mlx_mtu mtu;
        mlx_uint32 reg_status;
        *max_mtu = 0;

        if (utils == NULL) {
                status = MLX_INVALID_PARAMETER;
                goto bad_param;
        }

        mlx_memory_set(utils, &mtu, 0, sizeof(mtu));

        mtu.local_port = port_num;

        status = mlx_reg_access(utils, REG_ID_PMTU, REG_ACCESS_READ, &mtu,
                        sizeof(mtu), &reg_status);
        MLX_CHECK_STATUS(utils, status, reg_err, "mlx_reg_access failed ");
        if (reg_status != 0) {
                MLX_DEBUG_ERROR(utils,"mlx_reg_access failed with status = %d\n", reg_status);
                status = MLX_FAILED;
                goto reg_err;
        }
        // Return data in bits
        *max_mtu = mtu.max_mtu * BYTE_TO_BIT;
reg_err:
bad_param:
        return status;
}
mlx_status mlx_set_admin_mtu ( IN mlx_utils utils,
IN mlx_uint8  port_num,
IN mlx_uint32  admin_mtu 
)

Definition at line 63 of file mlx_mtu.c.

References mlx_mtu::admin_mtu, mlx_mtu::local_port, MLX_CHECK_STATUS, MLX_DEBUG_ERROR, MLX_FAILED, MLX_INVALID_PARAMETER, mlx_memory_set(), mlx_reg_access(), MLX_SUCCESS, NULL, port_num, and status.

Referenced by flexboot_nodnic_probe().

{
        mlx_status status = MLX_SUCCESS;
        struct mlx_mtu mtu;
        mlx_uint32 reg_status;

        if (utils == NULL) {
                status = MLX_INVALID_PARAMETER;
                goto bad_param;
        }

        mlx_memory_set(utils, &mtu, 0, sizeof(mtu));

        mtu.local_port = port_num;
        mtu.admin_mtu = admin_mtu;

        status = mlx_reg_access(utils, REG_ID_PMTU, REG_ACCESS_WRITE, &mtu,
                        sizeof(mtu), &reg_status);
        MLX_CHECK_STATUS(utils, status, reg_err, "mlx_reg_access failed ");
        if (reg_status != 0) {
                MLX_DEBUG_ERROR(utils,"mlx_reg_access failed with status = %d\n", reg_status);
                status = MLX_FAILED;
                goto reg_err;
        }
reg_err:
bad_param:
        return status;
}