> +/** > + * mucse_mbx_get_ack - Read ack from reg > + * @mbx: pointer to the MBX structure > + * @reg: register to read > + * > + * @return: the ack value > + **/ > +static u16 mucse_mbx_get_ack(struct mucse_mbx_info *mbx, int reg) > +{ > + return (mbx_data_rd32(mbx, reg) >> 16); > +} > +static int mucse_check_for_ack_pf(struct mucse_hw *hw) > +{ > + struct mucse_mbx_info *mbx = &hw->mbx; > + u16 hw_fw_ack; > + > + hw_fw_ack = mucse_mbx_get_ack(mbx, MBX_FW2PF_COUNTER); > +int mucse_write_mbx_pf(struct mucse_hw *hw, u32 *msg, u16 size) > +{ > + struct mucse_mbx_info *mbx = &hw->mbx; > + int size_inwords = size / 4; > + u32 ctrl_reg; > + int ret; > + int i; > + > + ctrl_reg = PF2FW_MBOX_CTRL(mbx); > + ret = mucse_obtain_mbx_lock_pf(hw); > + if (ret) > + return ret; > + > + for (i = 0; i < size_inwords; i++) > + mbx_data_wr32(mbx, MBX_FW_PF_SHM_DATA + i * 4, msg[i]); > + > + /* flush msg and acks as we are overwriting the message buffer */ > + hw->mbx.fw_ack = mucse_mbx_get_ack(mbx, MBX_FW2PF_COUNTER); It seems like the ACK is always at MBX_FW2PF_COUNTER. So why pass it to mucse_mbx_get_ack()? Please look at your other getters and setters. > +/** > + * mucse_write_mbx - Write a message to the mailbox > + * @hw: pointer to the HW structure > + * @msg: the message buffer > + * @size: length of buffer > + * > + * @return: 0 on success, negative on failure > + **/ > +int mucse_write_mbx(struct mucse_hw *hw, u32 *msg, u16 size) > +{ > + return mucse_write_mbx_pf(hw, msg, size); > +} This function does not do anything useful. Why not call mucse_write_mbx_pf() directly? > +/** > + * mucse_check_for_msg - Check to see if fw sent us mail > + * @hw: pointer to the HW structure > + * > + * @return: 0 on success, negative on failure > + **/ > +int mucse_check_for_msg(struct mucse_hw *hw) > +{ > + return mucse_check_for_msg_pf(hw); > +} > + > +/** > + * mucse_check_for_ack - Check to see if fw sent us ACK > + * @hw: pointer to the HW structure > + * > + * @return: 0 on success, negative on failure > + **/ > +int mucse_check_for_ack(struct mucse_hw *hw) > +{ > + return mucse_check_for_ack_pf(hw); > +} These as well. Andrew