diff options
Diffstat (limited to 'drivers/net/ethernet/rocker/rocker.c')
-rw-r--r-- | drivers/net/ethernet/rocker/rocker.c | 64 |
1 files changed, 36 insertions, 28 deletions
diff --git a/drivers/net/ethernet/rocker/rocker.c b/drivers/net/ethernet/rocker/rocker.c index 223348d8cc07..bc5f27aa3131 100644 --- a/drivers/net/ethernet/rocker/rocker.c +++ b/drivers/net/ethernet/rocker/rocker.c | |||
@@ -4131,8 +4131,26 @@ static int rocker_port_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq, | |||
4131 | rocker_port->brport_flags, mask); | 4131 | rocker_port->brport_flags, mask); |
4132 | } | 4132 | } |
4133 | 4133 | ||
4134 | static int rocker_port_switch_parent_id_get(struct net_device *dev, | 4134 | static const struct net_device_ops rocker_port_netdev_ops = { |
4135 | struct netdev_phys_item_id *psid) | 4135 | .ndo_open = rocker_port_open, |
4136 | .ndo_stop = rocker_port_stop, | ||
4137 | .ndo_start_xmit = rocker_port_xmit, | ||
4138 | .ndo_set_mac_address = rocker_port_set_mac_address, | ||
4139 | .ndo_vlan_rx_add_vid = rocker_port_vlan_rx_add_vid, | ||
4140 | .ndo_vlan_rx_kill_vid = rocker_port_vlan_rx_kill_vid, | ||
4141 | .ndo_fdb_add = rocker_port_fdb_add, | ||
4142 | .ndo_fdb_del = rocker_port_fdb_del, | ||
4143 | .ndo_fdb_dump = rocker_port_fdb_dump, | ||
4144 | .ndo_bridge_setlink = rocker_port_bridge_setlink, | ||
4145 | .ndo_bridge_getlink = rocker_port_bridge_getlink, | ||
4146 | }; | ||
4147 | |||
4148 | /******************** | ||
4149 | * swdev interface | ||
4150 | ********************/ | ||
4151 | |||
4152 | static int rocker_port_swdev_parent_id_get(struct net_device *dev, | ||
4153 | struct netdev_phys_item_id *psid) | ||
4136 | { | 4154 | { |
4137 | struct rocker_port *rocker_port = netdev_priv(dev); | 4155 | struct rocker_port *rocker_port = netdev_priv(dev); |
4138 | struct rocker *rocker = rocker_port->rocker; | 4156 | struct rocker *rocker = rocker_port->rocker; |
@@ -4142,18 +4160,18 @@ static int rocker_port_switch_parent_id_get(struct net_device *dev, | |||
4142 | return 0; | 4160 | return 0; |
4143 | } | 4161 | } |
4144 | 4162 | ||
4145 | static int rocker_port_switch_port_stp_update(struct net_device *dev, u8 state) | 4163 | static int rocker_port_swdev_port_stp_update(struct net_device *dev, u8 state) |
4146 | { | 4164 | { |
4147 | struct rocker_port *rocker_port = netdev_priv(dev); | 4165 | struct rocker_port *rocker_port = netdev_priv(dev); |
4148 | 4166 | ||
4149 | return rocker_port_stp_update(rocker_port, state); | 4167 | return rocker_port_stp_update(rocker_port, state); |
4150 | } | 4168 | } |
4151 | 4169 | ||
4152 | static int rocker_port_switch_fib_ipv4_add(struct net_device *dev, | 4170 | static int rocker_port_swdev_fib_ipv4_add(struct net_device *dev, |
4153 | __be32 dst, int dst_len, | 4171 | __be32 dst, int dst_len, |
4154 | struct fib_info *fi, | 4172 | struct fib_info *fi, |
4155 | u8 tos, u8 type, | 4173 | u8 tos, u8 type, |
4156 | u32 nlflags, u32 tb_id) | 4174 | u32 nlflags, u32 tb_id) |
4157 | { | 4175 | { |
4158 | struct rocker_port *rocker_port = netdev_priv(dev); | 4176 | struct rocker_port *rocker_port = netdev_priv(dev); |
4159 | int flags = 0; | 4177 | int flags = 0; |
@@ -4162,10 +4180,10 @@ static int rocker_port_switch_fib_ipv4_add(struct net_device *dev, | |||
4162 | fi, tb_id, flags); | 4180 | fi, tb_id, flags); |
4163 | } | 4181 | } |
4164 | 4182 | ||
4165 | static int rocker_port_switch_fib_ipv4_del(struct net_device *dev, | 4183 | static int rocker_port_swdev_fib_ipv4_del(struct net_device *dev, |
4166 | __be32 dst, int dst_len, | 4184 | __be32 dst, int dst_len, |
4167 | struct fib_info *fi, | 4185 | struct fib_info *fi, |
4168 | u8 tos, u8 type, u32 tb_id) | 4186 | u8 tos, u8 type, u32 tb_id) |
4169 | { | 4187 | { |
4170 | struct rocker_port *rocker_port = netdev_priv(dev); | 4188 | struct rocker_port *rocker_port = netdev_priv(dev); |
4171 | int flags = ROCKER_OP_FLAG_REMOVE; | 4189 | int flags = ROCKER_OP_FLAG_REMOVE; |
@@ -4174,22 +4192,11 @@ static int rocker_port_switch_fib_ipv4_del(struct net_device *dev, | |||
4174 | fi, tb_id, flags); | 4192 | fi, tb_id, flags); |
4175 | } | 4193 | } |
4176 | 4194 | ||
4177 | static const struct net_device_ops rocker_port_netdev_ops = { | 4195 | static const struct swdev_ops rocker_port_swdev_ops = { |
4178 | .ndo_open = rocker_port_open, | 4196 | .swdev_parent_id_get = rocker_port_swdev_parent_id_get, |
4179 | .ndo_stop = rocker_port_stop, | 4197 | .swdev_port_stp_update = rocker_port_swdev_port_stp_update, |
4180 | .ndo_start_xmit = rocker_port_xmit, | 4198 | .swdev_fib_ipv4_add = rocker_port_swdev_fib_ipv4_add, |
4181 | .ndo_set_mac_address = rocker_port_set_mac_address, | 4199 | .swdev_fib_ipv4_del = rocker_port_swdev_fib_ipv4_del, |
4182 | .ndo_vlan_rx_add_vid = rocker_port_vlan_rx_add_vid, | ||
4183 | .ndo_vlan_rx_kill_vid = rocker_port_vlan_rx_kill_vid, | ||
4184 | .ndo_fdb_add = rocker_port_fdb_add, | ||
4185 | .ndo_fdb_del = rocker_port_fdb_del, | ||
4186 | .ndo_fdb_dump = rocker_port_fdb_dump, | ||
4187 | .ndo_bridge_setlink = rocker_port_bridge_setlink, | ||
4188 | .ndo_bridge_getlink = rocker_port_bridge_getlink, | ||
4189 | .ndo_switch_parent_id_get = rocker_port_switch_parent_id_get, | ||
4190 | .ndo_switch_port_stp_update = rocker_port_switch_port_stp_update, | ||
4191 | .ndo_switch_fib_ipv4_add = rocker_port_switch_fib_ipv4_add, | ||
4192 | .ndo_switch_fib_ipv4_del = rocker_port_switch_fib_ipv4_del, | ||
4193 | }; | 4200 | }; |
4194 | 4201 | ||
4195 | /******************** | 4202 | /******************** |
@@ -4544,6 +4551,7 @@ static int rocker_probe_port(struct rocker *rocker, unsigned int port_number) | |||
4544 | rocker_port_dev_addr_init(rocker, rocker_port); | 4551 | rocker_port_dev_addr_init(rocker, rocker_port); |
4545 | dev->netdev_ops = &rocker_port_netdev_ops; | 4552 | dev->netdev_ops = &rocker_port_netdev_ops; |
4546 | dev->ethtool_ops = &rocker_port_ethtool_ops; | 4553 | dev->ethtool_ops = &rocker_port_ethtool_ops; |
4554 | dev->swdev_ops = &rocker_port_swdev_ops; | ||
4547 | netif_napi_add(dev, &rocker_port->napi_tx, rocker_port_poll_tx, | 4555 | netif_napi_add(dev, &rocker_port->napi_tx, rocker_port_poll_tx, |
4548 | NAPI_POLL_WEIGHT); | 4556 | NAPI_POLL_WEIGHT); |
4549 | netif_napi_add(dev, &rocker_port->napi_rx, rocker_port_poll_rx, | 4557 | netif_napi_add(dev, &rocker_port->napi_rx, rocker_port_poll_rx, |