Skip to content

Commit 012d587

Browse files
Stanislav FomichevNipaLocal
Stanislav Fomichev
authored and
NipaLocal
committed
net: devmem: TCP tx netlink api
Add bind-tx netlink call to attach dmabuf for TX; queue is not required, only ifindex and dmabuf fd for attachment. Signed-off-by: Stanislav Fomichev <[email protected]> Signed-off-by: Mina Almasry <[email protected]> Signed-off-by: NipaLocal <nipa@local>
1 parent 47626f8 commit 012d587

File tree

6 files changed

+34
-0
lines changed

6 files changed

+34
-0
lines changed

Documentation/netlink/specs/netdev.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -743,6 +743,18 @@ operations:
743743
- defer-hard-irqs
744744
- gro-flush-timeout
745745
- irq-suspend-timeout
746+
-
747+
name: bind-tx
748+
doc: Bind dmabuf to netdev for TX
749+
attribute-set: dmabuf
750+
do:
751+
request:
752+
attributes:
753+
- ifindex
754+
- fd
755+
reply:
756+
attributes:
757+
- id
746758

747759
kernel-family:
748760
headers: [ "linux/list.h"]

include/uapi/linux/netdev.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ enum {
219219
NETDEV_CMD_QSTATS_GET,
220220
NETDEV_CMD_BIND_RX,
221221
NETDEV_CMD_NAPI_SET,
222+
NETDEV_CMD_BIND_TX,
222223

223224
__NETDEV_CMD_MAX,
224225
NETDEV_CMD_MAX = (__NETDEV_CMD_MAX - 1)

net/core/netdev-genl-gen.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,12 @@ static const struct nla_policy netdev_napi_set_nl_policy[NETDEV_A_NAPI_IRQ_SUSPE
9999
[NETDEV_A_NAPI_IRQ_SUSPEND_TIMEOUT] = { .type = NLA_UINT, },
100100
};
101101

102+
/* NETDEV_CMD_BIND_TX - do */
103+
static const struct nla_policy netdev_bind_tx_nl_policy[NETDEV_A_DMABUF_FD + 1] = {
104+
[NETDEV_A_DMABUF_IFINDEX] = NLA_POLICY_MIN(NLA_U32, 1),
105+
[NETDEV_A_DMABUF_FD] = { .type = NLA_U32, },
106+
};
107+
102108
/* Ops table for netdev */
103109
static const struct genl_split_ops netdev_nl_ops[] = {
104110
{
@@ -190,6 +196,13 @@ static const struct genl_split_ops netdev_nl_ops[] = {
190196
.maxattr = NETDEV_A_NAPI_IRQ_SUSPEND_TIMEOUT,
191197
.flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO,
192198
},
199+
{
200+
.cmd = NETDEV_CMD_BIND_TX,
201+
.doit = netdev_nl_bind_tx_doit,
202+
.policy = netdev_bind_tx_nl_policy,
203+
.maxattr = NETDEV_A_DMABUF_FD,
204+
.flags = GENL_CMD_CAP_DO,
205+
},
193206
};
194207

195208
static const struct genl_multicast_group netdev_nl_mcgrps[] = {

net/core/netdev-genl-gen.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ int netdev_nl_qstats_get_dumpit(struct sk_buff *skb,
3434
struct netlink_callback *cb);
3535
int netdev_nl_bind_rx_doit(struct sk_buff *skb, struct genl_info *info);
3636
int netdev_nl_napi_set_doit(struct sk_buff *skb, struct genl_info *info);
37+
int netdev_nl_bind_tx_doit(struct sk_buff *skb, struct genl_info *info);
3738

3839
enum {
3940
NETDEV_NLGRP_MGMT,

net/core/netdev-genl.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -931,6 +931,12 @@ int netdev_nl_bind_rx_doit(struct sk_buff *skb, struct genl_info *info)
931931
return err;
932932
}
933933

934+
/* stub */
935+
int netdev_nl_bind_tx_doit(struct sk_buff *skb, struct genl_info *info)
936+
{
937+
return 0;
938+
}
939+
934940
void netdev_nl_sock_priv_init(struct list_head *priv)
935941
{
936942
INIT_LIST_HEAD(priv);

tools/include/uapi/linux/netdev.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ enum {
219219
NETDEV_CMD_QSTATS_GET,
220220
NETDEV_CMD_BIND_RX,
221221
NETDEV_CMD_NAPI_SET,
222+
NETDEV_CMD_BIND_TX,
222223

223224
__NETDEV_CMD_MAX,
224225
NETDEV_CMD_MAX = (__NETDEV_CMD_MAX - 1)

0 commit comments

Comments
 (0)