sfxge(4): fix ID retrieval in v3 licensing
Submitted by: Andy Moreton <amoreton at solarflare.com> Sponsored by: Solarflare Communications, Inc. MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D18262
This commit is contained in:
parent
b2053d8025
commit
39e58a98ba
@ -1010,26 +1010,14 @@ efx_mcdi_licensing_v3_get_id(
|
||||
{
|
||||
efx_mcdi_req_t req;
|
||||
EFX_MCDI_DECLARE_BUF(payload, MC_CMD_LICENSING_GET_ID_V3_IN_LEN,
|
||||
MC_CMD_LICENSING_GET_ID_V3_OUT_LENMIN);
|
||||
MC_CMD_LICENSING_GET_ID_V3_OUT_LENMAX);
|
||||
efx_rc_t rc;
|
||||
|
||||
req.emr_cmd = MC_CMD_LICENSING_GET_ID_V3;
|
||||
|
||||
if (bufferp == NULL) {
|
||||
/* Request id type and length only */
|
||||
req.emr_in_buf = bufferp;
|
||||
req.emr_in_length = MC_CMD_LICENSING_GET_ID_V3_IN_LEN;
|
||||
req.emr_out_buf = bufferp;
|
||||
req.emr_out_length = MC_CMD_LICENSING_GET_ID_V3_OUT_LENMIN;
|
||||
} else {
|
||||
/* Request full buffer */
|
||||
req.emr_in_buf = bufferp;
|
||||
req.emr_in_length = MC_CMD_LICENSING_GET_ID_V3_IN_LEN;
|
||||
req.emr_out_buf = bufferp;
|
||||
req.emr_out_length =
|
||||
MIN(buffer_size, MC_CMD_LICENSING_GET_ID_V3_OUT_LENMAX);
|
||||
(void) memset(bufferp, 0, req.emr_out_length);
|
||||
}
|
||||
req.emr_in_buf = payload;
|
||||
req.emr_in_length = MC_CMD_LICENSING_GET_ID_V3_IN_LEN;
|
||||
req.emr_out_buf = payload;
|
||||
req.emr_out_length = MC_CMD_LICENSING_GET_ID_V3_OUT_LENMAX;
|
||||
|
||||
efx_mcdi_execute_quiet(enp, &req);
|
||||
|
||||
@ -1047,19 +1035,10 @@ efx_mcdi_licensing_v3_get_id(
|
||||
*lengthp =
|
||||
MCDI_OUT_DWORD(req, LICENSING_GET_ID_V3_OUT_LICENSE_ID_LENGTH);
|
||||
|
||||
if (bufferp == NULL) {
|
||||
/*
|
||||
* Modify length requirements to indicate to caller the extra
|
||||
* buffering needed to read the complete output.
|
||||
*/
|
||||
*lengthp += MC_CMD_LICENSING_GET_ID_V3_OUT_LENMIN;
|
||||
} else {
|
||||
/* Shift ID down to start of buffer */
|
||||
memmove(bufferp,
|
||||
bufferp + MC_CMD_LICENSING_GET_ID_V3_OUT_LICENSE_ID_OFST,
|
||||
*lengthp);
|
||||
memset(bufferp + (*lengthp), 0,
|
||||
MC_CMD_LICENSING_GET_ID_V3_OUT_LICENSE_ID_OFST);
|
||||
if (bufferp != NULL) {
|
||||
memcpy(bufferp,
|
||||
payload + MC_CMD_LICENSING_GET_ID_V3_OUT_LICENSE_ID_OFST,
|
||||
MIN(buffer_size, *lengthp));
|
||||
}
|
||||
|
||||
return (0);
|
||||
|
Loading…
x
Reference in New Issue
Block a user