mirror of
https://github.com/torvalds/linux.git
synced 2026-09-13 23:50:02 +02:00
idpf: remove unused code for getting RSS info from device
idpf_send_get_set_rss_lut_msg() and idpf_send_get_set_rss_key_msg() do not handle the get=true path properly. Response validation is insufficient, memcpy size is wrong, LE-to-CPU conversion is missing. Fortunately, those functions are never used with get=true. Given how broken this dead code is, it is unlikely to be useful in the future. Rename idpf_send_get_set_rss_lut_msg() to idpf_send_set_rss_lut_msg(), idpf_send_get_set_rss_key_msg() to idpf_send_set_rss_key_msg(), remove the get parameter and remove all get=true cases from the function. Reviewed-by: Alexander Lobakin <aleksander.lobakin@intel.com> Signed-off-by: Larysa Zaremba <larysa.zaremba@intel.com> Tested-by: Samuel Salin <Samuel.salin@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
parent
fb2bebcffb
commit
8760a06e45
|
|
@ -4676,11 +4676,11 @@ int idpf_config_rss(struct idpf_vport *vport, struct idpf_rss_data *rss_data)
|
|||
u32 vport_id = vport->vport_id;
|
||||
int err;
|
||||
|
||||
err = idpf_send_get_set_rss_key_msg(adapter, rss_data, vport_id, false);
|
||||
err = idpf_send_set_rss_key_msg(adapter, rss_data, vport_id);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
return idpf_send_get_set_rss_lut_msg(adapter, rss_data, vport_id, false);
|
||||
return idpf_send_set_rss_lut_msg(adapter, rss_data, vport_id);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -2848,29 +2848,26 @@ int idpf_send_get_stats_msg(struct idpf_netdev_priv *np,
|
|||
}
|
||||
|
||||
/**
|
||||
* idpf_send_get_set_rss_lut_msg - Send virtchnl get or set RSS lut message
|
||||
* idpf_send_set_rss_lut_msg - Send virtchnl set RSS lut message
|
||||
* @adapter: adapter pointer used to send virtchnl message
|
||||
* @rss_data: pointer to RSS key and lut info
|
||||
* @vport_id: vport identifier used while preparing the virtchnl message
|
||||
* @get: flag to set or get RSS look up table
|
||||
*
|
||||
* When rxhash is disabled, RSS LUT will be configured with zeros. If rxhash
|
||||
* When rxhash is disabled, RSS LUT will be configured with zeros. If rxhash
|
||||
* is enabled, the LUT values stored in driver's soft copy will be used to setup
|
||||
* the HW.
|
||||
*
|
||||
* Return: 0 on success, negative on failure.
|
||||
*/
|
||||
int idpf_send_get_set_rss_lut_msg(struct idpf_adapter *adapter,
|
||||
struct idpf_rss_data *rss_data,
|
||||
u32 vport_id, bool get)
|
||||
int idpf_send_set_rss_lut_msg(struct idpf_adapter *adapter,
|
||||
struct idpf_rss_data *rss_data, u32 vport_id)
|
||||
{
|
||||
struct virtchnl2_rss_lut *recv_rl __free(kfree) = NULL;
|
||||
struct virtchnl2_rss_lut *rl __free(kfree) = NULL;
|
||||
struct idpf_vc_xn_params xn_params = {};
|
||||
int buf_size, lut_buf_size;
|
||||
struct idpf_vport *vport;
|
||||
ssize_t reply_sz;
|
||||
bool rxhash_ena;
|
||||
int buf_size;
|
||||
int i;
|
||||
|
||||
vport = idpf_vid_to_vport(adapter, vport_id);
|
||||
|
|
@ -2889,72 +2886,34 @@ int idpf_send_get_set_rss_lut_msg(struct idpf_adapter *adapter,
|
|||
xn_params.timeout_ms = IDPF_VC_XN_DEFAULT_TIMEOUT_MSEC;
|
||||
xn_params.send_buf.iov_base = rl;
|
||||
xn_params.send_buf.iov_len = buf_size;
|
||||
xn_params.vc_op = VIRTCHNL2_OP_SET_RSS_LUT;
|
||||
|
||||
if (get) {
|
||||
recv_rl = kzalloc(IDPF_CTLQ_MAX_BUF_LEN, GFP_KERNEL);
|
||||
if (!recv_rl)
|
||||
return -ENOMEM;
|
||||
xn_params.vc_op = VIRTCHNL2_OP_GET_RSS_LUT;
|
||||
xn_params.recv_buf.iov_base = recv_rl;
|
||||
xn_params.recv_buf.iov_len = IDPF_CTLQ_MAX_BUF_LEN;
|
||||
} else {
|
||||
rl->lut_entries = cpu_to_le16(rss_data->rss_lut_size);
|
||||
for (i = 0; i < rss_data->rss_lut_size; i++)
|
||||
rl->lut[i] = rxhash_ena ?
|
||||
cpu_to_le32(rss_data->rss_lut[i]) : 0;
|
||||
rl->lut_entries = cpu_to_le16(rss_data->rss_lut_size);
|
||||
for (i = 0; i < rss_data->rss_lut_size; i++)
|
||||
rl->lut[i] = rxhash_ena ? cpu_to_le32(rss_data->rss_lut[i]) : 0;
|
||||
|
||||
xn_params.vc_op = VIRTCHNL2_OP_SET_RSS_LUT;
|
||||
}
|
||||
reply_sz = idpf_vc_xn_exec(adapter, &xn_params);
|
||||
if (reply_sz < 0)
|
||||
return reply_sz;
|
||||
if (!get)
|
||||
return 0;
|
||||
if (reply_sz < sizeof(struct virtchnl2_rss_lut))
|
||||
return -EIO;
|
||||
|
||||
lut_buf_size = le16_to_cpu(recv_rl->lut_entries) * sizeof(u32);
|
||||
if (reply_sz < lut_buf_size)
|
||||
return -EIO;
|
||||
|
||||
/* size didn't change, we can reuse existing lut buf */
|
||||
if (rss_data->rss_lut_size == le16_to_cpu(recv_rl->lut_entries))
|
||||
goto do_memcpy;
|
||||
|
||||
rss_data->rss_lut_size = le16_to_cpu(recv_rl->lut_entries);
|
||||
kfree(rss_data->rss_lut);
|
||||
|
||||
rss_data->rss_lut = kzalloc(lut_buf_size, GFP_KERNEL);
|
||||
if (!rss_data->rss_lut) {
|
||||
rss_data->rss_lut_size = 0;
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
do_memcpy:
|
||||
memcpy(rss_data->rss_lut, recv_rl->lut, rss_data->rss_lut_size);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* idpf_send_get_set_rss_key_msg - Send virtchnl get or set RSS key message
|
||||
* idpf_send_set_rss_key_msg - Send virtchnl set RSS key message
|
||||
* @adapter: adapter pointer used to send virtchnl message
|
||||
* @rss_data: pointer to RSS key and lut info
|
||||
* @vport_id: vport identifier used while preparing the virtchnl message
|
||||
* @get: flag to set or get RSS look up table
|
||||
*
|
||||
* Return: 0 on success, negative on failure
|
||||
*/
|
||||
int idpf_send_get_set_rss_key_msg(struct idpf_adapter *adapter,
|
||||
struct idpf_rss_data *rss_data,
|
||||
u32 vport_id, bool get)
|
||||
int idpf_send_set_rss_key_msg(struct idpf_adapter *adapter,
|
||||
struct idpf_rss_data *rss_data, u32 vport_id)
|
||||
{
|
||||
struct virtchnl2_rss_key *recv_rk __free(kfree) = NULL;
|
||||
struct virtchnl2_rss_key *rk __free(kfree) = NULL;
|
||||
struct idpf_vc_xn_params xn_params = {};
|
||||
ssize_t reply_sz;
|
||||
int i, buf_size;
|
||||
u16 key_size;
|
||||
|
||||
buf_size = struct_size(rk, key_flex, rss_data->rss_key_size);
|
||||
rk = kzalloc(buf_size, GFP_KERNEL);
|
||||
|
|
@ -2965,49 +2924,15 @@ int idpf_send_get_set_rss_key_msg(struct idpf_adapter *adapter,
|
|||
xn_params.send_buf.iov_base = rk;
|
||||
xn_params.send_buf.iov_len = buf_size;
|
||||
xn_params.timeout_ms = IDPF_VC_XN_DEFAULT_TIMEOUT_MSEC;
|
||||
if (get) {
|
||||
recv_rk = kzalloc(IDPF_CTLQ_MAX_BUF_LEN, GFP_KERNEL);
|
||||
if (!recv_rk)
|
||||
return -ENOMEM;
|
||||
xn_params.vc_op = VIRTCHNL2_OP_SET_RSS_KEY;
|
||||
|
||||
xn_params.vc_op = VIRTCHNL2_OP_GET_RSS_KEY;
|
||||
xn_params.recv_buf.iov_base = recv_rk;
|
||||
xn_params.recv_buf.iov_len = IDPF_CTLQ_MAX_BUF_LEN;
|
||||
} else {
|
||||
rk->key_len = cpu_to_le16(rss_data->rss_key_size);
|
||||
for (i = 0; i < rss_data->rss_key_size; i++)
|
||||
rk->key_flex[i] = rss_data->rss_key[i];
|
||||
|
||||
xn_params.vc_op = VIRTCHNL2_OP_SET_RSS_KEY;
|
||||
}
|
||||
rk->key_len = cpu_to_le16(rss_data->rss_key_size);
|
||||
for (i = 0; i < rss_data->rss_key_size; i++)
|
||||
rk->key_flex[i] = rss_data->rss_key[i];
|
||||
|
||||
reply_sz = idpf_vc_xn_exec(adapter, &xn_params);
|
||||
if (reply_sz < 0)
|
||||
return reply_sz;
|
||||
if (!get)
|
||||
return 0;
|
||||
if (reply_sz < sizeof(struct virtchnl2_rss_key))
|
||||
return -EIO;
|
||||
|
||||
key_size = min_t(u16, NETDEV_RSS_KEY_LEN,
|
||||
le16_to_cpu(recv_rk->key_len));
|
||||
if (reply_sz < key_size)
|
||||
return -EIO;
|
||||
|
||||
/* key len didn't change, reuse existing buf */
|
||||
if (rss_data->rss_key_size == key_size)
|
||||
goto do_memcpy;
|
||||
|
||||
rss_data->rss_key_size = key_size;
|
||||
kfree(rss_data->rss_key);
|
||||
rss_data->rss_key = kzalloc(key_size, GFP_KERNEL);
|
||||
if (!rss_data->rss_key) {
|
||||
rss_data->rss_key_size = 0;
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
do_memcpy:
|
||||
memcpy(rss_data->rss_key, recv_rk->key_flex, rss_data->rss_key_size);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -208,12 +208,10 @@ int idpf_send_ena_dis_loopback_msg(struct idpf_adapter *adapter, u32 vport_id,
|
|||
int idpf_send_get_stats_msg(struct idpf_netdev_priv *np,
|
||||
struct idpf_port_stats *port_stats);
|
||||
int idpf_send_set_sriov_vfs_msg(struct idpf_adapter *adapter, u16 num_vfs);
|
||||
int idpf_send_get_set_rss_key_msg(struct idpf_adapter *adapter,
|
||||
struct idpf_rss_data *rss_data,
|
||||
u32 vport_id, bool get);
|
||||
int idpf_send_get_set_rss_lut_msg(struct idpf_adapter *adapter,
|
||||
struct idpf_rss_data *rss_data,
|
||||
u32 vport_id, bool get);
|
||||
int idpf_send_set_rss_key_msg(struct idpf_adapter *adapter,
|
||||
struct idpf_rss_data *rss_data, u32 vport_id);
|
||||
int idpf_send_set_rss_lut_msg(struct idpf_adapter *adapter,
|
||||
struct idpf_rss_data *rss_data, u32 vport_id);
|
||||
void idpf_vc_xn_shutdown(struct idpf_vc_xn_manager *vcxn_mngr);
|
||||
int idpf_idc_rdma_vc_send_sync(struct iidc_rdma_core_dev_info *cdev_info,
|
||||
u8 *send_msg, u16 msg_size,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user