Lines Matching refs:ctx

184 		  struct ethtool_rxfh_context *ctx)  in __rss_prepare_ctx()  argument
186 if (WARN_ON_ONCE(data->indir_size != ctx->indir_size || in __rss_prepare_ctx()
187 data->hkey_size != ctx->key_size)) in __rss_prepare_ctx()
192 data->hfunc = ctx->hfunc; in __rss_prepare_ctx()
193 data->input_xfrm = ctx->input_xfrm; in __rss_prepare_ctx()
194 memcpy(data->indir_table, ethtool_rxfh_context_indir(ctx), in __rss_prepare_ctx()
197 memcpy(data->hkey, ethtool_rxfh_context_key(ctx), in __rss_prepare_ctx()
205 struct ethtool_rxfh_context *ctx; in rss_prepare_ctx() local
211 ctx = xa_load(&dev->ethtool->rss_ctx, request->rss_context); in rss_prepare_ctx()
212 if (!ctx) { in rss_prepare_ctx()
217 data->indir_size = ctx->indir_size; in rss_prepare_ctx()
218 data->hkey_size = ctx->key_size; in rss_prepare_ctx()
232 __rss_prepare_ctx(dev, data, ctx); in rss_prepare_ctx()
362 return (struct rss_nl_dump_ctx *)cb->ctx; in rss_dump_ctx()
368 struct rss_nl_dump_ctx *ctx = rss_dump_ctx(cb); in ethnl_rss_dump_start() local
379 ctx->start_ctx = nla_get_u32(tb[ETHTOOL_A_RSS_START_CONTEXT]); in ethnl_rss_dump_start()
380 ctx->ctx_idx = ctx->start_ctx; in ethnl_rss_dump_start()
388 ctx->match_ifindex = req_info.dev->ifindex; in ethnl_rss_dump_start()
389 ctx->ifindex = ctx->match_ifindex; in ethnl_rss_dump_start()
440 struct rss_nl_dump_ctx *ctx = rss_dump_ctx(cb); in rss_dump_one_dev() local
446 if (!ctx->ctx_idx) { in rss_dump_one_dev()
450 ctx->ctx_idx++; in rss_dump_one_dev()
453 for (; xa_find(&dev->ethtool->rss_ctx, &ctx->ctx_idx, in rss_dump_one_dev()
454 ULONG_MAX, XA_PRESENT); ctx->ctx_idx++) { in rss_dump_one_dev()
455 ret = rss_dump_one_ctx(skb, cb, dev, ctx->ctx_idx); in rss_dump_one_dev()
459 ctx->ctx_idx = ctx->start_ctx; in rss_dump_one_dev()
466 struct rss_nl_dump_ctx *ctx = rss_dump_ctx(cb); in ethnl_rss_dumpit() local
472 for_each_netdev_dump(net, dev, ctx->ifindex) { in ethnl_rss_dumpit()
473 if (ctx->match_ifindex && ctx->match_ifindex != ctx->ifindex) in ethnl_rss_dumpit()
803 rss_set_ctx_update(struct ethtool_rxfh_context *ctx, struct nlattr **tb, in rss_set_ctx_update() argument
810 ethtool_rxfh_context_indir(ctx)[i] = rxfh->indir[i]; in rss_set_ctx_update() local
811 ctx->indir_configured = !!nla_len(tb[ETHTOOL_A_RSS_INDIR]); in rss_set_ctx_update()
814 memcpy(ethtool_rxfh_context_key(ctx), rxfh->key, in rss_set_ctx_update()
816 ctx->key_configured = !!rxfh->key_size; in rss_set_ctx_update()
819 ctx->hfunc = rxfh->hfunc; in rss_set_ctx_update()
821 ctx->input_xfrm = rxfh->input_xfrm; in rss_set_ctx_update()
829 struct ethtool_rxfh_context *ctx = NULL; in ethnl_rss_set() local
874 ctx = xa_load(&dev->ethtool->rss_ctx, request->rss_context); in ethnl_rss_set()
875 if (!ctx) { in ethnl_rss_set()
893 ret = ops->modify_rxfh_context(dev, ctx, &rxfh, info->extack); in ethnl_rss_set()
897 if (ctx) in ethnl_rss_set()
898 rss_set_ctx_update(ctx, tb, &data, &rxfh); in ethnl_rss_set()
1001 struct ethtool_rxfh_context *ctx; in ethnl_rss_create_doit() local
1055 ctx = ethtool_rxfh_ctx_alloc(ops, data.indir_size, data.hkey_size); in ethnl_rss_create_doit()
1056 if (!ctx) { in ethnl_rss_create_doit()
1064 ret = xa_alloc(&dev->ethtool->rss_ctx, &req.rss_context, ctx, in ethnl_rss_create_doit()
1068 req.rss_context, ctx, GFP_KERNEL_ACCOUNT); in ethnl_rss_create_doit()
1077 ret = ops->create_rxfh_context(dev, ctx, &rxfh, info->extack); in ethnl_rss_create_doit()
1083 !memchr_inv(ethtool_rxfh_context_key(ctx), 0, in ethnl_rss_create_doit()
1084 ctx->key_size)); in ethnl_rss_create_doit()
1087 rss_set_ctx_update(ctx, tb, &data, &rxfh); in ethnl_rss_create_doit()
1089 __rss_prepare_ctx(dev, &data, ctx); in ethnl_rss_create_doit()
1132 kfree(ctx); in ethnl_rss_create_doit()
1145 struct ethtool_rxfh_context *ctx; in ethnl_rss_delete_doit() local
1181 ctx = xa_load(&dev->ethtool->rss_ctx, rss_context); in ethnl_rss_delete_doit()
1182 if (!ctx) { in ethnl_rss_delete_doit()
1187 ret = ops->remove_rxfh_context(dev, ctx, rss_context, info->extack); in ethnl_rss_delete_doit()
1191 WARN_ON(xa_erase(&dev->ethtool->rss_ctx, rss_context) != ctx); in ethnl_rss_delete_doit()
1192 kfree(ctx); in ethnl_rss_delete_doit()