summaryrefslogtreecommitdiffstats
path: root/source4/torture/config.mk
blob: de71747a9d9cef67a14ec2fd80f03aee19d0c56a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
# TORTURE subsystem
[LIBRARY::torture]
DESCRIPTION = Samba torture (test) suite
SO_VERSION = 0
VERSION = 0.0.1
PUBLIC_HEADERS = torture.h ui.h
PUBLIC_PROTO_HEADER = proto.h
OBJ_FILES = \
		torture.o \
		subunit.o \
		ui.o
PUBLIC_DEPENDENCIES = \
		LIBSAMBA-CONFIG \
		LIBSAMBA-UTIL \
		LIBTALLOC 

[SUBSYSTEM::TORTURE_UTIL]
OBJ_FILES = util.o util_smb.o
PRIVATE_DEPENDENCIES = LIBCLI_RAW
PUBLIC_PROTO_HEADER = util.h
PUBLIC_DEPENDENCIES = POPT_CREDENTIALS

#################################
# Start SUBSYSTEM TORTURE_BASIC
[MODULE::TORTURE_BASIC]
SUBSYSTEM = torture
INIT_FUNCTION = torture_base_init
PRIVATE_PROTO_HEADER = \
		basic/proto.h
OBJ_FILES = \
		basic/base.o \
		basic/misc.o \
		basic/scanner.o \
		basic/utable.o \
		basic/charset.o \
		basic/mangle_test.o \
		basic/denytest.o \
		basic/aliases.o \
		basic/locking.o \
		basic/secleak.o \
		basic/rename.o \
		basic/dir.o \
		basic/delete.o \
		basic/unlink.o \
		basic/disconnect.o \
		basic/delaywrite.o \
		basic/attr.o \
		basic/properties.o 
PUBLIC_DEPENDENCIES = \
		LIBCLI_SMB POPT_CREDENTIALS \
		TORTURE_UTIL LIBCLI_RAW
PRIVATE_DEPENDENCIES = TORTURE_RAW
# End SUBSYSTEM TORTURE_BASIC
#################################

#################################
# Start SUBSYSTEM TORTURE_RAW
[MODULE::TORTURE_RAW]
SUBSYSTEM = torture
INIT_FUNCTION = torture_raw_init
PRIVATE_PROTO_HEADER = \
		raw/proto.h
OBJ_FILES = \
		raw/qfsinfo.o \
		raw/qfileinfo.o \
		raw/setfileinfo.o \
		raw/search.o \
		raw/close.o \
		raw/open.o \
		raw/mkdir.o \
		raw/oplock.o \
		raw/notify.o \
		raw/mux.o \
		raw/ioctl.o \
		raw/chkpath.o \
		raw/unlink.o \
		raw/read.o \
		raw/context.o \
		raw/write.o \
		raw/lock.o \
		raw/lockbench.o \
		raw/rename.o \
		raw/eas.o \
		raw/streams.o \
		raw/acls.o \
		raw/seek.o \
		raw/samba3hide.o \
		raw/samba3misc.o \
		raw/composite.o \
		raw/raw.o
PUBLIC_DEPENDENCIES = \
		LIBCLI_SMB LIBCLI_LSA LIBCLI_SMB_COMPOSITE \
		POPT_CREDENTIALS
PRIVATE_DEPENDENCIES = TORTURE_UTIL
# End SUBSYSTEM TORTURE_RAW
#################################

include smb2/config.mk

[MODULE::torture_rpc]
# TORTURE_NET and TORTURE_NBT use functions from torture_rpc...
#OUTPUT_TYPE = INTEGRATED
SUBSYSTEM = torture
INIT_FUNCTION = torture_rpc_init
PRIVATE_PROTO_HEADER = \
		rpc/proto.h
