* Re: re add support for bcm5750
From: Francesco Piccinno @ 2011-09-16 13:39 UTC (permalink / raw)
To: Florian Mickler
Cc: Matt Carlson, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, Benjamin Li, Michael Chan,
davem@davemloft.net
In-Reply-To: <20110907203646.2a7b7833@schatten.dmk.lab>
I have contacted Broadcom asking for support and apparently there is
no way to fix the problem. Now I have a couple of questions: the use
of tg3 driver without a firmware expose the NIC to some risks or not?
And is there any chance to have the PCI IDs added back to tg3 module?
I do not want to modify and recompile the module at every version
bump.
Thanks for the support :)
--
Best regards,
Francesco Piccinno
On Wed, Sep 7, 2011 at 8:36 PM, Florian Mickler <florian@mickler.org> wrote:
> On Tue, 6 Sep 2011 18:25:15 -0700
> "Matt Carlson" <mcarlson@broadcom.com> wrote:
>
>> On Tue, Sep 06, 2011 at 08:03:43AM -0700, Florian Mickler wrote:
>> > Hi,
>> >
>> > in https://bugzilla.kernel.org/show_bug.cgi?id=42132 Francesco wrote:
>> >
>> > > I have a notebook (HP TC4400) which has a BCM5750 ethernet card inside. The
>> > > ouput of lspci is:
>> > >
>> > > 08:00.0 Ethernet controller [0200]: Broadcom Corporation NetXtreme BCM5750M
>> > > Gigabit Ethernet [14e4:167c]
>> > >
>> > > Commit 67b284d476bcb3d100e946da23d6cf9acfd0465c removed the support for this
>> > > device. I wish to have the support for this network card back again. Thanks!
>>
>> Hi Florian. Are you experiencing the same problem? We found that
>> Francesco's problem was that the firmware of his device was missing. Do
>> you see :
>>
>> eth0: No firmware running
>>
>> messages?
>>
>
> Hi Matt!
> No, I was just browsing the regression list and found this entry but
> couldn't associate any action with it.
>
> This clears that up, thanks for the information and I will close this
> bug.
>
> Regards,
> Flo
>
^ permalink raw reply
* RE: Very confused about broute DROP
From: Greg Scott @ 2011-09-16 14:55 UTC (permalink / raw)
To: Christian Benvenuti (benve), netdev; +Cc: Graham Parenteau
In-Reply-To: <184D23435BECB444AB6B9D4630C8EC8302854957@XMB-RCD-303.cisco.com>
Definitely counter-intuitive in my head. Three little ebtables rules -
ACCEPT anything IPv4 - which includes ARPs - for a couple of IP
Addresses and then DROP everything else for all protocols. (Which
really means bridge for those IPv4 Addresses and route for everything
else.)
I don't see how a rule specific to ARPs matters here. ARP is an IPv4
protocol and should be implied in the rules I set up - right? Why a
rule specific to ARPs when it's already part of IPv4?
This just hit me - layer 2 is stateless. I have ACCEPT rules for frames
bound for **destination** IPv4 IP Addresses. I wonder if I need similar
rules for these same IP Addresses as sources? But that still doesn't
make sense - that rule to DROP everything else covers all sources and
all destinations. When I put in that ebtables DROP rule, the box turns
into a black hole instead of a router.
Maybe one day the lightbulb will light up in my head, but right now I
still don't get it.
- Greg
-----Original Message-----
From: Christian Benvenuti (benve) [mailto:benve@cisco.com]
Sent: Thursday, September 15, 2011 11:23 PM
To: Greg Scott; netdev@vger.kernel.org
Cc: Graham Parenteau
Subject: RE: Very confused about broute DROP
What I meant is that your host needs to be able to route
(which means ... to process) its own ARP traffic, ... IPv4
does not work without ARP, right?
This means you need to add one more DROP rule for the ARP
traffic that is addressed to the MAC of the host interfaces
(nothing to do with proxy ARP).
/Chris
^ permalink raw reply
* Re: re add support for bcm5750
From: Matt Carlson @ 2011-09-16 16:28 UTC (permalink / raw)
To: Francesco Piccinno
Cc: Florian Mickler, Matthew Carlson, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, Benjamin Li, Michael Chan,
davem@davemloft.net
In-Reply-To: <CAA7bCn4NTSppmAph9pxykpEfYT_tYoBFV8zReaKFgJqcu6=t7Q@mail.gmail.com>
On Fri, Sep 16, 2011 at 06:39:30AM -0700, Francesco Piccinno wrote:
> I have contacted Broadcom asking for support and apparently there is
> no way to fix the problem. Now I have a couple of questions: the use
> of tg3 driver without a firmware expose the NIC to some risks or not?
> And is there any chance to have the PCI IDs added back to tg3 module?
> I do not want to modify and recompile the module at every version
> bump.
>
> Thanks for the support :)
That's the plan. It's on my TODO list to add support back in.
> --
> Best regards,
> Francesco Piccinno
>
>
>
> On Wed, Sep 7, 2011 at 8:36 PM, Florian Mickler <florian@mickler.org> wrote:
> > On Tue, 6 Sep 2011 18:25:15 -0700
> > "Matt Carlson" <mcarlson@broadcom.com> wrote:
> >
> >> On Tue, Sep 06, 2011 at 08:03:43AM -0700, Florian Mickler wrote:
> >> > Hi,
> >> >
> >> > in https://bugzilla.kernel.org/show_bug.cgi?id=42132 Francesco wrote:
> >> >
> >> > > I have a notebook (HP TC4400) which has a BCM5750 ethernet card inside. The
> >> > > ouput of lspci is:
> >> > >
> >> > > 08:00.0 Ethernet controller [0200]: Broadcom Corporation NetXtreme BCM5750M
> >> > > Gigabit Ethernet [14e4:167c]
> >> > >
> >> > > Commit 67b284d476bcb3d100e946da23d6cf9acfd0465c removed the support for this
> >> > > device. I wish to have the support for this network card back again. Thanks!
> >>
> >> Hi Florian. ??Are you experiencing the same problem? ??We found that
> >> Francesco's problem was that the firmware of his device was missing. ??Do
> >> you see :
> >>
> >> eth0: No firmware running
> >>
> >> messages?
> >>
> >
> > Hi Matt!
> > No, I was just browsing the regression list and found this entry but
> > couldn't associate any action with it.
> >
> > This clears that up, thanks for the information and I will close this
> > bug.
> >
> > Regards,
> > Flo
> >
>
^ permalink raw reply
* iproute2 repository (temp)
From: Stephen Hemminger @ 2011-09-16 17:30 UTC (permalink / raw)
To: netdev
Since there are a number of small patches pending, and a few more waiting.
I put the current iproute2 repository over on github until kernel.org comes back.
git clone git://github.com/shemminger/iproute2.git
^ permalink raw reply
* IRDA: Fix global type conflicts in net/irda/irsysctl.c
From: Andi Kleen @ 2011-09-16 17:32 UTC (permalink / raw)
To: samuel, davem, netdev
The externs here didn't agree with the declarations in qos.c.
Better would be probably to move this into a header, but since it's
common practice to have naked externs with sysctls I left it for now.
Cc: samuel@sortiz.org
Signed-off-by: Andi Kleen <ak@linux.intel.com>
diff --git a/net/irda/irsysctl.c b/net/irda/irsysctl.c
index d0b70da..be22ad2 100644
--- a/net/irda/irsysctl.c
+++ b/net/irda/irsysctl.c
@@ -40,9 +40,9 @@ extern int sysctl_slot_timeout;
extern int sysctl_fast_poll_increase;
extern char sysctl_devname[];
extern int sysctl_max_baud_rate;
-extern int sysctl_min_tx_turn_time;
-extern int sysctl_max_tx_data_size;
-extern int sysctl_max_tx_window;
+extern unsigned sysctl_min_tx_turn_time;
+extern unsigned sysctl_max_tx_data_size;
+extern unsigned sysctl_max_tx_window;
extern int sysctl_max_noreply_time;
extern int sysctl_warn_noreply_time;
extern int sysctl_lap_keepalive_time;
--
ak@linux.intel.com -- Speaking for myself only
^ permalink raw reply related
* [PATCH] can: ti_hecc: include linux/io.h
From: Daniel Mack @ 2011-09-16 17:57 UTC (permalink / raw)
To: linux-kernel; +Cc: Daniel Mack, Wolfgang Grandegger, netdev
This fixes a build breakage for OMAP3 boards.
Signed-off-by: Daniel Mack <zonque@gmail.com>
Cc: Wolfgang Grandegger <wg@grandegger.com>
Cc: netdev@vger.kernel.org
---
drivers/net/can/ti_hecc.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/drivers/net/can/ti_hecc.c b/drivers/net/can/ti_hecc.c
index a812492..2adc294 100644
--- a/drivers/net/can/ti_hecc.c
+++ b/drivers/net/can/ti_hecc.c
@@ -46,6 +46,7 @@
#include <linux/skbuff.h>
#include <linux/platform_device.h>
#include <linux/clk.h>
+#include <linux/io.h>
#include <linux/can/dev.h>
#include <linux/can/error.h>
--
1.7.6
^ permalink raw reply related
* pull request: wireless-next 2011-09-16
From: John W. Linville @ 2011-09-16 18:31 UTC (permalink / raw)
To: davem; +Cc: linux-wireless, netdev
Dave,
This is a batch of updates intended for 3.2. They have been simmering
for a while, since I merged them just before the big kernel.org
shutdown. That includes time in wireless-testing and linux-next
(albeit the latter is diminished by the kernel.org outage). For now,
I am just trying to clear the backlog... :-)
This includes a sizable wl12xx pull and a bunch of iwlagn updates.
There are also a number of ath9k updates, some b43 updates, and a
handful of other bits.
Please let me know if there are problems!
Thanks,
John
---
The following changes since commit 986eaa904129fc888c6c3882f6405a0055110e51:
Merge branch 'master' of ../netdev-next/ (2011-09-16 02:58:54 -0400)
are available in the git repository at:
git://git.infradead.org/users/linville/wireless-next.git for-davem
Arik Nemtsov (17):
wl12xx: Revert "wl12xx: schedule TX packets according to FW occupancy"
wl12xx: Use a single fw for both STA and AP roles
wl12xx: use 1 spare block in all cases
wl12xx: handle dummy packet event also in ap mode
wl12xx: fix session counter
wl12xx: use dynamic hlids for AP-mode
wl12xx: re-enable block ack session support
wl12xx: AP-mode - set STA HT capabilities when adding a STA
wl12xx: AP-mode - configure STA HT rates on join
wl12xx: AP-mode - configure HT rate support to the FW
wl12xx: track freed packets in FW by AC
wl12xx: schedule TX packets according to FW packet occupancy
wl12xx: handle wrap-around overflow in released Tx blocks FW counter
wl12xx: enable AP advanced functionality
wl12xx: set the AP-started flag only after setting keys
wl12xx: AP-mode - prevent Tx to stale/invalid stations
wl12xx: fix tx_queue_count spurious increment
Axel Lin (1):
p54spi: add "spi:" prefix for stlc45xx modalias
Christian Lamparter (1):
p54: Use do_div for 64-bit division to fix 32-bit kernels
Daniel Halperin (1):
iwlagn: fix compile warnings when CONFIG_PM_SLEEP is not set
Eliad Peller (23):
wl12xx: temporarily disable advanced ap functions
wl12xx: remove rx filtering stuff
wl12xx: update fw status struct
wl12xx: update acx commands
wl12xx: update commands & events
wl12xx: enable/disable role on interface add/remove
wl12xx: add device role commands
wl12xx: update scan cmd api
wl12xx: update rx/tx
wl12xx: change max/default template size
wl12xx: use wl1271_acx_beacon_filter_opt for both sta and ap
wl12xx: add set_rate_mgmt_params acx
wl12xx: add system_hlid
wl12xx: add ROC/CROC commands
wl12xx: replace dummy_join with ROC/CROC commands
wl12xx: update BT coex configuration params
wl12xx: call wl12xx_cmd_set_peer_state() in AP mode
wl12xx: don't remove key if hlid was already deleted
wl12xx: add wl12xx_cmd_role_start_ibss()
wl12xx: support IBSS vif type
wl12xx: use ap_bcast_hlid for recorded keys
wl12xx: don't remove key if hlid was already deleted
wl12xx: don't wait for disconnection event
Emmanuel Grumbach (52):
iwlagn: use iwl_get_debug_level instead of iwl_debug_level
iwlagn: introduce iwl-shared.h
iwlagn: introduce struct iwl-shared - known by all layers
iwlagn: debug_level moves to struct iwl_shared
iwlagn: hw_params moves to iwl_shared
iwlagn: cmd_queue moves to iwl_shared
iwlagn: workqueue moves to iwl_shared
iwlagn: priv->status moves to iwl_shared
iwlagn: priv->lock moves to iwl_shared
iwlagn: priv->mutex moves to iwl_shared
iwlagn: modify the debug macro to be usable by all the layers
iwlagn: add IWL_DEBUG_FW_ERRORS
iwlagn: priv->sta_lock moves to iwl_shared
iwlagn: bus layer chooses its transport layer
iwlagn: add comments to iwl_bus / iwl_trans
iwlagn: transport handler can register debugfs entries
iwlagn: iwl_rx_queue moves to the iwl_trans_pcie
iwlagn: move iwl_suspend / iwl_resume to the transport layer
iwlagn: move ISR related data to transport layer
iwlagn: move the NIC error flow to the transport layer
iwlagn: move isr_statistics to transport layer
iwlagn: reclaim the packets in transport layer
iwlagn: move reclaim related functions
iwlagn: move scd_bc_tbls and scd_base_addr to iwl_trans_pcie
iwlagn: fix the check of IWLAGN_FIRST_AMPDU_QUEUE
iwlagn: move all iwl_is_XXX helpers to iwl-shared.h
iwlagn: move iwl_free_pages to iwl-shared.h
iwlagn: transport layer should receive iwl_trans
iwlagn: move hcmd_lock to transport layer
iwlagn: move dump_csr and dump_fh to transport layer
iwlagn: remove references to priv from the transport layer
iwlagn: remove unused parameters from hw_params
iwlagn: iwl-dev.h doesn't include iwl-fh.h any more
iwlagn: move Keep Warm to transport layer
iwlagn: add missing includes
iwlagn: all function iwl-io.c receive iwl_bus
iwlagn: iwl-pci doesn't include iwl-dev any more
iwlagn: iwl_tid_data moves to iwl-shared
iwlagn: remove dereferences of priv from transport
iwlagn: stop the device before freeing it
iwlagn: upper layer stores iwl_rxon_context in skb's CB
iwlagn: set tx_fifo for ampdu in transport layer
iwlagn: upper layer uses slabs to allocate tx cmds
iwlagn: move the mapping ac to queue / fifo to transport
iwlagn: allocate resources for TX BA session in transport
iwlagn: move the check_empty logic to the transport layer
iwlagn: move the disable agg logic to transport layer
iwlagn: cosmetics in iwl-trans.h
iwlagn: move wait_for_tx_queue_empty to transport layer
iwlagn: move check_stuck_queue to transport layer
iwlagn: move the stop / wake queue logic to transport layer
iwlagn: move tx queues to transport layer
Felix Fietkau (6):
ath9k: fix regression in sending aggregated packets
ath9k: use u8 for the tx key index
ath9k: clean up the aggregation tid queue
ath9k: move the sequence number from ath_frame_info to ath_buf
ath9k: move seqno allocation in the tx path to ath_tx_setup_buffer
ath9k: defer ath_tx_setup_buffer setup to the first tx attempt during aggr
Florian Fainelli (1):
ath9k: add missing AR9340 in ath_mac_bb_names
Gery Kahn (1):
wl12xx: fixes for hw_pg_ver and chip id reporting
Greg Dietsche (1):
iwlwifi: iwl-agn-rs.c: remove old comment
Joe Perches (2):
ath: Make ath_dbg void not int
ath: Make ath_printk void not int and remove unused struct ath_common *
Johannes Berg (1):
iwlagn: handle GO powersave
John W. Linville (4):
Merge branch 'for-linville' of git://git.kernel.org/.../luca/wl12xx
mac80211: refactor skb copy to failq in mesh_path_move_to_queue
wl12xx/sdio_test.c: fix build breakage from WL127X_FW_NAME change
Merge branch 'master' of git://git.infradead.org/users/linville/wireless-next into for-davem
Larry Finger (3):
b43: Relax requirement for descriptors to be in the DMA zone
ath9k: Fix a smatch warnings
b43: Fix swatch warning
Mohammed Shafi Shajakhan (2):
ath9k: use appropriate debug mask
ath9k: minor cleanup in ani
Peter Huewe (1):
net/mac80211/debugfs: Convert to kstrou8_from_user
Rafał Miłecki (2):
b43: use 8K buffers for 64-bit DMA to workaround hardware bug
b43: make HT-PHY support experimental
Rajkumar Manoharan (3):
ath9k_hw: Set default slottime as 9us
ath9k: Fix eifs/usec timeout for AR9287 v1.3+
ath9k: Add debugfs support for mac/baseband samples
Shahar Levi (1):
wl12xx: Add support to RX packets payload alignment
Stanislaw Gruszka (1):
cfg80211: document wiphy->registered
Wey-Yi Guy (7):
iwlagn: Rename iwlcore prefix
iwlagn: remove out-dated comments
iwlagn: enable 11n aggregation without checking traffic load
iwlagn: support small form factor SKU of 6205
iwlagn: more comments for bt channel inhibition
iwlagn: add comments to module parameters
iwlagn: adding special "D" SKU for 2000 series
drivers/net/wireless/ath/ath.h | 48 +-
drivers/net/wireless/ath/ath9k/ani.c | 2 +-
drivers/net/wireless/ath/ath9k/ani.h | 5 +-
drivers/net/wireless/ath/ath9k/ar9002_mac.c | 2 +-
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 2 +-
drivers/net/wireless/ath/ath9k/ar9003_mac.c | 2 +-
drivers/net/wireless/ath/ath9k/ath9k.h | 7 +-
drivers/net/wireless/ath/ath9k/debug.c | 312 ++++-
drivers/net/wireless/ath/ath9k/debug.h | 47 +
drivers/net/wireless/ath/ath9k/htc_drv_main.c | 1 +
drivers/net/wireless/ath/ath9k/hw.c | 13 +-
drivers/net/wireless/ath/ath9k/hw.h | 2 +-
drivers/net/wireless/ath/ath9k/init.c | 1 +
drivers/net/wireless/ath/ath9k/mac.h | 3 +-
drivers/net/wireless/ath/ath9k/main.c | 2 +
drivers/net/wireless/ath/ath9k/recv.c | 24 +-
drivers/net/wireless/ath/ath9k/reg.h | 2 +
drivers/net/wireless/ath/ath9k/xmit.c | 234 ++--
drivers/net/wireless/ath/main.c | 8 +-
drivers/net/wireless/b43/Kconfig | 6 +-
drivers/net/wireless/b43/dma.c | 31 +-
drivers/net/wireless/b43/dma.h | 3 +-
drivers/net/wireless/b43/main.c | 5 +-
drivers/net/wireless/iwlwifi/iwl-1000.c | 42 +-
drivers/net/wireless/iwlwifi/iwl-2000.c | 51 +-
drivers/net/wireless/iwlwifi/iwl-5000.c | 72 +-
drivers/net/wireless/iwlwifi/iwl-6000.c | 60 +-
drivers/net/wireless/iwlwifi/iwl-agn-calib.c | 43 +-
drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c | 6 +-
drivers/net/wireless/iwlwifi/iwl-agn-hw.h | 13 -
drivers/net/wireless/iwlwifi/iwl-agn-lib.c | 676 +--------
drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 93 +-
drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 65 +-
drivers/net/wireless/iwlwifi/iwl-agn-sta.c | 84 +-
drivers/net/wireless/iwlwifi/iwl-agn-tt.c | 68 +-
drivers/net/wireless/iwlwifi/iwl-agn-tx.c | 913 ++++++------
drivers/net/wireless/iwlwifi/iwl-agn-ucode.c | 52 +-
drivers/net/wireless/iwlwifi/iwl-agn.c | 938 ++++--------
drivers/net/wireless/iwlwifi/iwl-agn.h | 63 +-
drivers/net/wireless/iwlwifi/iwl-bus.h | 34 +-
drivers/net/wireless/iwlwifi/iwl-commands.h | 6 +-
drivers/net/wireless/iwlwifi/iwl-core.c | 284 ++---
drivers/net/wireless/iwlwifi/iwl-core.h | 118 +--
drivers/net/wireless/iwlwifi/iwl-debug.h | 40 +-
drivers/net/wireless/iwlwifi/iwl-debugfs.c | 412 +-----
drivers/net/wireless/iwlwifi/iwl-dev.h | 329 +----
drivers/net/wireless/iwlwifi/iwl-devtrace.h | 2 +
drivers/net/wireless/iwlwifi/iwl-eeprom.c | 62 +-
drivers/net/wireless/iwlwifi/iwl-eeprom.h | 1 -
drivers/net/wireless/iwlwifi/iwl-fh.h | 20 +-
drivers/net/wireless/iwlwifi/iwl-helpers.h | 91 +--
drivers/net/wireless/iwlwifi/iwl-io.c | 192 ++--
drivers/net/wireless/iwlwifi/iwl-io.h | 61 +-
drivers/net/wireless/iwlwifi/iwl-led.c | 11 +-
drivers/net/wireless/iwlwifi/iwl-pci.c | 43 +-
drivers/net/wireless/iwlwifi/iwl-pci.h | 116 ++
drivers/net/wireless/iwlwifi/iwl-power.c | 19 +-
drivers/net/wireless/iwlwifi/iwl-prph.h | 4 +-
drivers/net/wireless/iwlwifi/iwl-rx.c | 42 +-
drivers/net/wireless/iwlwifi/iwl-scan.c | 97 +-
drivers/net/wireless/iwlwifi/iwl-shared.h | 430 ++++++
drivers/net/wireless/iwlwifi/iwl-sta.c | 106 +-
drivers/net/wireless/iwlwifi/iwl-sta.h | 4 +-
drivers/net/wireless/iwlwifi/iwl-sv-open.c | 21 +-
drivers/net/wireless/iwlwifi/iwl-trans-int-pcie.h | 314 ++++-
drivers/net/wireless/iwlwifi/iwl-trans-rx-pcie.c | 862 +++++++++---
drivers/net/wireless/iwlwifi/iwl-trans-tx-pcie.c | 506 +++++--
drivers/net/wireless/iwlwifi/iwl-trans.c | 1615 ++++++++++++++++-----
drivers/net/wireless/iwlwifi/iwl-trans.h | 216 ++-
drivers/net/wireless/p54/p54spi.c | 2 +-
drivers/net/wireless/p54/txrx.c | 12 +-
drivers/net/wireless/wl12xx/acx.c | 322 ++---
drivers/net/wireless/wl12xx/acx.h | 394 ++----
drivers/net/wireless/wl12xx/boot.c | 43 +-
drivers/net/wireless/wl12xx/boot.h | 3 +-
drivers/net/wireless/wl12xx/cmd.c | 793 ++++++++---
drivers/net/wireless/wl12xx/cmd.h | 329 +++--
drivers/net/wireless/wl12xx/conf.h | 352 ++---
drivers/net/wireless/wl12xx/debugfs.c | 17 +-
drivers/net/wireless/wl12xx/event.c | 6 +-
drivers/net/wireless/wl12xx/event.h | 80 +-
drivers/net/wireless/wl12xx/init.c | 91 +-
drivers/net/wireless/wl12xx/io.h | 1 -
drivers/net/wireless/wl12xx/main.c | 961 ++++++++-----
drivers/net/wireless/wl12xx/ps.c | 4 +-
drivers/net/wireless/wl12xx/reg.h | 75 -
drivers/net/wireless/wl12xx/rx.c | 60 +-
drivers/net/wireless/wl12xx/rx.h | 18 +-
drivers/net/wireless/wl12xx/scan.c | 38 +-
drivers/net/wireless/wl12xx/scan.h | 25 +-
drivers/net/wireless/wl12xx/sdio.c | 4 +-
drivers/net/wireless/wl12xx/sdio_test.c | 2 +-
drivers/net/wireless/wl12xx/spi.c | 4 +-
drivers/net/wireless/wl12xx/tx.c | 136 ++-
drivers/net/wireless/wl12xx/tx.h | 16 +-
drivers/net/wireless/wl12xx/wl12xx.h | 153 +-
drivers/net/wireless/wl12xx/wl12xx_80211.h | 25 -
include/net/cfg80211.h | 1 +
net/mac80211/debugfs.c | 14 +-
net/mac80211/mesh_pathtbl.c | 8 +-
100 files changed, 7670 insertions(+), 6378 deletions(-)
create mode 100644 drivers/net/wireless/iwlwifi/iwl-pci.h
create mode 100644 drivers/net/wireless/iwlwifi/iwl-shared.h
Omnibus patch is available here:
http://bombadil.infradead.org/~linville/wireless-next-2011-09-16.patch.gz
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply
* Re: IRDA: Fix global type conflicts in net/irda/irsysctl.c
From: David Miller @ 2011-09-16 18:52 UTC (permalink / raw)
To: andi; +Cc: samuel, netdev
In-Reply-To: <20110916173251.GA25560@tassilo.jf.intel.com>
Please use "unsigned int" rather than plain "unsigned", and yes
that means you might have to fix up the other instances likewise.
^ permalink raw reply
* [PATCH] IRDA: Fix global type conflicts in net/irda/irsysctl.c v2
From: Andi Kleen @ 2011-09-16 19:09 UTC (permalink / raw)
To: davem; +Cc: samuel, netdev, Andi Kleen
From: Andi Kleen <ak@linux.intel.com>
The externs here didn't agree with the declarations in qos.c.
Better would be probably to move this into a header, but since it's
common practice to have naked externs with sysctls I left it for now.
v2: add some redundancy
Cc: samuel@sortiz.org
Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
net/irda/irsysctl.c | 6 +++---
net/irda/qos.c | 6 +++---
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/net/irda/irsysctl.c b/net/irda/irsysctl.c
index d0b70da..2615ffc 100644
--- a/net/irda/irsysctl.c
+++ b/net/irda/irsysctl.c
@@ -40,9 +40,9 @@ extern int sysctl_slot_timeout;
extern int sysctl_fast_poll_increase;
extern char sysctl_devname[];
extern int sysctl_max_baud_rate;
-extern int sysctl_min_tx_turn_time;
-extern int sysctl_max_tx_data_size;
-extern int sysctl_max_tx_window;
+extern unsigned int sysctl_min_tx_turn_time;
+extern unsigned int sysctl_max_tx_data_size;
+extern unsigned int sysctl_max_tx_window;
extern int sysctl_max_noreply_time;
extern int sysctl_warn_noreply_time;
extern int sysctl_lap_keepalive_time;
diff --git a/net/irda/qos.c b/net/irda/qos.c
index 1b51bcf..4369f7f 100644
--- a/net/irda/qos.c
+++ b/net/irda/qos.c
@@ -60,7 +60,7 @@ int sysctl_max_noreply_time = 12;
* Default is 10us which means using the unmodified value given by the
* peer except if it's 0 (0 is likely a bug in the other stack).
*/
-unsigned sysctl_min_tx_turn_time = 10;
+unsigned int sysctl_min_tx_turn_time = 10;
/*
* Maximum data size to be used in transmission in payload of LAP frame.
* There is a bit of confusion in the IrDA spec :
@@ -75,13 +75,13 @@ unsigned sysctl_min_tx_turn_time = 10;
* bytes frames or all negotiated frame sizes, but you can use the sysctl
* to play with this value anyway.
* Jean II */
-unsigned sysctl_max_tx_data_size = 2042;
+unsigned int sysctl_max_tx_data_size = 2042;
/*
* Maximum transmit window, i.e. number of LAP frames between turn-around.
* This allow to override what the peer told us. Some peers are buggy and
* don't always support what they tell us.
* Jean II */
-unsigned sysctl_max_tx_window = 7;
+unsigned int sysctl_max_tx_window = 7;
static int irlap_param_baud_rate(void *instance, irda_param_t *param, int get);
static int irlap_param_link_disconnect(void *instance, irda_param_t *parm,
--
1.7.4.4
^ permalink raw reply related
* Re: [PATCH] can: ti_hecc: include linux/io.h
From: Wolfgang Grandegger @ 2011-09-16 19:18 UTC (permalink / raw)
To: Daniel Mack; +Cc: linux-kernel, netdev
In-Reply-To: <1316195863-18695-1-git-send-email-zonque@gmail.com>
On 09/16/2011 07:57 PM, Daniel Mack wrote:
> This fixes a build breakage for OMAP3 boards.
>
> Signed-off-by: Daniel Mack <zonque@gmail.com>
> Cc: Wolfgang Grandegger <wg@grandegger.com>
> Cc: netdev@vger.kernel.org
Acked-by: Wolfgang Grandegger <wg@grandegger.com>
Thanks.
Wolfgang.
^ permalink raw reply
* Re: [net-next 00/11][pull request] Intel Wired LAN Driver Updates
From: David Miller @ 2011-09-16 19:20 UTC (permalink / raw)
To: jeffrey.t.kirsher; +Cc: netdev, gospo
In-Reply-To: <1316148173-11209-1-git-send-email-jeffrey.t.kirsher@intel.com>
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Thu, 15 Sep 2011 21:42:42 -0700
> The following series contains updates to ixgbe only. These are primarily
> cleanups of the ixgbe driver. The first two patches of the series:
>
> ixgbe: Change default Tx work limit size to 256 buffers
> ixgbe: consolidate all MSI-X ring interrupts and poll routines into one
>
> are re-worked based on previous community feedback (Dave and Ben).
>
> The following are changes since commit 4bc71cb983fd2844e603bf633df2bb53385182d2:
> net: consolidate and fix ethtool_ops->get_settings calling
> and are available in the git repository at:
> git://github.com/Jkirsher/net-next.git
Pulled, thanks Jeff.
^ permalink raw reply
* Re: pull request: wireless-next 2011-09-16
From: David Miller @ 2011-09-16 19:20 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, netdev
In-Reply-To: <20110916183118.GB22612@tuxdriver.com>
From: "John W. Linville" <linville@tuxdriver.com>
Date: Fri, 16 Sep 2011 14:31:19 -0400
> This is a batch of updates intended for 3.2. They have been simmering
> for a while, since I merged them just before the big kernel.org
> shutdown. That includes time in wireless-testing and linux-next
> (albeit the latter is diminished by the kernel.org outage). For now,
> I am just trying to clear the backlog... :-)
>
> This includes a sizable wl12xx pull and a bunch of iwlagn updates.
> There are also a number of ath9k updates, some b43 updates, and a
> handful of other bits.
>
> Please let me know if there are problems!
Pulled, thanks John.
^ permalink raw reply
* Re: [PATCH 0/4] ibmveth fixes
From: David Miller @ 2011-09-16 19:28 UTC (permalink / raw)
To: anton; +Cc: santil, brking, rcj, netdev
In-Reply-To: <20110908004102.355674129@samba.org>
From: Anton Blanchard <anton@samba.org>
Date: Thu, 08 Sep 2011 10:41:02 +1000
> Here are a number of fixes found during ibmveth testing.
All applied.
I love those "ret1", "ret2", "ret3", "ret4" variables.
Each successive number in the names gives such incredible
insight into the meaning and usage of the individual
variables, making it painless for reviewers to understand
this code.
^ permalink raw reply
* Re: [PATCH 1/2] sfc: Remove requirement to set tx-usecs-irq for shared channels when modifying coalescing parameters
From: David Miller @ 2011-09-16 20:51 UTC (permalink / raw)
To: bhutchings; +Cc: ripduman.sohan, linux-net-drivers, shodgson, netdev
In-Reply-To: <1315231921.3028.11.camel@bwh-desktop>
From: Ben Hutchings <bhutchings@solarflare.com>
Date: Mon, 05 Sep 2011 15:12:01 +0100
> So I have some changes of my own in preparation, which I'll send as
> follow-ups.
Ben, just FYI, I have applied those follow-up patches to SFC.
Thanks.
^ permalink raw reply
* Re: [PATCH 0/4] ibmveth fixes
From: Anton Blanchard @ 2011-09-16 20:51 UTC (permalink / raw)
To: David Miller; +Cc: santil, brking, rcj, netdev
In-Reply-To: <20110916.152803.861340383634129942.davem@davemloft.net>
Hi Dave,
> All applied.
Thanks!
> I love those "ret1", "ret2", "ret3", "ret4" variables.
>
> Each successive number in the names gives such incredible
> insight into the meaning and usage of the individual
> variables, making it painless for reviewers to understand
> this code.
:) That function needs to be simplified and rewritten, it took me a
while to get my head around it.
Anton
^ permalink raw reply
* [PATCH net-next] pcnet32: constify function table
From: Stephen Hemminger @ 2011-09-16 21:06 UTC (permalink / raw)
To: Don Fry, David Miller; +Cc: netdev
Function tables need to be const to prevent malicious use.
This is compile tested only.
Gleaned from PAX.
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
---
drivers/net/ethernet/amd/pcnet32.c | 202 +++++++++++++++++++++++++-------------------------
1 file changed, 101 insertions(+), 101 deletions(-)
--- a/drivers/net/ethernet/amd/pcnet32.c 2011-09-16 13:12:56.421369669 -0700
+++ b/drivers/net/ethernet/amd/pcnet32.c 2011-09-16 13:18:39.973385541 -0700
@@ -270,7 +270,7 @@ struct pcnet32_private {
struct sk_buff **rx_skbuff;
dma_addr_t *tx_dma_addr;
dma_addr_t *rx_dma_addr;
- struct pcnet32_access a;
+ const struct pcnet32_access *a;
spinlock_t lock; /* Guard lock */
unsigned int cur_rx, cur_tx; /* The next free ring entry */
unsigned int rx_ring_size; /* current rx ring size */
@@ -379,7 +379,7 @@ static int pcnet32_wio_check(unsigned lo
return inw(addr + PCNET32_WIO_RAP) == 88;
}
-static struct pcnet32_access pcnet32_wio = {
+static const struct pcnet32_access pcnet32_wio = {
.read_csr = pcnet32_wio_read_csr,
.write_csr = pcnet32_wio_write_csr,
.read_bcr = pcnet32_wio_read_bcr,
@@ -434,7 +434,7 @@ static int pcnet32_dwio_check(unsigned l
return (inl(addr + PCNET32_DWIO_RAP) & 0xffff) == 88;
}
-static struct pcnet32_access pcnet32_dwio = {
+static const struct pcnet32_access pcnet32_dwio = {
.read_csr = pcnet32_dwio_read_csr,
.write_csr = pcnet32_dwio_write_csr,
.read_bcr = pcnet32_dwio_read_bcr,
@@ -460,9 +460,9 @@ static void pcnet32_netif_start(struct n
u16 val;
netif_wake_queue(dev);
- val = lp->a.read_csr(ioaddr, CSR3);
+ val = lp->a->read_csr(ioaddr, CSR3);
val &= 0x00ff;
- lp->a.write_csr(ioaddr, CSR3, val);
+ lp->a->write_csr(ioaddr, CSR3, val);
napi_enable(&lp->napi);
}
@@ -730,7 +730,7 @@ static u32 pcnet32_get_link(struct net_d
r = mii_link_ok(&lp->mii_if);
} else if (lp->chip_version >= PCNET32_79C970A) {
ulong ioaddr = dev->base_addr; /* card base I/O address */
- r = (lp->a.read_bcr(ioaddr, 4) != 0xc0);
+ r = (lp->a->read_bcr(ioaddr, 4) != 0xc0);
} else { /* can not detect link on really old chips */
r = 1;
}
@@ -792,7 +792,7 @@ static int pcnet32_set_ringparam(struct
pcnet32_netif_stop(dev);
spin_lock_irqsave(&lp->lock, flags);
- lp->a.write_csr(ioaddr, CSR0, CSR0_STOP); /* stop the chip */
+ lp->a->write_csr(ioaddr, CSR0, CSR0_STOP); /* stop the chip */
size = min(ering->tx_pending, (unsigned int)TX_MAX_RING_SIZE);
@@ -868,7 +868,7 @@ static void pcnet32_ethtool_test(struct
static int pcnet32_loopback_test(struct net_device *dev, uint64_t * data1)
{
struct pcnet32_private *lp = netdev_priv(dev);
- struct pcnet32_access *a = &lp->a; /* access to registers */
+ const struct pcnet32_access *a = lp->a; /* access to registers */
ulong ioaddr = dev->base_addr; /* card base I/O address */
struct sk_buff *skb; /* sk buff */
int x, i; /* counters */
@@ -888,21 +888,21 @@ static int pcnet32_loopback_test(struct
pcnet32_netif_stop(dev);
spin_lock_irqsave(&lp->lock, flags);
- lp->a.write_csr(ioaddr, CSR0, CSR0_STOP); /* stop the chip */
+ lp->a->write_csr(ioaddr, CSR0, CSR0_STOP); /* stop the chip */
numbuffs = min(numbuffs, (int)min(lp->rx_ring_size, lp->tx_ring_size));
/* Reset the PCNET32 */
- lp->a.reset(ioaddr);
- lp->a.write_csr(ioaddr, CSR4, 0x0915); /* auto tx pad */
+ lp->a->reset(ioaddr);
+ lp->a->write_csr(ioaddr, CSR4, 0x0915); /* auto tx pad */
/* switch pcnet32 to 32bit mode */
- lp->a.write_bcr(ioaddr, 20, 2);
+ lp->a->write_bcr(ioaddr, 20, 2);
/* purge & init rings but don't actually restart */
pcnet32_restart(dev, 0x0000);
- lp->a.write_csr(ioaddr, CSR0, CSR0_STOP); /* Set STOP bit */
+ lp->a->write_csr(ioaddr, CSR0, CSR0_STOP); /* Set STOP bit */
/* Initialize Transmit buffers. */
size = data_len + 15;
@@ -947,10 +947,10 @@ static int pcnet32_loopback_test(struct
/* set int loopback in CSR15 */
x = a->read_csr(ioaddr, CSR15) & 0xfffc;
- lp->a.write_csr(ioaddr, CSR15, x | 0x0044);
+ lp->a->write_csr(ioaddr, CSR15, x | 0x0044);
teststatus = cpu_to_le16(0x8000);
- lp->a.write_csr(ioaddr, CSR0, CSR0_START); /* Set STRT bit */
+ lp->a->write_csr(ioaddr, CSR0, CSR0_START); /* Set STRT bit */
/* Check status of descriptors */
for (x = 0; x < numbuffs; x++) {
@@ -969,7 +969,7 @@ static int pcnet32_loopback_test(struct
}
}
- lp->a.write_csr(ioaddr, CSR0, CSR0_STOP); /* Set STOP bit */
+ lp->a->write_csr(ioaddr, CSR0, CSR0_STOP); /* Set STOP bit */
wmb();
if (netif_msg_hw(lp) && netif_msg_pktdata(lp)) {
netdev_printk(KERN_DEBUG, dev, "RX loopback packets:\n");
@@ -1015,7 +1015,7 @@ clean_up:
pcnet32_restart(dev, CSR0_NORMAL);
} else {
pcnet32_purge_rx_ring(dev);
- lp->a.write_bcr(ioaddr, 20, 4); /* return to 16bit mode */
+ lp->a->write_bcr(ioaddr, 20, 4); /* return to 16bit mode */
}
spin_unlock_irqrestore(&lp->lock, flags);
@@ -1026,7 +1026,7 @@ static int pcnet32_set_phys_id(struct ne
enum ethtool_phys_id_state state)
{
struct pcnet32_private *lp = netdev_priv(dev);
- struct pcnet32_access *a = &lp->a;
+ const struct pcnet32_access *a = lp->a;
ulong ioaddr = dev->base_addr;
unsigned long flags;
int i;
@@ -1067,7 +1067,7 @@ static int pcnet32_suspend(struct net_de
{
int csr5;
struct pcnet32_private *lp = netdev_priv(dev);
- struct pcnet32_access *a = &lp->a;
+ const struct pcnet32_access *a = lp->a;
ulong ioaddr = dev->base_addr;
int ticks;
@@ -1324,8 +1324,8 @@ static int pcnet32_poll(struct napi_stru
spin_lock_irqsave(&lp->lock, flags);
if (pcnet32_tx(dev)) {
/* reset the chip to clear the error condition, then restart */
- lp->a.reset(ioaddr);
- lp->a.write_csr(ioaddr, CSR4, 0x0915); /* auto tx pad */
+ lp->a->reset(ioaddr);
+ lp->a->write_csr(ioaddr, CSR4, 0x0915); /* auto tx pad */
pcnet32_restart(dev, CSR0_START);
netif_wake_queue(dev);
}
@@ -1337,12 +1337,12 @@ static int pcnet32_poll(struct napi_stru
__napi_complete(napi);
/* clear interrupt masks */
- val = lp->a.read_csr(ioaddr, CSR3);
+ val = lp->a->read_csr(ioaddr, CSR3);
val &= 0x00ff;
- lp->a.write_csr(ioaddr, CSR3, val);
+ lp->a->write_csr(ioaddr, CSR3, val);
/* Set interrupt enable. */
- lp->a.write_csr(ioaddr, CSR0, CSR0_INTEN);
+ lp->a->write_csr(ioaddr, CSR0, CSR0_INTEN);
spin_unlock_irqrestore(&lp->lock, flags);
}
@@ -1365,7 +1365,7 @@ static void pcnet32_get_regs(struct net_
int i, csr0;
u16 *buff = ptr;
struct pcnet32_private *lp = netdev_priv(dev);
- struct pcnet32_access *a = &lp->a;
+ const struct pcnet32_access *a = lp->a;
ulong ioaddr = dev->base_addr;
unsigned long flags;
@@ -1401,9 +1401,9 @@ static void pcnet32_get_regs(struct net_
for (j = 0; j < PCNET32_MAX_PHYS; j++) {
if (lp->phymask & (1 << j)) {
for (i = 0; i < PCNET32_REGS_PER_PHY; i++) {
- lp->a.write_bcr(ioaddr, 33,
+ lp->a->write_bcr(ioaddr, 33,
(j << 5) | i);
- *buff++ = lp->a.read_bcr(ioaddr, 34);
+ *buff++ = lp->a->read_bcr(ioaddr, 34);
}
}
}
@@ -1528,7 +1528,7 @@ pcnet32_probe1(unsigned long ioaddr, int
int chip_version;
char *chipname;
struct net_device *dev;
- struct pcnet32_access *a = NULL;
+ const struct pcnet32_access *a = NULL;
u8 promaddr[6];
int ret = -ENODEV;
@@ -1785,7 +1785,7 @@ pcnet32_probe1(unsigned long ioaddr, int
((cards_found >= MAX_UNITS) || full_duplex[cards_found]))
lp->options |= PCNET32_PORT_FD;
- lp->a = *a;
+ lp->a = a;
/* prior to register_netdev, dev->name is not yet correct */
if (pcnet32_alloc_ring(dev, pci_name(lp->pci_dev))) {
@@ -1844,7 +1844,7 @@ pcnet32_probe1(unsigned long ioaddr, int
if (lp->mii) {
/* lp->phycount and lp->phymask are set to 0 by memset above */
- lp->mii_if.phy_id = ((lp->a.read_bcr(ioaddr, 33)) >> 5) & 0x1f;
+ lp->mii_if.phy_id = ((lp->a->read_bcr(ioaddr, 33)) >> 5) & 0x1f;
/* scan for PHYs */
for (i = 0; i < PCNET32_MAX_PHYS; i++) {
unsigned short id1, id2;
@@ -1864,7 +1864,7 @@ pcnet32_probe1(unsigned long ioaddr, int
pr_info("Found PHY %04x:%04x at address %d\n",
id1, id2, i);
}
- lp->a.write_bcr(ioaddr, 33, (lp->mii_if.phy_id) << 5);
+ lp->a->write_bcr(ioaddr, 33, (lp->mii_if.phy_id) << 5);
if (lp->phycount > 1)
lp->options |= PCNET32_PORT_MII;
}
@@ -2020,10 +2020,10 @@ static int pcnet32_open(struct net_devic
}
/* Reset the PCNET32 */
- lp->a.reset(ioaddr);
+ lp->a->reset(ioaddr);
/* switch pcnet32 to 32bit mode */
- lp->a.write_bcr(ioaddr, 20, 2);
+ lp->a->write_bcr(ioaddr, 20, 2);
netif_printk(lp, ifup, KERN_DEBUG, dev,
"%s() irq %d tx/rx rings %#x/%#x init %#x\n",
@@ -2032,14 +2032,14 @@ static int pcnet32_open(struct net_devic
(u32) (lp->init_dma_addr));
/* set/reset autoselect bit */
- val = lp->a.read_bcr(ioaddr, 2) & ~2;
+ val = lp->a->read_bcr(ioaddr, 2) & ~2;
if (lp->options & PCNET32_PORT_ASEL)
val |= 2;
- lp->a.write_bcr(ioaddr, 2, val);
+ lp->a->write_bcr(ioaddr, 2, val);
/* handle full duplex setting */
if (lp->mii_if.full_duplex) {
- val = lp->a.read_bcr(ioaddr, 9) & ~3;
+ val = lp->a->read_bcr(ioaddr, 9) & ~3;
if (lp->options & PCNET32_PORT_FD) {
val |= 1;
if (lp->options == (PCNET32_PORT_FD | PCNET32_PORT_AUI))
@@ -2049,14 +2049,14 @@ static int pcnet32_open(struct net_devic
if (lp->chip_version == 0x2627)
val |= 3;
}
- lp->a.write_bcr(ioaddr, 9, val);
+ lp->a->write_bcr(ioaddr, 9, val);
}
/* set/reset GPSI bit in test register */
- val = lp->a.read_csr(ioaddr, 124) & ~0x10;
+ val = lp->a->read_csr(ioaddr, 124) & ~0x10;
if ((lp->options & PCNET32_PORT_PORTSEL) == PCNET32_PORT_GPSI)
val |= 0x10;
- lp->a.write_csr(ioaddr, 124, val);
+ lp->a->write_csr(ioaddr, 124, val);
/* Allied Telesyn AT 2700/2701 FX are 100Mbit only and do not negotiate */
if (pdev && pdev->subsystem_vendor == PCI_VENDOR_ID_AT &&
@@ -2075,24 +2075,24 @@ static int pcnet32_open(struct net_devic
* duplex, and/or enable auto negotiation, and clear DANAS
*/
if (lp->mii && !(lp->options & PCNET32_PORT_ASEL)) {
- lp->a.write_bcr(ioaddr, 32,
- lp->a.read_bcr(ioaddr, 32) | 0x0080);
+ lp->a->write_bcr(ioaddr, 32,
+ lp->a->read_bcr(ioaddr, 32) | 0x0080);
/* disable Auto Negotiation, set 10Mpbs, HD */
- val = lp->a.read_bcr(ioaddr, 32) & ~0xb8;
+ val = lp->a->read_bcr(ioaddr, 32) & ~0xb8;
if (lp->options & PCNET32_PORT_FD)
val |= 0x10;
if (lp->options & PCNET32_PORT_100)
val |= 0x08;
- lp->a.write_bcr(ioaddr, 32, val);
+ lp->a->write_bcr(ioaddr, 32, val);
} else {
if (lp->options & PCNET32_PORT_ASEL) {
- lp->a.write_bcr(ioaddr, 32,
- lp->a.read_bcr(ioaddr,
+ lp->a->write_bcr(ioaddr, 32,
+ lp->a->read_bcr(ioaddr,
32) | 0x0080);
/* enable auto negotiate, setup, disable fd */
- val = lp->a.read_bcr(ioaddr, 32) & ~0x98;
+ val = lp->a->read_bcr(ioaddr, 32) & ~0x98;
val |= 0x20;
- lp->a.write_bcr(ioaddr, 32, val);
+ lp->a->write_bcr(ioaddr, 32, val);
}
}
} else {
@@ -2105,10 +2105,10 @@ static int pcnet32_open(struct net_devic
* There is really no good other way to handle multiple PHYs
* other than turning off all automatics
*/
- val = lp->a.read_bcr(ioaddr, 2);
- lp->a.write_bcr(ioaddr, 2, val & ~2);
- val = lp->a.read_bcr(ioaddr, 32);
- lp->a.write_bcr(ioaddr, 32, val & ~(1 << 7)); /* stop MII manager */
+ val = lp->a->read_bcr(ioaddr, 2);
+ lp->a->write_bcr(ioaddr, 2, val & ~2);
+ val = lp->a->read_bcr(ioaddr, 32);
+ lp->a->write_bcr(ioaddr, 32, val & ~(1 << 7)); /* stop MII manager */
if (!(lp->options & PCNET32_PORT_ASEL)) {
/* setup ecmd */
@@ -2118,7 +2118,7 @@ static int pcnet32_open(struct net_devic
ethtool_cmd_speed_set(&ecmd,
(lp->options & PCNET32_PORT_100) ?
SPEED_100 : SPEED_10);
- bcr9 = lp->a.read_bcr(ioaddr, 9);
+ bcr9 = lp->a->read_bcr(ioaddr, 9);
if (lp->options & PCNET32_PORT_FD) {
ecmd.duplex = DUPLEX_FULL;
@@ -2127,7 +2127,7 @@ static int pcnet32_open(struct net_devic
ecmd.duplex = DUPLEX_HALF;
bcr9 |= ~(1 << 0);
}
- lp->a.write_bcr(ioaddr, 9, bcr9);
+ lp->a->write_bcr(ioaddr, 9, bcr9);
}
for (i = 0; i < PCNET32_MAX_PHYS; i++) {
@@ -2158,9 +2158,9 @@ static int pcnet32_open(struct net_devic
#ifdef DO_DXSUFLO
if (lp->dxsuflo) { /* Disable transmit stop on underflow */
- val = lp->a.read_csr(ioaddr, CSR3);
+ val = lp->a->read_csr(ioaddr, CSR3);
val |= 0x40;
- lp->a.write_csr(ioaddr, CSR3, val);
+ lp->a->write_csr(ioaddr, CSR3, val);
}
#endif
@@ -2176,11 +2176,11 @@ static int pcnet32_open(struct net_devic
napi_enable(&lp->napi);
/* Re-initialize the PCNET32, and start it when done. */
- lp->a.write_csr(ioaddr, 1, (lp->init_dma_addr & 0xffff));
- lp->a.write_csr(ioaddr, 2, (lp->init_dma_addr >> 16));
+ lp->a->write_csr(ioaddr, 1, (lp->init_dma_addr & 0xffff));
+ lp->a->write_csr(ioaddr, 2, (lp->init_dma_addr >> 16));
- lp->a.write_csr(ioaddr, CSR4, 0x0915); /* auto tx pad */
- lp->a.write_csr(ioaddr, CSR0, CSR0_INIT);
+ lp->a->write_csr(ioaddr, CSR4, 0x0915); /* auto tx pad */
+ lp->a->write_csr(ioaddr, CSR0, CSR0_INIT);
netif_start_queue(dev);
@@ -2192,19 +2192,19 @@ static int pcnet32_open(struct net_devic
i = 0;
while (i++ < 100)
- if (lp->a.read_csr(ioaddr, CSR0) & CSR0_IDON)
+ if (lp->a->read_csr(ioaddr, CSR0) & CSR0_IDON)
break;
/*
* We used to clear the InitDone bit, 0x0100, here but Mark Stockton
* reports that doing so triggers a bug in the '974.
*/
- lp->a.write_csr(ioaddr, CSR0, CSR0_NORMAL);
+ lp->a->write_csr(ioaddr, CSR0, CSR0_NORMAL);
netif_printk(lp, ifup, KERN_DEBUG, dev,
"pcnet32 open after %d ticks, init block %#x csr0 %4.4x\n",
i,
(u32) (lp->init_dma_addr),
- lp->a.read_csr(ioaddr, CSR0));
+ lp->a->read_csr(ioaddr, CSR0));
spin_unlock_irqrestore(&lp->lock, flags);
@@ -2218,7 +2218,7 @@ err_free_ring:
* Switch back to 16bit mode to avoid problems with dumb
* DOS packet driver after a warm reboot
*/
- lp->a.write_bcr(ioaddr, 20, 4);
+ lp->a->write_bcr(ioaddr, 20, 4);
err_free_irq:
spin_unlock_irqrestore(&lp->lock, flags);
@@ -2323,7 +2323,7 @@ static void pcnet32_restart(struct net_d
/* wait for stop */
for (i = 0; i < 100; i++)
- if (lp->a.read_csr(ioaddr, CSR0) & CSR0_STOP)
+ if (lp->a->read_csr(ioaddr, CSR0) & CSR0_STOP)
break;
if (i >= 100)
@@ -2335,13 +2335,13 @@ static void pcnet32_restart(struct net_d
return;
/* ReInit Ring */
- lp->a.write_csr(ioaddr, CSR0, CSR0_INIT);
+ lp->a->write_csr(ioaddr, CSR0, CSR0_INIT);
i = 0;
while (i++ < 1000)
- if (lp->a.read_csr(ioaddr, CSR0) & CSR0_IDON)
+ if (lp->a->read_csr(ioaddr, CSR0) & CSR0_IDON)
break;
- lp->a.write_csr(ioaddr, CSR0, csr0_bits);
+ lp->a->write_csr(ioaddr, CSR0, csr0_bits);
}
static void pcnet32_tx_timeout(struct net_device *dev)
@@ -2353,8 +2353,8 @@ static void pcnet32_tx_timeout(struct ne
/* Transmitter timeout, serious problems. */
if (pcnet32_debug & NETIF_MSG_DRV)
pr_err("%s: transmit timed out, status %4.4x, resetting\n",
- dev->name, lp->a.read_csr(ioaddr, CSR0));
- lp->a.write_csr(ioaddr, CSR0, CSR0_STOP);
+ dev->name, lp->a->read_csr(ioaddr, CSR0));
+ lp->a->write_csr(ioaddr, CSR0, CSR0_STOP);
dev->stats.tx_errors++;
if (netif_msg_tx_err(lp)) {
int i;
@@ -2397,7 +2397,7 @@ static netdev_tx_t pcnet32_start_xmit(st
netif_printk(lp, tx_queued, KERN_DEBUG, dev,
"%s() called, csr0 %4.4x\n",
- __func__, lp->a.read_csr(ioaddr, CSR0));
+ __func__, lp->a->read_csr(ioaddr, CSR0));
/* Default status -- will not enable Successful-TxDone
* interrupt when that option is available to us.
@@ -2427,7 +2427,7 @@ static netdev_tx_t pcnet32_start_xmit(st
dev->stats.tx_bytes += skb->len;
/* Trigger an immediate send poll. */
- lp->a.write_csr(ioaddr, CSR0, CSR0_INTEN | CSR0_TXPOLL);
+ lp->a->write_csr(ioaddr, CSR0, CSR0_INTEN | CSR0_TXPOLL);
if (lp->tx_ring[(entry + 1) & lp->tx_mod_mask].base != 0) {
lp->tx_full = 1;
@@ -2452,16 +2452,16 @@ pcnet32_interrupt(int irq, void *dev_id)
spin_lock(&lp->lock);
- csr0 = lp->a.read_csr(ioaddr, CSR0);
+ csr0 = lp->a->read_csr(ioaddr, CSR0);
while ((csr0 & 0x8f00) && --boguscnt >= 0) {
if (csr0 == 0xffff)
break; /* PCMCIA remove happened */
/* Acknowledge all of the current interrupt sources ASAP. */
- lp->a.write_csr(ioaddr, CSR0, csr0 & ~0x004f);
+ lp->a->write_csr(ioaddr, CSR0, csr0 & ~0x004f);
netif_printk(lp, intr, KERN_DEBUG, dev,
"interrupt csr0=%#2.2x new csr=%#2.2x\n",
- csr0, lp->a.read_csr(ioaddr, CSR0));
+ csr0, lp->a->read_csr(ioaddr, CSR0));
/* Log misc errors. */
if (csr0 & 0x4000)
@@ -2488,19 +2488,19 @@ pcnet32_interrupt(int irq, void *dev_id)
if (napi_schedule_prep(&lp->napi)) {
u16 val;
/* set interrupt masks */
- val = lp->a.read_csr(ioaddr, CSR3);
+ val = lp->a->read_csr(ioaddr, CSR3);
val |= 0x5f00;
- lp->a.write_csr(ioaddr, CSR3, val);
+ lp->a->write_csr(ioaddr, CSR3, val);
__napi_schedule(&lp->napi);
break;
}
- csr0 = lp->a.read_csr(ioaddr, CSR0);
+ csr0 = lp->a->read_csr(ioaddr, CSR0);
}
netif_printk(lp, intr, KERN_DEBUG, dev,
"exiting interrupt, csr0=%#4.4x\n",
- lp->a.read_csr(ioaddr, CSR0));
+ lp->a->read_csr(ioaddr, CSR0));
spin_unlock(&lp->lock);
@@ -2520,20 +2520,20 @@ static int pcnet32_close(struct net_devi
spin_lock_irqsave(&lp->lock, flags);
- dev->stats.rx_missed_errors = lp->a.read_csr(ioaddr, 112);
+ dev->stats.rx_missed_errors = lp->a->read_csr(ioaddr, 112);
netif_printk(lp, ifdown, KERN_DEBUG, dev,
"Shutting down ethercard, status was %2.2x\n",
- lp->a.read_csr(ioaddr, CSR0));
+ lp->a->read_csr(ioaddr, CSR0));
/* We stop the PCNET32 here -- it occasionally polls memory if we don't. */
- lp->a.write_csr(ioaddr, CSR0, CSR0_STOP);
+ lp->a->write_csr(ioaddr, CSR0, CSR0_STOP);
/*
* Switch back to 16bit mode to avoid problems with dumb
* DOS packet driver after a warm reboot
*/
- lp->a.write_bcr(ioaddr, 20, 4);
+ lp->a->write_bcr(ioaddr, 20, 4);
spin_unlock_irqrestore(&lp->lock, flags);
@@ -2556,7 +2556,7 @@ static struct net_device_stats *pcnet32_
unsigned long flags;
spin_lock_irqsave(&lp->lock, flags);
- dev->stats.rx_missed_errors = lp->a.read_csr(ioaddr, 112);
+ dev->stats.rx_missed_errors = lp->a->read_csr(ioaddr, 112);
spin_unlock_irqrestore(&lp->lock, flags);
return &dev->stats;
@@ -2577,10 +2577,10 @@ static void pcnet32_load_multicast(struc
if (dev->flags & IFF_ALLMULTI) {
ib->filter[0] = cpu_to_le32(~0U);
ib->filter[1] = cpu_to_le32(~0U);
- lp->a.write_csr(ioaddr, PCNET32_MC_FILTER, 0xffff);
- lp->a.write_csr(ioaddr, PCNET32_MC_FILTER+1, 0xffff);
- lp->a.write_csr(ioaddr, PCNET32_MC_FILTER+2, 0xffff);
- lp->a.write_csr(ioaddr, PCNET32_MC_FILTER+3, 0xffff);
+ lp->a->write_csr(ioaddr, PCNET32_MC_FILTER, 0xffff);
+ lp->a->write_csr(ioaddr, PCNET32_MC_FILTER+1, 0xffff);
+ lp->a->write_csr(ioaddr, PCNET32_MC_FILTER+2, 0xffff);
+ lp->a->write_csr(ioaddr, PCNET32_MC_FILTER+3, 0xffff);
return;
}
/* clear the multicast filter */
@@ -2594,7 +2594,7 @@ static void pcnet32_load_multicast(struc
mcast_table[crc >> 4] |= cpu_to_le16(1 << (crc & 0xf));
}
for (i = 0; i < 4; i++)
- lp->a.write_csr(ioaddr, PCNET32_MC_FILTER + i,
+ lp->a->write_csr(ioaddr, PCNET32_MC_FILTER + i,
le16_to_cpu(mcast_table[i]));
}
@@ -2609,28 +2609,28 @@ static void pcnet32_set_multicast_list(s
spin_lock_irqsave(&lp->lock, flags);
suspended = pcnet32_suspend(dev, &flags, 0);
- csr15 = lp->a.read_csr(ioaddr, CSR15);
+ csr15 = lp->a->read_csr(ioaddr, CSR15);
if (dev->flags & IFF_PROMISC) {
/* Log any net taps. */
netif_info(lp, hw, dev, "Promiscuous mode enabled\n");
lp->init_block->mode =
cpu_to_le16(0x8000 | (lp->options & PCNET32_PORT_PORTSEL) <<
7);
- lp->a.write_csr(ioaddr, CSR15, csr15 | 0x8000);
+ lp->a->write_csr(ioaddr, CSR15, csr15 | 0x8000);
} else {
lp->init_block->mode =
cpu_to_le16((lp->options & PCNET32_PORT_PORTSEL) << 7);
- lp->a.write_csr(ioaddr, CSR15, csr15 & 0x7fff);
+ lp->a->write_csr(ioaddr, CSR15, csr15 & 0x7fff);
pcnet32_load_multicast(dev);
}
if (suspended) {
int csr5;
/* clear SUSPEND (SPND) - CSR5 bit 0 */
- csr5 = lp->a.read_csr(ioaddr, CSR5);
- lp->a.write_csr(ioaddr, CSR5, csr5 & (~CSR5_SUSPEND));
+ csr5 = lp->a->read_csr(ioaddr, CSR5);
+ lp->a->write_csr(ioaddr, CSR5, csr5 & (~CSR5_SUSPEND));
} else {
- lp->a.write_csr(ioaddr, CSR0, CSR0_STOP);
+ lp->a->write_csr(ioaddr, CSR0, CSR0_STOP);
pcnet32_restart(dev, CSR0_NORMAL);
netif_wake_queue(dev);
}
@@ -2648,8 +2648,8 @@ static int mdio_read(struct net_device *
if (!lp->mii)
return 0;
- lp->a.write_bcr(ioaddr, 33, ((phy_id & 0x1f) << 5) | (reg_num & 0x1f));
- val_out = lp->a.read_bcr(ioaddr, 34);
+ lp->a->write_bcr(ioaddr, 33, ((phy_id & 0x1f) << 5) | (reg_num & 0x1f));
+ val_out = lp->a->read_bcr(ioaddr, 34);
return val_out;
}
@@ -2663,8 +2663,8 @@ static void mdio_write(struct net_device
if (!lp->mii)
return;
- lp->a.write_bcr(ioaddr, 33, ((phy_id & 0x1f) << 5) | (reg_num & 0x1f));
- lp->a.write_bcr(ioaddr, 34, val);
+ lp->a->write_bcr(ioaddr, 33, ((phy_id & 0x1f) << 5) | (reg_num & 0x1f));
+ lp->a->write_bcr(ioaddr, 34, val);
}
static int pcnet32_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
@@ -2741,7 +2741,7 @@ static void pcnet32_check_media(struct n
curr_link = mii_link_ok(&lp->mii_if);
} else {
ulong ioaddr = dev->base_addr; /* card base I/O address */
- curr_link = (lp->a.read_bcr(ioaddr, 4) != 0xc0);
+ curr_link = (lp->a->read_bcr(ioaddr, 4) != 0xc0);
}
if (!curr_link) {
if (prev_link || verbose) {
@@ -2764,13 +2764,13 @@ static void pcnet32_check_media(struct n
(ecmd.duplex == DUPLEX_FULL)
? "full" : "half");
}
- bcr9 = lp->a.read_bcr(dev->base_addr, 9);
+ bcr9 = lp->a->read_bcr(dev->base_addr, 9);
if ((bcr9 & (1 << 0)) != lp->mii_if.full_duplex) {
if (lp->mii_if.full_duplex)
bcr9 |= (1 << 0);
else
bcr9 &= ~(1 << 0);
- lp->a.write_bcr(dev->base_addr, 9, bcr9);
+ lp->a->write_bcr(dev->base_addr, 9, bcr9);
}
} else {
netif_info(lp, link, dev, "link up\n");
^ permalink raw reply
* [PATCH] wan: make LAPB callbacks const
From: Stephen Hemminger @ 2011-09-16 21:04 UTC (permalink / raw)
To: Krzysztof Halasa, David S. Miller; +Cc: netdev
This is compile tested only.
Suggested by dumpster diving in PAX.
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
---
drivers/net/wan/hdlc_x25.c | 16 ++++++++--------
drivers/net/wan/lapbether.c | 3 +--
drivers/net/wan/x25_asy.c | 3 +--
include/linux/lapb.h | 3 ++-
include/net/lapb.h | 2 +-
net/lapb/lapb_iface.c | 29 +++++++++++++++--------------
6 files changed, 28 insertions(+), 28 deletions(-)
--- a/drivers/net/wan/hdlc_x25.c 2011-09-16 11:30:01.849087557 -0700
+++ b/drivers/net/wan/hdlc_x25.c 2011-09-16 11:31:04.901093255 -0700
@@ -134,15 +134,15 @@ static netdev_tx_t x25_xmit(struct sk_bu
static int x25_open(struct net_device *dev)
{
- struct lapb_register_struct cb;
int result;
-
- cb.connect_confirmation = x25_connected;
- cb.connect_indication = x25_connected;
- cb.disconnect_confirmation = x25_disconnected;
- cb.disconnect_indication = x25_disconnected;
- cb.data_indication = x25_data_indication;
- cb.data_transmit = x25_data_transmit;
+ static const struct lapb_register_struct cb = {
+ .connect_confirmation = x25_connected,
+ .connect_indication = x25_connected,
+ .disconnect_confirmation = x25_disconnected,
+ .disconnect_indication = x25_disconnected,
+ .data_indication = x25_data_indication,
+ .data_transmit = x25_data_transmit,
+ };
result = lapb_register(dev, &cb);
if (result != LAPB_OK)
--- a/drivers/net/wan/lapbether.c 2011-09-16 11:31:22.609091232 -0700
+++ b/drivers/net/wan/lapbether.c 2011-09-16 11:31:30.597091736 -0700
@@ -259,14 +259,13 @@ static int lapbeth_set_mac_address(struc
}
-static struct lapb_register_struct lapbeth_callbacks = {
+static const struct lapb_register_struct lapbeth_callbacks = {
.connect_confirmation = lapbeth_connected,
.connect_indication = lapbeth_connected,
.disconnect_confirmation = lapbeth_disconnected,
.disconnect_indication = lapbeth_disconnected,
.data_indication = lapbeth_data_indication,
.data_transmit = lapbeth_data_transmit,
-
};
/*
--- a/drivers/net/wan/x25_asy.c 2011-09-16 11:31:38.833091828 -0700
+++ b/drivers/net/wan/x25_asy.c 2011-09-16 11:31:46.317091608 -0700
@@ -434,14 +434,13 @@ static void x25_asy_disconnected(struct
netif_rx(skb);
}
-static struct lapb_register_struct x25_asy_callbacks = {
+static const struct lapb_register_struct x25_asy_callbacks = {
.connect_confirmation = x25_asy_connected,
.connect_indication = x25_asy_connected,
.disconnect_confirmation = x25_asy_disconnected,
.disconnect_indication = x25_asy_disconnected,
.data_indication = x25_asy_data_indication,
.data_transmit = x25_asy_data_transmit,
-
};
--- a/include/linux/lapb.h 2011-09-16 11:32:21.021093958 -0700
+++ b/include/linux/lapb.h 2011-09-16 11:38:16.593110202 -0700
@@ -44,7 +44,8 @@ struct lapb_parms_struct {
unsigned int mode;
};
-extern int lapb_register(struct net_device *dev, struct lapb_register_struct *callbacks);
+extern int lapb_register(struct net_device *dev,
+ const struct lapb_register_struct *callbacks);
extern int lapb_unregister(struct net_device *dev);
extern int lapb_getparms(struct net_device *dev, struct lapb_parms_struct *parms);
extern int lapb_setparms(struct net_device *dev, struct lapb_parms_struct *parms);
--- a/include/net/lapb.h 2011-09-16 11:32:21.037093954 -0700
+++ b/include/net/lapb.h 2011-09-16 11:34:34.361100045 -0700
@@ -95,7 +95,7 @@ struct lapb_cb {
struct sk_buff_head write_queue;
struct sk_buff_head ack_queue;
unsigned char window;
- struct lapb_register_struct callbacks;
+ const struct lapb_register_struct *callbacks;
/* FRMR control information */
struct lapb_frame frmr_data;
--- a/net/lapb/lapb_iface.c 2011-09-16 11:32:21.053093960 -0700
+++ b/net/lapb/lapb_iface.c 2011-09-16 11:38:16.593110202 -0700
@@ -139,7 +139,8 @@ out:
return lapb;
}
-int lapb_register(struct net_device *dev, struct lapb_register_struct *callbacks)
+int lapb_register(struct net_device *dev,
+ const struct lapb_register_struct *callbacks)
{
struct lapb_cb *lapb;
int rc = LAPB_BADTOKEN;
@@ -158,7 +159,7 @@ int lapb_register(struct net_device *dev
goto out;
lapb->dev = dev;
- lapb->callbacks = *callbacks;
+ lapb->callbacks = callbacks;
__lapb_insert_cb(lapb);
@@ -380,32 +381,32 @@ int lapb_data_received(struct net_device
void lapb_connect_confirmation(struct lapb_cb *lapb, int reason)
{
- if (lapb->callbacks.connect_confirmation)
- lapb->callbacks.connect_confirmation(lapb->dev, reason);
+ if (lapb->callbacks->connect_confirmation)
+ lapb->callbacks->connect_confirmation(lapb->dev, reason);
}
void lapb_connect_indication(struct lapb_cb *lapb, int reason)
{
- if (lapb->callbacks.connect_indication)
- lapb->callbacks.connect_indication(lapb->dev, reason);
+ if (lapb->callbacks->connect_indication)
+ lapb->callbacks->connect_indication(lapb->dev, reason);
}
void lapb_disconnect_confirmation(struct lapb_cb *lapb, int reason)
{
- if (lapb->callbacks.disconnect_confirmation)
- lapb->callbacks.disconnect_confirmation(lapb->dev, reason);
+ if (lapb->callbacks->disconnect_confirmation)
+ lapb->callbacks->disconnect_confirmation(lapb->dev, reason);
}
void lapb_disconnect_indication(struct lapb_cb *lapb, int reason)
{
- if (lapb->callbacks.disconnect_indication)
- lapb->callbacks.disconnect_indication(lapb->dev, reason);
+ if (lapb->callbacks->disconnect_indication)
+ lapb->callbacks->disconnect_indication(lapb->dev, reason);
}
int lapb_data_indication(struct lapb_cb *lapb, struct sk_buff *skb)
{
- if (lapb->callbacks.data_indication)
- return lapb->callbacks.data_indication(lapb->dev, skb);
+ if (lapb->callbacks->data_indication)
+ return lapb->callbacks->data_indication(lapb->dev, skb);
kfree_skb(skb);
return NET_RX_SUCCESS; /* For now; must be != NET_RX_DROP */
@@ -415,8 +416,8 @@ int lapb_data_transmit(struct lapb_cb *l
{
int used = 0;
- if (lapb->callbacks.data_transmit) {
- lapb->callbacks.data_transmit(lapb->dev, skb);
+ if (lapb->callbacks->data_transmit) {
+ lapb->callbacks->data_transmit(lapb->dev, skb);
used = 1;
}
^ permalink raw reply
* [PATCH net-next] bna: make function tables cont
From: Stephen Hemminger @ 2011-09-16 21:09 UTC (permalink / raw)
To: Rasesh Mody, David Miller; +Cc: netdev
To prevent malicious usage, all tables of pointers must be const.
Compile tested only.
Gleaned for PAX.
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
---
drivers/net/ethernet/brocade/bna/bfa_ioc.h | 2 -
drivers/net/ethernet/brocade/bna/bfa_ioc_ct.c | 36 ++++++++++----------------
drivers/net/ethernet/brocade/bna/bna.h | 4 +-
drivers/net/ethernet/brocade/bna/bna_tx_rx.c | 4 +-
drivers/net/ethernet/brocade/bna/bnad.c | 33 +++++++++++------------
5 files changed, 36 insertions(+), 43 deletions(-)
--- a/drivers/net/ethernet/brocade/bna/bfa_ioc.h 2011-09-16 13:35:52.245432520 -0700
+++ b/drivers/net/ethernet/brocade/bna/bfa_ioc.h 2011-09-16 13:35:54.593432627 -0700
@@ -199,7 +199,7 @@ struct bfa_ioc {
struct bfi_ioc_attr *attr;
struct bfa_ioc_cbfn *cbfn;
struct bfa_ioc_mbox_mod mbox_mod;
- struct bfa_ioc_hwif *ioc_hwif;
+ const struct bfa_ioc_hwif *ioc_hwif;
struct bfa_iocpf iocpf;
enum bfi_asic_gen asic_gen;
enum bfi_asic_mode asic_mode;
--- a/drivers/net/ethernet/brocade/bna/bfa_ioc_ct.c 2011-09-16 13:35:52.273432521 -0700
+++ b/drivers/net/ethernet/brocade/bna/bfa_ioc_ct.c 2011-09-16 13:40:28.501445140 -0700
@@ -49,21 +49,21 @@ static bool bfa_ioc_ct_sync_complete(str
static enum bfa_status bfa_ioc_ct_pll_init(void __iomem *rb,
enum bfi_asic_mode asic_mode);
-static struct bfa_ioc_hwif nw_hwif_ct;
-
-static void
-bfa_ioc_set_ctx_hwif(struct bfa_ioc *ioc, struct bfa_ioc_hwif *hwif)
-{
- hwif->ioc_firmware_lock = bfa_ioc_ct_firmware_lock;
- hwif->ioc_firmware_unlock = bfa_ioc_ct_firmware_unlock;
- hwif->ioc_notify_fail = bfa_ioc_ct_notify_fail;
- hwif->ioc_ownership_reset = bfa_ioc_ct_ownership_reset;
- hwif->ioc_sync_start = bfa_ioc_ct_sync_start;
- hwif->ioc_sync_join = bfa_ioc_ct_sync_join;
- hwif->ioc_sync_leave = bfa_ioc_ct_sync_leave;
- hwif->ioc_sync_ack = bfa_ioc_ct_sync_ack;
- hwif->ioc_sync_complete = bfa_ioc_ct_sync_complete;
-}
+static const struct bfa_ioc_hwif nw_hwif_ct = {
+ .ioc_pll_init = bfa_ioc_ct_pll_init,
+ .ioc_firmware_lock = bfa_ioc_ct_firmware_lock,
+ .ioc_firmware_unlock = bfa_ioc_ct_firmware_unlock,
+ .ioc_reg_init = bfa_ioc_ct_reg_init,
+ .ioc_map_port = bfa_ioc_ct_map_port,
+ .ioc_isr_mode_set = bfa_ioc_ct_isr_mode_set,
+ .ioc_notify_fail = bfa_ioc_ct_notify_fail,
+ .ioc_ownership_reset = bfa_ioc_ct_ownership_reset,
+ .ioc_sync_start = bfa_ioc_ct_sync_start,
+ .ioc_sync_join = bfa_ioc_ct_sync_join,
+ .ioc_sync_leave = bfa_ioc_ct_sync_leave,
+ .ioc_sync_ack = bfa_ioc_ct_sync_ack,
+ .ioc_sync_complete = bfa_ioc_ct_sync_complete,
+};
/**
* Called from bfa_ioc_attach() to map asic specific calls.
@@ -71,12 +71,6 @@ bfa_ioc_set_ctx_hwif(struct bfa_ioc *ioc
void
bfa_nw_ioc_set_ct_hwif(struct bfa_ioc *ioc)
{
- bfa_ioc_set_ctx_hwif(ioc, &nw_hwif_ct);
-
- nw_hwif_ct.ioc_pll_init = bfa_ioc_ct_pll_init;
- nw_hwif_ct.ioc_reg_init = bfa_ioc_ct_reg_init;
- nw_hwif_ct.ioc_map_port = bfa_ioc_ct_map_port;
- nw_hwif_ct.ioc_isr_mode_set = bfa_ioc_ct_isr_mode_set;
ioc->ioc_hwif = &nw_hwif_ct;
}
--- a/drivers/net/ethernet/brocade/bna/bna.h 2011-09-16 13:35:52.257432521 -0700
+++ b/drivers/net/ethernet/brocade/bna/bna.h 2011-09-16 13:35:54.593432627 -0700
@@ -453,7 +453,7 @@ void bna_tx_res_req(int num_txq, int txq
struct bna_res_info *res_info);
struct bna_tx *bna_tx_create(struct bna *bna, struct bnad *bnad,
struct bna_tx_config *tx_cfg,
- struct bna_tx_event_cbfn *tx_cbfn,
+ const struct bna_tx_event_cbfn *tx_cbfn,
struct bna_res_info *res_info, void *priv);
void bna_tx_destroy(struct bna_tx *tx);
void bna_tx_enable(struct bna_tx *tx);
@@ -490,7 +490,7 @@ void bna_rx_res_req(struct bna_rx_config
struct bna_res_info *res_info);
struct bna_rx *bna_rx_create(struct bna *bna, struct bnad *bnad,
struct bna_rx_config *rx_cfg,
- struct bna_rx_event_cbfn *rx_cbfn,
+ const struct bna_rx_event_cbfn *rx_cbfn,
struct bna_res_info *res_info, void *priv);
void bna_rx_destroy(struct bna_rx *rx);
void bna_rx_enable(struct bna_rx *rx);
--- a/drivers/net/ethernet/brocade/bna/bnad.c 2011-09-16 13:35:52.237432520 -0700
+++ b/drivers/net/ethernet/brocade/bna/bnad.c 2011-09-16 13:35:54.597432628 -0700
@@ -1730,7 +1730,14 @@ bnad_setup_tx(struct bnad *bnad, u32 tx_
struct bna_intr_info *intr_info =
&res_info[BNA_TX_RES_INTR_T_TXCMPL].res_u.intr_info;
struct bna_tx_config *tx_config = &bnad->tx_config[tx_id];
- struct bna_tx_event_cbfn tx_cbfn;
+ static const struct bna_tx_event_cbfn tx_cbfn = {
+ .tcb_setup_cbfn = bnad_cb_tcb_setup,
+ .tcb_destroy_cbfn = bnad_cb_tcb_destroy,
+ .tx_stall_cbfn = bnad_cb_tx_stall,
+ .tx_resume_cbfn = bnad_cb_tx_resume,
+ .tx_cleanup_cbfn = bnad_cb_tx_cleanup,
+ };
+
struct bna_tx *tx;
unsigned long flags;
@@ -1742,13 +1749,6 @@ bnad_setup_tx(struct bnad *bnad, u32 tx_
tx_config->tx_type = BNA_TX_T_REGULAR;
tx_config->coalescing_timeo = bnad->tx_coalescing_timeo;
- /* Initialize the tx event handlers */
- tx_cbfn.tcb_setup_cbfn = bnad_cb_tcb_setup;
- tx_cbfn.tcb_destroy_cbfn = bnad_cb_tcb_destroy;
- tx_cbfn.tx_stall_cbfn = bnad_cb_tx_stall;
- tx_cbfn.tx_resume_cbfn = bnad_cb_tx_resume;
- tx_cbfn.tx_cleanup_cbfn = bnad_cb_tx_cleanup;
-
/* Get BNA's resource requirement for one tx object */
spin_lock_irqsave(&bnad->bna_lock, flags);
bna_tx_res_req(bnad->num_txq_per_tx,
@@ -1893,7 +1893,14 @@ bnad_setup_rx(struct bnad *bnad, u32 rx_
struct bna_intr_info *intr_info =
&res_info[BNA_RX_RES_T_INTR].res_u.intr_info;
struct bna_rx_config *rx_config = &bnad->rx_config[rx_id];
- struct bna_rx_event_cbfn rx_cbfn;
+ static const struct bna_rx_event_cbfn rx_cbfn = {
+ .rcb_setup_cbfn = bnad_cb_rcb_setup,
+ .rcb_destroy_cbfn = bnad_cb_rcb_destroy,
+ .ccb_setup_cbfn = bnad_cb_ccb_setup,
+ .ccb_destroy_cbfn = bnad_cb_ccb_destroy,
+ .rx_cleanup_cbfn = bnad_cb_rx_cleanup,
+ .rx_post_cbfn = bnad_cb_rx_post,
+ };
struct bna_rx *rx;
unsigned long flags;
@@ -1902,14 +1909,6 @@ bnad_setup_rx(struct bnad *bnad, u32 rx_
/* Initialize the Rx object configuration */
bnad_init_rx_config(bnad, rx_config);
- /* Initialize the Rx event handlers */
- rx_cbfn.rcb_setup_cbfn = bnad_cb_rcb_setup;
- rx_cbfn.rcb_destroy_cbfn = bnad_cb_rcb_destroy;
- rx_cbfn.ccb_setup_cbfn = bnad_cb_ccb_setup;
- rx_cbfn.ccb_destroy_cbfn = bnad_cb_ccb_destroy;
- rx_cbfn.rx_cleanup_cbfn = bnad_cb_rx_cleanup;
- rx_cbfn.rx_post_cbfn = bnad_cb_rx_post;
-
/* Get BNA's resource requirement for one Rx object */
spin_lock_irqsave(&bnad->bna_lock, flags);
bna_rx_res_req(rx_config, res_info);
--- a/drivers/net/ethernet/brocade/bna/bna_tx_rx.c 2011-09-16 13:36:57.733435512 -0700
+++ b/drivers/net/ethernet/brocade/bna/bna_tx_rx.c 2011-09-16 13:37:07.885435977 -0700
@@ -2305,7 +2305,7 @@ bna_rx_res_req(struct bna_rx_config *q_c
struct bna_rx *
bna_rx_create(struct bna *bna, struct bnad *bnad,
struct bna_rx_config *rx_cfg,
- struct bna_rx_event_cbfn *rx_cbfn,
+ const struct bna_rx_event_cbfn *rx_cbfn,
struct bna_res_info *res_info,
void *priv)
{
@@ -3444,7 +3444,7 @@ bna_tx_res_req(int num_txq, int txq_dept
struct bna_tx *
bna_tx_create(struct bna *bna, struct bnad *bnad,
struct bna_tx_config *tx_cfg,
- struct bna_tx_event_cbfn *tx_cbfn,
+ const struct bna_tx_event_cbfn *tx_cbfn,
struct bna_res_info *res_info, void *priv)
{
struct bna_intr_info *intr_info;
^ permalink raw reply
* [PATCH net-next] vxge: make function table const
From: Stephen Hemminger @ 2011-09-16 21:10 UTC (permalink / raw)
To: Jon Mason, David Miller; +Cc: netdev
All tables of function pointers should be const.
The pre-existing code has lots of needless indirection...
Inspired by similar change in PAX.
Compile tested only.
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
---
drivers/net/ethernet/neterion/vxge/vxge-config.c | 11 +++++------
drivers/net/ethernet/neterion/vxge/vxge-config.h | 4 ++--
drivers/net/ethernet/neterion/vxge/vxge-main.c | 10 +++++++---
drivers/net/ethernet/neterion/vxge/vxge-traffic.c | 12 ++++++------
4 files changed, 20 insertions(+), 17 deletions(-)
--- a/drivers/net/ethernet/neterion/vxge/vxge-config.c 2011-09-16 13:12:56.529369674 -0700
+++ b/drivers/net/ethernet/neterion/vxge/vxge-config.c 2011-09-16 13:21:30.925393238 -0700
@@ -1342,9 +1342,7 @@ vxge_hw_device_initialize(
hldev->bar0 = attr->bar0;
hldev->pdev = attr->pdev;
- hldev->uld_callbacks.link_up = attr->uld_callbacks.link_up;
- hldev->uld_callbacks.link_down = attr->uld_callbacks.link_down;
- hldev->uld_callbacks.crit_err = attr->uld_callbacks.crit_err;
+ hldev->uld_callbacks = attr->uld_callbacks;
__vxge_hw_device_pci_e_init(hldev);
@@ -2633,7 +2631,7 @@ __vxge_hw_mempool_create(struct __vxge_h
u32 items_priv_size,
u32 items_initial,
u32 items_max,
- struct vxge_hw_mempool_cbs *mp_callback,
+ const struct vxge_hw_mempool_cbs *mp_callback,
void *userdata)
{
enum vxge_hw_status status = VXGE_HW_OK;
@@ -2817,7 +2815,9 @@ __vxge_hw_ring_create(struct __vxge_hw_v
struct vxge_hw_ring_config *config;
struct __vxge_hw_device *hldev;
u32 vp_id;
- struct vxge_hw_mempool_cbs ring_mp_callback;
+ static const struct vxge_hw_mempool_cbs ring_mp_callback = {
+ .item_func_alloc = __vxge_hw_ring_mempool_item_alloc,
+ };
if ((vp == NULL) || (attr == NULL)) {
status = VXGE_HW_FAIL;
@@ -2872,7 +2872,6 @@ __vxge_hw_ring_create(struct __vxge_hw_v
/* calculate actual RxD block private size */
ring->rxdblock_priv_size = ring->rxd_priv_size * ring->rxds_per_block;
- ring_mp_callback.item_func_alloc = __vxge_hw_ring_mempool_item_alloc;
ring->mempool = __vxge_hw_mempool_create(hldev,
VXGE_HW_BLOCK_SIZE,
VXGE_HW_BLOCK_SIZE,
--- a/drivers/net/ethernet/neterion/vxge/vxge-config.h 2011-09-16 13:12:56.529369674 -0700
+++ b/drivers/net/ethernet/neterion/vxge/vxge-config.h 2011-09-16 13:21:30.925393238 -0700
@@ -740,7 +740,7 @@ struct __vxge_hw_device {
struct vxge_hw_device_config config;
enum vxge_hw_device_link_state link_state;
- struct vxge_hw_uld_cbs uld_callbacks;
+ const struct vxge_hw_uld_cbs *uld_callbacks;
u32 host_type;
u32 func_id;
@@ -840,7 +840,7 @@ struct vxge_hw_device_hw_info {
struct vxge_hw_device_attr {
void __iomem *bar0;
struct pci_dev *pdev;
- struct vxge_hw_uld_cbs uld_callbacks;
+ const struct vxge_hw_uld_cbs *uld_callbacks;
};
#define VXGE_HW_DEVICE_LINK_STATE_SET(hldev, ls) (hldev->link_state = ls)
--- a/drivers/net/ethernet/neterion/vxge/vxge-main.c 2011-09-16 13:12:56.529369674 -0700
+++ b/drivers/net/ethernet/neterion/vxge/vxge-main.c 2011-09-16 13:21:30.925393238 -0700
@@ -4284,6 +4284,12 @@ static int __devinit is_sriov_initialize
return 0;
}
+static const struct vxge_hw_uld_cbs vxge_callbacks = {
+ .link_up = vxge_callback_link_up,
+ .link_down = vxge_callback_link_down,
+ .crit_err = vxge_callback_crit_err,
+};
+
/**
* vxge_probe
* @pdev : structure containing the PCI related information of the device.
@@ -4494,9 +4500,7 @@ vxge_probe(struct pci_dev *pdev, const s
}
/* Setting driver callbacks */
- attr.uld_callbacks.link_up = vxge_callback_link_up;
- attr.uld_callbacks.link_down = vxge_callback_link_down;
- attr.uld_callbacks.crit_err = vxge_callback_crit_err;
+ attr.uld_callbacks = &vxge_callbacks;
status = vxge_hw_device_initialize(&hldev, &attr, device_config);
if (status != VXGE_HW_OK) {
--- a/drivers/net/ethernet/neterion/vxge/vxge-traffic.c 2011-09-16 13:12:56.533369674 -0700
+++ b/drivers/net/ethernet/neterion/vxge/vxge-traffic.c 2011-09-16 13:21:30.925393238 -0700
@@ -532,8 +532,8 @@ __vxge_hw_device_handle_error(struct __v
}
/* notify driver */
- if (hldev->uld_callbacks.crit_err)
- hldev->uld_callbacks.crit_err(
+ if (hldev->uld_callbacks->crit_err)
+ hldev->uld_callbacks->crit_err(
(struct __vxge_hw_device *)hldev,
type, vp_id);
out:
@@ -560,8 +560,8 @@ __vxge_hw_device_handle_link_down_ind(st
hldev->link_state = VXGE_HW_LINK_DOWN;
/* notify driver */
- if (hldev->uld_callbacks.link_down)
- hldev->uld_callbacks.link_down(hldev);
+ if (hldev->uld_callbacks->link_down)
+ hldev->uld_callbacks->link_down(hldev);
exit:
return VXGE_HW_OK;
}
@@ -585,8 +585,8 @@ __vxge_hw_device_handle_link_up_ind(stru
hldev->link_state = VXGE_HW_LINK_UP;
/* notify driver */
- if (hldev->uld_callbacks.link_up)
- hldev->uld_callbacks.link_up(hldev);
+ if (hldev->uld_callbacks->link_up)
+ hldev->uld_callbacks->link_up(hldev);
exit:
return VXGE_HW_OK;
}
^ permalink raw reply
* Re: [PATCH] ipv6: Send ICMPv6 RSes only when RAs are accepted
From: David Miller @ 2011-09-16 21:15 UTC (permalink / raw)
To: tore; +Cc: netdev
In-Reply-To: <201108291209.p7TC9KkD002967@wrath.fud.no>
From: Tore Anderson <tore@fud.no>
Date: Mon, 29 Aug 2011 14:08:33 +0200
> The change also makes "Hybrid Router" forwarding mode ("forwarding"
> sysctl set to 2) redundant, as the only thing that distinguished it from
> the standard Router mode (forwarding=1) was that RSes was being sent. It
> has therefore been removed.
You're not removing "accept_ra==2", it's still there in the test:
> - if ((ifp->idev->cnf.forwarding == 0 ||
> - ifp->idev->cnf.forwarding == 2) &&
> + if (((ifp->idev->cnf.accept_ra == 1 && !ifp->idev->cnf.forwarding) ||
> + ifp->idev->cnf.accept_ra == 2) &&
And it does provide it's own unique behavior compared to
"accept_ra==1".
^ permalink raw reply
* Re: [PATCH] sctp: deal with multiple COOKIE_ECHO chunks
From: David Miller @ 2011-09-16 21:17 UTC (permalink / raw)
To: makc; +Cc: linux-sctp, netdev, vladislav.yasevich
In-Reply-To: <20110830072010.94AE98132707@regina.usersys.redhat.com>
From: Max Matveev <makc@redhat.com>
Date: Tue, 30 Aug 2011 17:02:24 +1000
> Attempt to reduce the number of IP packets emitted in response to single
> SCTP packet (2e3216cd) introduced a complication - if a packet contains
> two COOKIE_ECHO chunks and nothing else then SCTP state machine corks the
> socket while processing first COOKIE_ECHO and then loses the association
> and forgets to uncork the socket. To deal with the issue add new SCTP
> command which can be used to set association explictly. Use this new
> command when processing second COOKIE_ECHO chunk to restore the context
> for SCTP state machine.
>
> Signed-off-by: Max Matveev <makc@redhat.com>
Applied, but there were a ton of whitespace errors that GIT complained
about and I had to fix up.
^ permalink raw reply
* [PATCH net-next] ixgb: relax stack usage of 768 Byte
From: Hagen Paul Pfeifer @ 2011-09-16 21:34 UTC (permalink / raw)
To: netdev; +Cc: Hagen Paul Pfeifer, Jeff Kirsher
ixgb_set_multi() will push (128 * 6) byte on the stack to set the
multicast filter. Fix this by allocate the scratch buffer on the heap.
Signed-off-by: Hagen Paul Pfeifer <hagen@jauu.net>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
drivers/net/ethernet/intel/ixgb/ixgb_main.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/intel/ixgb/ixgb_main.c b/drivers/net/ethernet/intel/ixgb/ixgb_main.c
index c8b9c90..4d23007 100644
--- a/drivers/net/ethernet/intel/ixgb/ixgb_main.c
+++ b/drivers/net/ethernet/intel/ixgb/ixgb_main.c
@@ -1095,8 +1095,10 @@ ixgb_set_multi(struct net_device *netdev)
rctl |= IXGB_RCTL_MPE;
IXGB_WRITE_REG(hw, RCTL, rctl);
} else {
- u8 mta[IXGB_MAX_NUM_MULTICAST_ADDRESSES *
- IXGB_ETH_LENGTH_OF_ADDRESS];
+ u8 *mta = kmalloc(IXGB_MAX_NUM_MULTICAST_ADDRESSES *
+ IXGB_ETH_LENGTH_OF_ADDRESS, GFP_ATOMIC);
+ if (!mta)
+ return;
IXGB_WRITE_REG(hw, RCTL, rctl);
@@ -1106,6 +1108,8 @@ ixgb_set_multi(struct net_device *netdev)
ha->addr, IXGB_ETH_LENGTH_OF_ADDRESS);
ixgb_mc_addr_list_update(hw, mta, netdev_mc_count(netdev), 0);
+
+ kfree(mta);
}
if (netdev->features & NETIF_F_HW_VLAN_RX)
--
1.7.5.4
^ permalink raw reply related
* Re: [PATCH] ipv6: Send ICMPv6 RSes only when RAs are accepted
From: David Miller @ 2011-09-16 21:49 UTC (permalink / raw)
To: tore; +Cc: netdev
In-Reply-To: <4E73C2E5.2050901@fud.no>
From: Tore Anderson <tore@fud.no>
Date: Fri, 16 Sep 2011 23:43:01 +0200
> * David Miller
>
>> From: Tore Anderson <tore@fud.no>
>> Date: Mon, 29 Aug 2011 14:08:33 +0200
>>
>>> The change also makes "Hybrid Router" forwarding mode ("forwarding"
>>> sysctl set to 2) redundant, as the only thing that distinguished it from
>>> the standard Router mode (forwarding=1) was that RSes was being sent. It
>>> has therefore been removed.
>>
>> You're not removing "accept_ra==2", it's still there in the test:
>>
>>> - if ((ifp->idev->cnf.forwarding == 0 ||
>>> - ifp->idev->cnf.forwarding == 2) &&
>>> + if (((ifp->idev->cnf.accept_ra == 1 && !ifp->idev->cnf.forwarding) ||
>>> + ifp->idev->cnf.accept_ra == 2) &&
>>
>> And it does provide it's own unique behavior compared to
>> "accept_ra==1".
>
> Hi David,
>
> I'm not removing accept_ra==2, no, only forwarding==2. Or, more
> precisely, I'm only removing the *documentation* for forwarding==2;
> forwarding==2 will still work, but there's no difference from
> forwarding==1 any longer.
Ok, please make this more clear in your commit message.
Thank you.
^ permalink raw reply
* Re: [PATCH] ipv6: Send ICMPv6 RSes only when RAs are accepted
From: Tore Anderson @ 2011-09-16 21:43 UTC (permalink / raw)
To: David Miller; +Cc: netdev
In-Reply-To: <20110916.171503.42153974977438913.davem@davemloft.net>
* David Miller
> From: Tore Anderson <tore@fud.no>
> Date: Mon, 29 Aug 2011 14:08:33 +0200
>
>> The change also makes "Hybrid Router" forwarding mode ("forwarding"
>> sysctl set to 2) redundant, as the only thing that distinguished it from
>> the standard Router mode (forwarding=1) was that RSes was being sent. It
>> has therefore been removed.
>
> You're not removing "accept_ra==2", it's still there in the test:
>
>> - if ((ifp->idev->cnf.forwarding == 0 ||
>> - ifp->idev->cnf.forwarding == 2) &&
>> + if (((ifp->idev->cnf.accept_ra == 1 && !ifp->idev->cnf.forwarding) ||
>> + ifp->idev->cnf.accept_ra == 2) &&
>
> And it does provide it's own unique behavior compared to
> "accept_ra==1".
Hi David,
I'm not removing accept_ra==2, no, only forwarding==2. Or, more
precisely, I'm only removing the *documentation* for forwarding==2;
forwarding==2 will still work, but there's no difference from
forwarding==1 any longer.
--
Tore Anderson
^ permalink raw reply
* Re: [PATCH] ipv6: Send ICMPv6 RSes only when RAs are accepted
From: Tore Anderson @ 2011-09-16 22:07 UTC (permalink / raw)
To: David Miller; +Cc: netdev
In-Reply-To: <20110916.174900.961553137813655280.davem@davemloft.net>
* David Miller
>> I'm not removing accept_ra==2, no, only forwarding==2. Or, more
>> precisely, I'm only removing the *documentation* for forwarding==2;
>> forwarding==2 will still work, but there's no difference from
>> forwarding==1 any longer.
>
> Ok, please make this more clear in your commit message.
I actually did improve the commit message in this regard when I re-sent
the patch, see <http://patchwork.ozlabs.org/patch/113625/>. Is that one
good enough?
--
Tore Anderson
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox