1 --- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_cmd.c
2 +++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.c
7 -int wl1251_cmd_data_path(struct wl1251 *wl, u8 channel, bool enable)
8 +int wl1251_cmd_data_path_rx(struct wl1251 *wl, u8 channel, bool enable)
10 struct cmd_enabledisable_path *cmd;
15 wl1251_debug(DEBUG_CMD, "cmd data path");
20 cmd_rx = CMD_ENABLE_RX;
21 - cmd_tx = CMD_ENABLE_TX;
23 cmd_rx = CMD_DISABLE_RX;
24 - cmd_tx = CMD_DISABLE_TX;
27 ret = wl1251_cmd_send(wl, cmd_rx, cmd, sizeof(*cmd));
29 wl1251_debug(DEBUG_BOOT, "rx %s cmd channel %d",
30 enable ? "start" : "stop", channel);
37 +int wl1251_cmd_data_path_tx(struct wl1251 *wl, u8 channel, bool enable)
39 + struct cmd_enabledisable_path *cmd;
43 + wl1251_debug(DEBUG_CMD, "cmd data path");
45 + cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
51 + cmd->channel = channel;
54 + cmd_tx = CMD_ENABLE_TX;
56 + cmd_tx = CMD_DISABLE_TX;
59 ret = wl1251_cmd_send(wl, cmd_tx, cmd, sizeof(*cmd));
61 wl1251_error("tx %s cmd for channel %d failed",
62 --- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_cmd.h
63 +++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_cmd.h
65 int wl1251_cmd_configure(struct wl1251 *wl, u16 id, void *buf, size_t len);
66 int wl1251_cmd_vbm(struct wl1251 *wl, u8 identity,
67 void *bitmap, u16 bitmap_len, u8 bitmap_control);
68 -int wl1251_cmd_data_path(struct wl1251 *wl, u8 channel, bool enable);
69 +int wl1251_cmd_data_path_rx(struct wl1251 *wl, u8 channel, bool enable);
70 +int wl1251_cmd_data_path_tx(struct wl1251 *wl, u8 channel, bool enable);
71 int wl1251_cmd_join(struct wl1251 *wl, u8 bss_type, u8 channel,
72 u16 beacon_interval, u8 dtim_interval);
73 int wl1251_cmd_ps_mode(struct wl1251 *wl, u8 ps_mode);
74 --- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_init.c
75 +++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_init.c
78 goto out_free_data_path;
80 - /* Enable data path */
81 - ret = wl1251_cmd_data_path(wl, wl->channel, 1);
82 + /* Enable rx data path */
83 + ret = wl1251_cmd_data_path_rx(wl, wl->channel, 1);
85 + goto out_free_data_path;
87 + /* Enable tx data path */
88 + ret = wl1251_cmd_data_path_tx(wl, wl->channel, 1);
90 goto out_free_data_path;
92 --- kernel-power-2.6.28.orig/drivers/net/wireless/wl12xx/wl1251_main.c
93 +++ kernel-power-2.6.28/drivers/net/wireless/wl12xx/wl1251_main.c
98 - ret = wl1251_cmd_data_path(wl, wl->channel, 1);
99 + ret = wl1251_cmd_data_path_rx(wl, wl->channel, 1);
103 + ret = wl1251_cmd_data_path_tx(wl, wl->channel, 1);
107 @@ -1180,6 +1184,13 @@
112 + if (wl->vif == NULL && wl->channel != channel) {
113 + ret = wl1251_cmd_data_path_rx(wl, channel, 1);
118 wl->channel = channel;
120 if (conf->flags & IEEE80211_CONF_PS && !wl->psm_requested) {