Re: [v1 PATCH] ucc_geth: fix ethtool set ring param bug
From: Ben Hutchings <hidden>
Date: 2010-09-02 16:33:04
Also in:
netdev
On Thu, 2010-09-02 at 23:48 +0800, Liang Li wrote:
On Thu, Sep 02, 2010 at 12:11:47PM +0100, Ben Hutchings wrote:quoted
On Thu, 2010-09-02 at 08:50 +0800, Liang Li wrote:quoted
On Wed, Sep 01, 2010 at 02:42:30PM +0100, Ben Hutchings wrote:quoted
On Wed, 2010-09-01 at 09:43 +0800, Liang Li wrote:quoted
It's common sense that when we should do change to driver ring desc/buffer etc only after 'stop/shutdown' the device. When we do change while devices/driver is running, kernel oops occur:[...]quoted
- ug_info->bdRingLenRx[queue] = ring->rx_pending; - ug_info->bdRingLenTx[queue] = ring->tx_pending; - if (netif_running(netdev)) { - /* FIXME: restart automatically */ - printk(KERN_INFO - "Please re-open the interface.\n"); + u16 rx_t; + u16 tx_t; + printk(KERN_INFO "Stopping interface %s.\n", netdev->name); + ucc_geth_close(netdev); + + rx_t = ug_info->bdRingLenRx[queue]; + tx_t = ug_info->bdRingLenTx[queue]; + + ug_info->bdRingLenRx[queue] = ring->rx_pending; + ug_info->bdRingLenTx[queue] = ring->tx_pending; + + printk(KERN_INFO "Reactivating interface %s.\n", netdev->name); + ret = ucc_geth_open(netdev); + if (ret) { + printk(KERN_WARNING "uec_set_ringparam: set ring param for running" + " interface %s failed. Please try to make the interface " + " down, then try again.\n", netdev->name); + ug_info->bdRingLenRx[queue] = rx_t; + ug_info->bdRingLenTx[queue] = tx_t; + }[...] Bringing the interface down will call ucc_geth_close(), which will try to free resources that have not been allocated!Sorry, I did not understand you on this point. There is no ucc_geth_close when 'open fail'. What you mean here exactly?[...] Read your own warning.So the warning is mis-leading... We may not need it... Still, let's talk about the rare case that 'fail of open', may you please show me what is the right thing to do 'clean up work' when ever the open fail. Maybe dev_close(net_dev)?
I give up. Just s/ucc_geth_open/dev_open/ and s/ucc_geth_close/dev_close/. Ben. -- Ben Hutchings, Senior Software Engineer, Solarflare Communications Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked.