Following patch will hide that typedef. There seems to be no strong reason for hyperv to use it, so let's not.
Unified · Split
| @@ -137,7 +137,6 @@ int netvsc_xdp_set(struct net_device *dev, struct bpf_prog *prog, · 136 unmodified lines | |||
| 137 | int netvsc_vf_setxdp(struct net_device *vf_netdev, struct bpf_prog *prog) | 137 | int netvsc_vf_setxdp(struct net_device *vf_netdev, struct bpf_prog *prog) |
| 138 | { | 138 | { |
| 139 | struct netdev_bpf xdp; | 139 | struct netdev_bpf xdp; |
| 140 | bpf_op_t ndo_bpf; | ||
| 141 | int ret; | 140 | int ret; |
| 142 | 141 | ||
| 143 | ASSERT_RTNL(); | 142 | ASSERT_RTNL(); |
| @@ -145,8 +144,7 @@ int netvsc_vf_setxdp(struct net_device *vf_netdev, struct bpf_prog *prog) · 1 unmodified line | |||
| 145 | if (!vf_netdev) | 144 | if (!vf_netdev) |
| 146 | return 0; | 145 | return 0; |
| 147 | 146 | ||
| 148 | ndo_bpf = vf_netdev->netdev_ops->ndo_bpf; | 147 | if (!vf_netdev->netdev_ops->ndo_bpf) |
| 149 | if (!ndo_bpf) | ||
| 150 | return 0; | 148 | return 0; |
| 151 | 149 | ||
| 152 | memset(&xdp, 0, sizeof(xdp)); | 150 | memset(&xdp, 0, sizeof(xdp)); |
| @@ -157,7 +155,7 @@ int netvsc_vf_setxdp(struct net_device *vf_netdev, struct bpf_prog *prog) · 4 unmodified lines | |||
| 157 | xdp.command = XDP_SETUP_PROG; | 155 | xdp.command = XDP_SETUP_PROG; |
| 158 | xdp.prog = prog; | 156 | xdp.prog = prog; |
| 159 | 157 | ||
| 160 | ret = ndo_bpf(vf_netdev, &xdp); | 158 | ret = vf_netdev->netdev_ops->ndo_bpf(vf_netdev, &xdp); |
| 161 | 159 | ||
| 162 | if (ret && prog) | 160 | if (ret && prog) |
| 163 | bpf_prog_put(prog); | 161 | bpf_prog_put(prog); |