mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-16 07:35:14 +00:00
IB/ipoib: Enable ioctl for to IPoIB rdma netdevs
Adds support for ioctl callback in the RDMA netdevs to allow supporting functions not handled by the generic interface code. Signed-off-by: Feras Daoud <ferasda@mellanox.com> Signed-off-by: Eitan Rabin <rabin@mellanox.com> Signed-off-by: Leon Romanovsky <leon@kernel.org> Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
732912c738
commit
31a8236276
1 changed files with 15 additions and 0 deletions
|
@ -99,6 +99,8 @@ static struct net_device *ipoib_get_net_dev_by_params(
|
||||||
const union ib_gid *gid, const struct sockaddr *addr,
|
const union ib_gid *gid, const struct sockaddr *addr,
|
||||||
void *client_data);
|
void *client_data);
|
||||||
static int ipoib_set_mac(struct net_device *dev, void *addr);
|
static int ipoib_set_mac(struct net_device *dev, void *addr);
|
||||||
|
static int ipoib_ioctl(struct net_device *dev, struct ifreq *ifr,
|
||||||
|
int cmd);
|
||||||
|
|
||||||
static struct ib_client ipoib_client = {
|
static struct ib_client ipoib_client = {
|
||||||
.name = "ipoib",
|
.name = "ipoib",
|
||||||
|
@ -1680,6 +1682,17 @@ static int ipoib_dev_init_default(struct net_device *dev)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int ipoib_ioctl(struct net_device *dev, struct ifreq *ifr,
|
||||||
|
int cmd)
|
||||||
|
{
|
||||||
|
struct ipoib_dev_priv *priv = ipoib_priv(dev);
|
||||||
|
|
||||||
|
if (!priv->rn_ops->ndo_do_ioctl)
|
||||||
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
|
return priv->rn_ops->ndo_do_ioctl(dev, ifr, cmd);
|
||||||
|
}
|
||||||
|
|
||||||
int ipoib_dev_init(struct net_device *dev, struct ib_device *ca, int port)
|
int ipoib_dev_init(struct net_device *dev, struct ib_device *ca, int port)
|
||||||
{
|
{
|
||||||
struct ipoib_dev_priv *priv = ipoib_priv(dev);
|
struct ipoib_dev_priv *priv = ipoib_priv(dev);
|
||||||
|
@ -1834,6 +1847,7 @@ static const struct net_device_ops ipoib_netdev_ops_pf = {
|
||||||
.ndo_set_vf_guid = ipoib_set_vf_guid,
|
.ndo_set_vf_guid = ipoib_set_vf_guid,
|
||||||
.ndo_set_mac_address = ipoib_set_mac,
|
.ndo_set_mac_address = ipoib_set_mac,
|
||||||
.ndo_get_stats64 = ipoib_get_stats,
|
.ndo_get_stats64 = ipoib_get_stats,
|
||||||
|
.ndo_do_ioctl = ipoib_ioctl,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct net_device_ops ipoib_netdev_ops_vf = {
|
static const struct net_device_ops ipoib_netdev_ops_vf = {
|
||||||
|
@ -1847,6 +1861,7 @@ static const struct net_device_ops ipoib_netdev_ops_vf = {
|
||||||
.ndo_set_rx_mode = ipoib_set_mcast_list,
|
.ndo_set_rx_mode = ipoib_set_mcast_list,
|
||||||
.ndo_get_iflink = ipoib_get_iflink,
|
.ndo_get_iflink = ipoib_get_iflink,
|
||||||
.ndo_get_stats64 = ipoib_get_stats,
|
.ndo_get_stats64 = ipoib_get_stats,
|
||||||
|
.ndo_do_ioctl = ipoib_ioctl,
|
||||||
};
|
};
|
||||||
|
|
||||||
void ipoib_setup_common(struct net_device *dev)
|
void ipoib_setup_common(struct net_device *dev)
|
||||||
|
|
Loading…
Reference in a new issue