Commit 9286ae01 authored by David S. Miller's avatar David S. Miller

Merge branch 'sunvnet-napi'

Sowmini Varadhan says:

====================
sunvnet: NAPIfy sunvnet

This patchset converts the sunvnet driver to use the NAPI framework.
Changes since v4 to Patch1:
  vnet_event accumulates LDC_EVENT_* bits into rx_event.
  vnet_event_napi() unrolls send_events() logic to process all rx_event bits.
Changes since v5:
  Patch 1: use net_device.h definition for NAPI_POLL_WEIGHT.
  Drop sparclinux changes (patch3) per David Miller feedback

Patch 1 in the series addresses the packet-receive path- all
the vnet_event() processing is moved into NAPI context.
This patch is dependant on the sparc-next commit:
  "sparc64: Add vio_set_intr() to enable/disable Rx interrupts"
  (sparc commit id ca605b7d)

Patch 2 uses RCU to fix race conditions between vnet_port_remove and
paths that access/modify port-related state, such as vnet_start_xmit.

Patch 3 leverages from the NAPIfied Rx path,
dropping superfluous usage of the irqsave/irqrestores on the vio.lock
where possible.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 132fb579 13b13dd9
This diff is collapsed.
...@@ -56,6 +56,11 @@ struct vnet_port { ...@@ -56,6 +56,11 @@ struct vnet_port {
struct timer_list clean_timer; struct timer_list clean_timer;
u64 rmtu; u64 rmtu;
struct napi_struct napi;
u32 napi_stop_idx;
bool napi_resume;
int rx_event;
}; };
static inline struct vnet_port *to_vnet_port(struct vio_driver_state *vio) static inline struct vnet_port *to_vnet_port(struct vio_driver_state *vio)
...@@ -97,7 +102,6 @@ struct vnet { ...@@ -97,7 +102,6 @@ struct vnet {
struct list_head list; struct list_head list;
u64 local_mac; u64 local_mac;
struct tasklet_struct vnet_tx_wakeup;
}; };
#endif /* _SUNVNET_H */ #endif /* _SUNVNET_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment