ethtool: rss: echo the context number back
The response to a GET request in Netlink should fully identify
the queried object. RSS_GET accepts context id as an input,
so it must echo that attribute back to the response.
After (assuming context 1 has been created):
$ ./cli.py --spec netlink/specs/ethtool.yaml \
--do rss-get \
--json '{"header": {"dev-index": 2}, "context": 1}'
{'context': 1,
'header': {'dev-index': 2, 'dev-name': 'eth0'},
[...]
Fixes: 7112a04664
("ethtool: add netlink based get rss support")
Acked-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: Joe Damato <jdamato@fastly.com>
Link: https://patch.msgid.link/20240724234249.2621109-3-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
a40c7a24f9
commit
f96aae91b0
@ -1757,6 +1757,7 @@ operations:
|
|||||||
reply:
|
reply:
|
||||||
attributes:
|
attributes:
|
||||||
- header
|
- header
|
||||||
|
- context
|
||||||
- hfunc
|
- hfunc
|
||||||
- indir
|
- indir
|
||||||
- hkey
|
- hkey
|
||||||
|
@ -1875,6 +1875,7 @@ Kernel response contents:
|
|||||||
|
|
||||||
===================================== ====== ==========================
|
===================================== ====== ==========================
|
||||||
``ETHTOOL_A_RSS_HEADER`` nested reply header
|
``ETHTOOL_A_RSS_HEADER`` nested reply header
|
||||||
|
``ETHTOOL_A_RSS_CONTEXT`` u32 context number
|
||||||
``ETHTOOL_A_RSS_HFUNC`` u32 RSS hash func
|
``ETHTOOL_A_RSS_HFUNC`` u32 RSS hash func
|
||||||
``ETHTOOL_A_RSS_INDIR`` binary Indir table bytes
|
``ETHTOOL_A_RSS_INDIR`` binary Indir table bytes
|
||||||
``ETHTOOL_A_RSS_HKEY`` binary Hash key bytes
|
``ETHTOOL_A_RSS_HKEY`` binary Hash key bytes
|
||||||
|
@ -111,7 +111,8 @@ rss_reply_size(const struct ethnl_req_info *req_base,
|
|||||||
const struct rss_reply_data *data = RSS_REPDATA(reply_base);
|
const struct rss_reply_data *data = RSS_REPDATA(reply_base);
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
len = nla_total_size(sizeof(u32)) + /* _RSS_HFUNC */
|
len = nla_total_size(sizeof(u32)) + /* _RSS_CONTEXT */
|
||||||
|
nla_total_size(sizeof(u32)) + /* _RSS_HFUNC */
|
||||||
nla_total_size(sizeof(u32)) + /* _RSS_INPUT_XFRM */
|
nla_total_size(sizeof(u32)) + /* _RSS_INPUT_XFRM */
|
||||||
nla_total_size(sizeof(u32) * data->indir_size) + /* _RSS_INDIR */
|
nla_total_size(sizeof(u32) * data->indir_size) + /* _RSS_INDIR */
|
||||||
nla_total_size(data->hkey_size); /* _RSS_HKEY */
|
nla_total_size(data->hkey_size); /* _RSS_HKEY */
|
||||||
@ -124,6 +125,11 @@ rss_fill_reply(struct sk_buff *skb, const struct ethnl_req_info *req_base,
|
|||||||
const struct ethnl_reply_data *reply_base)
|
const struct ethnl_reply_data *reply_base)
|
||||||
{
|
{
|
||||||
const struct rss_reply_data *data = RSS_REPDATA(reply_base);
|
const struct rss_reply_data *data = RSS_REPDATA(reply_base);
|
||||||
|
struct rss_req_info *request = RSS_REQINFO(req_base);
|
||||||
|
|
||||||
|
if (request->rss_context &&
|
||||||
|
nla_put_u32(skb, ETHTOOL_A_RSS_CONTEXT, request->rss_context))
|
||||||
|
return -EMSGSIZE;
|
||||||
|
|
||||||
if ((data->hfunc &&
|
if ((data->hfunc &&
|
||||||
nla_put_u32(skb, ETHTOOL_A_RSS_HFUNC, data->hfunc)) ||
|
nla_put_u32(skb, ETHTOOL_A_RSS_HFUNC, data->hfunc)) ||
|
||||||
|
Loading…
Reference in New Issue
Block a user