1 #pragma once 2 3 #include <span> 4 5 namespace phosphor 6 { 7 namespace network 8 { 9 namespace ncsi 10 { 11 12 constexpr auto DEFAULT_VALUE = -1; 13 constexpr auto NONE = 0; 14 15 /* @brief This function will ask underlying NCSI driver 16 * to send an OEM command (command type 0x50) with 17 * the specified payload as the OEM data. 18 * This function talks with the NCSI driver over 19 * netlink messages. 20 * @param[in] ifindex - Interface Index. 21 * @param[in] package - NCSI Package. 22 * @param[in] channel - Channel number with in the package. 23 * @param[in] opcode - NCSI Send Command sub-operation 24 * @param[in] payload - OEM data to send. 25 * @returns 0 on success and negative value for failure. 26 */ 27 int sendOemCommand(int ifindex, int package, int channel, int opcode, 28 std::span<const unsigned char> payload); 29 30 /* @brief This function will ask underlying NCSI driver 31 * to set a specific package or package/channel 32 * combination as the preferred choice. 33 * This function talks with the NCSI driver over 34 * netlink messages. 35 * @param[in] ifindex - Interface Index. 36 * @param[in] package - NCSI Package. 37 * @param[in] channel - Channel number with in the package. 38 * @returns 0 on success and negative value for failure. 39 */ 40 int setChannel(int ifindex, int package, int channel); 41 42 /* @brief This function will ask underlying NCSI driver 43 * to clear any preferred setting from the given 44 * interface. 45 * This function talks with the NCSI driver over 46 * netlink messages. 47 * @param[in] ifindex - Interface Index. 48 * @returns 0 on success and negative value for failure. 49 */ 50 int clearInterface(int ifindex); 51 52 /* @brief This function is used to dump all the info 53 * of the package and the channels underlying 54 * the package. 55 * @param[in] ifindex - Interface Index. 56 * @param[in] package - NCSI Package. 57 * @returns 0 on success and negative value for failure. 58 */ 59 int getInfo(int ifindex, int package); 60 61 /* @brief This function assigns a mask controlling responses to AEN from a 62 * package. 63 * @param[in] ifindex - Interface Index. 64 * @param[in] mask - A 32-bit mask integer 65 * @returns 0 on success and negative value for failure. 66 */ 67 int setPackageMask(int ifindex, unsigned int mask); 68 69 /* @brief This function sets the AEN mask for the channels inside the selected 70 * package. 71 * @param[in] ifindex - Interface Index. 72 * @param[in] package - NCSI Package. 73 * @param[in] mask - A 32-bit mask integer 74 * @returns 0 on success and negative value for failure. 75 */ 76 int setChannelMask(int ifindex, int package, unsigned int mask); 77 78 } // namespace ncsi 79 } // namespace network 80 } // namespace phosphor 81