OBJ_FILES = \
		rpc/join.o \
		rpc/lsa.o \
		rpc/lsa_lookup.o \
		rpc/session_key.o \
		rpc/echo.o \
		rpc/dcom.o \
		rpc/dfs.o \
		rpc/drsuapi.o \
		rpc/drsuapi_cracknames.o \
		rpc/dssync.o \
		rpc/spoolss.o \
		rpc/unixinfo.o \
		rpc/samr.o \
		rpc/wkssvc.o \
		rpc/srvsvc.o \
		rpc/svcctl.o \
		rpc/atsvc.o \
		rpc/eventlog.o \
		rpc/epmapper.o \
		rpc/winreg.o \
		rpc/initshutdown.o \
		rpc/oxidresolve.o \
		rpc/remact.o \
		rpc/mgmt.o \
		rpc/scanner.o \
		rpc/autoidl.o \
		rpc/countcalls.o \
		rpc/testjoin.o \
		rpc/schannel.o \
		rpc/netlogon.o \
		rpc/samlogon.o \
		rpc/samsync.o \
		rpc/rot.o \
		rpc/bind.o \
		rpc/dssetup.o \
		rpc/alter_context.o \
		rpc/bench.o \
		rpc/samba3rpc.o \
		rpc/rpc.o \
		rpc/async_bind.o
PUBLIC_DEPENDENCIES = \
		NDR_TABLE RPC_NDR_UNIXINFO RPC_NDR_SAMR RPC_NDR_WINREG RPC_NDR_INITSHUTDOWN \
		RPC_NDR_OXIDRESOLVER RPC_NDR_EVENTLOG RPC_NDR_ECHO RPC_NDR_SVCCTL \
		RPC_NDR_MGMT RPC_NDR_NETLOGON RPC_NDR_ATSVC RPC_NDR_DRSUAPI \
		RPC_NDR_LSA RPC_NDR_EPMAPPER RPC_NDR_DFS RPC_NDR_SPOOLSS \
		RPC_NDR_SRVSVC RPC_NDR_WKSSVC RPC_NDR_ROT RPC_NDR_DSSETUP \
		RPC_NDR_REMACT RPC_NDR_OXIDRESOLVER WB_HELPER LIBSAMBA-NET \
		LIBCLI_AUTH POPT_CREDENTIALS
PRIVATE_DEPENDENCIES = TORTURE_LDAP TORTURE_UTIL TORTURE_RAP

#################################
# Start SUBSYSTEM TORTURE_RAP
[MODULE::TORTURE_RAP]
SUBSYSTEM = torture
INIT_FUNCTION = torture_rap_init
PRIVATE_PROTO_HEADER = \
		rap/proto.h
OBJ_FILES = \
		rap/rap.o
PRIVATE_DEPENDENCIES = TORTURE_UTIL
PUBLIC_DEPENDENCIES = \
		LIBCLI_SMB
# End SUBSYSTEM TORTURE_RAP
#################################

#################################
# Start SUBSYSTEM TORTURE_AUTH
[MODULE::TORTURE_AUTH]
SUBSYSTEM = torture
PRIVATE_PROTO_HEADER = \
		auth/proto.h
OBJ_FILES = \
		auth/ntlmssp.o \
		auth/pac.o
PUBLIC_DEPENDENCIES = \
		LIBCLI_SMB gensec auth LIBSAMBA3 KERBEROS \
		POPT_CREDENTIALS
# End SUBSYSTEM TORTURE_AUTH
#################################

include local/config.mk

#################################
# Start MODULE TORTURE_NBENCH
[MODULE::TORTURE_NBENCH]
SUBSYSTEM = torture
INIT_FUNCTION = torture_nbench_init
PRIVATE_DEPENDENCIES = TORTURE_UTIL 
PRIVATE_PROTO_HEADER = \
		nbench/proto.h
OBJ_FILES = \
		nbench/nbio.o \
		nbench/nbench.o
# End MODULE TORTURE_NBENCH
#################################

#################################
# Start SUBSYSTEM TORTURE_LDAP
[MODULE::TORTURE_LDAP]
SUBSYSTEM = torture
INIT_FUNCTION = torture_ldap_init
PRIVATE_PROTO_HEADER = \
		ldap/proto.h
OBJ_FILES = \
		ldap/common.o \
		ldap/basic.o \
		ldap/schema.o \
		ldap/cldap.o \
		ldap/cldapbench.o
PUBLIC_DEPENDENCIES = \
		LIBCLI_LDAP LIBCLI_CLDAP SAMDB POPT_CREDENTIALS
# End SUBSYSTEM TORTURE_LDAP
#################################

#################################
# Start SUBSYSTEM TORTURE_NBT
[MODULE::TORTURE_NBT]
SUBSYSTEM = torture
INIT_FUNCTION = torture_nbt_init
PRIVATE_PROTO_HEADER = \
		nbt/proto.h
OBJ_FILES = \
		nbt/query.o \
		nbt/register.o \
		nbt/wins.o \
		nbt/winsbench.o \
		nbt/winsreplication.o \
		nbt/dgram.o \
		nbt/nbt.o
