IB/rxe: Reuse code which sets port state

Same code is executed in both rxe_param_set_add and rxe_notify functions.
Make one function and call it from both places.

Since both callers already have a rxe object use it directly instead of
deriving it from the net device.

Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
Reviewed-by: Steve Wise <swise@opengridcomputing.com> 
Reviewed-by: Bart Van Assche <bart.vanassche@wdc.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
Yuval Shaia 2018-12-14 08:05:49 -08:00 committed by Jason Gunthorpe
parent d5108e69fe
commit f55c3ec42a
3 changed files with 11 additions and 21 deletions

View File

@ -110,5 +110,6 @@ struct rxe_dev *get_rxe_by_name(const char *name);
void rxe_port_up(struct rxe_dev *rxe); void rxe_port_up(struct rxe_dev *rxe);
void rxe_port_down(struct rxe_dev *rxe); void rxe_port_down(struct rxe_dev *rxe);
void rxe_set_port_state(struct rxe_dev *rxe);
#endif /* RXE_H */ #endif /* RXE_H */

View File

@ -625,6 +625,14 @@ void rxe_port_down(struct rxe_dev *rxe)
dev_info(&rxe->ib_dev.dev, "set down\n"); dev_info(&rxe->ib_dev.dev, "set down\n");
} }
void rxe_set_port_state(struct rxe_dev *rxe)
{
if (netif_running(rxe->ndev) && netif_carrier_ok(rxe->ndev))
rxe_port_up(rxe);
else
rxe_port_down(rxe);
}
static int rxe_notify(struct notifier_block *not_blk, static int rxe_notify(struct notifier_block *not_blk,
unsigned long event, unsigned long event,
void *arg) void *arg)
@ -651,10 +659,7 @@ static int rxe_notify(struct notifier_block *not_blk,
rxe_set_mtu(rxe, ndev->mtu); rxe_set_mtu(rxe, ndev->mtu);
break; break;
case NETDEV_CHANGE: case NETDEV_CHANGE:
if (netif_running(ndev) && netif_carrier_ok(ndev)) rxe_set_port_state(rxe);
rxe_port_up(rxe);
else
rxe_port_down(rxe);
break; break;
case NETDEV_REBOOT: case NETDEV_REBOOT:
case NETDEV_GOING_DOWN: case NETDEV_GOING_DOWN:

View File

@ -53,22 +53,6 @@ static int sanitize_arg(const char *val, char *intf, int intf_len)
return len; return len;
} }
static void rxe_set_port_state(struct net_device *ndev)
{
struct rxe_dev *rxe = net_to_rxe(ndev);
bool is_up = netif_running(ndev) && netif_carrier_ok(ndev);
if (!rxe)
goto out;
if (is_up)
rxe_port_up(rxe);
else
rxe_port_down(rxe); /* down for unknown state */
out:
return;
}
static int rxe_param_set_add(const char *val, const struct kernel_param *kp) static int rxe_param_set_add(const char *val, const struct kernel_param *kp)
{ {
int len; int len;
@ -104,7 +88,7 @@ static int rxe_param_set_add(const char *val, const struct kernel_param *kp)
goto err; goto err;
} }
rxe_set_port_state(ndev); rxe_set_port_state(rxe);
dev_info(&rxe->ib_dev.dev, "added %s\n", intf); dev_info(&rxe->ib_dev.dev, "added %s\n", intf);
err: err:
if (ndev) if (ndev)