* [PATCH net-next 0/9] net: constify netdev->dev_addr
@ 2021-11-18 4:14 Jakub Kicinski
2021-11-18 4:14 ` [PATCH net-next 1/9] net: ax88796c: don't write to netdev->dev_addr directly Jakub Kicinski
` (8 more replies)
0 siblings, 9 replies; 20+ messages in thread
From: Jakub Kicinski @ 2021-11-18 4:14 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski
Take care of a few stragglers and make netdev->dev_addr const.
netdev->dev_addr can be held on the address tree like any other
address now.
Jakub Kicinski (9):
net: ax88796c: don't write to netdev->dev_addr directly
mlxsw: constify address in mlxsw_sp_port_dev_addr_set
wilc1000: copy address before calling wilc_set_mac_address
ipw2200: constify address in ipw_send_adapter_address
net: constify netdev->dev_addr
net: unexport dev_addr_init() & dev_addr_flush()
dev_addr: add a modification check
dev_addr_list: put the first addr on the tree
net: kunit: add a test for dev_addr_lists
drivers/net/ethernet/asix/ax88796c_main.c | 18 +-
.../net/ethernet/mellanox/mlxsw/spectrum.c | 2 +-
drivers/net/wireless/intel/ipw2x00/ipw2200.c | 2 +-
.../net/wireless/microchip/wilc1000/netdev.c | 6 +-
include/linux/netdevice.h | 17 +-
net/Kconfig | 5 +
net/core/Makefile | 2 +
net/core/dev.c | 1 +
net/core/dev_addr_lists.c | 93 ++++---
net/core/dev_addr_lists_test.c | 234 ++++++++++++++++++
10 files changed, 328 insertions(+), 52 deletions(-)
create mode 100644 net/core/dev_addr_lists_test.c
--
2.31.1
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH net-next 1/9] net: ax88796c: don't write to netdev->dev_addr directly
2021-11-18 4:14 [PATCH net-next 0/9] net: constify netdev->dev_addr Jakub Kicinski
@ 2021-11-18 4:14 ` Jakub Kicinski
[not found] ` <CGME20211118121026eucas1p2b113b6be5644d9c2038519feecba51f5@eucas1p2.samsung.com>
2021-11-18 4:14 ` [PATCH net-next 2/9] mlxsw: constify address in mlxsw_sp_port_dev_addr_set Jakub Kicinski
` (7 subsequent siblings)
8 siblings, 1 reply; 20+ messages in thread
From: Jakub Kicinski @ 2021-11-18 4:14 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski, l.stelmach
The future is here, convert the new driver as we are about
to make netdev->dev_addr const.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: l.stelmach@samsung.com
---
drivers/net/ethernet/asix/ax88796c_main.c | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/drivers/net/ethernet/asix/ax88796c_main.c b/drivers/net/ethernet/asix/ax88796c_main.c
index e230d8d0ff73..e7a9f9863258 100644
--- a/drivers/net/ethernet/asix/ax88796c_main.c
+++ b/drivers/net/ethernet/asix/ax88796c_main.c
@@ -144,12 +144,13 @@ static void ax88796c_set_mac_addr(struct net_device *ndev)
static void ax88796c_load_mac_addr(struct net_device *ndev)
{
struct ax88796c_device *ax_local = to_ax88796c_device(ndev);
+ u8 addr[ETH_ALEN];
u16 temp;
lockdep_assert_held(&ax_local->spi_lock);
/* Try the device tree first */
- if (!eth_platform_get_mac_address(&ax_local->spi->dev, ndev->dev_addr) &&
+ if (!platform_get_ethdev_address(&ax_local->spi->dev, ndev) &&
is_valid_ether_addr(ndev->dev_addr)) {
if (netif_msg_probe(ax_local))
dev_info(&ax_local->spi->dev,
@@ -159,18 +160,19 @@ static void ax88796c_load_mac_addr(struct net_device *ndev)
/* Read the MAC address from AX88796C */
temp = AX_READ(&ax_local->ax_spi, P3_MACASR0);
- ndev->dev_addr[5] = (u8)temp;
- ndev->dev_addr[4] = (u8)(temp >> 8);
+ addr[5] = (u8)temp;
+ addr[4] = (u8)(temp >> 8);
temp = AX_READ(&ax_local->ax_spi, P3_MACASR1);
- ndev->dev_addr[3] = (u8)temp;
- ndev->dev_addr[2] = (u8)(temp >> 8);
+ addr[3] = (u8)temp;
+ addr[2] = (u8)(temp >> 8);
temp = AX_READ(&ax_local->ax_spi, P3_MACASR2);
- ndev->dev_addr[1] = (u8)temp;
- ndev->dev_addr[0] = (u8)(temp >> 8);
+ addr[1] = (u8)temp;
+ addr[0] = (u8)(temp >> 8);
- if (is_valid_ether_addr(ndev->dev_addr)) {
+ if (is_valid_ether_addr(addr)) {
+ eth_hw_addr_set(ndev, addr);
if (netif_msg_probe(ax_local))
dev_info(&ax_local->spi->dev,
"MAC address read from ASIX chip\n");
--
2.31.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH net-next 2/9] mlxsw: constify address in mlxsw_sp_port_dev_addr_set
2021-11-18 4:14 [PATCH net-next 0/9] net: constify netdev->dev_addr Jakub Kicinski
2021-11-18 4:14 ` [PATCH net-next 1/9] net: ax88796c: don't write to netdev->dev_addr directly Jakub Kicinski
@ 2021-11-18 4:14 ` Jakub Kicinski
2021-11-18 7:27 ` Ido Schimmel
2021-11-18 4:14 ` [PATCH net-next 3/9] wilc1000: copy address before calling wilc_set_mac_address Jakub Kicinski
` (6 subsequent siblings)
8 siblings, 1 reply; 20+ messages in thread
From: Jakub Kicinski @ 2021-11-18 4:14 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski, jiri, idosch
Argument comes from netdev->dev_addr directly, it needs a const.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: jiri@nvidia.com
CC: idosch@nvidia.com
---
drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
index 5925db386b1b..4ce07f9905f6 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
@@ -303,7 +303,7 @@ int mlxsw_sp_port_admin_status_set(struct mlxsw_sp_port *mlxsw_sp_port,
}
static int mlxsw_sp_port_dev_addr_set(struct mlxsw_sp_port *mlxsw_sp_port,
- unsigned char *addr)
+ const unsigned char *addr)
{
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
char ppad_pl[MLXSW_REG_PPAD_LEN];
--
2.31.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH net-next 3/9] wilc1000: copy address before calling wilc_set_mac_address
2021-11-18 4:14 [PATCH net-next 0/9] net: constify netdev->dev_addr Jakub Kicinski
2021-11-18 4:14 ` [PATCH net-next 1/9] net: ax88796c: don't write to netdev->dev_addr directly Jakub Kicinski
2021-11-18 4:14 ` [PATCH net-next 2/9] mlxsw: constify address in mlxsw_sp_port_dev_addr_set Jakub Kicinski
@ 2021-11-18 4:14 ` Jakub Kicinski
2021-11-18 5:35 ` Kalle Valo
2021-11-18 4:14 ` [PATCH net-next 4/9] ipw2200: constify address in ipw_send_adapter_address Jakub Kicinski
` (5 subsequent siblings)
8 siblings, 1 reply; 20+ messages in thread
From: Jakub Kicinski @ 2021-11-18 4:14 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski, ajay.kathat, claudiu.beznea, kvalo
wilc_set_mac_address() calls IO routines which don't guarantee
the pointer won't be written to. Make a copy.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: ajay.kathat@microchip.com
CC: claudiu.beznea@microchip.com
CC: kvalo@codeaurora.org
---
drivers/net/wireless/microchip/wilc1000/netdev.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/microchip/wilc1000/netdev.c b/drivers/net/wireless/microchip/wilc1000/netdev.c
index 690572e01a2a..4712cd7dff9f 100644
--- a/drivers/net/wireless/microchip/wilc1000/netdev.c
+++ b/drivers/net/wireless/microchip/wilc1000/netdev.c
@@ -574,6 +574,7 @@ static int wilc_mac_open(struct net_device *ndev)
struct wilc *wl = vif->wilc;
int ret = 0;
struct mgmt_frame_regs mgmt_regs = {};
+ u8 addr[ETH_ALEN] __aligned(2);
if (!wl || !wl->dev) {
netdev_err(ndev, "device not ready\n");
@@ -596,10 +597,9 @@ static int wilc_mac_open(struct net_device *ndev)
vif->idx);
if (is_valid_ether_addr(ndev->dev_addr)) {
- wilc_set_mac_address(vif, ndev->dev_addr);
+ ether_addr_copy(addr, ndev->dev_addr);
+ wilc_set_mac_address(vif, addr);
} else {
- u8 addr[ETH_ALEN];
-
wilc_get_mac_address(vif, addr);
eth_hw_addr_set(ndev, addr);
}
--
2.31.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH net-next 4/9] ipw2200: constify address in ipw_send_adapter_address
2021-11-18 4:14 [PATCH net-next 0/9] net: constify netdev->dev_addr Jakub Kicinski
` (2 preceding siblings ...)
2021-11-18 4:14 ` [PATCH net-next 3/9] wilc1000: copy address before calling wilc_set_mac_address Jakub Kicinski
@ 2021-11-18 4:14 ` Jakub Kicinski
2021-11-18 5:36 ` Kalle Valo
2021-11-18 4:14 ` [PATCH net-next 5/9] net: constify netdev->dev_addr Jakub Kicinski
` (4 subsequent siblings)
8 siblings, 1 reply; 20+ messages in thread
From: Jakub Kicinski @ 2021-11-18 4:14 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski, stas.yakovlev, kvalo
Add const to the address param of ipw_send_adapter_address()
all the functions down the chain have already been changed.
Not sure how I lost this in the rebase.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: stas.yakovlev@gmail.com
CC: kvalo@codeaurora.org
---
drivers/net/wireless/intel/ipw2x00/ipw2200.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/wireless/intel/ipw2x00/ipw2200.c b/drivers/net/wireless/intel/ipw2x00/ipw2200.c
index 23037bfc9e4c..5727c7c00a28 100644
--- a/drivers/net/wireless/intel/ipw2x00/ipw2200.c
+++ b/drivers/net/wireless/intel/ipw2x00/ipw2200.c
@@ -2303,7 +2303,7 @@ static int ipw_send_ssid(struct ipw_priv *priv, u8 * ssid, int len)
ssid);
}
-static int ipw_send_adapter_address(struct ipw_priv *priv, u8 * mac)
+static int ipw_send_adapter_address(struct ipw_priv *priv, const u8 * mac)
{
if (!priv || !mac) {
IPW_ERROR("Invalid args\n");
--
2.31.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH net-next 5/9] net: constify netdev->dev_addr
2021-11-18 4:14 [PATCH net-next 0/9] net: constify netdev->dev_addr Jakub Kicinski
` (3 preceding siblings ...)
2021-11-18 4:14 ` [PATCH net-next 4/9] ipw2200: constify address in ipw_send_adapter_address Jakub Kicinski
@ 2021-11-18 4:14 ` Jakub Kicinski
2021-11-18 6:15 ` kernel test robot
` (2 more replies)
2021-11-18 4:14 ` [PATCH net-next 6/9] net: unexport dev_addr_init() & dev_addr_flush() Jakub Kicinski
` (3 subsequent siblings)
8 siblings, 3 replies; 20+ messages in thread
From: Jakub Kicinski @ 2021-11-18 4:14 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski
Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
of VLANs...") introduced a rbtree for faster Ethernet address look
up. We converted all users to make modifications via appropriate
helpers, make netdev->dev_addr const.
The update helpers need to upcast from the buffer to
struct netdev_hw_addr.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
include/linux/netdevice.h | 14 +++++---------
net/core/dev_addr_lists.c | 10 ++++++++++
2 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 4f4a299e92de..2462195784a9 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -2117,7 +2117,7 @@ struct net_device {
* Cache lines mostly used on receive path (including eth_type_trans())
*/
/* Interface address info used in eth_type_trans() */
- unsigned char *dev_addr;
+ const unsigned char *dev_addr;
struct netdev_rx_queue *_rx;
unsigned int num_rx_queues;
@@ -4268,10 +4268,13 @@ void __hw_addr_unsync_dev(struct netdev_hw_addr_list *list,
void __hw_addr_init(struct netdev_hw_addr_list *list);
/* Functions used for device addresses handling */
+void dev_addr_mod(struct net_device *dev, unsigned int offset,
+ const void *addr, size_t len);
+
static inline void
__dev_addr_set(struct net_device *dev, const void *addr, size_t len)
{
- memcpy(dev->dev_addr, addr, len);
+ dev_addr_mod(dev, 0, addr, len);
}
static inline void dev_addr_set(struct net_device *dev, const u8 *addr)
@@ -4279,13 +4282,6 @@ static inline void dev_addr_set(struct net_device *dev, const u8 *addr)
__dev_addr_set(dev, addr, dev->addr_len);
}
-static inline void
-dev_addr_mod(struct net_device *dev, unsigned int offset,
- const void *addr, size_t len)
-{
- memcpy(&dev->dev_addr[offset], addr, len);
-}
-
int dev_addr_add(struct net_device *dev, const unsigned char *addr,
unsigned char addr_type);
int dev_addr_del(struct net_device *dev, const unsigned char *addr,
diff --git a/net/core/dev_addr_lists.c b/net/core/dev_addr_lists.c
index f0cb38344126..ae8b1ef00fec 100644
--- a/net/core/dev_addr_lists.c
+++ b/net/core/dev_addr_lists.c
@@ -549,6 +549,16 @@ int dev_addr_init(struct net_device *dev)
}
EXPORT_SYMBOL(dev_addr_init);
+void dev_addr_mod(struct net_device *dev, unsigned int offset,
+ const void *addr, size_t len)
+{
+ struct netdev_hw_addr *ha;
+
+ ha = container_of(dev->dev_addr, struct netdev_hw_addr, addr[0]);
+ memcpy(&ha->addr[offset], addr, len);
+}
+EXPORT_SYMBOL(dev_addr_mod);
+
/**
* dev_addr_add - Add a device address
* @dev: device
--
2.31.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH net-next 6/9] net: unexport dev_addr_init() & dev_addr_flush()
2021-11-18 4:14 [PATCH net-next 0/9] net: constify netdev->dev_addr Jakub Kicinski
` (4 preceding siblings ...)
2021-11-18 4:14 ` [PATCH net-next 5/9] net: constify netdev->dev_addr Jakub Kicinski
@ 2021-11-18 4:14 ` Jakub Kicinski
2021-11-18 4:14 ` [PATCH net-next 7/9] dev_addr: add a modification check Jakub Kicinski
` (2 subsequent siblings)
8 siblings, 0 replies; 20+ messages in thread
From: Jakub Kicinski @ 2021-11-18 4:14 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski
There are no module callers in-tree and it's hard to justify
why anyone would init or flush addresses of a netdev (note
the flush is more of a destructor, it frees netdev->dev_addr).
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
net/core/dev_addr_lists.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/net/core/dev_addr_lists.c b/net/core/dev_addr_lists.c
index ae8b1ef00fec..a23a83ac18e5 100644
--- a/net/core/dev_addr_lists.c
+++ b/net/core/dev_addr_lists.c
@@ -513,7 +513,6 @@ void dev_addr_flush(struct net_device *dev)
__hw_addr_flush(&dev->dev_addrs);
dev->dev_addr = NULL;
}
-EXPORT_SYMBOL(dev_addr_flush);
/**
* dev_addr_init - Init device address list
@@ -547,7 +546,6 @@ int dev_addr_init(struct net_device *dev)
}
return err;
}
-EXPORT_SYMBOL(dev_addr_init);
void dev_addr_mod(struct net_device *dev, unsigned int offset,
const void *addr, size_t len)
--
2.31.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH net-next 7/9] dev_addr: add a modification check
2021-11-18 4:14 [PATCH net-next 0/9] net: constify netdev->dev_addr Jakub Kicinski
` (5 preceding siblings ...)
2021-11-18 4:14 ` [PATCH net-next 6/9] net: unexport dev_addr_init() & dev_addr_flush() Jakub Kicinski
@ 2021-11-18 4:14 ` Jakub Kicinski
2021-11-18 4:15 ` [PATCH net-next 8/9] dev_addr_list: put the first addr on the tree Jakub Kicinski
2021-11-18 4:15 ` [PATCH net-next 9/9] net: kunit: add a test for dev_addr_lists Jakub Kicinski
8 siblings, 0 replies; 20+ messages in thread
From: Jakub Kicinski @ 2021-11-18 4:14 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski
netdev->dev_addr should only be modified via helpers,
but someone may be casting off the const. Add a runtime
check to catch abuses.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
include/linux/netdevice.h | 3 +++
net/core/dev.c | 1 +
net/core/dev_addr_lists.c | 19 +++++++++++++++++++
3 files changed, 23 insertions(+)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 2462195784a9..b2ae8b9e04e4 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -2268,6 +2268,8 @@ struct net_device {
/* protected by rtnl_lock */
struct bpf_xdp_entity xdp_state[__MAX_XDP_MODE];
+
+ u8 dev_addr_shadow[MAX_ADDR_LEN];
};
#define to_net_dev(d) container_of(d, struct net_device, dev)
@@ -4288,6 +4290,7 @@ int dev_addr_del(struct net_device *dev, const unsigned char *addr,
unsigned char addr_type);
void dev_addr_flush(struct net_device *dev);
int dev_addr_init(struct net_device *dev);
+void dev_addr_check(struct net_device *dev);
/* Functions used for unicast addresses handling */
int dev_uc_add(struct net_device *dev, const unsigned char *addr);
diff --git a/net/core/dev.c b/net/core/dev.c
index 92c9258cbf28..9219e319e901 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1377,6 +1377,7 @@ static int __dev_open(struct net_device *dev, struct netlink_ext_ack *extack)
int ret;
ASSERT_RTNL();
+ dev_addr_check(dev);
if (!netif_device_present(dev)) {
/* may be detached because parent is runtime-suspended */
diff --git a/net/core/dev_addr_lists.c b/net/core/dev_addr_lists.c
index a23a83ac18e5..969942734951 100644
--- a/net/core/dev_addr_lists.c
+++ b/net/core/dev_addr_lists.c
@@ -498,6 +498,21 @@ EXPORT_SYMBOL(__hw_addr_init);
* Device addresses handling functions
*/
+/* Check that netdev->dev_addr is not written to directly as this would
+ * break the rbtree layout. All changes should go thru dev_addr_set() and co.
+ * Remove this check in mid-2024.
+ */
+void dev_addr_check(struct net_device *dev)
+{
+ if (!memcmp(dev->dev_addr, dev->dev_addr_shadow, MAX_ADDR_LEN))
+ return;
+
+ netdev_warn(dev, "Current addr: %*ph\n", MAX_ADDR_LEN, dev->dev_addr);
+ netdev_warn(dev, "Expected addr: %*ph\n",
+ MAX_ADDR_LEN, dev->dev_addr_shadow);
+ netdev_WARN(dev, "Incorrect netdev->dev_addr\n");
+}
+
/**
* dev_addr_flush - Flush device address list
* @dev: device
@@ -509,6 +524,7 @@ EXPORT_SYMBOL(__hw_addr_init);
void dev_addr_flush(struct net_device *dev)
{
/* rtnl_mutex must be held here */
+ dev_addr_check(dev);
__hw_addr_flush(&dev->dev_addrs);
dev->dev_addr = NULL;
@@ -552,8 +568,11 @@ void dev_addr_mod(struct net_device *dev, unsigned int offset,
{
struct netdev_hw_addr *ha;
+ dev_addr_check(dev);
+
ha = container_of(dev->dev_addr, struct netdev_hw_addr, addr[0]);
memcpy(&ha->addr[offset], addr, len);
+ memcpy(&dev->dev_addr_shadow[offset], addr, len);
}
EXPORT_SYMBOL(dev_addr_mod);
--
2.31.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH net-next 8/9] dev_addr_list: put the first addr on the tree
2021-11-18 4:14 [PATCH net-next 0/9] net: constify netdev->dev_addr Jakub Kicinski
` (6 preceding siblings ...)
2021-11-18 4:14 ` [PATCH net-next 7/9] dev_addr: add a modification check Jakub Kicinski
@ 2021-11-18 4:15 ` Jakub Kicinski
2021-11-18 4:15 ` [PATCH net-next 9/9] net: kunit: add a test for dev_addr_lists Jakub Kicinski
8 siblings, 0 replies; 20+ messages in thread
From: Jakub Kicinski @ 2021-11-18 4:15 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski
Since all netdev->dev_addr modifications go via dev_addr_mod()
we can put it on the list. When address is change remove it
and add it back.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
net/core/dev_addr_lists.c | 62 +++++++++++++++++++++------------------
1 file changed, 34 insertions(+), 28 deletions(-)
diff --git a/net/core/dev_addr_lists.c b/net/core/dev_addr_lists.c
index 969942734951..bead38ca50bd 100644
--- a/net/core/dev_addr_lists.c
+++ b/net/core/dev_addr_lists.c
@@ -16,6 +16,35 @@
* General list handling functions
*/
+static int __hw_addr_insert(struct netdev_hw_addr_list *list,
+ struct netdev_hw_addr *new, int addr_len)
+{
+ struct rb_node **ins_point = &list->tree.rb_node, *parent = NULL;
+ struct netdev_hw_addr *ha;
+
+ while (*ins_point) {
+ int diff;
+
+ ha = rb_entry(*ins_point, struct netdev_hw_addr, node);
+ diff = memcmp(new->addr, ha->addr, addr_len);
+ if (diff == 0)
+ diff = memcmp(&new->type, &ha->type, sizeof(new->type));
+
+ parent = *ins_point;
+ if (diff < 0)
+ ins_point = &parent->rb_left;
+ else if (diff > 0)
+ ins_point = &parent->rb_right;
+ else
+ return -EEXIST;
+ }
+
+ rb_link_node_rcu(&new->node, parent, ins_point);
+ rb_insert_color(&new->node, &list->tree);
+
+ return 0;
+}
+
static struct netdev_hw_addr*
__hw_addr_create(const unsigned char *addr, int addr_len,
unsigned char addr_type, bool global, bool sync)
@@ -50,11 +79,6 @@ static int __hw_addr_add_ex(struct netdev_hw_addr_list *list,
if (addr_len > MAX_ADDR_LEN)
return -EINVAL;
- ha = list_first_entry(&list->list, struct netdev_hw_addr, list);
- if (ha && !memcmp(addr, ha->addr, addr_len) &&
- (!addr_type || addr_type == ha->type))
- goto found_it;
-
while (*ins_point) {
int diff;
@@ -69,7 +93,6 @@ static int __hw_addr_add_ex(struct netdev_hw_addr_list *list,
} else if (diff > 0) {
ins_point = &parent->rb_right;
} else {
-found_it:
if (exclusive)
return -EEXIST;
if (global) {
@@ -94,16 +117,8 @@ static int __hw_addr_add_ex(struct netdev_hw_addr_list *list,
if (!ha)
return -ENOMEM;
- /* The first address in dev->dev_addrs is pointed to by dev->dev_addr
- * and mutated freely by device drivers and netdev ops, so if we insert
- * it into the tree we'll end up with an invalid rbtree.
- */
- if (list->count > 0) {
- rb_link_node(&ha->node, parent, ins_point);
- rb_insert_color(&ha->node, &list->tree);
- } else {
- RB_CLEAR_NODE(&ha->node);
- }
+ rb_link_node(&ha->node, parent, ins_point);
+ rb_insert_color(&ha->node, &list->tree);
list_add_tail_rcu(&ha->list, &list->list);
list->count++;
@@ -138,8 +153,7 @@ static int __hw_addr_del_entry(struct netdev_hw_addr_list *list,
if (--ha->refcount)
return 0;
- if (!RB_EMPTY_NODE(&ha->node))
- rb_erase(&ha->node, &list->tree);
+ rb_erase(&ha->node, &list->tree);
list_del_rcu(&ha->list);
kfree_rcu(ha, rcu_head);
@@ -151,18 +165,8 @@ static struct netdev_hw_addr *__hw_addr_lookup(struct netdev_hw_addr_list *list,
const unsigned char *addr, int addr_len,
unsigned char addr_type)
{
- struct netdev_hw_addr *ha;
struct rb_node *node;
- /* The first address isn't inserted into the tree because in the dev->dev_addrs
- * list it's the address pointed to by dev->dev_addr which is freely mutated
- * in place, so we need to check it separately.
- */
- ha = list_first_entry(&list->list, struct netdev_hw_addr, list);
- if (ha && !memcmp(addr, ha->addr, addr_len) &&
- (!addr_type || addr_type == ha->type))
- return ha;
-
node = list->tree.rb_node;
while (node) {
@@ -571,8 +575,10 @@ void dev_addr_mod(struct net_device *dev, unsigned int offset,
dev_addr_check(dev);
ha = container_of(dev->dev_addr, struct netdev_hw_addr, addr[0]);
+ rb_erase(&ha->node, &dev->dev_addrs.tree);
memcpy(&ha->addr[offset], addr, len);
memcpy(&dev->dev_addr_shadow[offset], addr, len);
+ WARN_ON(__hw_addr_insert(&dev->dev_addrs, ha, dev->addr_len));
}
EXPORT_SYMBOL(dev_addr_mod);
--
2.31.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH net-next 9/9] net: kunit: add a test for dev_addr_lists
2021-11-18 4:14 [PATCH net-next 0/9] net: constify netdev->dev_addr Jakub Kicinski
` (7 preceding siblings ...)
2021-11-18 4:15 ` [PATCH net-next 8/9] dev_addr_list: put the first addr on the tree Jakub Kicinski
@ 2021-11-18 4:15 ` Jakub Kicinski
8 siblings, 0 replies; 20+ messages in thread
From: Jakub Kicinski @ 2021-11-18 4:15 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski
Add a KUnit test for the dev_addr API.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
net/Kconfig | 5 +
net/core/Makefile | 2 +
net/core/dev_addr_lists_test.c | 234 +++++++++++++++++++++++++++++++++
3 files changed, 241 insertions(+)
create mode 100644 net/core/dev_addr_lists_test.c
diff --git a/net/Kconfig b/net/Kconfig
index 074472dfa94a..8a1f9d0287de 100644
--- a/net/Kconfig
+++ b/net/Kconfig
@@ -455,4 +455,9 @@ config ETHTOOL_NETLINK
netlink. It provides better extensibility and some new features,
e.g. notification messages.
+config NETDEV_ADDR_LIST_TEST
+ tristate "Unit tests for device address list"
+ default KUNIT_ALL_TESTS
+ depends on KUNIT
+
endif # if NET
diff --git a/net/core/Makefile b/net/core/Makefile
index 6bdcb2cafed8..a8e4f737692b 100644
--- a/net/core/Makefile
+++ b/net/core/Makefile
@@ -13,6 +13,8 @@ obj-y += dev.o dev_addr_lists.o dst.o netevent.o \
sock_diag.o dev_ioctl.o tso.o sock_reuseport.o \
fib_notifier.o xdp.o flow_offload.o gro.o
+obj-$(CONFIG_NETDEV_ADDR_LIST_TEST) += dev_addr_lists_test.o
+
obj-y += net-sysfs.o
obj-$(CONFIG_PAGE_POOL) += page_pool.o
obj-$(CONFIG_PROC_FS) += net-procfs.o
diff --git a/net/core/dev_addr_lists_test.c b/net/core/dev_addr_lists_test.c
new file mode 100644
index 000000000000..b4faad5c98b2
--- /dev/null
+++ b/net/core/dev_addr_lists_test.c
@@ -0,0 +1,234 @@
+#include <kunit/test.h>
+#include <linux/etherdevice.h>
+#include <linux/netdevice.h>
+#include <linux/rtnetlink.h>
+
+static const struct net_device_ops dummy_netdev_ops = {
+};
+
+struct dev_addr_test_priv {
+ u32 addr_seen;
+};
+
+static int dev_addr_test_sync(struct net_device *netdev, const unsigned char *a)
+{
+ struct dev_addr_test_priv *datp = netdev_priv(netdev);
+
+ if (a[0] < 31 && !memchr_inv(a, a[0], ETH_ALEN))
+ datp->addr_seen |= 1 << a[0];
+ return 0;
+}
+
+static int dev_addr_test_unsync(struct net_device *netdev,
+ const unsigned char *a)
+{
+ struct dev_addr_test_priv *datp = netdev_priv(netdev);
+
+ if (a[0] < 31 && !memchr_inv(a, a[0], ETH_ALEN))
+ datp->addr_seen &= ~(1 << a[0]);
+ return 0;
+}
+
+static int dev_addr_test_init(struct kunit *test)
+{
+ struct dev_addr_test_priv *datp;
+ struct net_device *netdev;
+ int err;
+
+ netdev = alloc_etherdev(sizeof(*datp));
+ KUNIT_ASSERT_TRUE(test, netdev != NULL);
+
+ test->priv = netdev;
+ netdev->netdev_ops = &dummy_netdev_ops;
+
+ err = register_netdev(netdev);
+ if (err) {
+ free_netdev(netdev);
+ KUNIT_FAIL(test, "Can't register netdev %d", err);
+ }
+
+ rtnl_lock();
+ return 0;
+}
+
+static void dev_addr_test_exit(struct kunit *test)
+{
+ struct net_device *netdev = test->priv;
+
+ rtnl_unlock();
+ unregister_netdev(netdev);
+ free_netdev(netdev);
+}
+
+static void dev_addr_test_basic(struct kunit *test)
+{
+ struct net_device *netdev = test->priv;
+ u8 addr[ETH_ALEN];
+
+ KUNIT_EXPECT_TRUE(test, netdev->dev_addr != NULL);
+
+ memset(addr, 2, sizeof(addr));
+ eth_hw_addr_set(netdev, addr);
+ KUNIT_EXPECT_EQ(test, 0, memcmp(netdev->dev_addr, addr, sizeof(addr)));
+
+ memset(addr, 3, sizeof(addr));
+ dev_addr_set(netdev, addr);
+ KUNIT_EXPECT_EQ(test, 0, memcmp(netdev->dev_addr, addr, sizeof(addr)));
+}
+
+static void dev_addr_test_sync_one(struct kunit *test)
+{
+ struct net_device *netdev = test->priv;
+ struct dev_addr_test_priv *datp;
+ u8 addr[ETH_ALEN];
+
+ datp = netdev_priv(netdev);
+
+ memset(addr, 1, sizeof(addr));
+ eth_hw_addr_set(netdev, addr);
+
+ __hw_addr_sync_dev(&netdev->dev_addrs, netdev, dev_addr_test_sync,
+ dev_addr_test_unsync);
+ KUNIT_EXPECT_EQ(test, 2, datp->addr_seen);
+
+ memset(addr, 2, sizeof(addr));
+ eth_hw_addr_set(netdev, addr);
+
+ datp->addr_seen = 0;
+ __hw_addr_sync_dev(&netdev->dev_addrs, netdev, dev_addr_test_sync,
+ dev_addr_test_unsync);
+ /* It's not going to sync anything because the main address is
+ * considered synced and we overwrite in place.
+ */
+ KUNIT_EXPECT_EQ(test, 0, datp->addr_seen);
+}
+
+static void dev_addr_test_add_del(struct kunit *test)
+{
+ struct net_device *netdev = test->priv;
+ struct dev_addr_test_priv *datp;
+ u8 addr[ETH_ALEN];
+ int i;
+
+ datp = netdev_priv(netdev);
+
+ for (i = 1; i < 4; i++) {
+ memset(addr, i, sizeof(addr));
+ KUNIT_EXPECT_EQ(test, 0, dev_addr_add(netdev, addr,
+ NETDEV_HW_ADDR_T_LAN));
+ }
+ /* Add 3 again */
+ KUNIT_EXPECT_EQ(test, 0, dev_addr_add(netdev, addr,
+ NETDEV_HW_ADDR_T_LAN));
+
+ __hw_addr_sync_dev(&netdev->dev_addrs, netdev, dev_addr_test_sync,
+ dev_addr_test_unsync);
+ KUNIT_EXPECT_EQ(test, 0xf, datp->addr_seen);
+
+ KUNIT_EXPECT_EQ(test, 0, dev_addr_del(netdev, addr,
+ NETDEV_HW_ADDR_T_LAN));
+
+ __hw_addr_sync_dev(&netdev->dev_addrs, netdev, dev_addr_test_sync,
+ dev_addr_test_unsync);
+ KUNIT_EXPECT_EQ(test, 0xf, datp->addr_seen);
+
+ for (i = 1; i < 4; i++) {
+ memset(addr, i, sizeof(addr));
+ KUNIT_EXPECT_EQ(test, 0, dev_addr_del(netdev, addr,
+ NETDEV_HW_ADDR_T_LAN));
+ }
+
+ __hw_addr_sync_dev(&netdev->dev_addrs, netdev, dev_addr_test_sync,
+ dev_addr_test_unsync);
+ KUNIT_EXPECT_EQ(test, 1, datp->addr_seen);
+}
+
+static void dev_addr_test_del_main(struct kunit *test)
+{
+ struct net_device *netdev = test->priv;
+ u8 addr[ETH_ALEN];
+
+ memset(addr, 1, sizeof(addr));
+ eth_hw_addr_set(netdev, addr);
+
+ KUNIT_EXPECT_EQ(test, -ENOENT, dev_addr_del(netdev, addr,
+ NETDEV_HW_ADDR_T_LAN));
+ KUNIT_EXPECT_EQ(test, 0, dev_addr_add(netdev, addr,
+ NETDEV_HW_ADDR_T_LAN));
+ KUNIT_EXPECT_EQ(test, 0, dev_addr_del(netdev, addr,
+ NETDEV_HW_ADDR_T_LAN));
+ KUNIT_EXPECT_EQ(test, -ENOENT, dev_addr_del(netdev, addr,
+ NETDEV_HW_ADDR_T_LAN));
+}
+
+static void dev_addr_test_add_set(struct kunit *test)
+{
+ struct net_device *netdev = test->priv;
+ struct dev_addr_test_priv *datp;
+ u8 addr[ETH_ALEN];
+ int i;
+
+ datp = netdev_priv(netdev);
+
+ /* There is no external API like dev_addr_add_excl(),
+ * so shuffle the tree a little bit and exploit aliasing.
+ */
+ for (i = 1; i < 16; i++) {
+ memset(addr, i, sizeof(addr));
+ KUNIT_EXPECT_EQ(test, 0, dev_addr_add(netdev, addr,
+ NETDEV_HW_ADDR_T_LAN));
+ }
+
+ memset(addr, i, sizeof(addr));
+ eth_hw_addr_set(netdev, addr);
+ KUNIT_EXPECT_EQ(test, 0, dev_addr_add(netdev, addr,
+ NETDEV_HW_ADDR_T_LAN));
+ memset(addr, 0, sizeof(addr));
+ eth_hw_addr_set(netdev, addr);
+
+ __hw_addr_sync_dev(&netdev->dev_addrs, netdev, dev_addr_test_sync,
+ dev_addr_test_unsync);
+ KUNIT_EXPECT_EQ(test, 0xffff, datp->addr_seen);
+}
+
+static void dev_addr_test_add_excl(struct kunit *test)
+{
+ struct net_device *netdev = test->priv;
+ u8 addr[ETH_ALEN];
+ int i;
+
+ for (i = 0; i < 10; i++) {
+ memset(addr, i, sizeof(addr));
+ KUNIT_EXPECT_EQ(test, 0, dev_uc_add_excl(netdev, addr));
+ }
+ KUNIT_EXPECT_EQ(test, -EEXIST, dev_uc_add_excl(netdev, addr));
+
+ for (i = 0; i < 10; i += 2) {
+ memset(addr, i, sizeof(addr));
+ KUNIT_EXPECT_EQ(test, 0, dev_uc_del(netdev, addr));
+ }
+ for (i = 1; i < 10; i += 2) {
+ memset(addr, i, sizeof(addr));
+ KUNIT_EXPECT_EQ(test, -EEXIST, dev_uc_add_excl(netdev, addr));
+ }
+}
+
+static struct kunit_case dev_addr_test_cases[] = {
+ KUNIT_CASE(dev_addr_test_basic),
+ KUNIT_CASE(dev_addr_test_sync_one),
+ KUNIT_CASE(dev_addr_test_add_del),
+ KUNIT_CASE(dev_addr_test_del_main),
+ KUNIT_CASE(dev_addr_test_add_set),
+ KUNIT_CASE(dev_addr_test_add_excl),
+ {}
+};
+
+static struct kunit_suite dev_addr_test_suite = {
+ .name = "dev-addr-list-test",
+ .test_cases = dev_addr_test_cases,
+ .init = dev_addr_test_init,
+ .exit = dev_addr_test_exit,
+};
+kunit_test_suite(dev_addr_test_suite);
+
+MODULE_LICENSE("GPL");
--
2.31.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH net-next 3/9] wilc1000: copy address before calling wilc_set_mac_address
2021-11-18 4:14 ` [PATCH net-next 3/9] wilc1000: copy address before calling wilc_set_mac_address Jakub Kicinski
@ 2021-11-18 5:35 ` Kalle Valo
0 siblings, 0 replies; 20+ messages in thread
From: Kalle Valo @ 2021-11-18 5:35 UTC (permalink / raw)
To: Jakub Kicinski; +Cc: davem, netdev, ajay.kathat, claudiu.beznea, linux-wireless
Jakub Kicinski <kuba@kernel.org> writes:
> wilc_set_mac_address() calls IO routines which don't guarantee
> the pointer won't be written to. Make a copy.
>
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Acked-by: Kalle Valo <kvalo@codeaurora.org>
--
https://patchwork.kernel.org/project/linux-wireless/list/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH net-next 4/9] ipw2200: constify address in ipw_send_adapter_address
2021-11-18 4:14 ` [PATCH net-next 4/9] ipw2200: constify address in ipw_send_adapter_address Jakub Kicinski
@ 2021-11-18 5:36 ` Kalle Valo
0 siblings, 0 replies; 20+ messages in thread
From: Kalle Valo @ 2021-11-18 5:36 UTC (permalink / raw)
To: Jakub Kicinski; +Cc: davem, netdev, stas.yakovlev
Jakub Kicinski <kuba@kernel.org> writes:
> Add const to the address param of ipw_send_adapter_address()
> all the functions down the chain have already been changed.
>
> Not sure how I lost this in the rebase.
>
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Acked-by: Kalle Valo <kvalo@codeaurora.org>
--
https://patchwork.kernel.org/project/linux-wireless/list/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH net-next 5/9] net: constify netdev->dev_addr
2021-11-18 4:14 ` [PATCH net-next 5/9] net: constify netdev->dev_addr Jakub Kicinski
@ 2021-11-18 6:15 ` kernel test robot
2021-11-18 11:36 ` kernel test robot
2021-11-18 14:12 ` kernel test robot
2 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2021-11-18 6:15 UTC (permalink / raw)
To: Jakub Kicinski, davem; +Cc: kbuild-all, netdev, Jakub Kicinski
[-- Attachment #1: Type: text/plain, Size: 18557 bytes --]
Hi Jakub,
I love your patch! Perhaps something to improve:
[auto build test WARNING on net-next/master]
url: https://github.com/0day-ci/linux/commits/Jakub-Kicinski/net-constify-netdev-dev_addr/20211118-121649
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 75082e7f46809432131749f4ecea66864d0f7438
config: m68k-defconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/ea5373ba01c0915c0dceb67e2df2b05343642b84
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Jakub-Kicinski/net-constify-netdev-dev_addr/20211118-121649
git checkout ea5373ba01c0915c0dceb67e2df2b05343642b84
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=m68k
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
drivers/net/ethernet/8390/mac8390.c: In function 'mac8390_rsrc_init':
>> drivers/net/ethernet/8390/mac8390.c:317:31: warning: passing argument 1 of 'nubus_get_rsrc_mem' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
317 | nubus_get_rsrc_mem(dev->dev_addr, &ent, 6);
| ~~~^~~~~~~~~~
In file included from drivers/net/ethernet/8390/mac8390.c:29:
include/linux/nubus.h:156:31: note: expected 'void *' but argument is of type 'const unsigned char *'
156 | void nubus_get_rsrc_mem(void *dest, const struct nubus_dirent *dirent,
| ~~~~~~^~~~
--
drivers/net/ethernet/amd/atarilance.c:370:28: warning: no previous prototype for 'atarilance_probe' [-Wmissing-prototypes]
370 | struct net_device * __init atarilance_probe(void)
| ^~~~~~~~~~~~~~~~
drivers/net/ethernet/amd/atarilance.c: In function 'lance_probe1':
>> drivers/net/ethernet/amd/atarilance.c:588:33: warning: passing argument 1 of 'lp->memcpy_f' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
588 | lp->memcpy_f(dev->dev_addr, RIEBL_HWADDR_ADDR, ETH_ALEN);
| ~~~^~~~~~~~~~
drivers/net/ethernet/amd/atarilance.c:588:33: note: expected 'void *' but argument is of type 'const unsigned char *'
drivers/net/ethernet/amd/atarilance.c:593:42: error: assignment of read-only location '*(dev->dev_addr + (sizetype)i)'
593 | dev->dev_addr[i] =
| ^
--
drivers/net/ethernet/apple/macmace.c: In function 'mace_probe':
drivers/net/ethernet/apple/macmace.c:232:34: error: assignment of read-only location '*(dev->dev_addr + (sizetype)j)'
232 | dev->dev_addr[j] = v;
| ^
drivers/net/ethernet/apple/macmace.c: In function 'mace_reset':
>> drivers/net/ethernet/apple/macmace.c:294:36: warning: passing argument 2 of '__mace_set_address' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
294 | __mace_set_address(dev, dev->dev_addr);
| ~~~^~~~~~~~~~
drivers/net/ethernet/apple/macmace.c:95:62: note: expected 'void *' but argument is of type 'const unsigned char *'
95 | static void __mace_set_address(struct net_device *dev, void *addr);
| ~~~~~~^~~~
drivers/net/ethernet/apple/macmace.c: In function '__mace_set_address':
drivers/net/ethernet/apple/macmace.c:334:45: error: assignment of read-only location '*(dev->dev_addr + (sizetype)i)'
334 | mb->padr = dev->dev_addr[i] = p[i];
| ^
--
drivers/net/ethernet/natsemi/macsonic.c: In function 'mac_onboard_sonic_ethernet_addr':
drivers/net/ethernet/natsemi/macsonic.c:216:42: error: assignment of read-only location '*(dev->dev_addr + (sizetype)i)'
216 | dev->dev_addr[i] = SONIC_READ_PROM(i);
| ^
>> drivers/net/ethernet/natsemi/macsonic.c:225:37: warning: passing argument 1 of 'bit_reverse_addr' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
225 | bit_reverse_addr(dev->dev_addr);
| ~~~^~~~~~~~~~
drivers/net/ethernet/natsemi/macsonic.c:109:51: note: expected 'unsigned char *' but argument is of type 'const unsigned char *'
109 | static inline void bit_reverse_addr(unsigned char addr[6])
| ~~~~~~~~~~~~~~^~~~~~~
drivers/net/ethernet/natsemi/macsonic.c:246:26: error: assignment of read-only location '*(dev->dev_addr + 5)'
246 | dev->dev_addr[5] = val >> 8;
| ^
drivers/net/ethernet/natsemi/macsonic.c:247:26: error: assignment of read-only location '*(dev->dev_addr + 4)'
247 | dev->dev_addr[4] = val & 0xff;
| ^
drivers/net/ethernet/natsemi/macsonic.c:249:26: error: assignment of read-only location '*(dev->dev_addr + 3)'
249 | dev->dev_addr[3] = val >> 8;
| ^
drivers/net/ethernet/natsemi/macsonic.c:250:26: error: assignment of read-only location '*(dev->dev_addr + 2)'
250 | dev->dev_addr[2] = val & 0xff;
| ^
drivers/net/ethernet/natsemi/macsonic.c:252:26: error: assignment of read-only location '*(dev->dev_addr + 1)'
252 | dev->dev_addr[1] = val >> 8;
| ^
drivers/net/ethernet/natsemi/macsonic.c:253:26: error: assignment of read-only location '*dev->dev_addr'
253 | dev->dev_addr[0] = val & 0xff;
| ^
drivers/net/ethernet/natsemi/macsonic.c: In function 'mac_sonic_nubus_ethernet_addr':
drivers/net/ethernet/natsemi/macsonic.c:360:34: error: assignment of read-only location '*(dev->dev_addr + (sizetype)i)'
360 | dev->dev_addr[i] = SONIC_READ_PROM(i);
| ^
drivers/net/ethernet/natsemi/macsonic.c:364:37: warning: passing argument 1 of 'bit_reverse_addr' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
364 | bit_reverse_addr(dev->dev_addr);
| ~~~^~~~~~~~~~
drivers/net/ethernet/natsemi/macsonic.c:109:51: note: expected 'unsigned char *' but argument is of type 'const unsigned char *'
109 | static inline void bit_reverse_addr(unsigned char addr[6])
| ~~~~~~~~~~~~~~^~~~~~~
vim +317 drivers/net/ethernet/8390/mac8390.c
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 285
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 286 static bool mac8390_rsrc_init(struct net_device *dev,
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 287 struct nubus_rsrc *fres,
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 288 enum mac8390_type cardtype)
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 289 {
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 290 struct nubus_board *board = fres->board;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 291 struct nubus_dir dir;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 292 struct nubus_dirent ent;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 293 int offset;
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 294 volatile unsigned short *i;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 295
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 296 dev->irq = SLOT2IRQ(board->slot);
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 297 /* This is getting to be a habit */
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 298 dev->base_addr = board->slot_addr | ((board->slot & 0xf) << 20);
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 299
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 300 /*
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 301 * Get some Nubus info - we will trust the card's idea
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 302 * of where its memory and registers are.
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 303 */
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 304
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 305 if (nubus_get_func_dir(fres, &dir) == -1) {
4a1b27c9e32c39 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 306 dev_err(&board->dev,
4a1b27c9e32c39 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 307 "Unable to get Nubus functional directory\n");
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 308 return false;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 309 }
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 310
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 311 /* Get the MAC address */
8e4d9696b45d96 drivers/net/mac8390.c Joe Perches 2010-01-04 312 if (nubus_find_rsrc(&dir, NUBUS_RESID_MAC_ADDRESS, &ent) == -1) {
4a1b27c9e32c39 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 313 dev_info(&board->dev, "MAC address resource not found\n");
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 314 return false;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 315 }
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 316
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 @317 nubus_get_rsrc_mem(dev->dev_addr, &ent, 6);
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 318
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 319 if (useresources[cardtype] == 1) {
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 320 nubus_rewinddir(&dir);
8e4d9696b45d96 drivers/net/mac8390.c Joe Perches 2010-01-04 321 if (nubus_find_rsrc(&dir, NUBUS_RESID_MINOR_BASEOS,
8e4d9696b45d96 drivers/net/mac8390.c Joe Perches 2010-01-04 322 &ent) == -1) {
4a1b27c9e32c39 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 323 dev_err(&board->dev,
4a1b27c9e32c39 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 324 "Memory offset resource not found\n");
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 325 return false;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 326 }
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 327 nubus_get_rsrc_mem(&offset, &ent, 4);
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 328 dev->mem_start = dev->base_addr + offset;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 329 /* yes, this is how the Apple driver does it */
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 330 dev->base_addr = dev->mem_start + 0x10000;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 331 nubus_rewinddir(&dir);
8e4d9696b45d96 drivers/net/mac8390.c Joe Perches 2010-01-04 332 if (nubus_find_rsrc(&dir, NUBUS_RESID_MINOR_LENGTH,
8e4d9696b45d96 drivers/net/mac8390.c Joe Perches 2010-01-04 333 &ent) == -1) {
4a1b27c9e32c39 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 334 dev_info(&board->dev,
4a1b27c9e32c39 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 335 "Memory length resource not found, probing\n");
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 336 offset = mac8390_memsize(dev->mem_start);
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 337 } else {
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 338 nubus_get_rsrc_mem(&offset, &ent, 4);
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 339 }
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 340 dev->mem_end = dev->mem_start + offset;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 341 } else {
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 342 switch (cardtype) {
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 343 case MAC8390_KINETICS:
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 344 case MAC8390_DAYNA: /* it's the same */
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 345 dev->base_addr = (int)(board->slot_addr +
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 346 DAYNA_8390_BASE);
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 347 dev->mem_start = (int)(board->slot_addr +
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 348 DAYNA_8390_MEM);
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 349 dev->mem_end = dev->mem_start +
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 350 mac8390_memsize(dev->mem_start);
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 351 break;
2964db0f590437 drivers/net/mac8390.c Finn Thain 2007-05-01 352 case MAC8390_INTERLAN:
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 353 dev->base_addr = (int)(board->slot_addr +
2964db0f590437 drivers/net/mac8390.c Finn Thain 2007-05-01 354 INTERLAN_8390_BASE);
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 355 dev->mem_start = (int)(board->slot_addr +
2964db0f590437 drivers/net/mac8390.c Finn Thain 2007-05-01 356 INTERLAN_8390_MEM);
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 357 dev->mem_end = dev->mem_start +
2964db0f590437 drivers/net/mac8390.c Finn Thain 2007-05-01 358 mac8390_memsize(dev->mem_start);
2964db0f590437 drivers/net/mac8390.c Finn Thain 2007-05-01 359 break;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 360 case MAC8390_CABLETRON:
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 361 dev->base_addr = (int)(board->slot_addr +
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 362 CABLETRON_8390_BASE);
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 363 dev->mem_start = (int)(board->slot_addr +
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 364 CABLETRON_8390_MEM);
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 365 /* The base address is unreadable if 0x00
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 366 * has been written to the command register
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 367 * Reset the chip by writing E8390_NODMA +
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 368 * E8390_PAGE0 + E8390_STOP just to be
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 369 * sure
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 370 */
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 371 i = (void *)dev->base_addr;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 372 *i = 0x21;
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 373 dev->mem_end = dev->mem_start +
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 374 mac8390_memsize(dev->mem_start);
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 375 break;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 376
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 377 default:
4a1b27c9e32c39 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 378 dev_err(&board->dev,
4a1b27c9e32c39 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 379 "No known base address for card type\n");
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 380 return false;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 381 }
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 382 }
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 383
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 384 return true;
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 385 }
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 386
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 17440 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH net-next 5/9] net: constify netdev->dev_addr
@ 2021-11-18 6:15 ` kernel test robot
0 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2021-11-18 6:15 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 18769 bytes --]
Hi Jakub,
I love your patch! Perhaps something to improve:
[auto build test WARNING on net-next/master]
url: https://github.com/0day-ci/linux/commits/Jakub-Kicinski/net-constify-netdev-dev_addr/20211118-121649
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 75082e7f46809432131749f4ecea66864d0f7438
config: m68k-defconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/ea5373ba01c0915c0dceb67e2df2b05343642b84
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Jakub-Kicinski/net-constify-netdev-dev_addr/20211118-121649
git checkout ea5373ba01c0915c0dceb67e2df2b05343642b84
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=m68k
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
drivers/net/ethernet/8390/mac8390.c: In function 'mac8390_rsrc_init':
>> drivers/net/ethernet/8390/mac8390.c:317:31: warning: passing argument 1 of 'nubus_get_rsrc_mem' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
317 | nubus_get_rsrc_mem(dev->dev_addr, &ent, 6);
| ~~~^~~~~~~~~~
In file included from drivers/net/ethernet/8390/mac8390.c:29:
include/linux/nubus.h:156:31: note: expected 'void *' but argument is of type 'const unsigned char *'
156 | void nubus_get_rsrc_mem(void *dest, const struct nubus_dirent *dirent,
| ~~~~~~^~~~
--
drivers/net/ethernet/amd/atarilance.c:370:28: warning: no previous prototype for 'atarilance_probe' [-Wmissing-prototypes]
370 | struct net_device * __init atarilance_probe(void)
| ^~~~~~~~~~~~~~~~
drivers/net/ethernet/amd/atarilance.c: In function 'lance_probe1':
>> drivers/net/ethernet/amd/atarilance.c:588:33: warning: passing argument 1 of 'lp->memcpy_f' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
588 | lp->memcpy_f(dev->dev_addr, RIEBL_HWADDR_ADDR, ETH_ALEN);
| ~~~^~~~~~~~~~
drivers/net/ethernet/amd/atarilance.c:588:33: note: expected 'void *' but argument is of type 'const unsigned char *'
drivers/net/ethernet/amd/atarilance.c:593:42: error: assignment of read-only location '*(dev->dev_addr + (sizetype)i)'
593 | dev->dev_addr[i] =
| ^
--
drivers/net/ethernet/apple/macmace.c: In function 'mace_probe':
drivers/net/ethernet/apple/macmace.c:232:34: error: assignment of read-only location '*(dev->dev_addr + (sizetype)j)'
232 | dev->dev_addr[j] = v;
| ^
drivers/net/ethernet/apple/macmace.c: In function 'mace_reset':
>> drivers/net/ethernet/apple/macmace.c:294:36: warning: passing argument 2 of '__mace_set_address' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
294 | __mace_set_address(dev, dev->dev_addr);
| ~~~^~~~~~~~~~
drivers/net/ethernet/apple/macmace.c:95:62: note: expected 'void *' but argument is of type 'const unsigned char *'
95 | static void __mace_set_address(struct net_device *dev, void *addr);
| ~~~~~~^~~~
drivers/net/ethernet/apple/macmace.c: In function '__mace_set_address':
drivers/net/ethernet/apple/macmace.c:334:45: error: assignment of read-only location '*(dev->dev_addr + (sizetype)i)'
334 | mb->padr = dev->dev_addr[i] = p[i];
| ^
--
drivers/net/ethernet/natsemi/macsonic.c: In function 'mac_onboard_sonic_ethernet_addr':
drivers/net/ethernet/natsemi/macsonic.c:216:42: error: assignment of read-only location '*(dev->dev_addr + (sizetype)i)'
216 | dev->dev_addr[i] = SONIC_READ_PROM(i);
| ^
>> drivers/net/ethernet/natsemi/macsonic.c:225:37: warning: passing argument 1 of 'bit_reverse_addr' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
225 | bit_reverse_addr(dev->dev_addr);
| ~~~^~~~~~~~~~
drivers/net/ethernet/natsemi/macsonic.c:109:51: note: expected 'unsigned char *' but argument is of type 'const unsigned char *'
109 | static inline void bit_reverse_addr(unsigned char addr[6])
| ~~~~~~~~~~~~~~^~~~~~~
drivers/net/ethernet/natsemi/macsonic.c:246:26: error: assignment of read-only location '*(dev->dev_addr + 5)'
246 | dev->dev_addr[5] = val >> 8;
| ^
drivers/net/ethernet/natsemi/macsonic.c:247:26: error: assignment of read-only location '*(dev->dev_addr + 4)'
247 | dev->dev_addr[4] = val & 0xff;
| ^
drivers/net/ethernet/natsemi/macsonic.c:249:26: error: assignment of read-only location '*(dev->dev_addr + 3)'
249 | dev->dev_addr[3] = val >> 8;
| ^
drivers/net/ethernet/natsemi/macsonic.c:250:26: error: assignment of read-only location '*(dev->dev_addr + 2)'
250 | dev->dev_addr[2] = val & 0xff;
| ^
drivers/net/ethernet/natsemi/macsonic.c:252:26: error: assignment of read-only location '*(dev->dev_addr + 1)'
252 | dev->dev_addr[1] = val >> 8;
| ^
drivers/net/ethernet/natsemi/macsonic.c:253:26: error: assignment of read-only location '*dev->dev_addr'
253 | dev->dev_addr[0] = val & 0xff;
| ^
drivers/net/ethernet/natsemi/macsonic.c: In function 'mac_sonic_nubus_ethernet_addr':
drivers/net/ethernet/natsemi/macsonic.c:360:34: error: assignment of read-only location '*(dev->dev_addr + (sizetype)i)'
360 | dev->dev_addr[i] = SONIC_READ_PROM(i);
| ^
drivers/net/ethernet/natsemi/macsonic.c:364:37: warning: passing argument 1 of 'bit_reverse_addr' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
364 | bit_reverse_addr(dev->dev_addr);
| ~~~^~~~~~~~~~
drivers/net/ethernet/natsemi/macsonic.c:109:51: note: expected 'unsigned char *' but argument is of type 'const unsigned char *'
109 | static inline void bit_reverse_addr(unsigned char addr[6])
| ~~~~~~~~~~~~~~^~~~~~~
vim +317 drivers/net/ethernet/8390/mac8390.c
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 285
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 286 static bool mac8390_rsrc_init(struct net_device *dev,
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 287 struct nubus_rsrc *fres,
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 288 enum mac8390_type cardtype)
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 289 {
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 290 struct nubus_board *board = fres->board;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 291 struct nubus_dir dir;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 292 struct nubus_dirent ent;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 293 int offset;
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 294 volatile unsigned short *i;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 295
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 296 dev->irq = SLOT2IRQ(board->slot);
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 297 /* This is getting to be a habit */
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 298 dev->base_addr = board->slot_addr | ((board->slot & 0xf) << 20);
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 299
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 300 /*
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 301 * Get some Nubus info - we will trust the card's idea
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 302 * of where its memory and registers are.
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 303 */
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 304
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 305 if (nubus_get_func_dir(fres, &dir) == -1) {
4a1b27c9e32c39 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 306 dev_err(&board->dev,
4a1b27c9e32c39 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 307 "Unable to get Nubus functional directory\n");
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 308 return false;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 309 }
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 310
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 311 /* Get the MAC address */
8e4d9696b45d96 drivers/net/mac8390.c Joe Perches 2010-01-04 312 if (nubus_find_rsrc(&dir, NUBUS_RESID_MAC_ADDRESS, &ent) == -1) {
4a1b27c9e32c39 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 313 dev_info(&board->dev, "MAC address resource not found\n");
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 314 return false;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 315 }
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 316
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 @317 nubus_get_rsrc_mem(dev->dev_addr, &ent, 6);
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 318
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 319 if (useresources[cardtype] == 1) {
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 320 nubus_rewinddir(&dir);
8e4d9696b45d96 drivers/net/mac8390.c Joe Perches 2010-01-04 321 if (nubus_find_rsrc(&dir, NUBUS_RESID_MINOR_BASEOS,
8e4d9696b45d96 drivers/net/mac8390.c Joe Perches 2010-01-04 322 &ent) == -1) {
4a1b27c9e32c39 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 323 dev_err(&board->dev,
4a1b27c9e32c39 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 324 "Memory offset resource not found\n");
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 325 return false;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 326 }
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 327 nubus_get_rsrc_mem(&offset, &ent, 4);
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 328 dev->mem_start = dev->base_addr + offset;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 329 /* yes, this is how the Apple driver does it */
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 330 dev->base_addr = dev->mem_start + 0x10000;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 331 nubus_rewinddir(&dir);
8e4d9696b45d96 drivers/net/mac8390.c Joe Perches 2010-01-04 332 if (nubus_find_rsrc(&dir, NUBUS_RESID_MINOR_LENGTH,
8e4d9696b45d96 drivers/net/mac8390.c Joe Perches 2010-01-04 333 &ent) == -1) {
4a1b27c9e32c39 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 334 dev_info(&board->dev,
4a1b27c9e32c39 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 335 "Memory length resource not found, probing\n");
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 336 offset = mac8390_memsize(dev->mem_start);
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 337 } else {
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 338 nubus_get_rsrc_mem(&offset, &ent, 4);
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 339 }
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 340 dev->mem_end = dev->mem_start + offset;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 341 } else {
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 342 switch (cardtype) {
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 343 case MAC8390_KINETICS:
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 344 case MAC8390_DAYNA: /* it's the same */
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 345 dev->base_addr = (int)(board->slot_addr +
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 346 DAYNA_8390_BASE);
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 347 dev->mem_start = (int)(board->slot_addr +
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 348 DAYNA_8390_MEM);
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 349 dev->mem_end = dev->mem_start +
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 350 mac8390_memsize(dev->mem_start);
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 351 break;
2964db0f590437 drivers/net/mac8390.c Finn Thain 2007-05-01 352 case MAC8390_INTERLAN:
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 353 dev->base_addr = (int)(board->slot_addr +
2964db0f590437 drivers/net/mac8390.c Finn Thain 2007-05-01 354 INTERLAN_8390_BASE);
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 355 dev->mem_start = (int)(board->slot_addr +
2964db0f590437 drivers/net/mac8390.c Finn Thain 2007-05-01 356 INTERLAN_8390_MEM);
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 357 dev->mem_end = dev->mem_start +
2964db0f590437 drivers/net/mac8390.c Finn Thain 2007-05-01 358 mac8390_memsize(dev->mem_start);
2964db0f590437 drivers/net/mac8390.c Finn Thain 2007-05-01 359 break;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 360 case MAC8390_CABLETRON:
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 361 dev->base_addr = (int)(board->slot_addr +
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 362 CABLETRON_8390_BASE);
494a973e229542 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 363 dev->mem_start = (int)(board->slot_addr +
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 364 CABLETRON_8390_MEM);
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 365 /* The base address is unreadable if 0x00
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 366 * has been written to the command register
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 367 * Reset the chip by writing E8390_NODMA +
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 368 * E8390_PAGE0 + E8390_STOP just to be
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 369 * sure
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 370 */
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 371 i = (void *)dev->base_addr;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 372 *i = 0x21;
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 373 dev->mem_end = dev->mem_start +
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 374 mac8390_memsize(dev->mem_start);
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 375 break;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 376
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 377 default:
4a1b27c9e32c39 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 378 dev_err(&board->dev,
4a1b27c9e32c39 drivers/net/ethernet/8390/mac8390.c Finn Thain 2018-02-18 379 "No known base address for card type\n");
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 380 return false;
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 381 }
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 382 }
^1da177e4c3f41 drivers/net/mac8390.c Linus Torvalds 2005-04-16 383
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 384 return true;
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 385 }
f6de7acc42de90 drivers/net/mac8390.c Joe Perches 2010-01-04 386
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 17440 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH net-next 2/9] mlxsw: constify address in mlxsw_sp_port_dev_addr_set
2021-11-18 4:14 ` [PATCH net-next 2/9] mlxsw: constify address in mlxsw_sp_port_dev_addr_set Jakub Kicinski
@ 2021-11-18 7:27 ` Ido Schimmel
0 siblings, 0 replies; 20+ messages in thread
From: Ido Schimmel @ 2021-11-18 7:27 UTC (permalink / raw)
To: Jakub Kicinski; +Cc: davem, netdev, jiri, idosch
On Wed, Nov 17, 2021 at 08:14:54PM -0800, Jakub Kicinski wrote:
> Argument comes from netdev->dev_addr directly, it needs a const.
>
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH net-next 5/9] net: constify netdev->dev_addr
2021-11-18 4:14 ` [PATCH net-next 5/9] net: constify netdev->dev_addr Jakub Kicinski
@ 2021-11-18 11:36 ` kernel test robot
2021-11-18 11:36 ` kernel test robot
2021-11-18 14:12 ` kernel test robot
2 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2021-11-18 11:36 UTC (permalink / raw)
To: Jakub Kicinski, davem; +Cc: kbuild-all, netdev, Jakub Kicinski
[-- Attachment #1: Type: text/plain, Size: 26754 bytes --]
Hi Jakub,
I love your patch! Yet something to improve:
[auto build test ERROR on net-next/master]
url: https://github.com/0day-ci/linux/commits/Jakub-Kicinski/net-constify-netdev-dev_addr/20211118-121649
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 75082e7f46809432131749f4ecea66864d0f7438
config: m68k-allyesconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/ea5373ba01c0915c0dceb67e2df2b05343642b84
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Jakub-Kicinski/net-constify-netdev-dev_addr/20211118-121649
git checkout ea5373ba01c0915c0dceb67e2df2b05343642b84
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=m68k
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/net/ethernet/smsc/smc9194.c: In function 'smc_probe':
>> drivers/net/ethernet/smsc/smc9194.c:927:39: error: assignment of read-only location '*(dev->dev_addr + ((sizetype)i + 1))'
927 | dev->dev_addr[ i + 1] = address >> 8;
| ^
drivers/net/ethernet/smsc/smc9194.c:928:36: error: assignment of read-only location '*(dev->dev_addr + (sizetype)i)'
928 | dev->dev_addr[ i ] = address & 0xFF;
| ^
vim +927 drivers/net/ethernet/smsc/smc9194.c
32670c36d0222e drivers/net/smc9194.c Stephen Hemminger 2009-03-26 815
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 816 /*----------------------------------------------------------------------
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 817 . Function: smc_probe( int ioaddr )
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 818 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 819 . Purpose:
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 820 . Tests to see if a given ioaddr points to an SMC9xxx chip.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 821 . Returns a 0 on success
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 822 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 823 . Algorithm:
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 824 . (1) see if the high byte of BANK_SELECT is 0x33
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 825 . (2) compare the ioaddr with the base register's address
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 826 . (3) see if I recognize the chip ID in the appropriate register
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 827 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 828 .---------------------------------------------------------------------
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 829 */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 830
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 831 /*---------------------------------------------------------------
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 832 . Here I do typical initialization tasks.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 833 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 834 . o Initialize the structure if needed
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 835 . o print out my vanity message if not done so already
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 836 . o print out what type of hardware is detected
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 837 . o print out the ethernet address
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 838 . o find the IRQ
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 839 . o set up my private data
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 840 . o configure the dev structure with my subroutines
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 841 . o actually GRAB the irq.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 842 . o GRAB the region
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 843 .-----------------------------------------------------------------
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 844 */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 845 static int __init smc_probe(struct net_device *dev, int ioaddr)
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 846 {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 847 int i, memory, retval;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 848 unsigned int bank;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 849
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 850 const char *version_string;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 851 const char *if_string;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 852
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 853 /* registers */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 854 word revision_register;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 855 word base_address_register;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 856 word configuration_register;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 857 word memory_info_register;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 858 word memory_cfg_register;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 859
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 860 /* Grab the region so that no one else tries to probe our ioports. */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 861 if (!request_region(ioaddr, SMC_IO_EXTENT, DRV_NAME))
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 862 return -EBUSY;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 863
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 864 dev->irq = irq;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 865 dev->if_port = ifport;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 866
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 867 /* First, see if the high byte is 0x33 */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 868 bank = inw( ioaddr + BANK_SELECT );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 869 if ( (bank & 0xFF00) != 0x3300 ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 870 retval = -ENODEV;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 871 goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 872 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 873 /* The above MIGHT indicate a device, but I need to write to further
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 874 test this. */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 875 outw( 0x0, ioaddr + BANK_SELECT );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 876 bank = inw( ioaddr + BANK_SELECT );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 877 if ( (bank & 0xFF00 ) != 0x3300 ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 878 retval = -ENODEV;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 879 goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 880 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 881 /* well, we've already written once, so hopefully another time won't
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 882 hurt. This time, I need to switch the bank register to bank 1,
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 883 so I can access the base address register */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 884 SMC_SELECT_BANK(1);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 885 base_address_register = inw( ioaddr + BASE );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 886 if ( ioaddr != ( base_address_register >> 3 & 0x3E0 ) ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 887 printk(CARDNAME ": IOADDR %x doesn't match configuration (%x). "
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 888 "Probably not a SMC chip\n",
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 889 ioaddr, base_address_register >> 3 & 0x3E0 );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 890 /* well, the base address register didn't match. Must not have
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 891 been a SMC chip after all. */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 892 retval = -ENODEV;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 893 goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 894 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 895
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 896 /* check if the revision register is something that I recognize.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 897 These might need to be added to later, as future revisions
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 898 could be added. */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 899 SMC_SELECT_BANK(3);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 900 revision_register = inw( ioaddr + REVISION );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 901 if ( !chip_ids[ ( revision_register >> 4 ) & 0xF ] ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 902 /* I don't recognize this chip, so... */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 903 printk(CARDNAME ": IO %x: Unrecognized revision register:"
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 904 " %x, Contact author.\n", ioaddr, revision_register);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 905
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 906 retval = -ENODEV;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 907 goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 908 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 909
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 910 /* at this point I'll assume that the chip is an SMC9xxx.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 911 It might be prudent to check a listing of MAC addresses
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 912 against the hardware address, or do some other tests. */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 913
2ad02bdc885db5 drivers/net/ethernet/smsc/smc9194.c Ben Boeckel 2013-11-01 914 pr_info_once("%s\n", version);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 915
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 916 /* fill in some of the fields */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 917 dev->base_addr = ioaddr;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 918
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 919 /*
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 920 . Get the MAC address ( bank 1, regs 4 - 9 )
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 921 */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 922 SMC_SELECT_BANK( 1 );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 923 for ( i = 0; i < 6; i += 2 ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 924 word address;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 925
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 926 address = inw( ioaddr + ADDR0 + i );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 @927 dev->dev_addr[ i + 1] = address >> 8;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 928 dev->dev_addr[ i ] = address & 0xFF;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 929 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 930
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 931 /* get the memory information */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 932
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 933 SMC_SELECT_BANK( 0 );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 934 memory_info_register = inw( ioaddr + MIR );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 935 memory_cfg_register = inw( ioaddr + MCR );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 936 memory = ( memory_cfg_register >> 9 ) & 0x7; /* multiplier */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 937 memory *= 256 * ( memory_info_register & 0xFF );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 938
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 939 /*
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 940 Now, I want to find out more about the chip. This is sort of
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 941 redundant, but it's cleaner to have it in both, rather than having
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 942 one VERY long probe procedure.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 943 */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 944 SMC_SELECT_BANK(3);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 945 revision_register = inw( ioaddr + REVISION );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 946 version_string = chip_ids[ ( revision_register >> 4 ) & 0xF ];
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 947 if ( !version_string ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 948 /* I shouldn't get here because this call was done before.... */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 949 retval = -ENODEV;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 950 goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 951 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 952
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 953 /* is it using AUI or 10BaseT ? */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 954 if ( dev->if_port == 0 ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 955 SMC_SELECT_BANK(1);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 956 configuration_register = inw( ioaddr + CONFIG );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 957 if ( configuration_register & CFG_AUI_SELECT )
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 958 dev->if_port = 2;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 959 else
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 960 dev->if_port = 1;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 961 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 962 if_string = interfaces[ dev->if_port - 1 ];
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 963
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 964 /* now, reset the chip, and put it into a known state */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 965 smc_reset( ioaddr );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 966
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 967 /*
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 968 . If dev->irq is 0, then the device has to be banged on to see
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 969 . what the IRQ is.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 970 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 971 . This banging doesn't always detect the IRQ, for unknown reasons.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 972 . a workaround is to reset the chip and try again.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 973 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 974 . Interestingly, the DOS packet driver *SETS* the IRQ on the card to
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 975 . be what is requested on the command line. I don't do that, mostly
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 976 . because the card that I have uses a non-standard method of accessing
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 977 . the IRQs, and because this _should_ work in most configurations.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 978 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 979 . Specifying an IRQ is done with the assumption that the user knows
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 980 . what (s)he is doing. No checking is done!!!!
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 981 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 982 */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 983 if ( dev->irq < 2 ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 984 int trials;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 985
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 986 trials = 3;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 987 while ( trials-- ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 988 dev->irq = smc_findirq( ioaddr );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 989 if ( dev->irq )
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 990 break;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 991 /* kick the card and try again */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 992 smc_reset( ioaddr );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 993 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 994 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 995 if (dev->irq == 0 ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 996 printk(CARDNAME": Couldn't autodetect your IRQ. Use irq=xx.\n");
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 997 retval = -ENODEV;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 998 goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 999 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1000
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1001 /* now, print out the card info, in a short format.. */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1002
2ad02bdc885db5 drivers/net/ethernet/smsc/smc9194.c Ben Boeckel 2013-11-01 1003 netdev_info(dev, "%s(r:%d) at %#3x IRQ:%d INTF:%s MEM:%db ",
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1004 version_string, revision_register & 0xF, ioaddr, dev->irq,
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1005 if_string, memory);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1006 /*
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1007 . Print the Ethernet address
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1008 */
2ad02bdc885db5 drivers/net/ethernet/smsc/smc9194.c Ben Boeckel 2013-11-01 1009 netdev_info(dev, "ADDR: %pM\n", dev->dev_addr);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1010
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1011 /* Grab the IRQ */
a0607fd3a25ba1 drivers/net/smc9194.c Joe Perches 2009-11-18 1012 retval = request_irq(dev->irq, smc_interrupt, 0, DRV_NAME, dev);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1013 if (retval) {
2ad02bdc885db5 drivers/net/ethernet/smsc/smc9194.c Ben Boeckel 2013-11-01 1014 netdev_warn(dev, "%s: unable to get IRQ %d (irqval=%d).\n",
2ad02bdc885db5 drivers/net/ethernet/smsc/smc9194.c Ben Boeckel 2013-11-01 1015 DRV_NAME, dev->irq, retval);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1016 goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1017 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1018
32670c36d0222e drivers/net/smc9194.c Stephen Hemminger 2009-03-26 1019 dev->netdev_ops = &smc_netdev_ops;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1020 dev->watchdog_timeo = HZ/20;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1021
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1022 return 0;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1023
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1024 err_out:
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1025 release_region(ioaddr, SMC_IO_EXTENT);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1026 return retval;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1027 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1028
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 62370 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH net-next 5/9] net: constify netdev->dev_addr
@ 2021-11-18 11:36 ` kernel test robot
0 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2021-11-18 11:36 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 27010 bytes --]
Hi Jakub,
I love your patch! Yet something to improve:
[auto build test ERROR on net-next/master]
url: https://github.com/0day-ci/linux/commits/Jakub-Kicinski/net-constify-netdev-dev_addr/20211118-121649
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 75082e7f46809432131749f4ecea66864d0f7438
config: m68k-allyesconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/ea5373ba01c0915c0dceb67e2df2b05343642b84
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Jakub-Kicinski/net-constify-netdev-dev_addr/20211118-121649
git checkout ea5373ba01c0915c0dceb67e2df2b05343642b84
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=m68k
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/net/ethernet/smsc/smc9194.c: In function 'smc_probe':
>> drivers/net/ethernet/smsc/smc9194.c:927:39: error: assignment of read-only location '*(dev->dev_addr + ((sizetype)i + 1))'
927 | dev->dev_addr[ i + 1] = address >> 8;
| ^
drivers/net/ethernet/smsc/smc9194.c:928:36: error: assignment of read-only location '*(dev->dev_addr + (sizetype)i)'
928 | dev->dev_addr[ i ] = address & 0xFF;
| ^
vim +927 drivers/net/ethernet/smsc/smc9194.c
32670c36d0222e drivers/net/smc9194.c Stephen Hemminger 2009-03-26 815
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 816 /*----------------------------------------------------------------------
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 817 . Function: smc_probe( int ioaddr )
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 818 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 819 . Purpose:
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 820 . Tests to see if a given ioaddr points to an SMC9xxx chip.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 821 . Returns a 0 on success
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 822 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 823 . Algorithm:
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 824 . (1) see if the high byte of BANK_SELECT is 0x33
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 825 . (2) compare the ioaddr with the base register's address
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 826 . (3) see if I recognize the chip ID in the appropriate register
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 827 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 828 .---------------------------------------------------------------------
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 829 */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 830
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 831 /*---------------------------------------------------------------
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 832 . Here I do typical initialization tasks.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 833 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 834 . o Initialize the structure if needed
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 835 . o print out my vanity message if not done so already
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 836 . o print out what type of hardware is detected
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 837 . o print out the ethernet address
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 838 . o find the IRQ
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 839 . o set up my private data
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 840 . o configure the dev structure with my subroutines
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 841 . o actually GRAB the irq.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 842 . o GRAB the region
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 843 .-----------------------------------------------------------------
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 844 */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 845 static int __init smc_probe(struct net_device *dev, int ioaddr)
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 846 {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 847 int i, memory, retval;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 848 unsigned int bank;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 849
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 850 const char *version_string;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 851 const char *if_string;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 852
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 853 /* registers */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 854 word revision_register;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 855 word base_address_register;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 856 word configuration_register;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 857 word memory_info_register;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 858 word memory_cfg_register;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 859
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 860 /* Grab the region so that no one else tries to probe our ioports. */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 861 if (!request_region(ioaddr, SMC_IO_EXTENT, DRV_NAME))
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 862 return -EBUSY;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 863
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 864 dev->irq = irq;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 865 dev->if_port = ifport;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 866
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 867 /* First, see if the high byte is 0x33 */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 868 bank = inw( ioaddr + BANK_SELECT );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 869 if ( (bank & 0xFF00) != 0x3300 ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 870 retval = -ENODEV;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 871 goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 872 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 873 /* The above MIGHT indicate a device, but I need to write to further
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 874 test this. */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 875 outw( 0x0, ioaddr + BANK_SELECT );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 876 bank = inw( ioaddr + BANK_SELECT );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 877 if ( (bank & 0xFF00 ) != 0x3300 ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 878 retval = -ENODEV;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 879 goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 880 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 881 /* well, we've already written once, so hopefully another time won't
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 882 hurt. This time, I need to switch the bank register to bank 1,
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 883 so I can access the base address register */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 884 SMC_SELECT_BANK(1);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 885 base_address_register = inw( ioaddr + BASE );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 886 if ( ioaddr != ( base_address_register >> 3 & 0x3E0 ) ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 887 printk(CARDNAME ": IOADDR %x doesn't match configuration (%x). "
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 888 "Probably not a SMC chip\n",
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 889 ioaddr, base_address_register >> 3 & 0x3E0 );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 890 /* well, the base address register didn't match. Must not have
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 891 been a SMC chip after all. */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 892 retval = -ENODEV;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 893 goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 894 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 895
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 896 /* check if the revision register is something that I recognize.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 897 These might need to be added to later, as future revisions
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 898 could be added. */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 899 SMC_SELECT_BANK(3);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 900 revision_register = inw( ioaddr + REVISION );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 901 if ( !chip_ids[ ( revision_register >> 4 ) & 0xF ] ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 902 /* I don't recognize this chip, so... */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 903 printk(CARDNAME ": IO %x: Unrecognized revision register:"
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 904 " %x, Contact author.\n", ioaddr, revision_register);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 905
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 906 retval = -ENODEV;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 907 goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 908 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 909
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 910 /* at this point I'll assume that the chip is an SMC9xxx.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 911 It might be prudent to check a listing of MAC addresses
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 912 against the hardware address, or do some other tests. */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 913
2ad02bdc885db5 drivers/net/ethernet/smsc/smc9194.c Ben Boeckel 2013-11-01 914 pr_info_once("%s\n", version);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 915
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 916 /* fill in some of the fields */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 917 dev->base_addr = ioaddr;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 918
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 919 /*
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 920 . Get the MAC address ( bank 1, regs 4 - 9 )
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 921 */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 922 SMC_SELECT_BANK( 1 );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 923 for ( i = 0; i < 6; i += 2 ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 924 word address;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 925
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 926 address = inw( ioaddr + ADDR0 + i );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 @927 dev->dev_addr[ i + 1] = address >> 8;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 928 dev->dev_addr[ i ] = address & 0xFF;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 929 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 930
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 931 /* get the memory information */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 932
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 933 SMC_SELECT_BANK( 0 );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 934 memory_info_register = inw( ioaddr + MIR );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 935 memory_cfg_register = inw( ioaddr + MCR );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 936 memory = ( memory_cfg_register >> 9 ) & 0x7; /* multiplier */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 937 memory *= 256 * ( memory_info_register & 0xFF );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 938
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 939 /*
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 940 Now, I want to find out more about the chip. This is sort of
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 941 redundant, but it's cleaner to have it in both, rather than having
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 942 one VERY long probe procedure.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 943 */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 944 SMC_SELECT_BANK(3);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 945 revision_register = inw( ioaddr + REVISION );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 946 version_string = chip_ids[ ( revision_register >> 4 ) & 0xF ];
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 947 if ( !version_string ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 948 /* I shouldn't get here because this call was done before.... */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 949 retval = -ENODEV;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 950 goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 951 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 952
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 953 /* is it using AUI or 10BaseT ? */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 954 if ( dev->if_port == 0 ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 955 SMC_SELECT_BANK(1);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 956 configuration_register = inw( ioaddr + CONFIG );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 957 if ( configuration_register & CFG_AUI_SELECT )
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 958 dev->if_port = 2;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 959 else
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 960 dev->if_port = 1;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 961 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 962 if_string = interfaces[ dev->if_port - 1 ];
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 963
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 964 /* now, reset the chip, and put it into a known state */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 965 smc_reset( ioaddr );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 966
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 967 /*
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 968 . If dev->irq is 0, then the device has to be banged on to see
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 969 . what the IRQ is.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 970 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 971 . This banging doesn't always detect the IRQ, for unknown reasons.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 972 . a workaround is to reset the chip and try again.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 973 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 974 . Interestingly, the DOS packet driver *SETS* the IRQ on the card to
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 975 . be what is requested on the command line. I don't do that, mostly
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 976 . because the card that I have uses a non-standard method of accessing
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 977 . the IRQs, and because this _should_ work in most configurations.
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 978 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 979 . Specifying an IRQ is done with the assumption that the user knows
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 980 . what (s)he is doing. No checking is done!!!!
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 981 .
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 982 */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 983 if ( dev->irq < 2 ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 984 int trials;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 985
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 986 trials = 3;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 987 while ( trials-- ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 988 dev->irq = smc_findirq( ioaddr );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 989 if ( dev->irq )
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 990 break;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 991 /* kick the card and try again */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 992 smc_reset( ioaddr );
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 993 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 994 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 995 if (dev->irq == 0 ) {
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 996 printk(CARDNAME": Couldn't autodetect your IRQ. Use irq=xx.\n");
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 997 retval = -ENODEV;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 998 goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 999 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1000
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1001 /* now, print out the card info, in a short format.. */
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1002
2ad02bdc885db5 drivers/net/ethernet/smsc/smc9194.c Ben Boeckel 2013-11-01 1003 netdev_info(dev, "%s(r:%d) at %#3x IRQ:%d INTF:%s MEM:%db ",
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1004 version_string, revision_register & 0xF, ioaddr, dev->irq,
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1005 if_string, memory);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1006 /*
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1007 . Print the Ethernet address
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1008 */
2ad02bdc885db5 drivers/net/ethernet/smsc/smc9194.c Ben Boeckel 2013-11-01 1009 netdev_info(dev, "ADDR: %pM\n", dev->dev_addr);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1010
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1011 /* Grab the IRQ */
a0607fd3a25ba1 drivers/net/smc9194.c Joe Perches 2009-11-18 1012 retval = request_irq(dev->irq, smc_interrupt, 0, DRV_NAME, dev);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1013 if (retval) {
2ad02bdc885db5 drivers/net/ethernet/smsc/smc9194.c Ben Boeckel 2013-11-01 1014 netdev_warn(dev, "%s: unable to get IRQ %d (irqval=%d).\n",
2ad02bdc885db5 drivers/net/ethernet/smsc/smc9194.c Ben Boeckel 2013-11-01 1015 DRV_NAME, dev->irq, retval);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1016 goto err_out;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1017 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1018
32670c36d0222e drivers/net/smc9194.c Stephen Hemminger 2009-03-26 1019 dev->netdev_ops = &smc_netdev_ops;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1020 dev->watchdog_timeo = HZ/20;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1021
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1022 return 0;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1023
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1024 err_out:
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1025 release_region(ioaddr, SMC_IO_EXTENT);
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1026 return retval;
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1027 }
^1da177e4c3f41 drivers/net/smc9194.c Linus Torvalds 2005-04-16 1028
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 62370 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH net-next 1/9] net: ax88796c: don't write to netdev->dev_addr directly
[not found] ` <CGME20211118121026eucas1p2b113b6be5644d9c2038519feecba51f5@eucas1p2.samsung.com>
@ 2021-11-18 12:09 ` Lukasz Stelmach
0 siblings, 0 replies; 20+ messages in thread
From: Lukasz Stelmach @ 2021-11-18 12:09 UTC (permalink / raw)
To: Jakub Kicinski; +Cc: davem, netdev
[-- Attachment #1: Type: text/plain, Size: 2333 bytes --]
It was <2021-11-17 śro 20:14>, when Jakub Kicinski wrote:
> The future is here, convert the new driver as we are about
> to make netdev->dev_addr const.
>
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> ---
> CC: l.stelmach@samsung.com
> ---
> drivers/net/ethernet/asix/ax88796c_main.c | 18 ++++++++++--------
> 1 file changed, 10 insertions(+), 8 deletions(-)
>
Acked-by: Lukasz Stelmach <l.stelmach@samsung.com>
> diff --git a/drivers/net/ethernet/asix/ax88796c_main.c b/drivers/net/ethernet/asix/ax88796c_main.c
> index e230d8d0ff73..e7a9f9863258 100644
> --- a/drivers/net/ethernet/asix/ax88796c_main.c
> +++ b/drivers/net/ethernet/asix/ax88796c_main.c
> @@ -144,12 +144,13 @@ static void ax88796c_set_mac_addr(struct net_device *ndev)
> static void ax88796c_load_mac_addr(struct net_device *ndev)
> {
> struct ax88796c_device *ax_local = to_ax88796c_device(ndev);
> + u8 addr[ETH_ALEN];
> u16 temp;
>
> lockdep_assert_held(&ax_local->spi_lock);
>
> /* Try the device tree first */
> - if (!eth_platform_get_mac_address(&ax_local->spi->dev, ndev->dev_addr) &&
> + if (!platform_get_ethdev_address(&ax_local->spi->dev, ndev) &&
> is_valid_ether_addr(ndev->dev_addr)) {
> if (netif_msg_probe(ax_local))
> dev_info(&ax_local->spi->dev,
> @@ -159,18 +160,19 @@ static void ax88796c_load_mac_addr(struct net_device *ndev)
>
> /* Read the MAC address from AX88796C */
> temp = AX_READ(&ax_local->ax_spi, P3_MACASR0);
> - ndev->dev_addr[5] = (u8)temp;
> - ndev->dev_addr[4] = (u8)(temp >> 8);
> + addr[5] = (u8)temp;
> + addr[4] = (u8)(temp >> 8);
>
> temp = AX_READ(&ax_local->ax_spi, P3_MACASR1);
> - ndev->dev_addr[3] = (u8)temp;
> - ndev->dev_addr[2] = (u8)(temp >> 8);
> + addr[3] = (u8)temp;
> + addr[2] = (u8)(temp >> 8);
>
> temp = AX_READ(&ax_local->ax_spi, P3_MACASR2);
> - ndev->dev_addr[1] = (u8)temp;
> - ndev->dev_addr[0] = (u8)(temp >> 8);
> + addr[1] = (u8)temp;
> + addr[0] = (u8)(temp >> 8);
>
> - if (is_valid_ether_addr(ndev->dev_addr)) {
> + if (is_valid_ether_addr(addr)) {
> + eth_hw_addr_set(ndev, addr);
> if (netif_msg_probe(ax_local))
> dev_info(&ax_local->spi->dev,
> "MAC address read from ASIX chip\n");
--
Łukasz Stelmach
Samsung R&D Institute Poland
Samsung Electronics
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH net-next 5/9] net: constify netdev->dev_addr
2021-11-18 4:14 ` [PATCH net-next 5/9] net: constify netdev->dev_addr Jakub Kicinski
@ 2021-11-18 14:12 ` kernel test robot
2021-11-18 11:36 ` kernel test robot
2021-11-18 14:12 ` kernel test robot
2 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2021-11-18 14:12 UTC (permalink / raw)
To: Jakub Kicinski, davem; +Cc: kbuild-all, netdev, Jakub Kicinski
[-- Attachment #1: Type: text/plain, Size: 41081 bytes --]
Hi Jakub,
I love your patch! Perhaps something to improve:
[auto build test WARNING on net-next/master]
url: https://github.com/0day-ci/linux/commits/Jakub-Kicinski/net-constify-netdev-dev_addr/20211118-121649
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 75082e7f46809432131749f4ecea66864d0f7438
config: x86_64-randconfig-s032-20211118 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://github.com/0day-ci/linux/commit/ea5373ba01c0915c0dceb67e2df2b05343642b84
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Jakub-Kicinski/net-constify-netdev-dev_addr/20211118-121649
git checkout ea5373ba01c0915c0dceb67e2df2b05343642b84
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c:2820:55: sparse: sparse: incorrect type in argument 2 (different modifiers) @@ expected unsigned char [usertype] *addr @@ got unsigned char const *dev_addr @@
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c:2820:55: sparse: expected unsigned char [usertype] *addr
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c:2820:55: sparse: got unsigned char const *dev_addr
--
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c:121:25: sparse: sparse: symbol 'bnx2x_iov_wq' was not declared. Should it be static?
>> drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c:8555:57: sparse: sparse: incorrect type in argument 2 (different modifiers) @@ expected unsigned char [usertype] *addr @@ got unsigned char const *dev_addr @@
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c:8555:57: sparse: expected unsigned char [usertype] *addr
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c:8555:57: sparse: got unsigned char const *dev_addr
vim +2820 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2626
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2627 bp->state = BNX2X_STATE_OPENING_WAIT4_LOAD;
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2628
16a5fd9265e757 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-06-02 2629 /* zero the structure w/o any lock, before SP handler is initialized */
2ae17f666099c9 drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2011-05-04 2630 memset(&bp->last_reported_link, 0, sizeof(bp->last_reported_link));
2ae17f666099c9 drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2011-05-04 2631 __set_bit(BNX2X_LINK_REPORT_LINK_DOWN,
2ae17f666099c9 drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2011-05-04 2632 &bp->last_reported_link.link_report_flags);
2ae17f666099c9 drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2011-05-04 2633
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2634 if (IS_PF(bp))
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2635 /* must be called before memory allocation and HW init */
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2636 bnx2x_ilt_set_info(bp);
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2637
6383c0b35b48bf drivers/net/bnx2x/bnx2x_cmn.c Ariel Elior 2011-07-14 2638 /*
6383c0b35b48bf drivers/net/bnx2x/bnx2x_cmn.c Ariel Elior 2011-07-14 2639 * Zero fastpath structures preserving invariants like napi, which are
6383c0b35b48bf drivers/net/bnx2x/bnx2x_cmn.c Ariel Elior 2011-07-14 2640 * allocated only once, fp index, max_cos, bp pointer.
7e6b4d440b0ae9 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Michal Schmidt 2015-04-28 2641 * Also set fp->mode and txdata_ptr.
b3b83c3f3c640b drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-05-04 2642 */
51c1a580b1e07d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-03-18 2643 DP(NETIF_MSG_IFUP, "num queues: %d", bp->num_queues);
b3b83c3f3c640b drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-05-04 2644 for_each_queue(bp, i)
b3b83c3f3c640b drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-05-04 2645 bnx2x_bz_fp(bp, i);
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2646 memset(bp->bnx2x_txq, 0, (BNX2X_MAX_RSS_COUNT(bp) * BNX2X_MULTI_TX_COS +
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2647 bp->num_cnic_queues) *
65565884fba67d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-06-19 2648 sizeof(struct bnx2x_fp_txdata));
b3b83c3f3c640b drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-05-04 2649
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2650 bp->fcoe_init = false;
6383c0b35b48bf drivers/net/bnx2x/bnx2x_cmn.c Ariel Elior 2011-07-14 2651
a8c94b9188bf60 drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2011-02-06 2652 /* Set the receive queues buffer size */
a8c94b9188bf60 drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2011-02-06 2653 bnx2x_set_rx_buf_size(bp);
a8c94b9188bf60 drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2011-02-06 2654
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2655 if (IS_PF(bp)) {
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2656 rc = bnx2x_alloc_mem(bp);
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2657 if (rc) {
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2658 BNX2X_ERR("Unable to allocate bp memory\n");
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2659 return rc;
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2660 }
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2661 }
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2662
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2663 /* need to be done after alloc mem, since it's self adjusting to amount
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2664 * of memory available for RSS queues
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2665 */
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2666 rc = bnx2x_alloc_fp_mem(bp);
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2667 if (rc) {
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2668 BNX2X_ERR("Unable to allocate memory for fps\n");
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2669 LOAD_ERROR_EXIT(bp, load_error0);
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2670 }
d6214d7aaa9a82 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2671
e3ed4eaef4932f drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2013-10-27 2672 /* Allocated memory for FW statistics */
fb653827c75872 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Dan Carpenter 2021-08-05 2673 rc = bnx2x_alloc_fw_stats_mem(bp);
fb653827c75872 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Dan Carpenter 2021-08-05 2674 if (rc)
e3ed4eaef4932f drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2013-10-27 2675 LOAD_ERROR_EXIT(bp, load_error0);
e3ed4eaef4932f drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2013-10-27 2676
8d9ac297d18dbe drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2677 /* request pf to initialize status blocks */
8d9ac297d18dbe drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2678 if (IS_VF(bp)) {
8d9ac297d18dbe drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2679 rc = bnx2x_vfpf_init(bp);
8d9ac297d18dbe drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2680 if (rc)
8d9ac297d18dbe drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2681 LOAD_ERROR_EXIT(bp, load_error0);
8d9ac297d18dbe drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2682 }
8d9ac297d18dbe drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2683
b3b83c3f3c640b drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-05-04 2684 /* As long as bnx2x_alloc_mem() may possibly update
b3b83c3f3c640b drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-05-04 2685 * bp->num_queues, bnx2x_set_real_num_queues() should always
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2686 * come after it. At this stage cnic queues are not counted.
b3b83c3f3c640b drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-05-04 2687 */
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2688 rc = bnx2x_set_real_num_queues(bp, 0);
d6214d7aaa9a82 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2689 if (rc) {
ec6ba945211b1c drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2010-12-13 2690 BNX2X_ERR("Unable to set real_num_queues\n");
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2691 LOAD_ERROR_EXIT(bp, load_error0);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2692 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2693
6383c0b35b48bf drivers/net/bnx2x/bnx2x_cmn.c Ariel Elior 2011-07-14 2694 /* configure multi cos mappings in kernel.
16a5fd9265e757 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-06-02 2695 * this configuration may be overridden by a multi class queue
16a5fd9265e757 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-06-02 2696 * discipline or by a dcbx negotiation result.
6383c0b35b48bf drivers/net/bnx2x/bnx2x_cmn.c Ariel Elior 2011-07-14 2697 */
6383c0b35b48bf drivers/net/bnx2x/bnx2x_cmn.c Ariel Elior 2011-07-14 2698 bnx2x_setup_tc(bp->dev, bp->max_cos);
6383c0b35b48bf drivers/net/bnx2x/bnx2x_cmn.c Ariel Elior 2011-07-14 2699
26614ba5445fe3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-08-27 2700 /* Add all NAPI objects */
26614ba5445fe3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-08-27 2701 bnx2x_add_all_napi(bp);
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2702 DP(NETIF_MSG_IFUP, "napi added\n");
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2703 bnx2x_napi_enable(bp);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2704
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2705 if (IS_PF(bp)) {
889b9af34f9861 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2012-01-26 2706 /* set pf load just before approaching the MCP */
889b9af34f9861 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2012-01-26 2707 bnx2x_set_pf_load(bp);
889b9af34f9861 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2012-01-26 2708
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2709 /* if mcp exists send load request and analyze response */
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2710 if (!BP_NOMCP(bp)) {
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2711 /* attempt to load pf */
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2712 rc = bnx2x_nic_load_request(bp, &load_code);
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2713 if (rc)
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2714 LOAD_ERROR_EXIT(bp, load_error1);
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2715
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2716 /* what did mcp say? */
91ebb929b6f802 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-12-26 2717 rc = bnx2x_compare_fw_ver(bp, load_code, true);
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2718 if (rc) {
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2719 bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_DONE, 0);
d1e2d9660e6bca drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2012-01-26 2720 LOAD_ERROR_EXIT(bp, load_error2);
d1e2d9660e6bca drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2012-01-26 2721 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2722 } else {
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2723 load_code = bnx2x_nic_load_no_mcp(bp, port);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2724 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2725
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2726 /* mark pmf if applicable */
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2727 bnx2x_nic_load_pmf(bp, load_code);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2728
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2729 /* Init Function state controlling object */
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2730 bnx2x__init_func_obj(bp);
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2731
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2732 /* Initialize HW */
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2733 rc = bnx2x_init_hw(bp, load_code);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2734 if (rc) {
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2735 BNX2X_ERR("HW init failed, aborting\n");
a22f078867ef36 drivers/net/bnx2x/bnx2x_cmn.c Yaniv Rosner 2010-09-07 2736 bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_DONE, 0);
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2737 LOAD_ERROR_EXIT(bp, load_error2);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2738 }
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2739 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2740
ecf01c22be0346 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-04-22 2741 bnx2x_pre_irq_nic_init(bp);
ecf01c22be0346 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-04-22 2742
d6214d7aaa9a82 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2743 /* Connect to IRQs */
d6214d7aaa9a82 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2744 rc = bnx2x_setup_irqs(bp);
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2745 if (rc) {
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2746 BNX2X_ERR("setup irqs failed\n");
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2747 if (IS_PF(bp))
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2748 bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_DONE, 0);
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2749 LOAD_ERROR_EXIT(bp, load_error2);
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2750 }
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2751
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2752 /* Init per-function objects */
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2753 if (IS_PF(bp)) {
ecf01c22be0346 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-04-22 2754 /* Setup NIC internals and enable interrupts */
ecf01c22be0346 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-04-22 2755 bnx2x_post_irq_nic_init(bp, load_code);
ecf01c22be0346 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-04-22 2756
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2757 bnx2x_init_bp_objs(bp);
b56e9670ffa4de drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2758 bnx2x_iov_nic_init(bp);
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2759
a334872224a67b drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Barak Witkowski 2012-04-23 2760 /* Set AFEX default VLAN tag to an invalid value */
a334872224a67b drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Barak Witkowski 2012-04-23 2761 bp->afex_def_vlan_tag = -1;
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2762 bnx2x_nic_load_afex_dcc(bp, load_code);
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2763 bp->state = BNX2X_STATE_OPENING_WAIT4_PORT;
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2764 rc = bnx2x_func_start(bp);
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2765 if (rc) {
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2766 BNX2X_ERR("Function start failed!\n");
c636322b24eb69 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-07-19 2767 bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_DONE, 0);
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2768
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2769 LOAD_ERROR_EXIT(bp, load_error3);
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2770 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2771
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2772 /* Send LOAD_DONE command to MCP */
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2773 if (!BP_NOMCP(bp)) {
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2774 load_code = bnx2x_fw_command(bp,
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2775 DRV_MSG_CODE_LOAD_DONE, 0);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2776 if (!load_code) {
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2777 BNX2X_ERR("MCP response failure, aborting\n");
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2778 rc = -EBUSY;
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2779 LOAD_ERROR_EXIT(bp, load_error3);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2780 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2781 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2782
0c14e5ced26462 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-04-17 2783 /* initialize FW coalescing state machines in RAM */
0c14e5ced26462 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-04-17 2784 bnx2x_update_coalesce(bp);
60cad4e67bd6ff drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-09-04 2785 }
0c14e5ced26462 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-04-17 2786
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2787 /* setup the leading queue */
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2788 rc = bnx2x_setup_leading(bp);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2789 if (rc) {
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2790 BNX2X_ERR("Setup leading failed!\n");
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2791 LOAD_ERROR_EXIT(bp, load_error3);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2792 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2793
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2794 /* set up the rest of the queues */
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2795 for_each_nondefault_eth_queue(bp, i) {
60cad4e67bd6ff drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-09-04 2796 if (IS_PF(bp))
60cad4e67bd6ff drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-09-04 2797 rc = bnx2x_setup_queue(bp, &bp->fp[i], false);
60cad4e67bd6ff drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-09-04 2798 else /* VF */
60cad4e67bd6ff drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-09-04 2799 rc = bnx2x_vfpf_setup_q(bp, &bp->fp[i], false);
51c1a580b1e07d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-03-18 2800 if (rc) {
60cad4e67bd6ff drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-09-04 2801 BNX2X_ERR("Queue %d setup failed\n", i);
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2802 LOAD_ERROR_EXIT(bp, load_error3);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2803 }
51c1a580b1e07d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-03-18 2804 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2805
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2806 /* setup rss */
60cad4e67bd6ff drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-09-04 2807 rc = bnx2x_init_rss(bp);
51c1a580b1e07d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-03-18 2808 if (rc) {
51c1a580b1e07d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-03-18 2809 BNX2X_ERR("PF RSS init failed\n");
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2810 LOAD_ERROR_EXIT(bp, load_error3);
51c1a580b1e07d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-03-18 2811 }
8d9ac297d18dbe drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2812
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2813 /* Now when Clients are configured we are ready to work */
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2814 bp->state = BNX2X_STATE_OPEN;
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2815
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2816 /* Configure a ucast MAC */
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2817 if (IS_PF(bp))
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2818 rc = bnx2x_set_eth_mac(bp, true);
8d9ac297d18dbe drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2819 else /* vf */
f8f4f61a5a3588 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2013-04-24 @2820 rc = bnx2x_vfpf_config_mac(bp, bp->dev->dev_addr, bp->fp->index,
f8f4f61a5a3588 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2013-04-24 2821 true);
51c1a580b1e07d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-03-18 2822 if (rc) {
51c1a580b1e07d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-03-18 2823 BNX2X_ERR("Setting Ethernet MAC failed\n");
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2824 LOAD_ERROR_EXIT(bp, load_error3);
51c1a580b1e07d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-03-18 2825 }
6e30dd4e3935dd drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2011-02-06 2826
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2827 if (IS_PF(bp) && bp->pending_max) {
e3835b99333eb3 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-03-06 2828 bnx2x_update_max_mf_config(bp, bp->pending_max);
e3835b99333eb3 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-03-06 2829 bp->pending_max = 0;
e3835b99333eb3 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-03-06 2830 }
e3835b99333eb3 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-03-06 2831
484c016d939278 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Sudarsana Reddy Kalluru 2018-06-28 2832 bp->force_link_down = false;
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2833 if (bp->port.pmf) {
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2834 rc = bnx2x_initial_phy_init(bp, load_mode);
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2835 if (rc)
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2836 LOAD_ERROR_EXIT(bp, load_error3);
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2837 }
c63da990cd6315 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Barak Witkowski 2012-12-05 2838 bp->link_params.feature_config_flags &= ~FEATURE_CONFIG_BOOT_FROM_SAN;
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2839
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2840 /* Start fast path */
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2841
05cc5a39ddb74d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-29 2842 /* Re-configure vlan filters */
05cc5a39ddb74d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-29 2843 rc = bnx2x_vlan_reconfigure_vid(bp);
05cc5a39ddb74d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-29 2844 if (rc)
05cc5a39ddb74d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-29 2845 LOAD_ERROR_EXIT(bp, load_error3);
05cc5a39ddb74d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-29 2846
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2847 /* Initialize Rx filter. */
8b09be5f173759 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-08-01 2848 bnx2x_set_rx_mode_inner(bp);
6e30dd4e3935dd drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2011-02-06 2849
eeed018cbfa30c drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Michal Kalderon 2014-08-17 2850 if (bp->flags & PTP_SUPPORTED) {
07f12622a66320 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Sudarsana Reddy Kalluru 2018-12-12 2851 bnx2x_register_phc(bp);
eeed018cbfa30c drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Michal Kalderon 2014-08-17 2852 bnx2x_init_ptp(bp);
eeed018cbfa30c drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Michal Kalderon 2014-08-17 2853 bnx2x_configure_ptp_filters(bp);
eeed018cbfa30c drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Michal Kalderon 2014-08-17 2854 }
eeed018cbfa30c drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Michal Kalderon 2014-08-17 2855 /* Start Tx */
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2856 switch (load_mode) {
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2857 case LOAD_NORMAL:
16a5fd9265e757 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-06-02 2858 /* Tx queue should be only re-enabled */
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2859 netif_tx_wake_all_queues(bp->dev);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2860 break;
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2861
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2862 case LOAD_OPEN:
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2863 netif_tx_start_all_queues(bp->dev);
4e857c58efeb99 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Peter Zijlstra 2014-03-17 2864 smp_mb__after_atomic();
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2865 break;
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2866
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2867 case LOAD_DIAG:
8970b2e4393a34 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-06-19 2868 case LOAD_LOOPBACK_EXT:
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2869 bp->state = BNX2X_STATE_DIAG;
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2870 break;
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2871
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2872 default:
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2873 break;
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2874 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2875
00253a8cf3119a drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-11-13 2876 if (bp->port.pmf)
4c704899328bcb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Barak Witkowski 2012-12-02 2877 bnx2x_update_drv_flags(bp, 1 << DRV_FLAGS_PORT_MASK, 0);
00253a8cf3119a drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-11-13 2878 else
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2879 bnx2x__link_status_update(bp);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2880
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2881 /* start the timer */
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2882 mod_timer(&bp->timer, jiffies + bp->current_interval);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2883
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2884 if (CNIC_ENABLED(bp))
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2885 bnx2x_load_cnic(bp);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2886
42f8277f56cf4a drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2014-03-23 2887 if (IS_PF(bp))
42f8277f56cf4a drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2014-03-23 2888 bnx2x_schedule_sp_rtnl(bp, BNX2X_SP_RTNL_GET_DRV_VERSION, 0);
42f8277f56cf4a drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2014-03-23 2889
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2890 if (IS_PF(bp) && SHMEM2_HAS(bp, drv_capabilities_flag)) {
9ce392d4fa43c3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2012-03-12 2891 /* mark driver is loaded in shmem2 */
9ce392d4fa43c3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2012-03-12 2892 u32 val;
9ce392d4fa43c3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2012-03-12 2893 val = SHMEM2_RD(bp, drv_capabilities_flag[BP_FW_MB_IDX(bp)]);
230d00eb4bfe0d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-22 2894 val &= ~DRV_FLAGS_MTU_MASK;
230d00eb4bfe0d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-22 2895 val |= (bp->dev->mtu << DRV_FLAGS_MTU_SHIFT);
9ce392d4fa43c3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2012-03-12 2896 SHMEM2_WR(bp, drv_capabilities_flag[BP_FW_MB_IDX(bp)],
9ce392d4fa43c3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2012-03-12 2897 val | DRV_FLAGS_CAPABILITIES_LOADED_SUPPORTED |
9ce392d4fa43c3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2012-03-12 2898 DRV_FLAGS_CAPABILITIES_LOADED_L2);
9ce392d4fa43c3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2012-03-12 2899 }
9ce392d4fa43c3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2012-03-12 2900
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2901 /* Wait for all pending SP commands to complete */
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2902 if (IS_PF(bp) && !bnx2x_wait_sp_comp(bp, ~0x0UL)) {
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2903 BNX2X_ERR("Timeout waiting for SP elements to complete\n");
5d07d8680692a2 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2012-09-13 2904 bnx2x_nic_unload(bp, UNLOAD_CLOSE, false);
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2905 return -EBUSY;
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2906 }
6891dd25d3f82e drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-08-03 2907
c48f350ff5e75a drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-22 2908 /* Update driver data for On-Chip MFW dump. */
c48f350ff5e75a drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-22 2909 if (IS_PF(bp))
c48f350ff5e75a drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-22 2910 bnx2x_update_mfw_dump(bp);
c48f350ff5e75a drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-22 2911
9876879fce3081 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Barak Witkowski 2012-06-19 2912 /* If PMF - send ADMIN DCBX msg to MFW to initiate DCBX FSM */
9876879fce3081 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Barak Witkowski 2012-06-19 2913 if (bp->port.pmf && (bp->state != BNX2X_STATE_DIAG))
9876879fce3081 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Barak Witkowski 2012-06-19 2914 bnx2x_dcbx_init(bp, false);
9876879fce3081 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Barak Witkowski 2012-06-19 2915
230d00eb4bfe0d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-22 2916 if (!IS_MF_SD_STORAGE_PERSONALITY_ONLY(bp))
230d00eb4bfe0d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-22 2917 bnx2x_set_os_driver_state(bp, OS_DRIVER_STATE_ACTIVE);
230d00eb4bfe0d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-22 2918
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2919 DP(NETIF_MSG_IFUP, "Ending successfully NIC load\n");
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2920
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2921 return 0;
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2922
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 39229 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH net-next 5/9] net: constify netdev->dev_addr
@ 2021-11-18 14:12 ` kernel test robot
0 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2021-11-18 14:12 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 41420 bytes --]
Hi Jakub,
I love your patch! Perhaps something to improve:
[auto build test WARNING on net-next/master]
url: https://github.com/0day-ci/linux/commits/Jakub-Kicinski/net-constify-netdev-dev_addr/20211118-121649
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 75082e7f46809432131749f4ecea66864d0f7438
config: x86_64-randconfig-s032-20211118 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://github.com/0day-ci/linux/commit/ea5373ba01c0915c0dceb67e2df2b05343642b84
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Jakub-Kicinski/net-constify-netdev-dev_addr/20211118-121649
git checkout ea5373ba01c0915c0dceb67e2df2b05343642b84
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c:2820:55: sparse: sparse: incorrect type in argument 2 (different modifiers) @@ expected unsigned char [usertype] *addr @@ got unsigned char const *dev_addr @@
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c:2820:55: sparse: expected unsigned char [usertype] *addr
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c:2820:55: sparse: got unsigned char const *dev_addr
--
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c:121:25: sparse: sparse: symbol 'bnx2x_iov_wq' was not declared. Should it be static?
>> drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c:8555:57: sparse: sparse: incorrect type in argument 2 (different modifiers) @@ expected unsigned char [usertype] *addr @@ got unsigned char const *dev_addr @@
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c:8555:57: sparse: expected unsigned char [usertype] *addr
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c:8555:57: sparse: got unsigned char const *dev_addr
vim +2820 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2626
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2627 bp->state = BNX2X_STATE_OPENING_WAIT4_LOAD;
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2628
16a5fd9265e757 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-06-02 2629 /* zero the structure w/o any lock, before SP handler is initialized */
2ae17f666099c9 drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2011-05-04 2630 memset(&bp->last_reported_link, 0, sizeof(bp->last_reported_link));
2ae17f666099c9 drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2011-05-04 2631 __set_bit(BNX2X_LINK_REPORT_LINK_DOWN,
2ae17f666099c9 drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2011-05-04 2632 &bp->last_reported_link.link_report_flags);
2ae17f666099c9 drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2011-05-04 2633
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2634 if (IS_PF(bp))
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2635 /* must be called before memory allocation and HW init */
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2636 bnx2x_ilt_set_info(bp);
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2637
6383c0b35b48bf drivers/net/bnx2x/bnx2x_cmn.c Ariel Elior 2011-07-14 2638 /*
6383c0b35b48bf drivers/net/bnx2x/bnx2x_cmn.c Ariel Elior 2011-07-14 2639 * Zero fastpath structures preserving invariants like napi, which are
6383c0b35b48bf drivers/net/bnx2x/bnx2x_cmn.c Ariel Elior 2011-07-14 2640 * allocated only once, fp index, max_cos, bp pointer.
7e6b4d440b0ae9 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Michal Schmidt 2015-04-28 2641 * Also set fp->mode and txdata_ptr.
b3b83c3f3c640b drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-05-04 2642 */
51c1a580b1e07d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-03-18 2643 DP(NETIF_MSG_IFUP, "num queues: %d", bp->num_queues);
b3b83c3f3c640b drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-05-04 2644 for_each_queue(bp, i)
b3b83c3f3c640b drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-05-04 2645 bnx2x_bz_fp(bp, i);
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2646 memset(bp->bnx2x_txq, 0, (BNX2X_MAX_RSS_COUNT(bp) * BNX2X_MULTI_TX_COS +
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2647 bp->num_cnic_queues) *
65565884fba67d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-06-19 2648 sizeof(struct bnx2x_fp_txdata));
b3b83c3f3c640b drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-05-04 2649
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2650 bp->fcoe_init = false;
6383c0b35b48bf drivers/net/bnx2x/bnx2x_cmn.c Ariel Elior 2011-07-14 2651
a8c94b9188bf60 drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2011-02-06 2652 /* Set the receive queues buffer size */
a8c94b9188bf60 drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2011-02-06 2653 bnx2x_set_rx_buf_size(bp);
a8c94b9188bf60 drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2011-02-06 2654
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2655 if (IS_PF(bp)) {
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2656 rc = bnx2x_alloc_mem(bp);
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2657 if (rc) {
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2658 BNX2X_ERR("Unable to allocate bp memory\n");
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2659 return rc;
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2660 }
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2661 }
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2662
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2663 /* need to be done after alloc mem, since it's self adjusting to amount
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2664 * of memory available for RSS queues
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2665 */
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2666 rc = bnx2x_alloc_fp_mem(bp);
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2667 if (rc) {
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2668 BNX2X_ERR("Unable to allocate memory for fps\n");
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2669 LOAD_ERROR_EXIT(bp, load_error0);
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2670 }
d6214d7aaa9a82 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2671
e3ed4eaef4932f drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2013-10-27 2672 /* Allocated memory for FW statistics */
fb653827c75872 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Dan Carpenter 2021-08-05 2673 rc = bnx2x_alloc_fw_stats_mem(bp);
fb653827c75872 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Dan Carpenter 2021-08-05 2674 if (rc)
e3ed4eaef4932f drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2013-10-27 2675 LOAD_ERROR_EXIT(bp, load_error0);
e3ed4eaef4932f drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2013-10-27 2676
8d9ac297d18dbe drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2677 /* request pf to initialize status blocks */
8d9ac297d18dbe drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2678 if (IS_VF(bp)) {
8d9ac297d18dbe drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2679 rc = bnx2x_vfpf_init(bp);
8d9ac297d18dbe drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2680 if (rc)
8d9ac297d18dbe drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2681 LOAD_ERROR_EXIT(bp, load_error0);
8d9ac297d18dbe drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2682 }
8d9ac297d18dbe drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2683
b3b83c3f3c640b drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-05-04 2684 /* As long as bnx2x_alloc_mem() may possibly update
b3b83c3f3c640b drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-05-04 2685 * bp->num_queues, bnx2x_set_real_num_queues() should always
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2686 * come after it. At this stage cnic queues are not counted.
b3b83c3f3c640b drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-05-04 2687 */
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2688 rc = bnx2x_set_real_num_queues(bp, 0);
d6214d7aaa9a82 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2689 if (rc) {
ec6ba945211b1c drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2010-12-13 2690 BNX2X_ERR("Unable to set real_num_queues\n");
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2691 LOAD_ERROR_EXIT(bp, load_error0);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2692 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2693
6383c0b35b48bf drivers/net/bnx2x/bnx2x_cmn.c Ariel Elior 2011-07-14 2694 /* configure multi cos mappings in kernel.
16a5fd9265e757 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-06-02 2695 * this configuration may be overridden by a multi class queue
16a5fd9265e757 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-06-02 2696 * discipline or by a dcbx negotiation result.
6383c0b35b48bf drivers/net/bnx2x/bnx2x_cmn.c Ariel Elior 2011-07-14 2697 */
6383c0b35b48bf drivers/net/bnx2x/bnx2x_cmn.c Ariel Elior 2011-07-14 2698 bnx2x_setup_tc(bp->dev, bp->max_cos);
6383c0b35b48bf drivers/net/bnx2x/bnx2x_cmn.c Ariel Elior 2011-07-14 2699
26614ba5445fe3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-08-27 2700 /* Add all NAPI objects */
26614ba5445fe3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-08-27 2701 bnx2x_add_all_napi(bp);
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2702 DP(NETIF_MSG_IFUP, "napi added\n");
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2703 bnx2x_napi_enable(bp);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2704
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2705 if (IS_PF(bp)) {
889b9af34f9861 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2012-01-26 2706 /* set pf load just before approaching the MCP */
889b9af34f9861 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2012-01-26 2707 bnx2x_set_pf_load(bp);
889b9af34f9861 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2012-01-26 2708
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2709 /* if mcp exists send load request and analyze response */
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2710 if (!BP_NOMCP(bp)) {
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2711 /* attempt to load pf */
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2712 rc = bnx2x_nic_load_request(bp, &load_code);
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2713 if (rc)
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2714 LOAD_ERROR_EXIT(bp, load_error1);
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2715
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2716 /* what did mcp say? */
91ebb929b6f802 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-12-26 2717 rc = bnx2x_compare_fw_ver(bp, load_code, true);
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2718 if (rc) {
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2719 bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_DONE, 0);
d1e2d9660e6bca drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2012-01-26 2720 LOAD_ERROR_EXIT(bp, load_error2);
d1e2d9660e6bca drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2012-01-26 2721 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2722 } else {
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2723 load_code = bnx2x_nic_load_no_mcp(bp, port);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2724 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2725
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2726 /* mark pmf if applicable */
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2727 bnx2x_nic_load_pmf(bp, load_code);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2728
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2729 /* Init Function state controlling object */
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2730 bnx2x__init_func_obj(bp);
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2731
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2732 /* Initialize HW */
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2733 rc = bnx2x_init_hw(bp, load_code);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2734 if (rc) {
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2735 BNX2X_ERR("HW init failed, aborting\n");
a22f078867ef36 drivers/net/bnx2x/bnx2x_cmn.c Yaniv Rosner 2010-09-07 2736 bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_DONE, 0);
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2737 LOAD_ERROR_EXIT(bp, load_error2);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2738 }
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2739 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2740
ecf01c22be0346 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-04-22 2741 bnx2x_pre_irq_nic_init(bp);
ecf01c22be0346 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-04-22 2742
d6214d7aaa9a82 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2743 /* Connect to IRQs */
d6214d7aaa9a82 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2744 rc = bnx2x_setup_irqs(bp);
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2745 if (rc) {
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2746 BNX2X_ERR("setup irqs failed\n");
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2747 if (IS_PF(bp))
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2748 bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_DONE, 0);
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2749 LOAD_ERROR_EXIT(bp, load_error2);
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2750 }
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2751
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2752 /* Init per-function objects */
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2753 if (IS_PF(bp)) {
ecf01c22be0346 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-04-22 2754 /* Setup NIC internals and enable interrupts */
ecf01c22be0346 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-04-22 2755 bnx2x_post_irq_nic_init(bp, load_code);
ecf01c22be0346 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-04-22 2756
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2757 bnx2x_init_bp_objs(bp);
b56e9670ffa4de drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2758 bnx2x_iov_nic_init(bp);
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2759
a334872224a67b drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Barak Witkowski 2012-04-23 2760 /* Set AFEX default VLAN tag to an invalid value */
a334872224a67b drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Barak Witkowski 2012-04-23 2761 bp->afex_def_vlan_tag = -1;
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2762 bnx2x_nic_load_afex_dcc(bp, load_code);
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2763 bp->state = BNX2X_STATE_OPENING_WAIT4_PORT;
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2764 rc = bnx2x_func_start(bp);
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2765 if (rc) {
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2766 BNX2X_ERR("Function start failed!\n");
c636322b24eb69 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-07-19 2767 bnx2x_fw_command(bp, DRV_MSG_CODE_LOAD_DONE, 0);
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2768
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2769 LOAD_ERROR_EXIT(bp, load_error3);
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2770 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2771
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2772 /* Send LOAD_DONE command to MCP */
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2773 if (!BP_NOMCP(bp)) {
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2774 load_code = bnx2x_fw_command(bp,
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2775 DRV_MSG_CODE_LOAD_DONE, 0);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2776 if (!load_code) {
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2777 BNX2X_ERR("MCP response failure, aborting\n");
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2778 rc = -EBUSY;
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2779 LOAD_ERROR_EXIT(bp, load_error3);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2780 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2781 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2782
0c14e5ced26462 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-04-17 2783 /* initialize FW coalescing state machines in RAM */
0c14e5ced26462 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-04-17 2784 bnx2x_update_coalesce(bp);
60cad4e67bd6ff drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-09-04 2785 }
0c14e5ced26462 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-04-17 2786
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2787 /* setup the leading queue */
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2788 rc = bnx2x_setup_leading(bp);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2789 if (rc) {
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2790 BNX2X_ERR("Setup leading failed!\n");
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2791 LOAD_ERROR_EXIT(bp, load_error3);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2792 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2793
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2794 /* set up the rest of the queues */
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2795 for_each_nondefault_eth_queue(bp, i) {
60cad4e67bd6ff drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-09-04 2796 if (IS_PF(bp))
60cad4e67bd6ff drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-09-04 2797 rc = bnx2x_setup_queue(bp, &bp->fp[i], false);
60cad4e67bd6ff drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-09-04 2798 else /* VF */
60cad4e67bd6ff drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-09-04 2799 rc = bnx2x_vfpf_setup_q(bp, &bp->fp[i], false);
51c1a580b1e07d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-03-18 2800 if (rc) {
60cad4e67bd6ff drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-09-04 2801 BNX2X_ERR("Queue %d setup failed\n", i);
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2802 LOAD_ERROR_EXIT(bp, load_error3);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2803 }
51c1a580b1e07d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-03-18 2804 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2805
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2806 /* setup rss */
60cad4e67bd6ff drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-09-04 2807 rc = bnx2x_init_rss(bp);
51c1a580b1e07d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-03-18 2808 if (rc) {
51c1a580b1e07d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-03-18 2809 BNX2X_ERR("PF RSS init failed\n");
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2810 LOAD_ERROR_EXIT(bp, load_error3);
51c1a580b1e07d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-03-18 2811 }
8d9ac297d18dbe drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2812
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2813 /* Now when Clients are configured we are ready to work */
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2814 bp->state = BNX2X_STATE_OPEN;
523224a3b3cd40 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-10-06 2815
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2816 /* Configure a ucast MAC */
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2817 if (IS_PF(bp))
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2818 rc = bnx2x_set_eth_mac(bp, true);
8d9ac297d18dbe drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2819 else /* vf */
f8f4f61a5a3588 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2013-04-24 @2820 rc = bnx2x_vfpf_config_mac(bp, bp->dev->dev_addr, bp->fp->index,
f8f4f61a5a3588 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2013-04-24 2821 true);
51c1a580b1e07d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-03-18 2822 if (rc) {
51c1a580b1e07d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-03-18 2823 BNX2X_ERR("Setting Ethernet MAC failed\n");
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2824 LOAD_ERROR_EXIT(bp, load_error3);
51c1a580b1e07d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-03-18 2825 }
6e30dd4e3935dd drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2011-02-06 2826
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2827 if (IS_PF(bp) && bp->pending_max) {
e3835b99333eb3 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-03-06 2828 bnx2x_update_max_mf_config(bp, bp->pending_max);
e3835b99333eb3 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-03-06 2829 bp->pending_max = 0;
e3835b99333eb3 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-03-06 2830 }
e3835b99333eb3 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-03-06 2831
484c016d939278 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Sudarsana Reddy Kalluru 2018-06-28 2832 bp->force_link_down = false;
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2833 if (bp->port.pmf) {
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2834 rc = bnx2x_initial_phy_init(bp, load_mode);
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2835 if (rc)
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2836 LOAD_ERROR_EXIT(bp, load_error3);
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2837 }
c63da990cd6315 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Barak Witkowski 2012-12-05 2838 bp->link_params.feature_config_flags &= ~FEATURE_CONFIG_BOOT_FROM_SAN;
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2839
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2840 /* Start fast path */
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2841
05cc5a39ddb74d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-29 2842 /* Re-configure vlan filters */
05cc5a39ddb74d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-29 2843 rc = bnx2x_vlan_reconfigure_vid(bp);
05cc5a39ddb74d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-29 2844 if (rc)
05cc5a39ddb74d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-29 2845 LOAD_ERROR_EXIT(bp, load_error3);
05cc5a39ddb74d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-29 2846
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2847 /* Initialize Rx filter. */
8b09be5f173759 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-08-01 2848 bnx2x_set_rx_mode_inner(bp);
6e30dd4e3935dd drivers/net/bnx2x/bnx2x_cmn.c Vladislav Zolotarov 2011-02-06 2849
eeed018cbfa30c drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Michal Kalderon 2014-08-17 2850 if (bp->flags & PTP_SUPPORTED) {
07f12622a66320 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Sudarsana Reddy Kalluru 2018-12-12 2851 bnx2x_register_phc(bp);
eeed018cbfa30c drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Michal Kalderon 2014-08-17 2852 bnx2x_init_ptp(bp);
eeed018cbfa30c drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Michal Kalderon 2014-08-17 2853 bnx2x_configure_ptp_filters(bp);
eeed018cbfa30c drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Michal Kalderon 2014-08-17 2854 }
eeed018cbfa30c drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Michal Kalderon 2014-08-17 2855 /* Start Tx */
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2856 switch (load_mode) {
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2857 case LOAD_NORMAL:
16a5fd9265e757 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2013-06-02 2858 /* Tx queue should be only re-enabled */
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2859 netif_tx_wake_all_queues(bp->dev);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2860 break;
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2861
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2862 case LOAD_OPEN:
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2863 netif_tx_start_all_queues(bp->dev);
4e857c58efeb99 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Peter Zijlstra 2014-03-17 2864 smp_mb__after_atomic();
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2865 break;
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2866
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2867 case LOAD_DIAG:
8970b2e4393a34 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-06-19 2868 case LOAD_LOOPBACK_EXT:
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2869 bp->state = BNX2X_STATE_DIAG;
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2870 break;
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2871
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2872 default:
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2873 break;
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2874 }
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2875
00253a8cf3119a drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-11-13 2876 if (bp->port.pmf)
4c704899328bcb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Barak Witkowski 2012-12-02 2877 bnx2x_update_drv_flags(bp, 1 << DRV_FLAGS_PORT_MASK, 0);
00253a8cf3119a drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2011-11-13 2878 else
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2879 bnx2x__link_status_update(bp);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2880
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2881 /* start the timer */
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2882 mod_timer(&bp->timer, jiffies + bp->current_interval);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2883
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2884 if (CNIC_ENABLED(bp))
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2885 bnx2x_load_cnic(bp);
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2886
42f8277f56cf4a drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2014-03-23 2887 if (IS_PF(bp))
42f8277f56cf4a drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2014-03-23 2888 bnx2x_schedule_sp_rtnl(bp, BNX2X_SP_RTNL_GET_DRV_VERSION, 0);
42f8277f56cf4a drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2014-03-23 2889
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2890 if (IS_PF(bp) && SHMEM2_HAS(bp, drv_capabilities_flag)) {
9ce392d4fa43c3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2012-03-12 2891 /* mark driver is loaded in shmem2 */
9ce392d4fa43c3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2012-03-12 2892 u32 val;
9ce392d4fa43c3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2012-03-12 2893 val = SHMEM2_RD(bp, drv_capabilities_flag[BP_FW_MB_IDX(bp)]);
230d00eb4bfe0d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-22 2894 val &= ~DRV_FLAGS_MTU_MASK;
230d00eb4bfe0d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-22 2895 val |= (bp->dev->mtu << DRV_FLAGS_MTU_SHIFT);
9ce392d4fa43c3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2012-03-12 2896 SHMEM2_WR(bp, drv_capabilities_flag[BP_FW_MB_IDX(bp)],
9ce392d4fa43c3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2012-03-12 2897 val | DRV_FLAGS_CAPABILITIES_LOADED_SUPPORTED |
9ce392d4fa43c3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2012-03-12 2898 DRV_FLAGS_CAPABILITIES_LOADED_L2);
9ce392d4fa43c3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2012-03-12 2899 }
9ce392d4fa43c3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2012-03-12 2900
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2901 /* Wait for all pending SP commands to complete */
ad5afc89365e98 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Ariel Elior 2013-01-01 2902 if (IS_PF(bp) && !bnx2x_wait_sp_comp(bp, ~0x0UL)) {
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2903 BNX2X_ERR("Timeout waiting for SP elements to complete\n");
5d07d8680692a2 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2012-09-13 2904 bnx2x_nic_unload(bp, UNLOAD_CLOSE, false);
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2905 return -EBUSY;
619c5cb6885b93 drivers/net/bnx2x/bnx2x_cmn.c Vlad Zolotarov 2011-06-14 2906 }
6891dd25d3f82e drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-08-03 2907
c48f350ff5e75a drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-22 2908 /* Update driver data for On-Chip MFW dump. */
c48f350ff5e75a drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-22 2909 if (IS_PF(bp))
c48f350ff5e75a drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-22 2910 bnx2x_update_mfw_dump(bp);
c48f350ff5e75a drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-22 2911
9876879fce3081 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Barak Witkowski 2012-06-19 2912 /* If PMF - send ADMIN DCBX msg to MFW to initiate DCBX FSM */
9876879fce3081 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Barak Witkowski 2012-06-19 2913 if (bp->port.pmf && (bp->state != BNX2X_STATE_DIAG))
9876879fce3081 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Barak Witkowski 2012-06-19 2914 bnx2x_dcbx_init(bp, false);
9876879fce3081 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Barak Witkowski 2012-06-19 2915
230d00eb4bfe0d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-22 2916 if (!IS_MF_SD_STORAGE_PERSONALITY_ONLY(bp))
230d00eb4bfe0d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-22 2917 bnx2x_set_os_driver_state(bp, OS_DRIVER_STATE_ACTIVE);
230d00eb4bfe0d drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Yuval Mintz 2015-07-22 2918
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2919 DP(NETIF_MSG_IFUP, "Ending successfully NIC load\n");
55c11941e382cb drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c Merav Sicron 2012-11-07 2920
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2921 return 0;
9f6c925889ad92 drivers/net/bnx2x/bnx2x_cmn.c Dmitry Kravkov 2010-07-27 2922
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 39229 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2021-11-18 14:13 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-18 4:14 [PATCH net-next 0/9] net: constify netdev->dev_addr Jakub Kicinski
2021-11-18 4:14 ` [PATCH net-next 1/9] net: ax88796c: don't write to netdev->dev_addr directly Jakub Kicinski
[not found] ` <CGME20211118121026eucas1p2b113b6be5644d9c2038519feecba51f5@eucas1p2.samsung.com>
2021-11-18 12:09 ` Lukasz Stelmach
2021-11-18 4:14 ` [PATCH net-next 2/9] mlxsw: constify address in mlxsw_sp_port_dev_addr_set Jakub Kicinski
2021-11-18 7:27 ` Ido Schimmel
2021-11-18 4:14 ` [PATCH net-next 3/9] wilc1000: copy address before calling wilc_set_mac_address Jakub Kicinski
2021-11-18 5:35 ` Kalle Valo
2021-11-18 4:14 ` [PATCH net-next 4/9] ipw2200: constify address in ipw_send_adapter_address Jakub Kicinski
2021-11-18 5:36 ` Kalle Valo
2021-11-18 4:14 ` [PATCH net-next 5/9] net: constify netdev->dev_addr Jakub Kicinski
2021-11-18 6:15 ` kernel test robot
2021-11-18 6:15 ` kernel test robot
2021-11-18 11:36 ` kernel test robot
2021-11-18 11:36 ` kernel test robot
2021-11-18 14:12 ` kernel test robot
2021-11-18 14:12 ` kernel test robot
2021-11-18 4:14 ` [PATCH net-next 6/9] net: unexport dev_addr_init() & dev_addr_flush() Jakub Kicinski
2021-11-18 4:14 ` [PATCH net-next 7/9] dev_addr: add a modification check Jakub Kicinski
2021-11-18 4:15 ` [PATCH net-next 8/9] dev_addr_list: put the first addr on the tree Jakub Kicinski
2021-11-18 4:15 ` [PATCH net-next 9/9] net: kunit: add a test for dev_addr_lists Jakub Kicinski
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.