PUBLIC_DEPENDENCIES = \
		LIBCLI_SMB LIBCLI_NBT LIBCLI_DGRAM LIBCLI_WREPL
PRIVATE_DEPENDENCIES = torture_rpc
# End SUBSYSTEM TORTURE_NBT
#################################

#################################
# Start SUBSYSTEM TORTURE_NET
[MODULE::TORTURE_NET]
SUBSYSTEM = torture
INIT_FUNCTION = torture_net_init
PRIVATE_PROTO_HEADER = \
		libnet/proto.h
OBJ_FILES = \
		libnet/libnet.o \
		libnet/userinfo.o \
		libnet/userman.o \
		libnet/domain.o \
		libnet/libnet_lookup.o \
		libnet/libnet_user.o \
		libnet/libnet_share.o \
		libnet/libnet_rpc.o \
		libnet/libnet_domain.o \
		libnet/libnet_BecomeDC.o
PUBLIC_DEPENDENCIES = \
		LIBSAMBA-NET \
		smbcalls \
		POPT_CREDENTIALS
PRIVATE_DEPENDENCIES = torture_rpc
# End SUBSYSTEM TORTURE_NET
#################################

#################################
# Start BINARY smbtorture
[BINARY::smbtorture]
INSTALLDIR = BINDIR
OBJ_FILES = \
		smbtorture.o
PRIVATE_DEPENDENCIES = \
		torture \
		LIBPOPT \
		POPT_SAMBA \
		POPT_CREDENTIALS \
		dcerpc \
		LIBCLI_SMB \
		SMBREADLINE
MANPAGE = man/smbtorture.1
# End BINARY smbtorture
#################################

#################################
# Start BINARY gentest
[BINARY::gentest]
INSTALLDIR = BINDIR
OBJ_FILES = \
		gentest.o
PRIVATE_DEPENDENCIES = \
		LIBSAMBA-CONFIG \
		LIBSAMBA-UTIL \
		LIBPOPT \
		POPT_SAMBA \
		POPT_CREDENTIALS \
		LIBCLI_SMB \
		LIBCLI_RAW
MANPAGE = man/gentest.1
# End BINARY gentest
#################################

#################################
# Start BINARY masktest
[BINARY::masktest]
INSTALLDIR = BINDIR
OBJ_FILES = \
		masktest.o
PRIVATE_DEPENDENCIES = \
		LIBSAMBA-CONFIG \
		LIBSAMBA-UTIL \
		LIBPOPT \
		POPT_SAMBA \
		POPT_CREDENTIALS \
		LIBCLI_SMB
MANPAGE = man/masktest.1
# End BINARY masktest
#################################

#################################
# Start BINARY locktest
[BINARY::locktest]
INSTALLDIR = BINDIR
OBJ_FILES = \
		locktest.o
PRIVATE_DEPENDENCIES = \
		LIBSAMBA-UTIL \
		LIBCLI_SMB \
		LIBSAMBA-CONFIG
MANPAGE = man/locktest.1
# End BINARY locktest
#################################

GCOV_FLAGS = -ftest-coverage -fprofile-arcs
GCOV_LIBS = -lgcov

gcov: 
	@$(MAKE) test \
		CFLAGS="$(CFLAGS) $(GCOV_FLAGS)" \
		LD_FLAGS="$(LD_FLAGS) $(GCOV_FLAGS)" \
		LIBS="$(LIBS) $(GCOV_LIBS)"
	for I in $(sort $(dir $(ALL_OBJS))); \
		do $(GCOV) -p -o $$I $$I/*.c; \
	done
class="hl opt">; do { u32 x = readl(reg); *buf++ = x; } while (--cnt); } } static void wemac_outblk_32bit(void *reg, void *data, int count) { int cnt = (count + 3) >> 2; if (cnt) { const u32 *buf = data; do { writel(*buf++, reg); } while (--cnt); } } /* * Read a word from phyxcer */ static int wemac_phy_read(const char *devname, unsigned char addr, unsigned char reg, unsigned short *value) { struct eth_device *dev = eth_get_dev_by_name(devname); struct wemac_regs *regs = (struct wemac_regs *)dev->iobase; /* issue the phy address and reg */ writel(addr << 8 | reg, &regs->mac_madr); /* pull up the phy io line */ writel(0x1, &regs->mac_mcmd); /* Wait read complete */ mdelay(1); /* push down the phy io line */ writel(0x0, &regs->mac_mcmd); /* and write data */ *value = readl(&regs->mac_mrdd); return 0; } /* * Write a word to phyxcer */ static int wemac_phy_write(const char *devname, unsigned char addr, unsigned char reg, unsigned short value) { struct eth_device *dev = eth_get_dev_by_name(devname); struct wemac_regs *regs = (struct wemac_regs *)dev->iobase; /* issue the phy address and reg */ writel(addr << 8 | reg, &regs->mac_madr); /* pull up the phy io line */ writel(0x1, &regs->mac_mcmd); /* Wait write complete */ mdelay(1); /* push down the phy io line */ writel(0x0, &regs->mac_mcmd); /* and write data */ writel(value, &regs->mac_mwtd); return 0; } static void emac_setup(struct eth_device *dev) { struct wemac_regs *regs = (struct wemac_regs *)dev->iobase; u32 reg_val; u16 phy_val; u32 duplex_flag; /* Set up TX */ writel(EMAC_TX_SETUP, &regs->tx_mode); /* Set up RX */ writel(EMAC_RX_SETUP, &regs->rx_ctl); /* Set MAC */ /* Set MAC CTL0 */ writel(EMAC_MAC_CTL0_SETUP, &regs->mac_ctl0); /* Set MAC CTL1 */ wemac_phy_read(dev->name, 1, 0, &phy_val); debug("PHY SETUP, reg 0 value: %x\n", phy_val); duplex_flag = !!(phy_val & (1 << 8)); reg_val = 0; if (duplex_flag) reg_val = (0x1 << 0); writel(EMAC_MAC_CTL1_SETUP | reg_val, &regs->mac_ctl1); /* Set up IPGT */ writel(EMAC_MAC_IPGT, &regs->mac_ipgt); /* Set up IPGR */ writel(EMAC_MAC_NBTB_IPG2 | (EMAC_MAC_NBTB_IPG1 << 8), &regs->mac_ipgr); /* Set up Collison window */ writel(EMAC_MAC_RM | (EMAC_MAC_CW << 8), &regs->mac_clrt); /* Set up Max Frame Length */ writel(EMAC_MAC_MFL, &regs->mac_maxf); } static void wemac_reset(struct eth_device *dev) { struct wemac_regs *regs = (struct wemac_regs *)dev->iobase; debug("resetting device\n"); /* RESET device */ writel(0, &regs->ctl); udelay(200); writel(1, &regs->ctl); udelay(200); } static int sunxi_wemac_eth_init(struct eth_device *dev, bd_t *bd) { struct wemac_regs *regs = (struct wemac_regs *)dev->iobase; struct wemac_eth_dev *priv = dev->priv; u16 phy_reg; /* Init EMAC */ /* Flush RX FIFO */ setbits_le32(&regs->rx_ctl, 0x8); udelay(1); /* Init MAC */ /* Soft reset MAC */ clrbits_le32(&regs->mac_ctl0, 1 << 15); /* Set MII clock */ clrsetbits_le32(&regs->mac_mcfg, 0xf << 2, 0xd << 2); /* Clear RX counter */ writel(0x0, &regs->rx_fbc); udelay(1); /* Set up EMAC */ emac_setup(dev); writel(dev->enetaddr[0] << 16 | dev->enetaddr[1] << 8 | dev->enetaddr[2], &regs->mac_a1); writel(dev->enetaddr[3] << 16 | dev->enetaddr[4] << 8 | dev->enetaddr[5], &regs->mac_a0); mdelay(1); wemac_reset(dev); /* PHY POWER UP */ wemac_phy_read(dev->name, 1, 0, &phy_reg); wemac_phy_write(dev->name, 1, 0, phy_reg & (~(1 << 11))); mdelay(1); wemac_phy_read(dev->name, 1, 0, &phy_reg); priv->speed = miiphy_speed(dev->name, 0); priv->duplex = miiphy_duplex(dev->name, 0); /* Print link status only once */ if (!priv->link_printed) { printf("ENET Speed is %d Mbps - %s duplex connection\n", priv->speed, (priv->duplex == HALF) ? "HALF" : "FULL"); priv->link_printed = 1; } /* Set EMAC SPEED depend on PHY */ clrsetbits_le32(&regs->mac_supp, 1 << 8, ((phy_reg & (1 << 13)) >> 13) << 8); /* Set duplex depend on phy */ clrsetbits_le32(&regs->mac_ctl1, 1 << 0, ((phy_reg & (1 << 8)) >> 8) << 0); /* Enable RX/TX */ setbits_le32(&regs->ctl, 0x7); return 0; } static void sunxi_wemac_eth_halt(struct eth_device *dev) { /* Nothing to do here */ } static int sunxi_wemac_eth_recv(struct eth_device *dev) { struct wemac_regs *regs = (struct wemac_regs *)dev->iobase; struct wemac_rxhdr rxhdr; u32 rxcount; u32 reg_val; int rx_len; int rx_status; int good_packet; /* Check packet ready or not */ /* * Race warning: The first packet might arrive with * the interrupts disabled, but the second will fix */ rxcount = readl(&regs->rx_fbc); if (!rxcount) { /* Had one stuck? */ rxcount = readl(&regs->rx_fbc); if (!rxcount) return 0; } reg_val = readl(&regs->rx_io_data); if (reg_val != 0x0143414d) { /* Disable RX */ clrbits_le32(&regs->ctl, 1 << 2); /* Flush RX FIFO */ setbits_le32(&regs->rx_ctl, 1 << 3); while (readl(&regs->rx_ctl) & (1 << 3)) ; /* Enable RX */ setbits_le32(&regs->ctl, 1 << 2); return 0; } /* * A packet ready now * Get status/length */ good_packet = 1; wemac_inblk_32bit(&regs->rx_io_data, &rxhdr, sizeof(rxhdr)); rx_len = rxhdr.rx_len; rx_status = rxhdr.rx_status; /* Packet Status check */ if (rx_len < 0x40) { good_packet = 0; debug("RX: Bad Packet (runt)\n"); } /* rx_status is identical to RSR register. */ if (0 & rx_status & (EMAC_CRCERR | EMAC_LENERR)) { good_packet = 0; if (rx_status & EMAC_CRCERR) printf("crc error\n"); if (rx_status & EMAC_LENERR) printf("length error\n"); } /* Move data from WEMAC */ if (good_packet) { if (rx_len > DMA_CPU_TRRESHOLD) { printf("Received packet is too big (len=%d)\n", rx_len); } else { wemac_inblk_32bit((void *)&regs->rx_io_data, NetRxPackets[0], rx_len); /* Pass to upper layer */ NetReceive(NetRxPackets[0], rx_len); return rx_len; } } return 0; } static int sunxi_wemac_eth_send(struct eth_device *dev, void *packet, int len) { struct wemac_regs *regs = (struct wemac_regs *)dev->iobase; /* Select channel 0 */ writel(0, &regs->tx_ins); /* Write packet */ wemac_outblk_32bit((void *)&regs->tx_io_data, packet, len); /* Set TX len */ writel(len, &regs->tx_pl0); /* Start translate from fifo to phy */ setbits_le32(&regs->tx_ctl0, 1); return 0; } int sunxi_wemac_initialize(void) { struct sunxi_ccm_reg *const ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE; struct sunxi_sramc_regs *sram = (struct sunxi_sramc_regs *)SUNXI_SRAMC_BASE; struct eth_device *dev; struct wemac_eth_dev *priv; int pin; dev = malloc(sizeof(*dev)); if (dev == NULL) return -ENOMEM; priv = (struct wemac_eth_dev *)malloc(sizeof(struct wemac_eth_dev)); if (!priv) { free(dev); return -ENOMEM; } memset(dev, 0, sizeof(*dev)); memset(priv, 0, sizeof(struct wemac_eth_dev)); /* Map SRAM to EMAC */ setbits_le32(&sram->ctrl1, 0x5 << 2); /* Configure pin mux settings for MII Ethernet */ for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(17); pin++) sunxi_gpio_set_cfgpin(pin, 2); /* Set up clock gating */ setbits_le32(&ccm->ahb_gate0, 1 << AHB_GATE_OFFSET_EMAC); dev->iobase = SUNXI_EMAC_BASE; dev->priv = priv; dev->init = sunxi_wemac_eth_init; dev->halt = sunxi_wemac_eth_halt; dev->send = sunxi_wemac_eth_send; dev->recv = sunxi_wemac_eth_recv; strcpy(dev->name, "wemac"); eth_register(dev); miiphy_register(dev->name, wemac_phy_read, wemac_phy_write); return 0; }